<?xml version='1.0' encoding='Shift_JIS' ?>
<doc xml:lang='ja'>
	<head>
		<title>基礎モデルフレームワークの解説</title>
	</head>
	<body>
		
		<p>基礎モデルフレームワークの構造そのものは概念モデルと同じです。この章以降では基礎モデルフレームワーク全体からいくつかの重要なトピックを区切って述べていきます。</p>
		
		<section title="基礎モデルフレームワークに基づくモデルの実装">
			<p>
				この章以降では基礎モデルフレームワークについて解説しますが、「モデルを作成すること」に焦点をあて、Javaソースコードとしての詳細な構造は解説しません。そこで、モデル作成者がモデルを作成する際に基礎モデルに基づいて考えるべきこと・実装を整理します。</p>
			<dl>
				<dt>Agent</dt>
				<dd>
					消費者や経営者など、モデルにどんなエージェントがいるかを考える必要があります。この種類をAgentTypeとして表現します。（Typeについては後述します。）</dd>
				<dt>Goods</dt>
				<dd>
					貨幣・株など、エージェントがどんな種類の財を取引するかを考える必要があります。この種類をGoodsTypeとして表現します。（Typeについては後述します。）</dd>
				<dt>Relation</dt>
				<dd>
					友情関係・雇用関係など、エージェント間にどのような種類の関係が構築されるかを考えます。この種類をRelationTypeとして表現します。（Typeについては後述します。）</dd>
				<dt>Information</dt>
				<dd>
					モデルにどのような情報が存在し、それらの情報がどのような振る舞いをするか、エージェントによって操作されるかを考えます。Informationインターフェースを実装するだけで、かなり自由にInformationを作成することができます。</dd>
				<dt>Behavior</dt>
				<dd>
					エージェントの振る舞いを分類し、どのような順番で行うかを考えます。Behaviorクラスを継承することで作成します。状態遷移のフレームワークに基づいたBehaviorを簡単に作成するためコンポーネントビルダーが提供されています。（コンポーネントビルダーの詳細に関してはここでは割愛させていただきます。）</dd>
				<dt>World</dt>
				<dd>上記の要素を抽出し、それらを具体的にどう配置するかをWorldクラスを継承したクラスに記述します。</dd>

				<dt>Clock</dt>
				<dd>Worldに設定します。AbstractClockを継承します。ただし、基礎モデルフレームワークでは既に使えるClockとしてStepClock及びRealClockも同時に提供します。</dd>

				<dt>Space</dt>
				<dd>Worldに設定します。Spaceインターフェースを実装します。ただし、基礎モデルフレームワークでは既に使えるSpaceとしてCellSpaceも同時に提供しますが、設定しなくてもモデルは大抵動作します。（位置を移動するBehaviorなど空間に依存するBehaviorはこの限りではありませんが）</dd>
			</dl>
			<p>まとめると、以下のような表になります。</p>
			<table style="width:100%" title="各モデル要素の作成方法" >
				<thead>基礎モデル要素,作成方法</thead>
				<tbody>
					Agent,AgentTypeを追加
					Goods,GoodsTypeを追加
					Relation,RelationTypeを追加
					Information,Informationインターフェースを実装
					Behavior,Behaviorクラスを継承（コンポーネントビルダーによって自動化）
					World,Worldクラスを継承
					Clock,AbstractClockを継承（StepClock、RealClockを利用可能）
					Space,Spaceインターフェースを実装（CellSpaceを利用可能）
				</tbody>
			</table>
		</section>
		<section src="fmfw_world.sdoc">
		</section>
		<section src="fmfw_type.sdoc">
		</section>
		<section src="fmfw_agent.sdoc">
		</section>
		<section src="fmfw_goods.sdoc">
		</section>
		<section src="fmfw_entity.sdoc">
		</section>
		<section src="fmfw_information.sdoc">
		</section>
		<section src="fmfw_relation.sdoc">
		</section>
		<section src="fmfw_behavior.sdoc">
		</section>
	</body>
</doc>
