其他分享
首页 > 其他分享> > 《Netlogo多主体建模入门》笔记7

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

作者:互联网

7- 导出数据与复杂曲线绘制     数据导出   默认导出到与模型文件同级的 文件夹下 先创建一个 ag.txt 文件 创建一个save的按钮   代码实现
to save-file
  file-open "ag.txt"
  let wealths""
  ask turtles[
    set wealths (word wealths money "\r\n")
  ]
  file-print wealths
  file-close
end
 

 

运行模型,产生数据之后,就可以导出 接着就可以利用 matlab 进一步做数据分析。       绘制洛伦兹曲线   首先需要知道:什么是洛伦兹曲线?   假设一个王国里有6个人,他们的图形高度代表了财富量。 先由高到低进行排序,最左边的人的序号是1,最右边的序号是6. 改变纵轴的值为: 左边所有人的财富值和自己的财富值的累加。   然后进行归一化: 这样,横纵坐标就变成了比例。 红色虚线代表最平均的财富分配,蓝色实线就代表了最不平均的财富分配。   然后就可以开始绘制 X、Y的最大值为1 绘图更新命令写中间的就行,下面三个不用写。 然后去完善对应的代码。(在文末)         要用到的一个函数或者命令:   Plot:绘图   Pen:画笔   plot :等水平间隔地绘制点(线) plot 0 plot 1 plot 3  
plot-pen-down
plotxy 0 0
plotxy 1 1
plotxy 3 3
plot-pen-up

 

    item 的用法 item:从列表中根据下标取出任意一个元素出来 item idx lst idx: 一个整数,即第几个下标 lst:一个由多个元素构成的列表 Netlogo中的下标是从0开始的     绘制洛伦兹曲线的代码:
to lorenz-plot
  clear-plot 
  set-current-plot-pen "equal"
  plot 0
  plot 1
  set-current-plot-pen "dominant"
  plot-pen-down 
  plotxy 0 0
  plotxy 1 0
  plotxy 1 1
  plot-pen-up
  set-current-plot-pen "lorenz"
  set-plot-pen-interval 1 / agent_num
  plot 0
 
  let sorted-wealths sort [money] of turtles
  let total-weath sum sorted-wealths
  let weath-sum-so-far 0
  let index 0
  repeat agent_num [
    set weath-sum-so-far (weath-sum-so-far + item index sorted-wealths)
    plot (weath-sum-so-far / total-weath)
    set index (index + 1)
  ]
end

 

 

标签:plot,set,入门,weath,建模,pen,Netlogo,plotxy,wealths
来源: https://www.cnblogs.com/wiki-ray/p/12250762.html