Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Netlogo 变量自身添加不正确。网络标志_Netlogo - Fatal编程技术网

Netlogo 变量自身添加不正确。网络标志

Netlogo 变量自身添加不正确。网络标志,netlogo,Netlogo,我一直在为一个飞行航段中的竞争航空公司建模。所以,我所模拟的代理是乘客,我把他们模拟成不同的代理,在每个时间段他们都想飞进去。航空公司和机场的实际时间段。这一想法是,航空公司将根据之前的航班(迭代)改变票价和不同时间的飞行计划,以吸引最多的乘客或实现盈利。成本与他们希望飞行的时间段有关(更高的需求-更高的成本)。我已使用效用函数对乘客选择模型进行了allready建模: to flightchoice2 let potential-destinations out-link-neighbors

我一直在为一个飞行航段中的竞争航空公司建模。所以,我所模拟的代理是乘客,我把他们模拟成不同的代理,在每个时间段他们都想飞进去。航空公司和机场的实际时间段。这一想法是,航空公司将根据之前的航班(迭代)改变票价和不同时间的飞行计划,以吸引最多的乘客或实现盈利。成本与他们希望飞行的时间段有关(更高的需求-更高的成本)。我已使用效用函数对乘客选择模型进行了allready建模:

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