- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Netlogo 的新手,但我想建立一个模型,其中代理人(汽车司机)将以一定的概率在特定时间离开他的家。假设他星期一早上 1 点离开(如果将滴答声与时间联系起来,那么一个滴答声就是一个小时)。
我尝试将 ifelse 语句与第二个语句结合使用,该语句必须经过验证才能使整个语句变为真。在下面的例子中,汽车/智能体应该以 7.7% 的概率离开它的房子并开到一个叫做 underway-patches 的补丁。由于一周有 168 小时,我尝试通过 mod ticks 链接小时(因此,mod ticks = 1 等于星期一早上 1 点)。
仅此一项就有效:
ifelse ticks mod 168 = 1 and random-float 100.0 < 7.7
[ ask turtles [ move-to one-of underway-patches ] ]
[ ask turtles [ move-to one-of home-patches] ]
这很好用。所以我总是 100 只海龟中大约有 7 只移动到进行中的补丁。
但是如果我现在加上第二个小时,那么凌晨 2 点,第一个函数就不再起作用了(凌晨 1 点根本没有海龟移动——只有凌晨 2 点)。我预计 100 只海龟中大约有 7 只会在凌晨 1 点移动到航行区,然后我预计 100 只海龟中大约有 5 只会在凌晨 2 点移动到航行区(第一个小时的另外 7 只应该返回)到家庭补丁)。
这不再有效了:
; Monday, 1 am
ifelse ticks mod 168 = 1 and random-float 100.0 < 7.7
[ ask turtles [ move-to one-of underway-patches ] ]
[ ask turtles [ move-to one-of home-patches] ]
; Monday, 2 am
ifelse ticks mod 168 = 2 and random-float 100.0 < 5.1
[ ask turtles [ move-to one-of underway-patches] ]
[ ask turtles [move-to one-of home-patches] ]
感谢您的帮助!提前致谢。
最佳答案
首先,祝贺您提出了一个非常明确的问题,尽管您是该网站的新手。
问题不在于您有多个 ifelse
语句,这很好。问题是您的 ifelse
语句正在对所有海龟应用单一测试。只需看第一个带有一条语句的示例:
ifelse ticks mod 168 = 1 and random-float 100.0 < 7.7
[ ask turtles [ move-to one-of underway-patches ] ]
[ ask turtles [ move-to one-of home-patches] ]
想象一下,它是刻度数 1。计算机运行随机数生成器并得到 2。太好了,条件为真,所以第一个 block 开始运行。这将使所有海龟移动到进行中的补丁。类似地,如果随机数生成器返回 10,则条件为 false,所有海龟都会移动到 home-patches。
你可能想要更像的东西(你不必在多行上做括号,我这样做是为了让你可以看到结构的逻辑 block ):
ifelse ticks mod 168 = 1
[ ask turtles-on home-patches
[ if random-float 100.0 < 7.7
[ move-to one-of underway-patches
]
]
]
[ ask turtles-on underway-patches [ move-to one-of home-patches] ]
或者如果你想要移动正确比例的海龟:
ifelse ticks mod 168 = 1
[ let num-to-move 0.077 * count turtles-on home-patches
ask n-of num-to-move turtles-on home-patches
[ move-to one-of underway-patches
]
]
[ ask turtles-on underway-patches [ move-to one-of home-patches] ]
只是一般性的观察,如果你要为每个可能的开始时间编写代码,你将有很多相同的代码,除了刻度和比例。你说你是 NetLogo 的新手,所以我不想太快跳到更高级的概念,但是当你进一步思考你的模型时再回来,我们可能会帮助你创建一个过程这减少了重复代码的需要。
更新:重用代码的一种方法
这不太正确,因为我不太清楚你想要什么样的运动,但这是一个完整的模型,其中比例存储在一个列表中,ticks
用于识别列表中的正确项目。然后将该比例传递给一段移动海龟的代码。
globals
[ home-patches
underway-patches
proportions
]
to setup
clear-all
set proportions [0 0.077 0.05 0.15]
set home-patches patches with [abs pxcor <= 3 and abs pycor <= 3]
ask home-patches [ set pcolor white ]
set underway-patches patches with [not member? self home-patches]
ask underway-patches [ set pcolor yellow ]
create-turtles 100
[ set color red
]
reset-ticks
end
to go
move-turtles item (1 + ticks mod 3) proportions
tick
end
to move-turtles [#prop]
print #prop
ask turtles
[ ifelse member? patch-here home-patches
[ if random-float 1 < #prop
[ move-to one-of underway-patches
]
]
[ move-to one-of home-patches
]
]
end
关于netlogo - 是否有可能有一个带有两个条件(ticks mod 和概率)的 ifelse 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58402532/
降本手段一招鲜,增效方法吃遍天; 01 互联网行业里; 降本策略千奇百怪,手段却出奇一致;增效方法五花八门,手段更是花里胡哨; 对于企业来说;
有什么方法可以使用 angularjs 中的部分进行代码分组吗? 原因 --- 我的 Controller 包含太多代码。该 Controller 包含了多个方法和大量功能的代码,降低了代码的可读性。
不幸的是,我的数据库的数据模型必须改变,所以我正在寻找最轻松的方式来迁移我的数据。 此时情况如何: create table cargo{ id serial primary key, per
在 QTextEdit 对象中,假设我想知道字符在鼠标光标下的位置。 我会写... void MyQTextEditObject::mousePressEvent(QMouseEvent* mouse
是否可以在 C++ 中返回一个 return 语句或做一些具有类似功能的事情? 例如,如果代码中有几个函数将指针作为输入,并且每个函数都检查指针是否为 nullptr,这将很方便。如果它是一个 nul
我的 PC 上有一个控制台应用程序,它是 signalR 服务器。 我有一个 html 页面,它是互联网上的 signalR 客户端。但我尝试连接服务器,但我有一个错误的请求 400 错误。如果服务器
我想将应用程序作为后台进程运行。当点击应用程序图标时,它不会显示任何 View ,只会启动后台进程。 最佳答案 对于 iOS 这是不可能的,但是对于 android,react native 有 he
我知道有(昂贵的)框架可以让你在 VS C# 中编写 android 应用程序并将其编译为 android apk。 我也知道,可以在 VS 中编写 Java 应用程序(link)。 是否有可能,甚至
我在做: can :manage, :all if user.role == 'admin' can :approve, Anuncio do |anuncio| anuncio.try(:apr
我是一名优秀的程序员,十分优秀!