2016-07-29 25 views
0

Ich würde eine periodische Funktion in Netlogo basierend auf Ticks und einer Preisvariablen erstellen.Netlogo eine periodische Funktion erstellen

Ich möchte eine Funktion, wo der Preis zwischen 2 (0 und 1) gehalten wird, und ich werde groß sein, wenn ich die Periodizität wählen kann.

mein kleines reproduzierbares Beispiel:

patches-own[ 
price 
] 

to setup 
    clear-all 
    ask patches [ 
    set price 0.1 
    ] 
    reset-ticks 
end 

to go 
    ask patches [ 
    set price (sin ticks) + price 
    ] 
    tick 

end 

Sie in

Voraus Danke

Antwort

1

Es klingt wie Sie nur einen mod basierten Zyklus wollen.

to test 
    ca 
    reset-ticks 
    print map price n-values 100 [?] 
    print map [price02 0 1 ?] n-values 100 [?] 
end 

to-report price [#ticks] 
    let _cycle 10 ;cycle length 
    let _first 3 ;length of first cycle component 
    report ifelse-value (#ticks mod _cycle < _first) [ 
    0.1 
    ][ 
    0.2 
    ] 
end 

Edit:

Alternativ können Sie einfach versuchen, eine Sinuswelle zu skalieren.

to-report price02 [#min #max #ticks] 
    let _cycle 10 
    let _sin sin (#ticks * 360/_cycle) 
    let _scaledsin (1 + _sin)/2 
    report #min + (#max - #min) * _scaledsin 
end 
+0

nicht wirklich, ich will alle Variable zwischen 0 und 1 ... so etwas wie eine verhulst oder trigo Funktion – delaye

+0

Siehe oben bearbeiten. – Alan

+0

Vielen Dank! – delaye