《Netlogo多主體建模入門》筆記6

6- 玩具經濟模型與 Turtles間的互動
 
一個模擬財富變化的模型:
 
人(agent)在遇到其餘人的時候,會發生交易,財富可能下降,也可能增長
Δ m 是 個體1 的money 變化;
m1 個體1 的財富;
m2 個體2 的財富;
ε 是隨機係數,決定個體2的交易後的財富。
 
添加滑塊
 
 
  • 這裏的變量是全局變量,能夠在代碼中拿來用的。增量表明鼠標拖動 時的變化量。
  • 值: 表明默認值,能夠被修改。
  • 能夠選擇垂直放置滑塊。
 
 
Let適合於爲第一次使用的變量進行賦值,它包含了定義變量的意思
Set則適合於已定義的變量的賦值
 
 
one-of agentset:
從集合agentset中隨機選擇一個元素
n-of n agentset :
從集合agentset中隨機選擇n個元素
 
如何檢測代碼沒有邏輯錯誤致使 BUG?
 
在最下方的命令行輸入 命令。
 
或者畫個圖。
 
 代碼:
 
turtles-own [money]
 
to setup
  clear-all
  create-turtles agent_num[
     setxy random-xcor random-ycor
    set money (total_money / agent_num)
  ]
  reset-ticks
end
 
to go
  ask turtles[
  let agsets other turtles-here
   if count agsets >= 1 [
     transaction (one-of agsets)
  ]
   forward 1
  ]
  tick
end
 
 
to transaction [trader]
  let deltam 0
  let money1 ([money] of trader)
  let epsilon (random-float 1)
  set deltam (epsilon - 1) * money + epsilon * money1
  if money + deltam >= 0 and money1 - deltam >= 0
  [
    set money money + deltam
    ask trader[
      set money money1 - deltam
    ]
  ]
end
 
to to-update-plot
let lst [money] of turtles
set-histogram-num-bars 100
if not empty? lst [
  set-plot-x-range 0 max lst
  histogram lst
]
 
end
 
相關文章
相關標籤/搜索