2016-01-09 45 views
2

我正在嘗試編程尋找工作的海龜。他們按年齡組分開。netlogo:如果滿足條件(補丁變量值),使海龜停止

補丁是作業,其中有兩個變量叫做「salary-here」和「hours-worked」隨機生成。

我試圖讓我的海龜(人)停止移動(看),當他們找到最高薪水 - 這裏/小時工作的補丁(工作),但他們總是繼續前進。

patches-own 
[salary-here  ; amount of salary paid in one specific job (patch)  
hours-worked  ; time working and leisure 
reward-ratio  ; ratio between salary and hours ] 

turtles-own [age] 

to search-job  ; they can only find jobs according to age "zones" 
if age = 1 [ move-to one-of patches with [ pxcor > 10 and pxcor < 40 ] ] 
if age = 2 [ move-to one-of patches with [ pxcor > 40 and pxcor < 70 ] ] 
if age = 3 [ move-to one-of patches with [ pxcor > 70 and pxcor < 100 ] ] 
end 

to go 
ask turtles [ search-job ] 
ask turtles [ keep-job ] 
tick 
end' 

的想法是:保持工作(留在補丁)如果條件(獎勵比例是最大的周邊地區),如果沒有,搜索工作。

在此先感謝您的幫助。

回答

2

這個想法是,如果他們應該留下來,不要移動一隻烏龜。

在你的旅途中,

ask turtles with [should-stay = false] [search-job] 

然後我會寫一個名爲應該住院的,並插入您的住宿邏輯有功能。

to-report should-stay 
    report [reward-ratio] of patch-here >= max [reward-ration] of neighbors4 
end 

還有其他的方法,包括存儲一個烏龜變量,可以幫助提高速度,如果性能是一個問題。

+0

非常感謝@mattsap – loudanger