/*********************************************************************/ /* */ /* マルチエージェントシミュレータ Version 1.0 */ /* */ /*********************************************************************/ //------------------ コンポーネントツリー --------------- WORLD { space 二次元空間(10,10),SQUARE_2D(50, 50, !LOOP) { agent 先進国(10,10)[0] { dim X(10,10) AS Double = (0.000000); dim Y(100,10) AS Double = (0.000000); dim DIRECTION(190,10) AS Double = (0.000000); dim 利益(10,10) AS Integer = (0); dim 発展度(10,10) AS Integer = (0); dim 体力(10,10) AS Double = (0.000000); dim トラヒック(10,10) AS Integer = (0); dim 幸福度(10,10) AS Double = (0.000000); dim 交渉力(10,10) AS Double = (0.000000); dim 色(10,10) AS Integer = (0); } agent 途上国(10,10)[0] { dim X(10,10) AS Double = (0.000000); dim Y(100,10) AS Double = (0.000000); dim DIRECTION(190,10) AS Double = (0.000000); dim 利益(10,10) AS Integer = (0); dim 発展度(10,10) AS Integer = (0); dim 体力(10,10) AS Double = (0.000000); dim トラヒック(10,10) AS Integer = (0); dim 幸福度(10,10) AS Double = (0.000000); dim 交渉力(10,10) AS Double = (0.000000); dim 色(10,10) AS Integer = (3); dim 連帯(10,10) AS Boolean = (52906240); } dim 環境成長度(10,10)[50][50] AS Integer = (2500*0); dim 環境成長度カラー(10,10)[50][50] AS Double = (2500 * 0.000000); } dim 先進国の数(10,10) AS Integer = (0); dim 途上国の数(10,10) AS Integer = (0); dim 先進国の代謝率(10,10) AS Double = (0.000000); dim 途上国の代謝率(10,10) AS Double = (0.000000); dim 妥結ポイント(10,10) AS Double = (0.000000); dim トラヒック(10,10) AS Integer = (0); dim 幸福度合計(10,10) AS Double = (0.000000); dim 環境成長ステップ(10,10) AS Integer = (0); dim 環境要素(10,10) AS Boolean = (0); dim 取得できる環境(10,10) AS Integer = (0); } //------------------ コンポーネントパレットツリー --------------- //------------------ エージェント変数初期値データ --------------- INITIAL_VALUE { WORLD.先進国の代謝率 = 1(0.300000); WORLD.途上国の代謝率 = 1(0.800000); } //------------------ エージェント共通ルール --------------- #begin_rule common_agent_rule Function 端処理X(Xp as integer) as integer { //マップの端をループさせる処理 //変数定義 Dim EdgeX as integer //マップの幅を取得 EdgeX = _GetWidthSpace(World.二次元空間) //Xpが右端よりはみ出る場合は左側にループ If Xp >= EdgeX then Xp = Xp - EdgeX //Xpが左端よりはみ出る場合は右側にループ ElseIf Xp < 0 then Xp = Xp + EdgeX End If //値を返す Return(Xp) } Function 端処理Y(Yp as integer) as integer { //マップの端をループさせる処理 //変数定義 Dim EdgeY as integer //マップの高さを取得 EdgeY = _GetHeightSpace(World.二次元空間) //Ypが下端からはみ出る場合は上側にループ If Yp >= EdgeY then Yp = Yp - EdgeY //Ypが上端からはみ出る場合は下側にループ ElseIf Yp < 0 then Yp = Yp + EdgeY End If //値を返す Return(Yp) } Function 移動(StepV as Integer) as Boolean { // 012 :方向をランダムに選択して移動 // 7 3 // 654 //変数定義 Dim Drc as Integer Dim Stp as Integer Dim moX as Integer Dim moY as Integer Dim StpX as Integer Dim StpY as Integer //方向をランダムにセット Drc = Int(Rnd()*7) //XY方向にステップ数をランダムにセット StpX= Int(Rnd()*StepV)+1 StpY= Int(Rnd()*StepV)+1 //現在の自分の位置を仮変数に格納 moX = My.X moY = My.Y //方向に合わせてX方向の位置を仮変数に代入 If (Drc == 0) OR (Drc == 6) OR (Drc == 7) Then moX = moX - StpX End If If (Drc == 2) OR (Drc == 3) OR (Drc == 4) Then moX = moX + StpX End If //X位置の補正(ループ処理) moX = 端処理X(moX) //自分のX位置をセット My.X = moX //方向に合わせてY方向の位置を仮変数に代入 If (Drc == 0) OR (Drc == 1) OR (Drc == 2) Then moY = moY - StpY End If If (Drc == 4) OR (Drc == 5) OR (Drc == 6) Then moY = moY + StpY End If //Y位置の補正(ループ処理) moY = 端処理Y(moY) //自分のY位置をセット My.Y = moY //移動完了・値を返す Return(True) } #end_rule common_agent_rule //------------------ エージェントルール --------------- #begin_rule WORLD Agt_Init{ Dim i As Integer Dim j As Integer // 国の誕生 For i = 1 To 先進国の数 _CreateAgent(World.二次元空間.先進国) Next i For i = 1 To 途上国の数 _CreateAgent(World.二次元空間.途上国) Next i //環境要素がTrueならば環境要素を設定 If World.環境要素 == True then 環境設定() End If } Agt_Step{ Dim i As Integer // 変数 Dim j As Integer // 変数 //Dim s_goukei As Double // 変数 //Dim t_goukei As Double // 変数 //Dim count_pp As Integer // 変数 //Dim point As Double  // 変数 World.取得できる環境 = 0 //環境要素がTrueならば環境を成長させる If World.環境要素 == True then 環境成長() End If // トラヒック成長 //World.トラヒック = (1.0 / 1.0 + exp((count_pp * (-0.1)) )) //先進国のトラヒックが途上国のトラヒックの9倍になったらシミュレーションを終了する if WORLD.二次元空間.先進国.トラヒック == WORLD.二次元空間.途上国.トラヒック * 9 then _ExitSimulation() End if //妥結ポイントが0になったらシミュレーションを終了する if WORLD.妥結ポイント < 0 then _ExitSimulation() End if // 国の数 World.先進国の数 = _CountCollection(_CollectAgent(World.二次元空間.先進国)) World.途上国の数 = _CountCollection(_CollectAgent(World.二次元空間.途上国)) //s_goukei = _CountCollection(World.二次元空間.先進国.幸福度)) //t_goukei = _CountCollection(World.二次元空間.途上国.幸福度))        //幸福度合計 World.幸福度合計 = World.二次元空間.先進国.幸福度 + World.二次元空間.途上国.幸福度 } Sub 環境設定(){ //変数定義 Dim i As Integer Dim j As Integer //マップ上のセルを順に呼び出し For i = 0 To (_GetWidthSpace(World.二次元空間) - 1) For j = 0 To (_GetHeightSpace(World.二次元空間) - 1) //マップに環境成長ステップまでの成長度をランダムに割り当てる World.二次元空間.環境成長度(i,j) = Int(Rnd()*World.環境成長ステップ) //成長度をカラーに割り当てる World.二次元空間.環境成長度カラー(i,j) = CDbl(World.二次元空間.環境成長度(i,j)) / CDbl(World.環境成長ステップ) * 99 Next j Next i } Sub 環境成長(){ //変数定義 Dim i As Integer Dim j As Integer Dim 成長度 As Integer //マップ上のセルを順に呼び出し For i = 0 To (_GetWidthSpace(World.二次元空間) - 1) For j = 0 To (_GetHeightSpace(World.二次元空間) - 1) //成長度を一つ上げる 成長度 = World.二次元空間.環境成長度(i,j) + 1 //限界点(成長ステップ)まで成長したら成長度は増えない If 成長度 > World.環境成長ステップ Then 成長度 = World.環境成長ステップ End If If 成長度 == World.環境成長ステップ then World.取得できる環境 = World.取得できる環境 + 1 End If //セルに変数値を代入 World.二次元空間.環境成長度(i,j) = 成長度 //成長度をカラーに割り当てる World.二次元空間.環境成長度カラー(i,j) = CDbl(World.二次元空間.環境成長度(i,j)) / CDbl(World.環境成長ステップ) * 99 Next j Next i } #end_rule WORLD //------------------ エージェントルール --------------- #begin_rule WORLD.二次元空間.先進国 Agt_Init{ // 特徴づけ:先進国型 My.発展度 = Rnd() * 2 + 10 My.利益 = Rnd() * 4 + 10 My.トラヒック = Rnd() * 8 + 10 My.体力 = Rnd() * 4 * 10 My.X = Rnd() * _GetWidthSpace(World.二次元空間) My.Y = Rnd() * _GetHeightSpace(World.二次元空間) } Agt_Step{ //変数定義 Dim col as Collection Dim obj as Object Dim sa as Integer Dim payment as Integer Dim keisan as Double Dim tmp_traffic as Double     //移動(1) Dim vRange as Integer VRange = 2 _MoveToRichValue(My.X,My.Y,vRange,World.二次元空間.環境成長度,False) If World.環境要素 == True then //体力0になったら死ぬ If My.体力 <= 0 then _KillAgent(My) End If //ステップごとに体力を1消費 My.体力 = My.体力 - ( World.二次元空間.環境成長度(My.X, My.Y) / 10 ) //環境が十分であれば利益を得る If World.二次元空間.環境成長度(My.X, My.Y) == World.環境成長ステップ Then My.トラヒック = My.トラヒック + Int(World.二次元空間.環境成長度(My.X, My.Y))            My.体力 = My.体力 + World.二次元空間.環境成長度(My.X, My.Y) //得た分の環境成長度を0に World.二次元空間.環境成長度(My.X, My.Y) = 0 End If Else My.トラヒック = My.トラヒック + (Rnd()*20) End If //tmp_traffic = Int(1 / (1.0 + (exp( (My.トラヒック * (-1)) + 1 ) * 0.1))) //My.トラヒック = Int(tmp_traffic) //自分の場所にいる途上国を知る(コレクションに納める) col =_CollectAround(My.X, My.Y, 5, World.二次元空間, World.二次元空間.途上国) //途上国の数が0でなかったら精算行為をする If _CountCollection(col) > 0 Then         //精算行為をすることで幸福度があがる My.幸福度 = My.幸福度 + 1 //コレクションの最初の途上国と精算行為をする obj = _Getobject(col, 0) //受信トラヒックの量と発展度は関連性が深い・相手との相対的関係で受信超過は受取の立場 //受信超過を知る 日本からみた途上国>日本 途上国への支払いのケース if obj.トラヒック > My.トラヒック then         //(途上国の受信超過→先進国からみて自分の発信が多いので相手の方が多く受けている状態→自分が支払い)  sa = obj.トラヒック - My.トラヒック payment = Int(sa * World.妥結ポイント * 0.5) my.利益 = my.利益 - payment + (sa * 0.5 * (1 - world.先進国の代謝率))  // my.利益 = my.利益 - payment - (payment * world.先進国の代謝率)  // obj.利益 = obj.利益 + payment - (payment * world.途上国の代謝率) // obj.利益 = obj.利益 + payment - (payment * world.途上国の代謝率) obj.利益 = obj.利益 + payment + (sa * 0.5 * ( 1 - world.途上国の代謝率))         //支払いの立場になると先進国は国力を落とす  My.交渉力 = My.交渉力 - 0.001 Else         //受信超過を知る 日本からみた米国<日本 先進国からの受取りのケース          //(先進国の受信超過→相手が多く発信しているので自分が多く受信している状態→自分が受け取り)           sa = My.トラヒック - obj.トラヒック payment = Int(sa * World.妥結ポイント * 0.5) my.利益 = my.利益 + payment + (sa * 0.5 * (1 - world.先進国の代謝率)) //my.利益 = my.利益 + payment - (payment * world.先進国の代謝率) // obj.利益 = obj.利益 - payment + (payment * world.途上国の代謝率) //obj.利益 = obj.利益 - payment - (payment * world.途上国の代謝率) obj.利益 = obj.利益 - payment + (sa * 0.5 * ( 1 - world.途上国の代謝率))                 //受け取りの立場になると先進国は国力をあげる  My.交渉力 = My.交渉力 + 0.001         //相手が連帯していれば自分の国力を落として、利益を援助する          If obj.連帯 = True Then           My.交渉力 = My.交渉力 - 0.01 My.利益 = My.利益 - payment           obj.利益 = obj.利益 + (payment * World.妥結ポイント)          End If           //援助されたらobjは連帯を解消する  If obj.連帯 = True Then  obj.連帯 = False  End If     End If //更に交渉する keisan = Rnd() * 10         If keisan > (5 + My.交渉力) Then      //先進国の能力が落ちると(途上国が有利となり)空間のルールである計算料金が上がる   World.妥結ポイント = World.妥結ポイント + 0.01      //能力があがると受け取りの立場にいるので(途上国の方が不利となり)空間のルールである計算料金が下がる    Else World.妥結ポイント = World.妥結ポイント - 0.01  If _CountCollection(col) > 2 Then           obj = _Getobject(col, 0)       obj.連帯 = True                  obj.色 = Color_Red           obj= _Getobject(col, 1)      obj.連帯 = True                 obj.色 = Color_Red          End If         End If      Else         //精算行為をしないと幸福度は下がる My.幸福度 = My.幸福度 - 1 End If       // 生と死     If My.体力 < 0 Then     _KillAgent(My)     End If //If  -(Rnd() * 1000) > My.幸福度 then    // _KillAgent(My)     //End If //繁殖する //If  (Rnd() * 10000) < My.体力 then // 子供を産む //obj = _CreateAgent(World.二次元空間.先進国) // 自分の位置に子供を置く //obj.X = my.X //obj.Y = my.Y //obj.発展度 = Rnd() * 2 + 10 //obj.利益 = Rnd() * 4 + 10 //obj.トラヒック = Rnd() * 8 + 10 //obj.体力 = Rnd() * 4 + 10 //My.体力 = My.体力 / 2 //End IF } #end_rule WORLD.二次元空間.先進国 //------------------ エージェントルール --------------- #begin_rule WORLD.二次元空間.途上国 Agt_Init{ Dim count as Integer // 特徴づけ:途上国型 My.発展度 = Rnd() * 1 + 10 My.利益 = Rnd() * 2 + 10 My.トラヒック = Rnd() * 5 + 10 My.体力 = Rnd() * 3 + 10 My.連帯 = False     My.色 = Color_Yellow My.X = Rnd() * _GetWidthSpace(World.二次元空間) My.Y = Rnd() * _GetHeightSpace(World.二次元空間) WORLD.妥結ポイント = Rnd() * 1 + 10 count = 0 } Agt_Step{ //変数定義 Dim col as Collection Dim obj as Object Dim sa as Integer Dim payment as Integer Dim keisan as Double Dim count as Integer //Dim tmp_traffic as Double //移動(1) Dim vRange as Integer VRange = 1 _MoveToRichValue(My.X,My.Y,vRange,World.二次元空間.環境成長度,False) If World.環境要素 == True then //体力0になったら死ぬ If My.体力 <= 0 then _KillAgent(My) End If //ステップごとに体力を1消費 My.体力 = My.体力 - ( World.二次元空間.環境成長度(My.X, My.Y) / 10 ) //環境が十分であれば利益を得る If World.二次元空間.環境成長度(My.X, My.Y) == World.環境成長ステップ Then My.トラヒック = My.トラヒック + World.二次元空間.環境成長度(My.X, My.Y)            My.体力 = My.体力 + World.二次元空間.環境成長度(My.X, My.Y) //得た分の環境成長度を0に World.二次元空間.環境成長度(My.X, My.Y) = 0 End If Else    My.トラヒック = My.トラヒック + (Rnd()*5) End If //tmp_traffic = Int(1 / (1.0 + (exp( (My.トラヒック * (-1)) + 1 ) * 0.1))) //My.トラヒック = Int(tmp_traffic) //自分の場所にいる先進国を知る(コレクションに納める) col =_CollectAround(My.X, My.Y, 5, World.二次元空間, World.二次元空間.先進国) //先進国の数が0でなかったら精算行為をする If _CountCollection(col) > 0 Then     //精算行為をすると幸福度があがる My.幸福度 = My.幸福度 + 1 //コレクションの最初の先進国と精算行為をする obj = _Getobject(col, 0) //受信トラヒックの量と発展度は関連性が深い・相手との相対的関係で受信超過は受取の立場 //受信超過を知る 日本からみた途上国>日本 途上国への支払いのケース if obj.トラヒック < My.トラヒック then         //(途上国の受信超過→自分が支払い)  sa = My.トラヒック - obj.トラヒック payment = Int(sa * World.妥結ポイント * 0.5) //obj.利益 = obj.利益 - payment + (payment * world.先進国の代謝率)  //obj.利益 = obj.利益 - payment - (payment * world.先進国の代謝率)  //My.利益 = My.利益 + payment - (payment * world.途上国の代謝率) obj.利益 = obj.利益 - payment + (sa * 0.5 * (1 - world.先進国の代謝率))  My.利益 = My.利益 + payment + (sa * 0.5 * ( 1 - world.途上国の代謝率))         //受け取りの立場になると途上国は国力をあげる  My.交渉力 = My.交渉力 + 0.001         If My.連帯 = True Then           My.交渉力 = My.交渉力 + 0.002          End If  Else         //受信超過を知る 日本からみた米国<日本 先進国からの受取りのケース          //(先進国の受信超過→自分が受け取り)           sa = obj.トラヒック - My.トラヒック payment = Int(sa * World.妥結ポイント * 0.5) // obj.利益 = obj.利益 + payment - (payment * world.先進国の代謝率) //My.利益 = My.利益 - payment + (payment * world.途上国の代謝率) //My.利益 = My.利益 - payment - (payment * world.途上国の代謝率) obj.利益 = obj.利益 + payment + ( sa * 0.5 * ( 1 - world.先進国の代謝率)) My.利益 = My.利益 - payment + (sa * 0.5 * (1 - world.途上国の代謝率))         //支払いの立場になると途上国は更に国力をさげる  My.交渉力 = My.交渉力 - 0.001         If My.連帯 = True Then           My.交渉力 = My.交渉力 - 0.002          End If              End If //更に交渉する keisan = Rnd() * 10      If keisan > (5 + My.交渉力) Then //途上国の能力がさがる(先進国が有利となり)空間のルールである計算料金がさがる   World.妥結ポイント = World.妥結ポイント - 0.01          count = count + 1       If count > 2 Then My.連帯 = True      My.色 = Color_Red count = 0 End If //能力があがると(先進国の方が不利となり)空間のルールである計算料金があがる Else World.妥結ポイント = World.妥結ポイント + 0.01  End If     Else      //精算しないと幸福度が下がる My.幸福度 = My.幸福度 - 1 End If // 生と死 If My.体力 < 0 Then _KillAgent(My) End If //If  -(Rnd() * 1000) > My.幸福度 then    // _KillAgent(My)     //End If //繁殖する //If  (Rnd() * 10000) < My.体力 then // 子供を産む //obj = _CreateAgent(World.二次元空間.途上国) // 自分の位置に子供を置く //obj.X = my.X //obj.Y = my.Y //obj.発展度 = Rnd() * 2 + 10 //obj.利益 = Rnd() * 4 + 10 //obj.トラヒック = Rnd() * 8 + 10 //obj.体力 = Rnd() * 4 + 10 //My.体力 = My.体力 / 2 //End IF } #end_rule WORLD.二次元空間.途上国 //------------------ シミュレーション設定部 --------------- SINGLE_SIMULATION { STEP_MAX = 0; TIME_MAX = 0; END_CONDITION = ""; EXEC_WAIT = 0; EXEC_ORDER = RANDOM; RANDOM_SEED = 0; LOG_FILE = "C:\My Documents\ABS\先進国の利益があがるケース\1106.abs",SEREIAL_NO,OVERWRITE,0; REPLAY_LOG_FILE = "",SEREIAL_NO,OVERWRITE,0; } //------------------ ループ設定部 --------------- REPEAT_SIMULATION { VALUE_CHANGE = NONE; REPEAT_MAX = 1; VARIABLES = ""; START_VALUE = 0.000000; STEP_VALUE = 1.000000; END_VALUE = 1.000000; EXEC_TIMES_SAME = 1; RANDOM_RANGE = 0.000000, 1.000000; SAME_VALUE = YES; EXEC_TIMES_DIFFERENT = 1; } //------------------ 二次元マップ表示出力設定部 --------------- MAP_OUTPUT { MAP_SPACE_NAME = "WORLD.二次元空間"; MAP_NAME = "国マップ"; TITLE = "二次元空間"; AXIS_LABEL = "", ""; DRAW_RANGE = 0, 0, 49, 49; RULED_LINE = NO; REMARKS = YES; SPACE_KIND = SQUARE_2D; OUTPUT { MAP_ELEMENT_NAME = "環境成長度"; MAP_ELEMENT = SPACE_VARIABLE; OUTPUT_EXPRESSION = "WORLD.二次元空間.環境成長度カラー"; SPACE_DRAW_RANGE = 0.000000, 100.000000; SPACE_COLOR_MIN = 255,255,255; SPACE_COLOR_MAX = 255,128,0; AGENT_COLOR = 0,255,0; MARKER_ID = 2; MAP_COLOR = 0,0,0; NUM_DISPLAY = NO; NUM_VAR_NAME = ""; } OUTPUT { MAP_ELEMENT_NAME = "先進国"; MAP_ELEMENT = AGENT_VARIABLE; OUTPUT_EXPRESSION = "WORLD.二次元空間.先進国"; SPACE_DRAW_RANGE = 0.000000, 0.000000; SPACE_COLOR_MIN = 255,255,255; SPACE_COLOR_MAX = 255,255,0; AGENT_COLOR = 64,0,64; MARKER_ID = 1; MAP_COLOR = 0,0,0; NUM_DISPLAY = NO; NUM_VAR_NAME = ""; } OUTPUT { MAP_ELEMENT_NAME = "途上国"; MAP_ELEMENT = AGENT_VARIABLE; OUTPUT_EXPRESSION = "WORLD.二次元空間.途上国"; SPACE_DRAW_RANGE = 0.000000, 0.000000; SPACE_COLOR_MIN = 255,255,255; SPACE_COLOR_MAX = 0,255,255; AGENT_COLOR = "WORLD.二次元空間.途上国.色"; MARKER_ID = 1; MAP_COLOR = 141,105,144; NUM_DISPLAY = NO; NUM_VAR_NAME = ""; } } //------------------ 時系列グラフ出力設定部 --------------- TIME_GRAPH { GRAPH_NAME = "国数"; TITLE = ""; AXIS_LABEL = "", ""; SCALE = 0.000000, 0.000000, 0.000000, 0.000000, 50.000000, 0.000000; REMARKS = YES; OUTPUT { GRAPH_ELEMENT_NAME = "先進国の数"; LINE_COLOR = 0,0,255; LINE_WIDTH = 1; MARKER_ID = 0; OUTPUT_EXPRESSION = "World.先進国の数"; } OUTPUT { GRAPH_ELEMENT_NAME = "途上国の数"; LINE_COLOR = 255,0,0; LINE_WIDTH = 1; MARKER_ID = 0; OUTPUT_EXPRESSION = "World.途上国の数"; } } //------------------ 時系列グラフ出力設定部 --------------- TIME_GRAPH { GRAPH_NAME = "トラヒック"; TITLE = "トラヒック"; AXIS_LABEL = "", ""; SCALE = 0.000000, 0.000000, 0.000000, 0.000000, 50.000000, 0.000000; REMARKS = YES; OUTPUT { GRAPH_ELEMENT_NAME = "先進国トラヒック"; LINE_COLOR = 0,0,128; LINE_WIDTH = 1; MARKER_ID = 0; OUTPUT_EXPRESSION = "WORLD.二次元空間.先進国.トラヒック"; } OUTPUT { GRAPH_ELEMENT_NAME = "途上国トラヒック"; LINE_COLOR = 255,0,0; LINE_WIDTH = 3; MARKER_ID = 0; OUTPUT_EXPRESSION = "WORLD.二次元空間.途上国.トラヒック "; } } //------------------ 時系列グラフ出力設定部 --------------- TIME_GRAPH { GRAPH_NAME = "利益"; TITLE = "利益"; AXIS_LABEL = "", ""; SCALE = 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000; REMARKS = YES; OUTPUT { GRAPH_ELEMENT_NAME = "先進国利益"; LINE_COLOR = 0,255,0; LINE_WIDTH = 1; MARKER_ID = 0; OUTPUT_EXPRESSION = "WORLD.二次元空間.先進国.利益"; } OUTPUT { GRAPH_ELEMENT_NAME = "途上国利益"; LINE_COLOR = 255,0,255; LINE_WIDTH = 3; MARKER_ID = 0; OUTPUT_EXPRESSION = "WORLD.二次元空間.途上国.利益 "; } } //------------------ 時系列グラフ出力設定部 --------------- TIME_GRAPH { GRAPH_NAME = "妥結ポイント推移"; TITLE = "妥結ポイント推移"; AXIS_LABEL = "", ""; SCALE = 0.000000, 0.000000, 0.000000, 0.000000, 50.000000, 0.000000; REMARKS = YES; OUTPUT { GRAPH_ELEMENT_NAME = "妥結ポイント"; LINE_COLOR = 0,0,255; LINE_WIDTH = 1; MARKER_ID = 0; OUTPUT_EXPRESSION = "WORLD.妥結ポイント "; } } //------------------ 時系列グラフ出力設定部 --------------- TIME_GRAPH { GRAPH_NAME = "幸福度"; TITLE = "幸福度"; AXIS_LABEL = "", ""; SCALE = 0.000000, -100.000000, 0.000000, 100.000000, 50.000000, 50.000000; REMARKS = YES; OUTPUT { GRAPH_ELEMENT_NAME = "幸福度合計"; LINE_COLOR = 0,0,255; LINE_WIDTH = 1; MARKER_ID = 0; OUTPUT_EXPRESSION = "World.幸福度合計"; } OUTPUT { GRAPH_ELEMENT_NAME = "先進国"; LINE_COLOR = 255,0,0; LINE_WIDTH = 1; MARKER_ID = 0; OUTPUT_EXPRESSION = "World.二次元空間.先進国.幸福度"; } OUTPUT { GRAPH_ELEMENT_NAME = "途上国"; LINE_COLOR = 0,255,0; LINE_WIDTH = 1; MARKER_ID = 0; OUTPUT_EXPRESSION = "World.二次元空間.途上国.幸福度 "; } } //------------------ コントロールパネルデータ設定部 --------------- CONTROL_PANEL { PANEL_ITEM { ITEM_NAME = "先進国の数"; ITEM_TYPE = SLIDER; VAR_NAME = WORLD.先進国の数; CONTROL_ON = NO; CONTROL_ON_INT = 1; CONTROL_ON_DOUBLE = 0.000000; CONTROL_ON_STRING = ""; CONTROL_OFF = NO; CONTROL_OFF_INT = 0; CONTROL_OFF_DOUBLE = 0.000000; CONTROL_OFF_STRING = ""; SLIDER_RANGE_MAX = 300; SLIDER_VALUE_MIN = 0.000000; SLIDER_VALUE_STEP = 1.000000; } PANEL_ITEM { ITEM_NAME = "途上国の数"; ITEM_TYPE = SLIDER; VAR_NAME = WORLD.途上国の数; CONTROL_ON = NO; CONTROL_ON_INT = 1; CONTROL_ON_DOUBLE = 0.000000; CONTROL_ON_STRING = ""; CONTROL_OFF = NO; CONTROL_OFF_INT = 0; CONTROL_OFF_DOUBLE = 0.000000; CONTROL_OFF_STRING = ""; SLIDER_RANGE_MAX = 300; SLIDER_VALUE_MIN = 0.000000; SLIDER_VALUE_STEP = 1.000000; } PANEL_ITEM { ITEM_NAME = "環境要素"; ITEM_TYPE = TOGGLE; VAR_NAME = WORLD.環境要素; CONTROL_ON = YES; CONTROL_ON_INT = 0; CONTROL_ON_DOUBLE = 0.000000; CONTROL_ON_STRING = ""; CONTROL_OFF = NO; CONTROL_OFF_INT = 0; CONTROL_OFF_DOUBLE = 0.000000; CONTROL_OFF_STRING = ""; SLIDER_RANGE_MAX = 1; SLIDER_VALUE_MIN = 0.000000; SLIDER_VALUE_STEP = 1.000000; } PANEL_ITEM { ITEM_NAME = "環境成長ステップ"; ITEM_TYPE = SLIDER; VAR_NAME = WORLD.環境成長ステップ; CONTROL_ON = NO; CONTROL_ON_INT = 1; CONTROL_ON_DOUBLE = 0.000000; CONTROL_ON_STRING = ""; CONTROL_OFF = NO; CONTROL_OFF_INT = 0; CONTROL_OFF_DOUBLE = 0.000000; CONTROL_OFF_STRING = ""; SLIDER_RANGE_MAX = 50; SLIDER_VALUE_MIN = 0.000000; SLIDER_VALUE_STEP = 1.000000; } } //------------------ 説明用HTMLテキスト --------------- #begin_html #end_html //------------------ 空間初期値データ設定部 --------------- SPACE_INITIAL { SPACE_ITEM { COMPO_PATH_NAME = "WORLD.二次元空間.先進国の数"; MARKER_ID = 1; COMPO_KIND = COMPO_VAR; SPACE_COLOR_MIN = 255,255,255; SPACE_COLOR_MAX = 0,0,255; SPACE_DRAW_RANGE = 0.000000, 1.000000; SPACE_DISPLAY = 0; } SPACE_ITEM { COMPO_PATH_NAME = "WORLD.二次元空間.途上国の数"; MARKER_ID = 1; COMPO_KIND = COMPO_VAR; SPACE_COLOR_MIN = 255,255,255; SPACE_COLOR_MAX = 255,0,0; SPACE_DRAW_RANGE = 0.000000, 1.000000; SPACE_DISPLAY = 0; } SPACE_ITEM { COMPO_PATH_NAME = "WORLD.二次元空間.先進国"; MARKER_ID = 0; COMPO_KIND = COMPO_AGENT; SPACE_COLOR_MIN = 0,0,255; SPACE_COLOR_MAX = 0,0,0; SPACE_DRAW_RANGE = 0.000000, 0.000000; SPACE_DISPLAY = 0; } SPACE_ITEM { COMPO_PATH_NAME = "WORLD.二次元空間.途上国"; MARKER_ID = 0; COMPO_KIND = COMPO_AGENT; SPACE_COLOR_MIN = 255,0,0; SPACE_COLOR_MAX = 0,0,0; SPACE_DRAW_RANGE = 0.000000, 0.000000; SPACE_DISPLAY = 0; } SPACE_ITEM { COMPO_PATH_NAME = "WORLD.二次元空間.全体の利益"; MARKER_ID = 1; COMPO_KIND = COMPO_VAR; SPACE_COLOR_MIN = 255,255,255; SPACE_COLOR_MAX = 255,255,0; SPACE_DRAW_RANGE = 0.000000, 1.000000; SPACE_DISPLAY = 0; } } //------------------ レポート出力情報設定部 --------------- REPORT_INFO { REPORT_NAME = "C:\My Documents\reportx.out"; FIELD_DELIMITER = ","; REPORT_ELEMENT { ELEMENT_NAME = "妥結ポイント"; FIGURES = 5; FORMAT_ID = 0; REPORT_EXPRESSION = "WORLD.妥結ポイント"; REPORT_INTERVAL = 1; REPORT_STEP = 0; REPORT_TYPE = 4; } REPORT_ELEMENT { ELEMENT_NAME = "先進国の利益"; FIGURES = 0; FORMAT_ID = 0; REPORT_EXPRESSION = "World.二次元空間.先進国.利益"; REPORT_INTERVAL = 1; REPORT_STEP = 0; REPORT_TYPE = 4; } REPORT_ELEMENT { ELEMENT_NAME = "途上国の利益"; FIGURES = 0; FORMAT_ID = 0; REPORT_EXPRESSION = "World.二次元空間.途上国.利益"; REPORT_INTERVAL = 1; REPORT_STEP = 0; REPORT_TYPE = 4; } } //------------------ その他のデータ設定部 --------------- OTHERS_DATA { INDENT = 1; FONT_NAME = "MS ゴシック"; FONT_WIDTH = 0; FONT_HEIGHT = -13; FONT_WEIGHT = 200; FONT_ITALIC = 0; FONT_CHARSET = 128; WINDOW_HIDE_RUN = 1; } //------------------ 再生用ログデータ ---------------