논리적으로 내 을 구성하는 데 문제가 있습니다. 반면에 및 ifelse 조건이 NetLogo에 있습니다.NetLogo : 올바른 상태 및 ifelse 조건?
나는 1 년 (1 틱) 이내에 지출해야하는 목표 돈이 있습니다. 또한, 나는 올해 안에 수확 할 필요가있는 목재 가치를 목표로 삼았습니다. 따라서, 3 가능성이 등장 할 수
- 1 : 나는
- 이 내 목재 목표 을 충족하기에 충분한 돈을 가지고 : 나는 내 수확의 목표를 달성하기 위해 지출해야 할 더 많은 돈 이 - 나는 돈을 절약을 -
- 3 : 나는 내 수확의 목표를 달성하기 위해 필요한 적은 돈을 가지고 - 나는 수확 할 수없는 내가 corre 때
money spent, timber not meet
money saved, timber meet
하지만, 내 while 루프가 예상대로 즉 작동하지 않습니다 충분 내 돈을 보내고 목재 골란을 만난다. 웬일인지 내가 "money spent, timber not meet
"에 이르게된다. 그것은 사실이 아니다. 에서 볼 수
제발, 내 동안과 내 3 개 예상 출력 출력으로 가지고 그것들을 배열 할 수있는 방법 조건 ifelse? 또는 코드를 더 잘 작성하려면 어떻게해야합니까?
감사합니다.
그동안 및 ifelse 루프 :
while [ real_money_year >= 0 ] [ ;and real_timber_year <= timber_target_year
ifelse real_money_year > 0 ; continue if you have enough money
[
ifelse real_timber_year < timber_target_year ; is your timber goal meet?
[ ; timber goal is not meet and DR have enough money to harvest
move-to one-of patches with [patch_timb_stock > 0]
pen-down ; see the path
set real_timber_year patch_timb_stock + real_timber_year ; increase timber gain after each harvest
set real_money_year real_money_year - patch_harvest_cost ; decrease money after each harvest
set pcolor magenta
print "harvest"
]
[;timber value is meet, however we have more money to spend
print "money saved, timber meet"
stop
]
]
[ ; there is not enough money to meet timber goals
print "money spent, timber not meet"
stop
]
]
전체 코드 :
그것에 대해globals [
;timber_target_year ; what is defined timber target per year?
;money_target_year ; how much money do I have to spend per year
; values that DR is able to spend within a year
real_timber_year ; how much do I really harvest in one year
real_money_year ; how much money did I really spend in one year?
]
patches-own [
patch_harvest_cost ; what is the cost of harvest of specific patch?
patch_timb_stock ; what is the timber stack of the patch?
]
to setup
clear-all
setup-rangers ; create DR
setup-patches ; create forest
reset-ticks
end
to setup-rangers
crt 1 [
set color red ]
end ; setup ranger
to setup-patches
ask patches [
set pcolor green
set patch_harvest_cost p_harvest_cost
set patch_timb_stock p_timber_stock
]
set real_money_year money_target_year
end ; setup patches
to go
ask turtles [
harvest
]
tick
end
to harvest
while [ real_money_year >= 0 ] [ ;and real_timber_year <= timber_target_year
ifelse real_money_year > 0 ; continue if you have enough money
[
ifelse real_timber_year < timber_target_year ; is your timber goal meet?
[ ; timber goal is not meet and DR have enough money to harvest
move-to one-of patches with [patch_timb_stock > 0]
pen-down ; see the path
set real_timber_year patch_timb_stock + real_timber_year ; increase timber gain after each harvest
set real_money_year real_money_year - patch_harvest_cost ; decrease money after each harvest
set pcolor magenta
print "harvest"
]
[;timber value is meet, however we have more money to spend
print "money saved, timber meet"
stop
]
]
[ ; there is not enough money to meet timber goals
print "money spent, timber not meet"
stop
]
]
end
좋았어, 앨런, 감사합니다! :) 그렇습니다, 나는 그것을 복잡하게 만들었다 고 생각합니다 .... 나는 'ifelse'가 'while'에 포함되지 않는다는 사실에 놀랐습니다. 왜 그런가요? – maycca