《Netlogo多主体建模入门》笔记 6

6- 玩具经济模型与 Turtles间的互动

该系列笔记基于集智乐园的《Netlogo多主体建模入门》课程,感谢张江老师与各位志愿者的辛勤付出。

  • 集智乐园 《Netlogo多主体建模入门》 https://campus.swarma.org/play/play?id=429

 

 

 

一个模拟财富变化的模型:

 

人(agent)在遇到其他人的时候,会发生交易,财富可能降低,也可能增加

Δ m 是 个体1 的money 变化;

m1 个体1 的财富;

m2 个体2 的财富;

ε 是随机系数,决定个体2的交易后的财富。

《Netlogo多主体建模入门》笔记 6_第1张图片

 

添加滑块

 

《Netlogo多主体建模入门》笔记 6_第2张图片

 

  • 这里的变量是全局变量,可以在代码中拿来用的。增量代表鼠标拖动 时的变化量。
  • 值: 代表默认值,可以被修改。
  • 可以选择垂直放置滑块。

《Netlogo多主体建模入门》笔记 6_第3张图片

 

 

Let适合于为第一次使用的变量进行赋值,它包含了定义变量的意思

Set则适合于已定义的变量的赋值

 

 

one-of agentset:

从集合agentset中随机选择一个元素

n-of n agentset :

从集合agentset中随机选择n个元素

 

如何检测代码没有逻辑错误导致 BUG?

 

在最下方的命令行输入 命令。

《Netlogo多主体建模入门》笔记 6_第4张图片

 

或者画个图。

《Netlogo多主体建模入门》笔记 6_第5张图片

 

 

 

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

 

你可能感兴趣的:(Netlogo多主体建模入门,数据仿真,Netlogo)