Моделирование системы "Хищник-Жертва"

Задача "Хищник-Жертва" состоит в том, что у нас есть две группы рыб: травоядные и хищники. Каждый день травоядные плодятся, их количество увеличивается на определённый процент. В то же время хищники постоянно умирают, их количество уменьшается, но если они съедят несколько травоядных, их количество увеличится. Также нужно учитывать то, что травоядные не могут плодиться вечно: чем больше их количество, тем медленнее они плодятся, т. к. страдают от перенаселённости.Изменение количества рыб можно представить такой формулой:
  • травоядные:  xn+1=(a-b*xn)*xn-d*xn*yn;
  • хищники: yn+1=c*yn+d*xn*yn;
где a - коэффициент роста количества травоядных; b - коэффициент перенаселённости; c - коэффициент смертности хищников; d - вероятность съедения жертвы хищником.
При этом число a должно быть чуть больше 1, число b должно быть в несколько десятков раз меньше числа а, число с будет чуть ниже 1, а число d - не больше 1.
Так выглядит код в Scilab:
12345678910111213141516171819202122232425262728
//Модель хищник-жертва
//a-Коэффициент роста количества травоядных
//b-Коэффициент перенаселённости
//c-Коэффициент смертности хищников
//d-Вероятность съедения жертвы хищником
function fish(a, b, c, d)
//Задаём массив для травоядных и даём начальное значение 0
x=zeros(100,0);
//Задаём массив для хищников и даём начальное значение 0
y=zeros(100,0);
//Начальное количество травоядных
x(1)=100;
//Начальное количество хищников
y(1)=10;
//Задаём цикл
for i=2:100
x(i)=round((a-b*x(i-1))*x(i-1)-d*x(i-1)*y(i-1));
y(i)=round(c*y(i-1)+d*x(i-1)*y(i-1));
end
t=[1:100];
clf;
plot(t, x,'g', t, y,'r');
set(gca(),"grid",[1 1]);
xlabel("Дни");
ylabel("Кол-во рыб");
legend(['травоядные';'хищники']);
title(msprintf('Модель Хищник-Жертва a=%f b=%f c=%f d=%f', a, b, c, d));
endfunction
view rawFish.sci hosted with ❤ by GitHub
Подбирая разные значения a, b , c и d, я получил такие графики:




В результате мы видим, что на первых трёх картинках, у нас были значения смертности хищников 0.8 и 0.9, и поэтому хищники плодились слишком быстро и съели всю рыбу.
А на четвёртом графике я снизил этот параметр до 0.5, хищники стали умирать быстрее, и поэтому травоядные рыбы успевали плодиться и выжили.

Комментариев нет:

Отправить комментарий