《Netlogo多主体建模入门》笔记8
turtles-own [
money
save_rate ;; 新增了一个保底比例
] to setup clear-all
create-turtles agent_num[
setxy random-xcor random-ycor
set money (total_money / agent_num)
set save_rate random-float ;;对于每一个人来说,这个保底比例不一样 ]
reset-ticks
end to go
ask turtles[
let agsets other turtles-here
if count agsets >= [
transaction (one-of agsets)
]
forward
]
tick
end to transaction [trader]
let deltam
let money1 ([money] of trader)
let epsilon (random-float )
set deltam (epsilon - ) * money + epsilon * money1
if money + deltam >= and money1 - deltam >=
[
set money money + deltam
ask trader[
set money money1 - deltam
] ]
end to go2
ask turtles[
let agsets other turtles-here
if count agsets >= [
transaction2 (one-of agsets)
]
forward
]
tick
end to transaction2 [trader] ;; go2 按钮调用的函数
let deltam
let money0 ( ( - save_rate) * money) ;; 自己拿出来交易的财富
let money1 ( ( - ([save_rate] of trader)) * ( [money] of trader)) ;; 另外一个人拿出来交易的财富
let epsilon (random-float ) ;; 随机分割财富的系数
set deltam (epsilon - ) * money0 + epsilon * money1
if money + deltam >= and ([money] of trader) - deltam >=
[
set money money + deltam
ask trader[
set money money - deltam
] ]
end to to-update-plot
let lst [money] of turtles
set-histogram-num-bars
if not empty? lst [
set-plot-x-range max lst
histogram lst
] end to save-file
file-open "ag.txt"
let wealths""
ask turtles[
set wealths (word wealths money "\r\n")
]
file-print wealths
file-close
end to lorenz-plot
clear-plot
set-current-plot-pen "equal"
plot
plot set-current-plot-pen "dominant"
plot-pen-down
plotxy
plotxy
plotxy
plot-pen-up set-current-plot-pen "lorenz"
set-plot-pen-interval / agent_num
plot let sorted-wealths sort [money] of turtles
let total-weath sum sorted-wealths
let weath-sum-so-far
let index
let gini-s ;;
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 + ) set gini-s gini-s + ((index / agent_num) - (weath-sum-so-far / total-weath)) / agent_num
;; ]
set-current-plot "吉尼系数"
plot gini-s *
end to-report compute-gini ;;行为空间调用的重复函数
let sorted-wealths sort [money] of turtles
let total-weath sum sorted-wealths
let weath-sum-so-far
let index
let gini-s
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 + ) set gini-s gini-s + ((index / agent_num) - (weath-sum-so-far / total-weath)) / agent_num ]
set-current-plot "吉尼系数"
report gini-s *
end
- 为了找出哪组参数控制下的 某个参数最高,我们需要重复实验,但是手动太麻烦了,我们可以用netlogo 自带的 “行为空间” 工具
- 实验名称
- 组合起来不同的参数。
- 对于每一组参数的实验,需要 重复多次
- 调用报告函数 ,这个函数负责绘制每一组参数下的 gini 系数
- 设置每一次实验的 终止时间步数
- 实时更新 视图
- 实时更新 绘图 和 监视器
- 最大并行运算数
- 然后会让你选择需要存放 csv 数据表格的目录
- 取消 这两项实时更新的话,数据会跑的比之前快很多
to-report compute-gini ;; 这个函数是需要输出的
let sorted-wealths sort [money] of turtles
let total-weath sum sorted-wealths
let weath-sum-so-far
let index
let gini-s
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 + ) set gini-s gini-s + ((index / agent_num) - (weath-sum-so-far / total-weath)) / agent_num ]
set-current-plot "吉尼系数"
report gini-s *
end
《Netlogo多主体建模入门》笔记8的更多相关文章
- 《Netlogo多主体建模入门》笔记 2
从自带的模型库开始 财富分配模型 黄色代表稻谷,有的人消化快,有的慢,稻谷的积累代表财富的积累,不涉及交易行为. 点击setup后 ,点击 go 红线--穷人: 绿线-- 中产 : 蓝 ...
- 《Netlogo多主体建模入门》笔记4
4- 从Langton的蚂蚁看Turtle与Patch的交互 这只蚂蚁从10000步开始,就会自发地 “建桥” Turtle与Patch就好比是,一个方块和一个格子的关系. 一个格子上可以 ...
- 《Netlogo多主体建模入门》笔记3
3- 用“生命游戏”认识Patch 代码: patches-own[living] to setup clear-all ask patches [ < 0.3[ set pcolo ...
- 每天成长一点---WEB前端学习入门笔记
WEB前端学习入门笔记 从今天开始,本人就要学习WEB前端了. 经过老师的建议,说到他每天都会记录下来新的知识点,每天都是在围绕着这些问题来度过,很有必要每天抽出半个小时来写一个知识总结,及时对一天工 ...
- ES6入门笔记
ES6入门笔记 02 Let&Const.md 增加了块级作用域. 常量 避免了变量提升 03 变量的解构赋值.md var [a, b, c] = [1, 2, 3]; var [[a,d] ...
- [Java入门笔记] 面向对象编程基础(二):方法详解
什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能上来看,方法都有点类似与函数.但是,方法与传统的函数还是有着不同之处: 在 ...
- React.js入门笔记
# React.js入门笔记 核心提示 这是本人学习react.js的第一篇入门笔记,估计也会是该系列涵盖内容最多的笔记,主要内容来自英文官方文档的快速上手部分和阮一峰博客教程.当然,还有我自己尝试的 ...
- redis入门笔记(2)
redis入门笔记(2) 上篇文章介绍了redis的基本情况和支持的数据类型,本篇文章将介绍redis持久化.主从复制.简单的事务支持及发布订阅功能. 持久化 •redis是一个支持持久化的内存数据库 ...
- redis入门笔记(1)
redis入门笔记(1) 1. Redis 简介 •Redis是一款开源的.高性能的键-值存储(key-value store).它常被称作是一款数据结构服务器(data structure serv ...
随机推荐
- Flask程序相关配置加载的三种方式
方式一:从对象中加载配置 1.定义配置类,在配置类中添加相应的配置 2.通过app.config.from_object(配置类)进行加载 代码如下: from flask import Flask ...
- 你是否还在写try-catch-finally?来使用try-with-resources优雅地关闭流吧
前言 开发中,我们常常需要在最后进行一些资源的关闭.比如读写文件流等,常见的,我们会在最后的finally里进行资源的关闭.但是这种写法是很不简洁的.其实,早在JDK1.7就已经引入了try-with ...
- Python数据类型-5 元组
元组 我们知道,用方括号括起来的是列表,那么用圆括号括起来的是什么,是元组. 元组也是序列结构,但是是一种不可变序列,你可以简单的理解为内容不可变的列表.除了在内部元素不可修改的区别外,元组和列表的用 ...
- c++中的运算符重载operator1(翁恺c++公开课[30]学习笔记)
运算符重载规则: 只有已经存在的运算符才能被重载,不能自己制造一个c++中没有的运算符进行重载 重载可以在类或枚举类型内进行,也可以是全局函数,但int.float这种已有的类型内是不被允许的 不能二 ...
- Mate Linux 桌面的什么受GNOME 2 粉丝喜欢 ?
导读 如果你以前听过这个传闻:当 GNOME3 第一次发布时,很多 GNOME 用户还没有准备好放弃 GNOME 2. Mate(以马黛茶yerba mate植物命名)项目的开始是为了延续 GNOME ...
- Aho-Corasick (AC) 自动机
基础:AC自动机是建立在 trie 树和 kmp 基础之上的,为什么这么说,因为AC自动机是基于字典树的数据结构之上的,其次它是一个自动机,用到了 kmp 的失配数组的思想. 应用:在模式匹配的问题中 ...
- gitlab两种连接方式:ssh和http配置介绍 --转自 散尽浮华
gitlab环境部署好后,创建project工程,在本地或远程下载gitlab代码,有两种方式:ssh和http 1)ssh方式:这是一种相对安全的方式 这要求将本地的公钥上传到gitlab中,如下图 ...
- nopad++将制表符替换为换行符
将制表符换位换行
- XML简单介绍
什么是 XML? XML 指可扩展标记语言(EXtensible Markup Language). XML 是一种很像HTML的标记语言. XML 的设计宗旨是传输数据,而不是显示数据. XML 标 ...
- Python开发之Anconda环境搭建
Python的强大之处在于它的应用范围广泛,遍及人工智能.科学计算.web开发.系统运维.大数据及云计算等,实现其强大功能的前提,就是Python具有数量庞大且功能相对完善的标准库和第三方库.通过对库 ...