2017-02-12 13 views
0

Ich habe zwei Agenten, Kunden und Hersteller. Jede dieser Schildkröten hat eine Anzahl von Variablen, von denen einige global definiert sind, um Agenten eines anderen Typs zugewiesen werden zu können. Ich habe dies definiert: Wenn am Ende des Jahres die Einkäufe von Produkt 1 höher sind als die von Produkten 2 und 3, wird dieses Produkt in 3 weiteren Geschäften vertrieben. Das Problem ist, dass die Schleife nicht logisch funktioniert. Was in den Befehlen definiert ist passiert, während Reporter nicht wahr ist !!Wenn Schleife nicht logisch funktioniert! in Netlogo

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



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

Warum, wenn die für if definierte Bedingung nicht erfüllt ist, werden die Befehle ausgeführt? Danke

Antwort

0

Sie sind nicht. Sie können, dass durch Zugabe von print-Anweisungen, wie diese selbst zu beweisen:

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

Vielen Dank für diese großartige Möglichkeit, um die Bedingungen zu überprüfen, aber die sehr seltsame Sache ist, dass, wenn ich das Programm einmal ausgeführt, dann auf roten Agenten klicken, Ich sehe, dass für einige von ihnen product1purchases weniger ist als product2purchases! oder product1purchases war weniger als product2purchases. Der Druck sagt, dass zum Beispiel für einige der Agenten (die blauen) die Bedingung richtig war, aber für diejenigen, wenn ich klicke, um zu inspizieren, bemerkte ich diese Inkonsistenz! – Naha

+0

@Naha Die Bedingung gilt für jeden Hersteller zum Zeitpunkt der Ausführung des Codes in Klammern. Sie können weitere Druckanweisungen hinzufügen, um zu erfahren, warum Ihre Erwartungen nicht korrekt sind. Sei zuversichtlich, dass das NetLogo genau das tut, was du ihm erzählst, und versuche zu lernen, wo du es anders machen willst, als du beabsichtigt hast. – Alan

+0

Vielen Dank Alan. Indem Sie das tun, was Sie gesagt haben, kann ich sicherstellen, dass es gut funktioniert. Ich konnte die Werte nicht richtig lesen, da das Fenster zur Überprüfung der Agenten zu klein war. Ich habe es mehrmals mit dem von Ihnen vorgeschlagenen Code versucht und festgestellt, dass ich einen Fehler gemacht habe! Danke vielmals :) – Naha