我已經嘗試並在發佈我的問題之前探討了此論壇上已回答的問題。我正在構建農民用水模型。我希望農民使用他們自己的水,然後從他們的補丁中獲得水,然後想要改變補丁,農民的水變量以及作爲農民和補丁地表水的全球變量。我期望在每次滴答時都能看到最大和最小的水量。但我的顯示器和圖表顯示相同的價值。我無法找到錯誤,請指導。下面給出GUI的圖片代碼。謝謝。監視器不顯示Netlogo界面中的最大和最小水分
globals [TW well-depth]; total water
breed [farmers farmer]
farmers-own [SWA] ;surface water availbility
patches-own [ wtd GW ] ;water table depth and Groundwater
to setup
clear-all
create-farmers num-farmers [
move-to one-of patches
set SWA random 12
]
ask patches [
set WTD 2
set GW 3
set pcolor green
]
reset-ticks
end
to go
ask farmers [
update-water
]
tick
end
to update-water
ifelse swa < 5 [
ask patches in-radius 1 [
set pcolor blue
set TW gw + [SWA] of myself
]
]
[
ask patches in-radius 1 [
set gw gw - random-float .0005
set well-depth wtd/gw
]
set tw swa
]
end
接口設置:
情節設置:
嗨,我想建立農民一年種植的時間表模型,並更新年度農民收入,財富,可用水量,用水量等。爲此,我試圖建立一個考慮模型來自以前回復此帖的建議。我需要徹底解決給定的問題。如果我將代碼中的訪問權作爲全局變量來使用。我的水的最大值和最小值發生了變化,但是當我停止模型時它仍然保持不變。但根據建議,如果我把多餘的水作爲農民,那麼過量水圖顯示一個恆定的線和恆定的最大和最小水量。儘管我試圖在我的模型中使用水,但我需要看到波動。我的模型的預期輸出主要是用水/通水,地下水和地表水。請推薦更正。 感謝
Globals [ potential-buyers year season TAWS TGWU TWR rprice wprice excess-water ]
Breed [rfarmers rfarmer]
Breed [pfarmers pfarmer]
Breed [wcrops wcrop]
Breed [ccrops ccrop]
Breed [rcrops rcrop]
rfarmers-own [
savings
tubewell
wyield
ryield
land
CRPDCSN
WR-wheat
SWA-rabi
GWA pumping-on?
seasonality
input-cost
wealth
wrevenue
wincome
wwealth
allowed-pumped-water
wr-rice
income-1
SWA-kharif
income-2
rincome
rrevenue
rwealth
]
patches-own [Gwater well-depth
WTD]
to setup
clear-all
ask patches [set pcolor green
Set WTD 3 + random-float 18.005
set Gwater GW/WTD
]
create-rfarmers no-of-rfarmers [set shape "person"
set color brown
move-to one-of patches
set land 12
set wealth 1000 + random 500
set input-cost 5 + random 3
set tubewell 1
set wr-wheat 10 + random-float 12
set SWA-rabi 4 + random-float 6.6
set SWA-kharif 6 + random-float 9.6
set wr-rice 18 + random-float 15
set GWA pumping-on?
set wprice 1.300 + random 5.0
set rprice 1.500 + random 1.00
set wyield 25 + random 20
set ryield 40 + random 20
]
Reset-ticks
end
to go
ask rfarmers [cropping-decision
;use-GW
update-wealth-w
]
tick
update-timeline
end
to cropping-decision
ifelse wealth > input-cost and land > 2 and ticks mod 2 = 0
[ set CRPDCSN "wheat"
if wr-wheat < SWA-rabi [ use-GW]
set seasonality "Rabi"
]
[set CRPDCSN "rice"
Set seasonality "Kharif"
go-2]
end
to use-GW
ifelse (SWA-rabi - wr-wheat) < 0 [set pumping-on? true
ask patches in-radius 4 [ set wtd wtd + random-float 1.00005]
set input-cost input-cost + 0.0005 * (wr-wheat - SWA-rabi)/wtd ; changed from 200 to 20 t0 .05
set gwater gwater - random-float 0.0005/wtd
set excess-water SWA-rabi - wr-wheat + sum [gwater] of patches in-radius 1
if excess-water > 0 [sell-buy-accesswater]]
[set pumping-on? false
set wyield wyield - random-float 0.0005
set excess-water SWA-rabi
set input-cost input-cost - random-float 1 ]
end
to sell-buy-accesswater
set potential-buyers other rfarmers in-radius 4 with [(excess-water <= 0)]
ask potential-buyers [set input-cost input-cost + 0.0005 * (wr-wheat - SWA-rabi)/WTD
set wyield wyield - .0005 ]
set income-1 0.0005 * excess-water
set wyield wyield + random-float .000005
set excess-water excess-water - [excess-water] of potential-buyers
end
to update-wealth-w
set wrevenue wprice * (wyield * land)
set wincome wrevenue - input-cost * land
set wwealth wealth + wincome + income-1
end
to update-timeline
if ticks mod 2 = 0 [set season "Rabi" set year year + 1
set wprice wprice + 1 ]
;Ask rfarmers [set SWA-Rabi SWA-Rabi - random-float .0005]] ;to incorporate effect of climate
if ticks mod 2 = 1 [set season "Kharif"
set rprice rprice + 1]
; ask rfarmers [Set SWA-Kharif SWA-kharif - random-float .001]
end
to go-2
ask rfarmers [use-GW-R
;buying-selling-GW-R
;lsell-buy-water-r
update-wealth-r
update-wealth
]
end
;;;;;;;;;;; Same procedure is adopted for rice;;;;;;;;;;;;
to use-GW-r
ifelse (SWA-kharif - wr-rice) < 0 [set pumping-on? true
;set Gwater (gwater - (SWA-rabi - wr-wheat))
;set GWA 10 + random-float 10
set input-cost input-cost + .0006 * (wr-rice - SWA-kharif)/wtd ; changed from 200 to 20 t0 .05
ask patches in-radius 4 [ set wtd wtd + random-float .005 ]
set excess-water (SWA-kharif - wr-rice + gwater)
if excess-water > 0 [sell-buy-accesswater-r] ] ; + GWater]
[set pumping-on? false
set ryield ryield - random 2]
end
to sell-buy-accesswater-r
set potential-buyers other rfarmers in-radius 3 with [(excess-water <= 0)] ; and (wtd >= allowable-lm-pumping)]
ask potential-buyers [set input-cost input-cost + 0.0005 * (excess-water)/WTD
set ryield ryield - .005 ]
set income-2 0.5 * (excess-water)
end
to update-wealth-r
set rrevenue (rprice * ryield * land)
set rincome rrevenue - (input-cost * land)
set rwealth rincome + income-2
end
to update-wealth
if ticks mod 2 = 1
[ set wealth wealth + .0005 * (rwealth + wwealth) ]
end
謝謝你的幫助,你的權利和重點。我明白了全局變量的觀點。根據你的建議,我已經取代了FW。它顯示恆定的最小值和最大值。在代碼中可以進行哪些可能的更改以查看上述值的變化? – Sadaf
那麼,在模型中,沒有實際「使用」水的代碼 - 農民只是注意到他們可以使用哪些水。既然農民的「swa」和補丁的「gw」沒有變化,你就會得到不變的價值。我想你會想用某種方式編程實際的「用水」,我會用一個非常簡單的(不切實際的)例子來編輯我的答案。 –