私は、捕食者の数が少なく、獲物の人口が多いので、捕食者と獲物の状況をシミュレートするコードを作成しようとしています。時間が経つと捕食者の人口は増加しますが、捕食者の人口は捕食者の人口を維持するにはあまりにも少なくなるまで減少します。捕食者の人口が死亡し、捕食者の人口が再び人口を増やすことができます。シミュレーションは、2つの母集団の1つが0に達するたびに停止することになっています。この場合、仮の母集団はシミュレーションの時間経過に伴って2つの母集団を停止してプロットします。これは、これまでの私のコードです:Python:ループで目的の結果が得られない
import matplotlib.pyplot as plt
def simulate(initialPred, initialPrey, preyGrowth, predationRate, predShrink, predFedBirthRate):
preyCounts = []
predatorCounts = []
predatorI = initialPred
preyI = initialPrey
predator = predatorI
prey = preyI
while predator > 0 and prey > 0:
predator = predatorI * (1 - predShrink + predFedBirthRate * preyI)
prey = preyI * (1 + preyGrowth - predationRate * predatorI)
predatorCounts.append(predator)
preyCounts.append(prey)
predatorI = predator
preyI = prey
plt.plot(predatorCounts, 'r', preyCounts, 'b')
plt.show()
return preyCounts, predatorCounts
simulate(50,1000,0.25,0.01,0.05,0.00002)
誰かが私を助けてくださいことはできますか?
*またさておき、私はこのように内部の値を持つ関数行の後に関数の外で私のプロットコードを置くたびに、このから:それは関数から値をプロットしていない
simulate(50,1000,0.25,0.01,0.05,0.00002)
plt.plot(predatorCounts, 'r', preyCounts, 'b')
plt.show()
言うpredatorCounts
とpreyCounts
は未定義です。
私が表示されませんwhileループ中の 'prey'の値を更新するコードはありますか?それは望ましい行動ですか? PS: 'matplotlib'については何も知りません –
whileループの先頭にprintステートメントを置いて' '' 'predatorI'''と' '' preyI'''に何が起きているのかを知ることができます。手掛かり – wwii
1つの問題は、あなたのwhile条件が機能していないことです。時にはあなたの条件は0.4匹の餌を有効と見なしますが、私はウサギの4分の1がかなり死んだと思います。 – wwii