2017-02-12 53 views
0

我有两个代理商,客户和制造商。这些海龟中的每一个都有许多变量,其中一些变量被全局定义为能够被分配给另一种类型的代理。我已经定义了这一点:如果在今年年底,产品1的采购量高于产品2和3,那么该产品将分配到另外3家商店。问题是循环无法在逻辑上工作。当记者不真实时,命令中定义的内容正在发生!如果循环在逻辑上不起作用!在netlogo

ask manufacturers [ 
if (product1purchases > product2purchases) and (product1purchases > product3purchases) [ 



set storesavailability storesavailability + 3 
    set Brandd 1 
    set color red 
] 

为什么当for for if中定义的条件不成立时,执行命令? 谢谢

回答

0

他们不是。您可以通过添加打印语句,这样证明自己:

ask manufacturers [ 
    let _cond ((product1purchases > product2purchases) and (product1purchases > product3purchases)) 
    print (word "_cond is " _cond) 
    if (_cond) [ 
    print (word "within branch, _cond is " _cond) 
    set storesavailability storesavailability + 3 
    set Brandd 1 
    set color red 
    ] 
] 
+0

感谢这个伟大的方式来检查的条件,但很奇怪的是,当我运行该程序一次,然后点击红色特工,我发现其中一些产品1的购买量少于产品2的购买量!或产品1购买量少于产品2购买量。印刷品上说,例如对于一些代理商(蓝色代理商)来说,条件是成立的,但对于那些代理商,当我点击进行检查时,我注意到这种不一致性! – Naha

+0

@Naha条件将适用于每个制造商在它括号内运行代码时。您可以添加更多的打印语句,以了解您的期望错误的原因。请确信NetLogo正在按照您所告诉的内容进行操作,并尝试了解您在何处告诉其执行与您预期不同的事情。 – Alan

+0

非常感谢Alan。通过做你说的话,我可以确保如果工作正常。我无法正确读取这些值,因为检查代理的窗口太小了。我通过您建议的打印代码试了几次,最后发现我犯了一个错误!非常感谢 :) – Naha