私は論理的に私のを整理するのに問題がありますが、とifelseという条件がNetLogoにあります。NetLogo:間違ったifelse条件?
私は1年以内に(1ティック)費やす必要のある目標金を持っています。また、私は今年中に収穫する必要のある木材の価値を持っています。このように、3つの可能性が出てくることができます。
- 1:私は私の木材の目標
- 2を満たすために十分なお金を持っている:私は私の収穫の目標を達成するために費やす必要がより多くのお金 持っている - 私はお金を節約 -
money saved, timber meet
を - 3:私は私の収穫の目標を達成する必要があまりお金を持って - 私は 収穫することができない私はcorreとき
money spent, timber not meet
しかし、私のwhileループは、予想通り、すなわち動作しない十分な私の金を使って木材のゴーラを見て、何らかの理由で私は "money spent, timber not meet
"に状態になりますが、これは真実ではありません。条件ifelseとは、どのように私は、出力としての私の3つの期待される出力を持つためにそれらを手配することができますが
してください、あなたは私ので見ることができますか?または、コードをもっと良く書くにはどうすればいいですか?
ありがとうございました!
ながら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
]
]
コード全体:あなただけreal_money_year = 0
場合、その条件に到達することができるはず
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