5 多数据save_《Netlogo多主体建模入门》笔记 7
生活随笔
收集整理的這篇文章主要介紹了
5 多数据save_《Netlogo多主体建模入门》笔记 7
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
7- 導出數據與復雜曲線繪制
該系列筆記基于集智樂園的《Netlogo多主體建模入門》課程,感謝張江老師與各位志愿者的辛勤付出。
- 集智樂園 《Netlogo多主體建模入門》 https://campus.swarma.org/play/play?id=429
- netlogo 適合做仿真,還是要配合 matlab 處理 產生的仿真數據
數據導出
默認導出到與模型文件同級的 文件夾下
先創建一個 ag.txt 文件
創建一個save的按鈕
save按鈕的 代碼實現
to save-filefile-open "ag.txt"let wealths""ask turtles[set wealths (word wealths money "rn")]file-print wealthsfile-close end運行模型,產生數據之后,就可以導出
接著就可以利用 matlab 進一步做數據分析。
繪制洛倫茲曲線
首先需要知道:什么是洛倫茲曲線?
假設一個王國里有6個人,他們的圖形高度代表了財富量。
先由高到低進行排序,最左邊的人的序號是1,最右邊的序號是6.
改變縱軸的值為: 左邊所有人的財富值和自己的財富值的累加。
接著進行歸一化:
- 橫軸除以 人口的總人數。
- 縱軸除以 所有人的財富總量。
這樣,橫縱坐標就變成了比例。
紅色虛線代表最平均的財富分配,藍色實線就代表了最不平均的財富分配。
然后就可以開始繪制
X、Y的最大值為1
繪圖更新命令寫中間的就行,下面三個不用寫。
然后去完善對應的代碼。(在文末)
要用到的函數或者命令:
Plot:繪圖
- set-current-plot “圖的名稱” ----- 選定畫哪個圖
Pen:畫筆
- set-current-pen “線段名稱” ---- 選擇你要畫哪條線
- plot-pen-down ------ 下筆
- plot-pen-up ----- 提筆
plot :等水平間隔地繪制點(線)
plot 0 plot 1 plot 3- set-plot-pen-interval 設置畫筆 等水平間隔地繪制點
- plotxy :任意繪制點(線)
item 的用法
item:從列表中根據下標取出任意一個元素出來
item idx lst
idx: 一個整數,即第幾個下標
lst:一個由多個元素構成的列表
Netlogo中的下標是從0開始的
繪制洛倫茲曲線的函數代碼:
to lorenz-plotclear-plot set-current-plot-pen "equal"plot 0plot 1set-current-plot-pen "dominant"plot-pen-down plotxy 0 0plotxy 1 0plotxy 1 1plot-pen-upset-current-plot-pen "lorenz"set-plot-pen-interval 1 / agent_numplot 0let sorted-wealths sort [money] of turtleslet total-weath sum sorted-wealthslet weath-sum-so-far 0let 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總結
以上是生活随笔為你收集整理的5 多数据save_《Netlogo多主体建模入门》笔记 7的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: fat32怎么做启动盘 如何制作FAT3
- 下一篇: win10设置里蓝牙没了怎么办 win1