Итак, я пытаюсь написать код, который имитирует ситуацию с хищником и жертвой, где он начинается с низкой популяции хищников и высокой популяции добычи. Со временем популяция хищников растет, в то время как население жертвы сжимается до тех пор, пока население жертвы слишком мало для поддержания популяции хищников. Население хищников умирает, а затем население жертвы может заселить. Предполагается, что симуляция прекращается всякий раз, когда одна из двух популяций достигает 0, в этом случае популяция хищников будет составлять и отображать две популяции в течение времени моделирования до тех пор, пока она не остановится. Это мой код до сих пор:Python: Loop не дает желаемого результата
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
не определены.
Я не вижу код для обновления значения 'prey' во время цикла? Это желаемое поведение? PS: Я ничего не знаю о 'matplotlib' –
Вы можете поместить оператор печати в начало цикла while, чтобы увидеть, что происходит с' '' predatorI''' и '' 'preyI''', что может дать вам ключ к разгадке. – wwii
Одна из проблем заключается в том, что ваше состояние не работает. Иногда ваше состояние относится к 0.4 жертве как к действию, но я думаю, что четыре десятых кролика в значительной степени мертвы. – wwii