Netlogo 变量自身添加不正确。网络标志
我一直在为一个飞行航段中的竞争航空公司建模。所以,我所模拟的代理是乘客,我把他们模拟成不同的代理,在每个时间段他们都想飞进去。航空公司和机场的实际时间段。这一想法是,航空公司将根据之前的航班(迭代)改变票价和不同时间的飞行计划,以吸引最多的乘客或实现盈利。成本与他们希望飞行的时间段有关(更高的需求-更高的成本)。我已使用效用函数对乘客选择模型进行了allready建模:Netlogo 变量自身添加不正确。网络标志,netlogo,Netlogo,我一直在为一个飞行航段中的竞争航空公司建模。所以,我所模拟的代理是乘客,我把他们模拟成不同的代理,在每个时间段他们都想飞进去。航空公司和机场的实际时间段。这一想法是,航空公司将根据之前的航班(迭代)改变票价和不同时间的飞行计划,以吸引最多的乘客或实现盈利。成本与他们希望飞行的时间段有关(更高的需求-更高的成本)。我已使用效用函数对乘客选择模型进行了allready建模: to flightchoice2 let potential-destinations out-link-neighbors
to flightchoice2
let potential-destinations out-link-neighbors
let best-patch max-one-of potential-destinations [utility-for1 myself]
ifelse random-float 1 > q
[move-to best-patch][move-to one-of potential-destinations]
end
to-report utility-for2 [businessman89] ;; Schedule Choice
let beta1 1
let beta2 1
let utility (beta1 * (1 / airfare) + beta2 * abs(time - time1))
report utility
end
“其中(time-time1)基本上表示航空公司提供的服务与乘客想要的服务之间的时差
我的问题在于实际支付费用,以增加航空公司的营业额,并消除乘客代理人。我已经遵循了一点羊狼模式,我已经达到了摆脱乘客的程度,但航空公司的营业额不会增加,对吗?”
有人能帮我解释一下为什么航空公司的营业额没有正确增加吗
编辑1-一个非常简化的版本我的模型被上传以显示精确的问题
加载代理,从乘客处创建到飞机的链接
飞机移动到以房屋为代表的“起飞时间段”,然后乘客根据时间段和机票选择飞机
从该图可以看出,乘客被安置在飞机的同一位置,但当[机票支付]程序运行时(如前所述),不知何故,营业额加起来并不正确
此图显示了go程序之前和之后的营业额计数,即使航空公司的营业额增加了,但它的计数不正确。
我很确定问题来自于创建代理时设置变量的方式。营业额设置为“海龟自有”变量,机票设置为各航空公司的变量
breed [business1 businessman78] ;; business is its own plural, so we use "businessman" as the singular.
breed [business2 businessman89]
breed [Airline1 airplane1]
breed [Airline2 airplane2]
breed [leisure1 leisureman78]
breed [leisure2 leisureman89]
breed [Runway1 r78]
breed [Runway2 r89]
airline1-own [ start-patch time1 airfare capacity turnover]
airline2-own [ start-patch time1 airfare capacity turnover]
turtles-own [ time cost ]
然后在设置中创建飞机时设置机票和营业额的值。A1的机票价格为100,A2的机票价格为1000此代码不正确:
let customers2 business2-here
if customers2 != nobody
if
条件始终为真,因为customers2
是一个代理集,而没有人
不是,因此它们永远不相等nobody
表示缺少一个代理;它不是一个空的代理集
(这样想:仅仅因为我没有苹果,并不意味着我有一袋空苹果。我可能一无所有,甚至连一袋都没有。)
我想你的意思是:
let customers2 business2-here
if any? customers2
我不知道这是否是您的错误的原因,但无论如何,您都希望修复它。它做错了什么?还有,机票价格的变化是什么?在哪里设置?因此乘客计数变为0,但营业额计数本身并没有正确相加。我相信这与机票价格的变化有关,但我不知道具体是什么。我将机票变量设置为airline1自身变量,而营业额是为所有海龟设置的变量。airline1-own[开始修补时间1机票容量]airline2-own[开始修补时间1机票容量]海龟自身[时间-成本-能量周转],并通过设置设置其实际值,但是,在go过程中,在每次迭代中使用[update conditions]来改变它。在代码中添加一些
show
语句可能会有所帮助,这样您就可以获得关于其中发生的事情的一些信息,并尝试找出您首先获得的输出与您想要/期望的结果之间的差异。是的,我上传了我正在使用的节目声明的图像,这仍然给了我总结营业额的错误。ThnxYes,我已经解决了这个问题,它确实有助于解决这个问题,部分原因是在某些情况下,我确实得到了添加的正确答案,只是Netlogo似乎不会为每次运行添加超过4个turtles变量。我的意思是,如果我计算每次运行的所有营业额的总和,我应该得到两家航空公司的7,但通过使用此过程,我只能得到每家航空公司的4,因此我可能得到4和1,而不是总和为7。无论如何,我已经使用business2中的一个解决了这个问题,并且多次重复此过程。当然,进行模拟需要更多的时间,但我宁愿继续完成程序。无论如何,非常感谢你的帮助。
let customers2 business2-here
if any? customers2