Гордеев А.С. Моделирование в агроинженерии - файл n1.doc

Гордеев А.С. Моделирование в агроинженерии
скачать (2046.7 kb.)
Доступные файлы (1):
n1.doc3932kb.03.12.2007 20:56скачать

n1.doc

1   2   3   4   5   6   7   8   9   10
ГЛАВА 10. ИСПОЛЬЗОВАНИЕ МОДЕЛЕЙ ДЛЯ ИССЛЕДОВАНИЯ ЯВЛЕНИЙ И ОБЪЕКТОВ В АГРОИНЖЕНЕРИИ
10.1. Аналитическое моделирование полета зерна с транспортера
В качестве примера рассмотрим решение задачи моделирования «Полет зерна», позволяющее описать полет зерна, брошенного под углом к горизонту, например, с транспортера, рис.10.1.

Постановка задачи моделирования. Сформулируeм требования к модели и исходные данные для моделирования. Модель должна позволять вычислять положение зерна в любой момент времени.

Исходные данные:

- масса зерна m,

- начальные координаты x0,y0,

- начальная скорость v0;

- угол броска ?0- угол, под которым стоит транспортер.

Концептуальная формулировка задачи. На основе содержательной модели разрабатывается концептуальная формулировка задачи моделирования. Примени-тельно к нашей задаче движение отдельного зерна может быть описано в соответ-ствии с законами классической механики Ньютона.




Рис.10.1. Полет зерна с транспортера: T- транспортер; m- масса зерна; g- ускорение свободного падения; x, y- координаты полета зерна; v- скорость полета зерна; F- сила сопротивления воздуха; ?0 – угол броска.

Гипотезы, принятие для модели:

- зерно будем считать материальной тонкой массой m, положение которой совпадает с центром масс зерна;

- движение происходит в поле силы тяжести с постоянным ускорением
свободного падении g и описывается уравнениями классической механики Ньютона;

- движение камня происходит в одной плоскости, перпендикулярной по-
верхности Земли;

- сопротивлением воздуха на первых порах пренебрегаем.

В качестве параметров движения будем использовать координаты (x, у) и скорость v(vx, vу) центра масc зерна. Концептуальная постановка задачи на основе принятых гипотез заключается в определении закона движения материальной точ-ки массой m под действием силы тяжести, если известны начальные координаты точки x0 и у0, ее начальная скорость v0 и угол броска ?0.

Объект, как материальная точка, не имеет внутренней структуры. Учитывая типичные скорости и высоту броска камня, можно считать постоянным ускорение свободного падения. Переход от трехмерных координат к плоскости значительно упрощает решение задачи. Он допустим, если зерно не подкручивается при брос-ке. Пренебрежение сопротивлением воздуха, как будет показано далее, приводит к значительной систематической ошибке результатов моделирования.

Построение математической модели.

Теперь перейдём к составлению математической модели объекта — совокуп-ности математических соотношений, описывающих его поведение и свойства. Из законов и определяющих выражений предметной дисциплины формируются уравнения модели.

По оси х на зерно не действуют никакие силы, по оси у действует сила тяжес-ти. Согласно законам Ньютона имеем уравнения движения по оси х и оси у:

m * d2x/dt2 = 0,

m * d2y/dt2 = -m*g,

vx = dx/dt, vу = dy/dt (10.1)

при следующих начальных условиях:

x(0)= x0, y(0)=y0, vx= v0*cos ?0 , vy=?0 v0*sin ?0

необходимо найти зависимости x(t), y(t), vx (t), vy (t).

Математическая постановка решения задачи в нашем случае соответствует решению задачи Коши для системы обыкновенных дифференциальных уравне-ний (ОДУ) с заданными начальными условиями. Количество искомых переменных равно количеству дифференциальных уравнений. Таким образом, математическая модель корректна.

Выбор метода решения. Эта задача может быть решена как аналитически, так и численно.

Аналитическое решение. Из (10..1) запишем систему ОДУ первого порядка:

dvx/dt =0,

dvy/dt = -g,

vx,= dx/dt,

vу,= dy/dt (10.2)

Надо найти зависимости x(t), y(t), vx (t), vy (t). После интегрирования получим:

vx (t)= C1,

vy (t)= C2 - g*t,

x(t)= C3 +C1*t,

y(t)= C4 +C2*t - g*t2/2 (10.3)

Определим константы интегрирования из начальных условий и запишем:

x(t)= x0 + v0*cos ?0 ,

y(t)= y0 + v0*sin ?0 *t -g*t2/2 ,

vx= v0*cos ?0 ,

vy = v0*sin ?0 -g*t.

Из аналитического решения вытекает, что полет зерна при отсутствии сопро-тивления воздуха происходит строго по параболической траектории, причем она на участках полета вверх и вниз симметрична. Необходимые для расчета уравнения заданы в параметрической форме — как зависимости от времени, что облегчает моделирование.

Осуществим численное решение конечно-разностным методом. Численное решение может быть найдено только для конкретных значений параметров модели, например

m = 2 г, ?0= 45° , v0 = 20 м/с, g = 10.8 м/с2, x0= 0 , y0 = 1 м.

Существует большое количество численных методов решения систем ОДУ. Для данной задачи можно использовать метод Эйлера, который является разновид-ностью конечно-разностных методов. В данном методе дифференциальное уравнение приводится к виду:

dy/dx = f(x,y),

а вид функции f(x,y) известен. Дифференциалы заменяются приращениями ?, и для системы ОДУ данной задачи получаются расчетные формулы:

vxn+1= vx n , vy n+1 = vy n - g*?t,

xn+1= x n + vxn *?t, y n+1 = y n - vyn *?t,

где n- число приращений.

Очевидно, что вычисления надо вести до момента времени tk, когда у(tk) ста-нет равным 0 - зерно упадет на землю. Подобное решение, ввиду его приближен-ного характера, целесообразно только в том случае, если используемая система моделирования не имеет средств достаточно точного решения систем дифферен-циальных уравнений или когда просто нужна демонстрация простых методов решения задачи.

Проверка адекватности модели. Необходимым требованием, которому дол-жна отвечать каждая модель, является адекватность - соответствие результатов, полученных при моделировании, данным эксперимента, теоретическим положе-ниям или тестовым примерам. Результаты, полученные по приведенной выше модели, будут существенно отличаться от действительных. Особенно это будет заметно, если уменьшать массу зерна, например взяв вместо зерна пылинку. Очевидно, это можно объяснить только грубым упрощением в принятой системе гипотез пренебрежением сопротивления воздуха. Учет этого фактора требует изменения концептуальной модели и всех последующих этапов решения.

Уточним математическую модель. Сила сопротивления воздуха направлена против направления движения зерна:

m * d2x/dt2 = - Fx,

m * d2y/dt2 = - m * g - Fy,

vx = dx/dt,

vу = dy/dt . (10.4)

Сопротивление воздуха зависит от скорости движения тела v и может быть описано следующей эмпирической формулой:

F = A * v + B * v3, (10.5)

где А = 0.1; Н с/м; B = 10-3 ; Н *с33 – параметры воздуха.

Введение этого соотношения делаёт дифференциальные уравнения нелиней-ными. Поскольку нелинейные задачи в аналитическом виде чаще всего не реша-ются, выбирают численные методы, которые реализуются в пакетах прикладных программ на компьютере.
10.2. Модель борьбы “хищник - жертва” Лотки и Вольтерра
При моделировании тех или иных процессов используют уже имеющиеся аналитические “стандартные” модели, аналоги, в наибольшей мере соответствую-щие или структуре явления, или его сути. К таким стандартным моделям относят-ся модели “хищник-жертва” (борьба за существование), модели “возрастной структуры популяций” и многие другие. Рассмотрим некоторые из них.

Динамическая модель ”хищник - жертва”, без возрастной структуры. Эта модель впервые была рассмотрена в работах Лотки и Вольтерра.

Пусть имеется естественная среда обитания двух популяций, причем одна из них является хищником, а другая - источником пищи для нее, жертвой. Если обоз-начить через y2(t) число хищников, а через y1(t) число жертв, то можно составить систему дифференциальных уравнений изменения численности хищников и жертв в зависимости друг от друга:

dy1/dt = a*y1*(1- y1/y1m) - b*y2*y1; (10.6)

dy2/dt = - c*x + d* y2*y1,

где a- темп роста жертв в начальный момент времени в отсутствие хищников;

c, 1/сутки, показатель смертности хищников в отсутствие жертв;

y1m – максимальное число жертв;

b= 1/хищников* сутки- коэффициент поедания жертв хищниками;

d = 1/жертв*сутки- темп рождения новых хищников.

При построении этих детерминистических уравнений принимается много допущений:

  1. Популяция вида (хищники, жертвы) представляются отдельными переменными, возраст и пол в расчет не принимаются;

  2. Эффекты мгновенны - нет интервалов, например, между заглатывани-ем пищи и превращением в нового хищника;

  3. В отсутствие хищников (x = 0) число жертв y растет по логарифмичес-кой функции с темпом роста в начальный момент, равный

a = 1/[y1*(1- y1/ym)]* dy1/dt (10.7)

и максимальным числом жертв для данной среды ym.

4. Темп поедания жертв хищниками пропорционален произведению размеров популяций жертв и хищников d* y2*y1;

5. Темп рождения новых хищников равен d, а отношение d/b есть рождение новых хищников в расчете на одну жертву;

6. Показатель естественной смертности применяется только для хищников, для которых жертвы не более чем источник пищи.

Существует много возможностей использования модели Лотки – Вольтерра, обеспечивающих больший реализм и адекватность тому или иному явлению.

Можно рассматривать альтернативные для хищников источники пищи. Если хищники имеют другой способ пропитания, помимо поедания своих жертв, то в этом случае уравнение для численности хищников будет иметь вид:

dy2/dt = d* y2*y1 + ?x* y2*(1- y2/ y2m), (10.8)

где ?x- параметр логистической зависимости, по которой растет число хищников; y2m- максимальное значение, к которому стремиться число хищников.

Другим вариантом модели “хищник - жертва” может быть ситуация, когда число жертв ограничено, что приводит к уменьшению числа хищников

dy2/dt =d* y2*(1+a0*y1)- c* y2), (10.9)

где a0- константа, представляющая предел d* y2/a0, к которому стремиться первое слагаемое в правой части при больших значениях y1.

Решение подобной системы уравнений осуществляется в пакетах компьютер-ных программ, как правило, путем использования оператора Solve. В некоторых пакетах, например Matlab или Anylogic, имеются специальные библиотеки блоков, выполняющих те или иные математичес-кие операции- нет необходимости опери-ровать набором символов дифференци-альных уравнений. Система уравнений набирается из блоков пакета Matlab ( приложение Simulink) и приведена на рис.10.2.
Рис.10.2. Блок-схема программы модели Лотки – Вольтерра "хищник-жертва": Внизу каждого блока обозначено: y1m- константа (5000), максимальное число жертв; 1- константа 1; a, b, c, d- операторы умножения на соответствующие числа 10, K, 30, 8.1; Add, Add1, Add2 – операции сложения (вычитания); Product, Product1- операции умножения двух чисел; Divide- операция деления одного числа на другое; y1, y2- операции интегри-рования входной величины; Gertva, Hihnic- вывод результата, соответственно временной зависимости числа жертв y1(t) и хищников y2(t).

Результат моделирования численности хищников и жертв приведен на рис.10.3. Когда численность хищников y2(t), t < 3, мала число популяции жертв (пищи) y1(t) растет. Большая популяция жертв приводит к увеличению численнос-ти хищников (есть пища). В результате усиленного поедания жертв число послед-них снижается, что приводит к снижению числа хищников. Таким образом, обра-зуется периодический процесс изменения числа жертв и хищников, амплитуды которых снижаются. Колебательные процессы прекращаются после t >100 и устанавливаются на уровне y1= 8, y2 = 1. Изменение исходных параметров a, b, c, d, y1m приведет к другим колебаниям и другим установившимся значениям популяций.


10.3. Модель развития популяции на основе матрицы Лесли
Другой достаточно известной является классическая модель популяции с возрастной структурой, основанной на применении матрицы Лесли. В динамике популяции рассмотренный выше простейший подход к моделированию опи-рается на оценку полного числа организмов (хищников и жертв). Однако модели такого типа представляют собой слишком сильное упрощение действительности и, как показывает практика, слишком неточны. Возраст отдельных особей популя-ции зачастую оказывает большую роль на ее развитие.




Рис.10.3. Результат моделирования изменения численности хищников и жертв в модели Лотки-Вольтерра: y1(t) – численность жертв; y2(t)- численность хищников.
Дискретная модель во времени возрастной структуры популяции (населения, животных, растений и т.д.). Основная идея состоит в том, что надо взять вектор, представляющий распределение населения по возрасту за определенный год (интервал времени), составить матрицу вероятностей перехода от одного года к следующему, а затем матричным умножением спрогнозировать вероятностное распределение возраста на следующий год. Прогноз на следующие годы получа-ется дальнейшим матричным умножением.

Пример. Предположим, что в хозяйстве имеются четыре фермы с поголовьем скота в возрастных диапазонах i =1, 2, 3, 4 [0-3, 4-10, 8-11, 12-15] лет, причем на каждой из ферм содержатся животные одного возрастного диапазона. Составить модель прогнозирования количества животных, имеющихся в хозяйстве на любой год t эксплуатации ферм.

Сделаем упрощающие предположения:

- в каждой возрастной группе имеется N(i) животных;

- возрастной диапазон содержит g(i) годовых групп или лет;

- внутри i-го диапазона возрастное распределение постоянно, т.е. в
каждой годовой группе содержится одинаковое количество животных

p=N(i)/g(i);

- после 15 лет все животные забиваются;

- смерти (забой) случаются во всех возрастных группах с интенсивнос-

тью s(i) в год;

- рождения соответствуют возрастным диапазонам I = 2, 3, 4 с интенси-

вностью r(i).

Под интенсивностью рождения и смертности в диапазоне будем понимать количество рождений или смертей в данном возрастном диапазоне, деленное на количество животных в этом диапазоне. Принимаем, что показатели смертности и рождаемости постоянны для всей модели на неограниченное число лет прогнозирования.

Прогнозирование количества животных- это сопоставление вектор- столбца

N(2)=(n 1 (2), n2 (2), n 3 (2), n 4 (2))T (10.10)

количества животных в четырех возрастных диапазонах за второй год с вектором столбцом

N(1)=(n 1 (1), n2 (1), n 3 (1), n 4 (1))T (10.11)

количества животных за 1-й год и т.д.

Рассмотрим методику получения исходных данных для такого сопоставле-ния- структуру исходной матрицы Лесли, табл.10.1.

Ее столбцы содержат:

- d(i )- границы возрастного диапазона, года;

- ni(t)- текущее число животных в диапазоне рассчитывается в результате прогноза, для первого, начального, года- являются исходными данными, ед. ;

- g(i) - число годовых групп в диапазоне, в нашем примере число годовых групп в каждом диапазоне равно 4, но их количество может быть разным, ед.;

- s(i)- интенсивность смерти, отн. ед.;

- Si(t) = s(i)* ni(t) - число умерших и забитых животных за текущий год, ед.;

- Ji(t) =(1-s(i))* ni(t) – число переживших животных в каждом диапазоне, ед.;

- Fi(t) = (1-s(i))* ni(t) / g(i) –число животных, ушедших в следующий диапазон

(выросли на 1 год), ед.;

- r(i)- интенсивность рождения в каждом диапазоне;

- V1(t+1 )= r(1)* n1(t) + r(2)* ( n2(t)+ r(3)* n3(t)+ r(4)* n4(t) – число животных,

вошедших в 1-й диапазон – родившихся от животных других диапазонов;

- Vi(t) = (1- s(i-1))* ni(t)/ g(i-1), i>1 - число животных вошедших в диапазон, кроме 1-го, путем перехода в следующий по возрасту диапазон.

Каждый покинувший диапазон, кроме умершего, становится вступающим в следующий диапазон. В соответствии с упрощающими предположениями число животных, составляющих возрастной диапазон для отдельного года, остается одним и тем же, так что число покинувших диапазон есть число выживших, деленное на количество лет в диапазоне. Число рожденных от животных первого возрастного диапазона равно нулю, в то время как в остальных диапазонах рождения происходят с определенной интенсивностью. Если вновь вернуться к векторам количества животных 1-го и 2-года для всех возрастных диапазонов, то они связаны между собой линейными соотношениями:

V1(t+1 )= r(1)* n1(t) + r(2)* ( n2(t)+ r(3)* n3(t)+ r(4)* n4(t);

n2(t+1) =(1-s(1))* n1(t)/ g(1);

n3(t+1) =(1-s(2))* n2(t)/ g(2);

n4(t+1) =(1-s(3))* n3(t)/ g(3),

или в векторной форме:

N(2)=L*N(1), (10.12)

где L - матрица Лесли, имеющая вид: (10.13)
L = [r (1) r (2) r (3) r (4); рождаемость;

(1-s (1))/ g (1) 0 0 0 ; переход из 1 в 2;

0 (1-s (2))/ g(2) 0 0 ; переход из 2 в 3;

0 0 (1-s (3))/ g (3) 0;] переход из 3 в 2.

Величины:

p12 = (1-s (1))/ g (1) ;

p23 = (1-s (2))/ g (2) ; (10.14)

p34 = (1-s (3))/ g (3)

можно трактовать как вероятности перехода группы животных из одного возраст-

ного диапазона в следующий. По тем же соображениям, исходя из того, что

матрица L неизменна во времени, можно связать другие соседние временные

диапазоны t и t+1:

N(t+1)=L*N(t). (10.15)

Если за первую исходную матрицу взять матрицу для первого года, то для произвольного года прогнозирования

N(t+1)=L( t-1)*N(1). (10.16)

Задавая смертность s(i), рождаемость r(i) и количество животных n(i) для каждого временного диапазона i в первый год, можно рассчитать возрастную структуру стада на несколько лет вперед. Это необходимо для планирования кормовой базы, строительства помещений, расхода энергии и т.д.

Исходные данные задачи:

- d(i )- границы возрастного диапазона, года;

- ni(t)- текущее число животных в диапазоне;

- g(i) - число годовых групп в диапазоне;

- s(i)- интенсивность смерти, отн. ед.;

- r(i)- интенсивность рождения отн. ед;

- K0- количество животных в нулевой, начальный период;

- N(i)- внутри i- го диапазона возрастное распределение количества животных;

- T- время прогнозирования, лет;

- N- прогнозируемое количество животных;

Таблица 10.1. Структура матрицы Лесли для времени t.


Возрастной диапазон, лет

Номер диапазона, i

Число животных в диапазоне, ni(t)

Число годовых

групп, g(i)


Интенсивность рождения, r(i)



Интенсивность смерти, s(i)

Умерло,

Si(t)

Пережило, Ji(t)

Покинуло диапазон по возрасту, Fi(t)

Вошло в диапазон,

- родилось+ по возрасту

d1=0-3

1

n1(t)

g(1)


r(1)


s(1)

s(1)* n1(t)

(1-s(1))* n1(t)

(1-s(1))* n1(t)/ g(1)


r(1)* n1(t) + r(2)*

( n2(t)+ r(3)* n3(t)+ r(4)* n4(t);

d2=4-10

2

n2(t)

g(2)



r(2)

s(2)

s(2)* n2(t)

(1-s(2))* n2(t)

(1-s(2))* n2(t)/ g(2)


(1-s(1))* n1(t)/ g(1)


d3=8-11

3

n3(t)

g(3)


r(3)

s(3)

s(3)* n3(t)

(1-s(3))* n3(t)

(1-s(3))* n3(t)/ g(3)


(1-s(2))* n2(t)/ g(2)


d4=12-15

4

n4(t)

g(4)


r(4)

s(4)

s(4)* n4(t)

(1-s(4))* n4(t)

(1-s(4))* n4(t)/ g(4)


(1-s(4))* n4(t)/ g(4)


Прогнозируемое количество животных рассчитывается по следующей формуле:

N = (L')T * K0. (10.17)

Пример реализации расчетов в матрице Лесли в системе Simulink приведен на рис.10.4. В блоках r, g, s, K0 задаются соответствующие постоянные входные вели-чины. Digital Clock1 задает непрерывное время моделиро-вания T.

Рис.10.4. Реализация расчетов матрицы Лесли в системе Simulink.

Блок Tablica осуществляет расчеты вероятностей перехода (10.14), блок Matrix Concatenation формирует матрицу (10.13), а блок Math Function1- ее транспонирует. Расчеты по формуле (10.16) осуществляются блоками Math Function и Product. С выхода последнего блока данные подаются для табличной N (для последнего пери-ода) и графической N=f(T) инициализации. Структура блока Tablica оформлена в виде субблока SubSystem и приведена на рис.10.5.



Рис.10.5.Субблок SubSystem – Tablica.

Результат моделирования – на выходе блока Product.

10.4. Решение задач линейного программирования
В ППП Матлаб решение задач линейного программирования после предс-тавления соответствующих матриц осуществляется вызовом оператора

x = linprog (f, A, b, Aeq, beq, lb, ub) (10.18)

или

[x, fval] = linprog (f, A, b, Aeq, beq, lb, ub) , (10.19)

где: x- выходной вектор оптимальных иcкомых переменных ;

fval- оптимальное значение целевой функции;

f- вектор коэффициентов целевой функции,;

A- матрица коэффициентов левой части уравнений ограничений;

b- вектор коэффициентов правой части уравнений ограничений;

Aeq- матрица коэффициентов левой части уравнений равенств;

beq- вектор коэффициентов правой части уравнений равенств;

lb- вектор нижнего порога ограничений искомых переменных;

ub- вектор верхнего порога ограничений искомых переменных.

Оператор linprog минимизирует функцию

minx fT x

при ограничениях :

Ax <= b;

Aeq = beq ;

lb <= x <= ub

и выдает решение в виде вектора оптимальных значений переменных x и оптимального значения целевой функции fval = min f.

Программа самостоятельно формирует опорный план и выдает решение в виде искомых оптимальных значений переменных х.

Главное применение метода - оптимальное распределение некоторых ресурсов (материалов, энергии, времени и т.п.) с позиций выбранного критерия и при задан-ных ограничениях. Типичные примеры использования в сельском хозяйстве: распределение земли по культурам, принятие решений о типах и нормах внесения минеральных удобрений, подбор рациона наименьшей стоимости для сельскохо-зяйственных животных, планирование трудозатрат и потребностей в технике.

В производстве различных товаров возникает проблема составления таких рабочих смесей на основе исходных материалов, которые обеспечивали бы полу-чение конечного продукта, обладающего определенными свойствами. К этой груп-пе задач относятся задачи о выборе диеты, составлении кормового рациона в жи-вотноводстве, смесей для получения бетона в строительстве и т. д.
10.4.1. Оптимизации количества удобрений, вносимых в поле
Постановка задачи. Агроному необходимо определить количество органи-ческих и сложных минеральных удобрений для разбрасывания на 20 га лугопас-тбищных угодий таким образом, чтобы полная стоимость вносимых удобрений была минимальной. Стоимость и химический состав последних показаны ниже в таблице 10.2.
Таблица 10.2. Стоимость и химический состав удобрений

(данные имеют относительный характер)


Удобрение

Стоимость, руб/т

Азот, кг/т кг/т

Фосфор, кг/т

Калий, кг/т

Органическое удобрение

125

6

1.5

4

Сложное удобрение

6500

250

100

100


Предполагается внести на луг не менее 75 кг/га азота, 25 кг/га фосфора и 35 кг/га калия. Производительность труда при разбрасывании органического удобре-ния может составлять 8 т/ч, а сложного удобрения — 0,4 т/ч при ресурсах времени для выполнения этой работы 25 ч.

Чтобы сформулировать задачу по схеме линейного программирования, следу-ет вначале выделить три основных элемента модели, а именно:

- управляемые переменные,

- целевую функцию,

- ограничения на значения управляемых переменных.

Затем убедиться, что их можно представить в форме, обусловленной специфи-кой метода линейного программирования.

1.Управляемые переменные.

Задача агронома — определить количество органического и сложного удоб-рения. Поэтому названные величины и должны выступать в роли управляемых переменных.

Пусть:

х1 = количество разбрасываемого органического удобрения, т;

x2 = количество вносимого сложного удобрения, т.

Заметим, что модели линейного программирования обычно оперируют боль-шим числом управляемых переменных. В практических задачах они исчисляются сотнями, а иногда тысячами и их принято обозначать символом х с индексом.

2.Целевая функция.

Цель агронома — свести к минимуму полную стоимость вносимых удоб-рений. Органическое удобрение обходится ему по 125 руб., а сложное удобрение — по 6500 руб. за 1 т, так что полная стоимость может быть задана в виде

125* х1 + 6500* x2 .

Обозначив ее через F, можем записать целевую функцию:

минимизировать F = 125* х1 + 6500* x2 . (10.20)

Некоторые пакеты программ линейного программирования построены в расчете на минимизацию целевой функции, а некоторые — на ее максимизацию. По сути, оба эти подхода эквивалентны, поскольку минимизация любой функции есть максимизация этой функции, взятой с противоположным знаком, то есть

min F ? max( - F).

Следовательно, целевую функцию в нашем примере можно было бы записать и в виде

максимизировать ( - F) = - 125* х1 - 6500* x2.

3. Ограничения.

Ограничения на значения переменных накладываются, во-первых, соображе-ниями агронома о минимальных нормах внесения азота (75 кг/га), фосфора (25 кг/га) и калия (35 кг/га) и, во-вторых, ресурсом времени (25 ч), выделенным на выполнение всех работ. Рассмотрим сначала ограничение на нормы внесения азота.

В 1 т органического удобрения содержится 6 кг, а в 1 т комбинированных удобрений — 250 кг азота, то есть всего в органическом удобрении содержится 6х1 кг, а в комбинированных удобрениях 250x2 кг азота. Таким образом, общее количество азота, вносимого на угодья, составляет

6* х1 + 250* x2

и это суммарное количество не должно быть меньше 1500 кг, так как минимальная норма внесения — 75 кг/га, а площадь угодий — 20 га.

Поэтому ограничения по азоту можно записать в виде

6* х1 + 250* x2 >=1500. (10.21)

Подобным образом строятся ограничения по фосфору

1.5* х1 + 100* x2 >= 500 (10.22)
и калию

4* х1 + 100* x2 >= 700. (10.23)
И, наконец, ограничение по ресурсу времени. Агроном разбрасывает органические удобрения с производительностью 8 т/ч и вносит сложные химические удобрение с производительностью 0,4 т/ч. Общее время, необходимое для выполнения этой работы, составляет х1 /8 + x2/0.4 и не должно превышать

0.125*х1 + 0.25*x2 <= 25;

1* х1 + 200*x2 <= 200. (10.24)

В формализациях задач линейного программирования константы, фи-гурирующие в ограничениях, обычно записываются в правой части соответст-вующих неравенств (уравнений). В этой роли могут выступать только неотрицате-льные, числа. Любую отрицательную константу можно заменить на положи-тельную путем умножения обеих частей ограничения на - 1 и замены (в случае, если ограничение задано неравенством) знака неравенства на противоположный (например, знак < должен быть заменен на знак <, и наоборот). В нашем примере константы представлены числами 1500, 500, 700 и 200 (см. неравенства 10.21, …, 10.23).

Если ограничение автоматически удовлетворяется при любых значениях управляемых переменных, подчиняющихся требованиям одного или нескольких других ограничений, то оно называется избыточным, которыми можно пренебречь.

4. Специальные требования.

Целевая функция и ограничения в рассматриваемом примере линейна, так как уравнение (10.22) и неравенства (10.21, ..., 10.24) не содержат членов, в которые входили бы переменные в степени выше 1 либо произведения переменных. Они детерминированы, так как коэффициенты при переменных управления, как в целевой функции, так и в ограничениях — постоянные величины.

Переменные управления х1 и x2 не могут принимать отрицательных значе-ний, поскольку внесение отрицательного количества удобрения было бы лишено физического смысла. Это значит, что выполняется условие неотрицательности, то есть

х1 >= 0;

x2 >= 0. (10.25)

И, наконец, х1 и x2 , удовлетворяя требованиям наложенных на них ограни-чений, могут принимать любые значения. Это значит, что выполняется условие непрерывности.

Таким образом, управляемые переменные, целевая функция и ограничения отвечают специальным требованиям, выдвигаемым формализацией по схеме линейного программирования.

Полная запись рассматриваемого примера в ее математической постановке будет выглядеть следующим образом:

Минимизировать F = 125* х1 + 6500* x2 (целевая функция) (10.26)

с учетом:

6* х1 + 250* x2 >=1500 (ограничение пo азоту); (10.27)

1.5* х1 + 100* x2 >= 500 (ограничение по фосфору); (10.28)

4* х1 + 100* x2 >= 700 (ограничение по калию); (10.29)
1* х1 + 200*x2 <= 200 (ограничение по времени); (10.30)

1* х1 >= 0 (условие неотрицательности); (10.31)

1*x2 >= 0 (условие неотрицательности). (10.32)
Пример решения данной задачи с помощью функции linprog пакета приклад-ных программ Matlab приведен ниже. Прежде всего необходимо обратить внима-ние, что эта функция работает в режиме минимизации с ограничением снизу (<=). Для этого в ограничениях (10.26,… ,10.32) меняются знаки коэффициентов правой и левой частей и вид ограничений на обратные. После этого составляются исход-ные матрицы и вектора целевой функции и ограничений. Матрица целевой функ-ции, определяемая ценами на удобрения:

f = [125; 6500].

Матрица коэффициентов левой части ограничений:

A = [-6 -250

-1.5 -100

-4 -100

-1 -200 ]

и вектор правой части ограничений:

b = [-1500; -500; -700; -200].

Условия неотрицательности переменных х1 и x2 записываются нулями в векторе

lb = zeros(2,1).

После ввода полученных матриц и векторов в оператор линейного програм-мирования

[x,fval] = linprog(f,A,b,lb)

получается решение в виде вектора искомых переменных

x = [ 19.1111; 3.3333]

обеспечивающих минимум целевой функции

fval = 35556.

Интерпретируется результат следующим образом:

для достижения минимальной цены удобрений f = 35556 руб. необходимо внести:

органических удобрений х1 = 19.1 т;

сложных удобрений x2 = 3.3 т.
10.4.2. Задача о наилучшем использовании ресурсов

Постановка задачи. Фермер выращивает две культуры Х и Y на 160 га. Ему необходимо распределить землю, людей и технику таким образом, чтобы прибыль от реализации урожая названных культур была максимальной. В процессе выра-щивания каждой из культур необходимо выполнять три операции - вспашку, сев и уборку. В таблице 10.3 эти операции и время, необходимое для их выполнения, даны в привязке к четырем разным периодам производства; там же указано время в пределах каждого из периодов, которое может быть использовано в этих целях.
Таблица 10.3. К задаче распределения ресурсов при выращивании двух культур.


Пусть x3 и x4 обозначают площади, выделенные под культуру X, которые убирают в периоды 3 и 4 соответственно, и пусть y есть площадь, выделенная под культуру Y. Площади, выделяемые под каждую из культур, ограничены общей площадью угодий, то есть

x3 + x4 + y < 160. (10.33)

Для уборки каждой культуры может быть использован самоходный комбайн одного и того же типа. Пусть bk есть число комбайнов, необхо-димое для уборки. Это число может быть только целым и неотрицате-льным. Сформулируем ограничения по общим затратам техники на уборку:

период 3: 0,75 * x3 ? 15*bk; (10.34)

период 4: 0,75*x4 + 2.0* y ? 20*bk. (10.35)

Пусть для вспашки, сева и уборки необходим трактор. Пусть bt есть неотри-цательная целочисленная переменная, обозначающая потребность в тракторах. Тогда

период 1: 0.50 *( x3 + x4 ) ? 5 * bt ; (10.36)

период 2: 0.30 *( x3 + x4 ) +0.5*y ? 10* bt ; (10.37)

период 3: 0.75 * x3 + 0.6*y ? 15* bt ; (10.38)

период 4: 0.75 * x4 + 2.0*y ? 20* bt . (10.39)

Потребности в трудовых ресурсах рассчитывается следующим образом. Во время вспашки и сева требуется один человек для управления трактором. Чтобы убрать культуру X, требуется два человека для управления комбайном и один - для управления трактором. Во время уборки культуры Y требуется по одному человеку для управления комбайном и трактором. Пусть bl есть целочисленная переменная, обозначающая полную потребность в людях. Тогда ограничения по труду (в чел.* ч) можно сформулировать следующим образом:

период 1: 0.50 *( x3 + x4 ) ? 5 * bl ; (10.40)

период 2: 0.30 *( x3 + x4 ) + 0.5*y ? 10* bl ; (10.41)

период 3: 3* 0.75 * x3 + 0.6*y ? 15* bl ; (10.42)

период 4: 3* 0.75 * x4 + 2* 2.0*y ? 20* bl . (10.43)

Культуру Y можно выращивать на одном и том же поле только один год из двух, а культуру X — два года из трех. Фермер намерен выращивать их ежегодно и поэтому должен предусмотреть в своих планах севооборот. Это можно сделать с помощью ограничений:

y ? 160/2; (10.44)

x3 + x4 ? 160*2/3 . (10.45)

Доход, получаемый от культур X и Y, равен 2 и 4 ед/га. Соответствующие ежегодные затраты труда, комбайнов и тракторов равны 15 ед/чел., 3 ед/маш. и 1,5 ед/маш. Целевая функция (функция полезности, доход) F, ед/год, которую необходимо максимизировать, имеет вид

F = 2*x3 + (2 - 0.2) *x4 + 4*y – 15* bl -3*bk.. (10.46)

Таким образом, задача формализуется по схеме частично-целочисленного линейного программирования, имеет шесть управляемых переменных (x3 , x4 ,y, bl , bk. , bt) и 13 ограничений (уравнения 10.33 ….10.46):
максимизировать

F = 2*x3 + (2 - 0.2) *x4 + 4*y – 15* bl -3*bk. (10.47)

с учетом ограничений:

1*x3 + 1*x4 + 1*y < 160

0,75*x3 - 15*bk ? 0

0,75*x4 + 2.0* y - 20*bk ? 0

0.50*x3 + 0.50 * x4 - 5 * bt ? 0

0.30 *x3 + 0.30 *x4 + 0.5*y - 10* bt ? 0

0.75*x3 + 0.6*y - 15* bt ? 0

0.75*x4 + 2.0*y - 20* bt ? 0

0.50*x3 + 0.50*x4 - 5 * bl ? 0

0.30 *x3 + 0.30 *x4 + 0.5*y - 10* bl ? 0

3* 0.75 * x3 + 0.6*y - 15* bl ? 0

3* 0.75 * x4 +2* 2.0*y - 20* bl ? 0

2*y ? 160

3* x3 + 3*x4 ? 320

x3 ? 0

x4 ? 0

y ? 0

bl ? 0

bk. ? 0

bt ? 0.

bl ? 0, bk. ? 0 , bt ? 0 - целое число.

Оптимальное решение данной задачи при приведенных исходных данных и условиях будет следующим:

F = 204, x3 = 80, x4 =0, y = 80, bl = 16, bk. = 8 , bt = 8.

10.4.4. Транспортная задача

Постановка задачи. Пусть имеется m поставщиков некоторой однородной продукции. Считается, что i - ый поставщик располагает ai единицами продукции, i = 1, 2, …, m. Продукцию поставщиков используют n потребителей, потребности которых равны b1, b2 , …, bn единиц продукции. Все числа ai и bj положительны. Кроме того, известна стоимость перевозки единицы продукции от i-го поставщика j-ому потребителю: cij, i = 1, 2, …, m; j = 1, 2, …, n. Продукция однородна, поэтому любой поставщик может предложить ее любому потребителю, рис.10.6. Требуется определить такое количество единиц продукции, перевозимой от каждого постав-щика к каждому потребителю, чтобы транспортные расходы были минимальны и потребности всех потребителей были удовлетворены. Задача предполагается разрешимой в том смысле, что общий объем поставок должен быть не меньше общего объема потребностей.

Обозначим через xij число единиц продукции, перевозимой от i-го поставщика j-ому потребителю. Тогда транспортные расходы этой пары поставщик- потреби-тель составят cij*xij , а общая стоимость всех перевозок (от каждого поставщика каждому потребителю) равна:

m n

? ?cij*xij .

i j

Тот факт, что потребности каждого потребителя должны быть полностью удовлетворены запишем в виде неравенства:

m

? xij ? bi, j = 1, 2, …, n.

i

Условие осуществимости поставок, наличия продукции у поставщика выполняется неравенством:

n

? xij ? aj, i = 1, 2, …, m.

j



Рис.10.6. Поставщики и потребители продукции.

Кроме того, все величины должны быть неотрицательны. Таким образом, транспортная задача принимает вид следующей задачи линейного программирования:

m n

? ?cij*xij ? min;

i j

m

? xij ? bi, j = 1, 2, …, m; (10.48)

i



n

? xij ? aj, i = 1, 2, …, n;

j

xij ? 0, i = 1, 2, … n; j = 1, 2, …m.

В этой задаче m*n переменных и m+n ограничений (не считая условий неотри-цательности пременных). Если суммарные возможности поставок совпадают с требуемой суммарной потребностью

m n

? ai = ? bj ,

i j

то можно так организовать перевозки, чтобы вся имеющаяся у поставщиков про-дукция была вывезена и каждый потребитель получил необходимое количество продукции. В этом случае транспортная задача принимает вид канонической задачи линейного программирования и называется закрытой транспортной задачей:

m n

? ?cij*xij ? min;

i j

m

? xij = bi, j = 1, 2, …, n; (10.49)

i

n

? xij = aj, i = 1, 2, …, m;

j

xij ? 0, i = 1, 2, … m; j = 1, 2, …n.
Если

m n

? ai > ? bj ,

i j

то спрос потребителей будет удовлетворен, но у поставщиков останется лишняя продукция и ограничения транспортной задачи примут вид:

m

? xij = bi, j = 1, 2, …, n;

i

n

? xij ? aj, i = 1, 2, …, m.

j

Если безразлично, у каких именно поставщиков и в каком количестве останется неотправленная продукция, то вводя фиктивного (n+1)-го потребителя, потребность которого

m n

? ai - ? bj ,

i j

мы формально придем к закрытой транспортной задаче. Для того чтобы введение

фиктивного потребителя не влияло на суммарные расходы по перевозкам,

следует принять cij = 0, i = 1, 2, …, m.

Случай

m n

? ai < ? bj

i j

соответствует ситуации, когда потребности потребителей не могут быть удов-

летворены полностью. Этот случай с самого начала был исключен в постановке

задачи.

Закрытая транспортная задача всегда имеет оптимальное решение. Это решение можно найти с помощью симплекс-метода. Однако обычно для решения транспортной задачи используют специальные методы, учитывающие специфику каждой задачи. Приведем пример постановки и решения транспортной задачи.

Постановка задачи. В районе имеются два склада зерна (два хозяйства по производству зерна) и два элеватора. Ежедневно с первого склада вывозят 50 т зерна, а со второго - 70 т на элеваторы, причем на первый - 40 т, а на второй  - 80 т. Обозначим через сij стоимость перевозки 1 т зерна с i-го склада на j-й элеватор (i, j = 1,2). Пусть

с11 = 1,2 , с12 = 1,6 , с21 = 0,8 , с22 = 1.0.

Как нужно спланировать перевозки, чтобы их стоимость была минимальной?

Придадим задаче математическую формулировку. Обозначим через x1 и x2 количество зерна, которое надо перевезти с первого склада на первый и второй элеваторы, а через x3 и x4  - со второго склада на первый и второй элеваторы соответственно. Тогда:

x1 + x2 = 50,

x3 + x4 = 70,

x1 + x3 = 40,

x2 + x4 = 80.        (10.50)

Общая стоимость всех перевозок определяется формулой:

F = 1,2x1 + 1,6x2 + 0,8x3 + x4.

С математической точки зрения, задача заключается в том, чтобы найти четыре числа x1, x2, x3 и x4, удовлетворяющие всем заданным условиям и дающие минимум функции F. Решим систему уравнений (10.50) относительно xi (i = 1, 2, 3, 4) методом исключения неизвестных. Получим, что

x1 = x4 – 30,

x2 = 80 – x4,

x3 = 70 – x4,        

а x4 не может быть определено однозначно. Так как xi > 0 (i = 1, 2, 3, 4), то из уравнений (10.51) следует, что 30 < x4 < 70. Подставляя выражение для x1, x2, x3 в формулу для F, получим:

F = 148 – 0.2x4 . (10.51)

Минимум этой функции достигается при максимально возможном значении x4 = 70. Соответствующие значения других неизвестных определяются по формулам (10.50): x1 = 40, x2 = 10, x3 = 0.
10.5. Дискретно-событийная модель процесса уборки плодов в системе Anylogic
Рассмотрим аналитический метод моделирования в пакете AnyLogic. Диск-ретно-событийное моделирование предполагает не только формализацию расчета некоторых параметров, например, необходимого количества тары или сборщиков при некотором идеализированном, усредненном, представлении процесса, но и учета реальной обстановки – графика поставок материалов, перерывов в сборе из-за неблагоприятных погодных условий, наступления каких-либо событий и т.д.

Концептуальная модель. Технологический процесс уборки можно представить структурной схемой, изображенной на рис.10.7. Основные элементы технологичес-кого процесса уборки яблок:

- планирование уборочного процесса;

- обучение людей;

- подготовка тары, вспомогательного оборудования, инвентаря и технических средств;

- подготовка к уборке (уборка сучьев, скашивание травы, выравнивание почвы, подготовка дорог, подбор падалицы);

- съем плодов с дерева и заполнение тары;

- транспортировка на пункт обработки;

- подготовка к хранению, обработка;

- реализация (хранение).

В связи с биологической сущностью сельскохозяйственного сырья, в основе которой лежат процессы активной жизнедеятельности при выращивании, транс-

портировке, хранении и переработке, на всех этапах его существования происходит непрерывное изменение его качественного состояния и массы. Масса плодов и их качество являются взаимосвязанными величинами: снижение качества за счет бо-лезней разного рода приводит к выбраковке, отсортировке, переводу в низшие то-варные сорта, т.е. в конечном счете снижению массы партии, подлежащей реали-зации. С другой стороны, недоразвитость плода, недостаток массы, приводит к болезням, например, загару, т.е. все к той же выбраковке больных плодов из партии – снижению ее массы. Аналогично, перезрелость плода, его излишняя масса, вызывает преждевременное старение, снижение сортности- все то же снижение массы.

Постановка задачи. При планировании уборочного процесса прежде всего оценивают массу урожая, которая зависит от количества плодов на дереве, их массы и количества деревьев на определенной площади. Приведем привычную форму записи уравнения массы урожая с участка (квартала):

U(t) = K(t) * M(t) *[S/F*C] * g , ц ; (10.52)

где: t- дата анализа, время роста, сутки;

K(t) – среднее количество плодов на дереве, шт;

M(t) – средняя масса плода, г;

S- площадь участка, га;

F- ширина междурядья; С- расстояние между деревьями в ряду;

[S/F*C] – количество деревьев на участке;

g – коэффициент выпада деревьев, о.е.



Рис.10.7. Технологический процесс уборки.

Количество плодов во времени выращивания:

K(t) = ? dK/dt = ? k1 * (Kmin - K(t)), (10.53)

где : k1- коэффициент скорости изменения количества плодов на дереве (опадание, ветер и т.д.), шт./сутки;

Kmin – минимальное количество плодов, шт.;

dK/dt – скорость изменения количества плодов на дереве, шт./сутки.

Масса одного плода во времени (в процессе) созревания урожая:

M(t) =? dM/dt = ? k01*M(t) * (1-M(t) / Mmax), (10.54)

где : k01 – коэффициент скорости изменения массы, г/сутки;

Mmax- максимальное значение массы отдельного плода, г.;

dM/dt – скорость изменения массы плода во времени, г/cутки.

В зависимости от параметров процесса выращивания для определенного сор-та, квартала (сада), а также времени t масса отдельного плода и урожая будут раз-личны. Величины K(t) и M(t) есть функция времени роста, развития плода. Они зависят от многих условий: помологического сорта, температуры, влажности, ско-рости ветра, качества почвы, технологии выращивания и других. В силу последне-го утверждения естественно предположить, что на двух соседних участках можно ожидать различные урожаи.

Исходя из полученного урожая, зависящего от времени t, можно рассчитать следующие параметры технологического процесса:

1. количество необходимых съемщиков (в смену):

L(t) = U(t)*10-3 * kl / (D * N), чел; (10.55)

где: D = tn - tk- планируемая длительность съема, смен;

tn - время, день начала съема;

tk- время, день окончания съема;

N - сменная норма съема, кг/смена;

kl = 1.2 - коэффициент запаса, учитывающий неравномерность выхода на работу, погодные условия и т.п..

2. количество необходимой тары, контейнеров (всего на весь период уборки):

Kk = U/Mk, шт; (10.56)

где Mk – вместимость контейнера, т.

3. количество необходимых рейсов транспортных средств (в смену):

Kr = L*N / G, ед.; (10.57)

где G – грузоподъемность транспортного средства, т.

  1. Количество необходимых транспортных средств:

Kt = Kr * kt / Ks, ед.; (10.58)

где : kt = 1.2 – коэффициент запаса, учитывающий поломки, простои, перерывы;

  1. Количество рейсов в смену одного транспортного средства:

Ks = Ds / (2*R/v + tp + tr), (10.59)

где: Ds- длительность смены, час.;

R- плечо подвоза, расстояние от сада до площадки разгрузки, км;

v – средняя скорость движения транспортного средства, км/час.;

tp – время погрузки, час.;

tr – время разгрузки, час.

Как выбрать длительность съема D = tn - tk ? При малой длительности съем должен быть осуществлен быстро, что требует большого количества людей, а медленный съем может привести к потерям полезных качеств продукции.

Снятый урожай с каждого участка обусловлен одновременным наличием ресурсов: ресурс 1- людей; ресурс 2- тары; ресурс 3- транспортных средств:

Uс (t) = Uс1 (t) + Uс2 (t) + Uс3(t) , (10.60)

где : Uс(t) – общее количество снятых плодов, ц;

i = 1, 2, 3- номера участков, кварталов, помологических сортов и т.п.;

Uсi (t) - снятый урожай с каждого участка, ц.

Сколько заложено плодов в хранилище? Cтолько, сколько снято и перевезено плодов необходимого качества cо всех участков:

Ux (t) = q1(t)* U1 (t) + q2 * U2 (t) + q3(t) * U3(t) ; (10.61)

где: Ux(t) – общее количество плодов, заложенных на хранение, ц;

qi (t) – доля продукции, соответствующая требованиям потребителя, годная для реализации, хранения, переработки и т.д., о.е.;

i = 1, 2, 3- номера участков, кварталов, помологических сортов и т.п.;

Uсi (t) - снятый урожай с каждого участка, ц.

Осталось в саду не снято:

Uос(t) = U(t) - Uс (t). (10.62)

Процесс созревания зависит от многих показателей выращивания и в общем случае для каждых i-ой ситуации - помологических сортов, участков, технологии выращивания, погодных условий и т.д. различны. В процессе созревания урожая помимо количества плодов и их массы изменяетя также и зрелость плодов Z(tс) на момент съема tс , существенным образом влияющая на потребительские свойства

P , например потери продукции при хранении или содержание сока при переработ-ке в момент времени Tx = tс + Dx, где Dx- длительность хранения, сутки.

Известно, что существует такой диапазон значений зрелости Zmin …. Zmax , в котором потребительские свойства P имеют наилучшие, оптимальные, показатели, например минимальные потери при хранении, максимальный выход сока или пектина:

Zi = (Zmin …. Zmax)i ? Piopt . (10.63)

Поэтому зрелость будем представлять функцией времени Z(Tx) существова-ния продукта. Для уяснения сущности сказанного приведем пример динамики зрелости плодов по содержанию крахмала для трех кварталов сада.

Z(t) =? dZ/dt = ? kz*Z(t) * (1-Z(t) / Zmax); (10.64)

где: kz – коэффициент скорости изменения зрелости, ед./сутки;

Zmax- максимальное значение зрелости плодов, ед.;

dZ/dt – скорость изменения зрелости плодов во времени, ед./cутки.
Рис.10.8. Зависимости Z = f (T) зрелости в момент уборки яблок различных помологических сортов яблок от времени выращивания:

P- потери яблок в процессе хранения; Zmin; Zo; Zmax – минимальное, оптимальное и максимальное значения зрелости, определяющие диапазон зрелости с минимальными потерями Pmin - Pmax в процессе хранения; z1 - зависимость Z = f (T) для первого помологического сорта; z2 - зависимость Z = f (T) для второго помологического сорта; z3 - зависимость Z = f (T) для третьего помологического сорта; t1N ; t2N ; t3N ; t1K ; t2K ; t3K ; t1O ; t2O ; t3O - соответственно начало, конец и оптимальное время уборки первого, второго и третьего помологических сортов.
Анимация модели. В основу модели положена анимационная картина 4 садов, хранилища, транспортного цеха, дорог, весовой, разгрузочной площадки, рынка, как это показано на рис.10.9. На этой же анимации можно наблюдать результаты моделирования в виде графиков или чисел.

Состав модели. В соответствии с концепцией и аналитическими выражени-ями (10.52-10.64) дискретно событийная модель состоит из следующих элементов:

- четырех садов – Сад1, Сад2, Сад3 и Сад4;

- транспортного цеха, снабжающего транспортом и тарой уборочный процесс;

- хранилища, в которое доставляют плоды;

- весовой - для взвешивания, определения качества и оформления документов;

- разгрузочной площадки;

- рынка- систему потребителей плодов;

- дорог, соединяющих сады с хранилищем и другими объектами;

- транспортных средств- порожних, идущих в сад за плодами, и груженых- из

сада в хранилище.

Рис.10.9. Окно анимации дискретно-событийной модели уборки плодов в системе Anylogic:



Порожние транспортные средства из транспортного цеха направляются в сады, каждый по своей дороге, с заданной скоростью. Транспортный цех имеет ограниченное количество транспорта. После прихода в сад, транспортное средство загружается и отправляется по дороге, ведущей в хранилище. После прохода весо-вой и приемки транспортное средство разгружается в хранилище, в котором масса плодов прибавляется на массу пришедшего груза. Далее разгруженное транспорт-ное средство отправляется назад в сад, в котором имеется большая нужда в отправ-ке груза- по его количеству или времени ожидания. Все транспортные средства движутся независимо друг от друга с заданной скоростью.

Структурная диаграмма активного объекта Model, т.е. компоненты модели и связи между ними, изображена ниже в таблице 10.4. внутри прямоугольника именами переменных (WM1, WM2 и т.д.) и именами стейтчартов (sad1, sad2 и т.д.). Назначение переменных приведено в столбце слева.
Таблица 10.4. Компоненты модели- переменные и стейтчарты.


Оптимальные сроки уборки определяются для каждого сада определяются условиями срабатывания стейтчартов sad1…sad8.

Для каждого элемента модели существует в Anylogic окно свойств, в котором указываются свойства (параметры) этого элемента. Это окно используется для задания и изменения свойств этого элемента.

Уборка и вывоз продукции в хранилище моделируются с помощью библио-теки системы массового обслуживания, рис.10.10. Эта система структурно состоит из четырех параллельных- по числу садов, источников заявок (готовых партий плодов) Source - MoveToWith, объединенных единой транспортной сетью и логи-кой управления транспортными потоками. Все заявки, а значит и удовлетворяю-щие их транспортные средства, соединяются (но не суммируются, т.к. каждая из них не теряет своих индетификационных параметров) в блоке proctdure, где могут накапливаться и ожидать определенное время – это соответствует на анимации рис.10.9. элементу “хранилище”.

Блоки sourse 1, sourse 2, sourse 3, sourse 4 (источник заявок Source) использу-ются как генераторы ресурсов- заполненных контейнеров. Заявки генерируются через случайные промежутки времени, которые могут подчиняться определенному закону распределения или задаваться расписанием. Оно может быть задано как максимально допустимое число генераций, так и числом заявок, создаваемых в единицу времени.

Блоки queue1, queue2, queue3, queue4 (объект Queue) моделируют очереди заявок на транспортные средства в каждом саду. Они хранят поступающие заявки в определенном порядке: FIFO (заявки помещаются в очередь в порядке поступле-ния), LIFO (заявки помещаются в порядке, обратном поступлению), RANDOM (заявки помещаются в произвольные места очереди) или PRIORITY (заявки поме-щаются в очередь в соответствии со значением своих полей priority).

Блоки enterUnit1, enterUnit2, enterUnit3, enterUnit4 (объект Enter) пересылают заявки, переданные этому объекту дальше по блок-схеме. Пришедшая в объект заявка сразу же его покидает.

Блоки moveWithAuto1, moveWithAuto2, moveWithAuto3, moveWithAuto4 (объект NetworkMoveToWithQ) перемещают заявки в указанное место сети в соп-ровождении эскорта — набора ресурсов типа «персонал»- транспортных средств.

В блоке procedure (объект Delay) заявки аккумулируются и задерживаются на заданное время. Одновременно могут быть задержаны сразу несколько заявок (не более заданной вместимости объекта capaci-ty). Как только время задержки исте-кает, заявка тут же покидает объект. Если объект Delay заполнен полностью, то новую заявку он не примет. В нашем случае имитирует хранилище.

В блоке moveToExit (объект NetworkMoveTo) заявки перемещаются на новое место сети (той сети, в которой эта заявка находится). Блок NetworkMove-To не передвигает вместе с заявкой занятые ей ресурсы. Осуществляет освобождение транспортных средств от плодов. Плоды ожидают в хранилище, а потом отправля-ются на рынок. Транспортные средства возвращаются назад- в то место (сад), где они нужнее всего в настоящий момент.

Блок exitUnit (объект Exit)принимает входящие заявки. Используется в качес-тве конечной точки потока заявок. Пришедшая в объект заявка покидает его мгно-венно. В модели имеет вспомогательное значение.

Объект Sink. Уничтожает поступившие заявки. Обычно используется в ка-честве конечной точки потока заявок. Объект Sink автоматически подсчитывает входящие заявки и высчитывает среднюю интенсивность входящего потока. В модели имеет вспомогательное значение.

Объект Network. Задает транспортную сеть. Содержит параметры для изме-нения типа маршрутизации и правил выбора запрашиваемых ресурсов. После доба-вления заявки в сеть, можно перемещать ее в другие места сети. Место, в которое должна быть перемещена заявка, вычисляется отдельно для каждой поступающей заявки. Выбор места может зависеть от состояния заявки или подчиняться некото-рому (заданному) закону распределения. Организует и управляет движением тран-спортных средств по дорогам, ведущим в сады.

Блок auto (объект Resource) предоставляет ресурсы, в данном случае транс-портные средства, которые могут быть заняты и освобождены заявками. Объект Resource может создавать, хранить, выдавать и забирать ресурсы. Количество ресу-рсов может изменяться динамически. Объект Resource лучше всего подходит для моделирования относительно небольших количеств индивидуально неповторимых предметов, таких, как операторы, машины, устройства, и т.п.



Рис.10.10. Структура системы массового обслуживания сада.
В любой момент времени ресурсом может владеть только одна заявка. Следо-вательно, заявки в саду конкурируют за право обладания ресурсами. В случае од-новременного получения нескольких запросов, Resource удовлетворяет их вначале в соответствии с их приоритетами, а затем — согласно их временным меткам.

Временная метка хранит значение времени, с которого заявка ожидает полу-чение ресурса. Более старые запросы обслуживаются в первую очередь. В том случае, если запрос не может быть обслужен из-за нехватки свободных ресурсов, он пропускается, а обслуживаются запросы с более низкими приоритетами или с более поздней заявкой.

В наше модели объект Resource моделирует транспортные средства. В блоке auto задается их количество, скорость передвижения и источник. В нашем случае источником транспортных средств на анимации является “транспортный цех”, Но это может быть и другой объект – хранилище, весовая и т.д. Одновременно может работать несколько объектов Resource, моделирую свои ресурсы- тару, людей и т.п.

Сеть с помощью объекта Network. организована таким образом, что анимация перемещает порожние и наполненные транспортные средства с заданной скорос-тью и рассчитанные моменты времени.

Последние два блока - exitUnit (объект Exit) и объект Sink имеют вспомога-тельное значение – они принимают и уничтожают поступившие заявки, при этом подсчитывается статистика всего потока.

Структура системы массового обслуживания полностью соотнесена с анима-ционной картиной рис.10.9., как по времени работы отдельных элементов, так и по расстояниям между садами и хранилищем. При работе модели наблюдается визу-альная имитация процесса передвижения транспортных средств, их загрузка и раз-грузка, отправка плодов на реализацию после хранения. Метка EL на структуре рис.10.10. обозначает ее связь переменными таблицы 10.4.

Задавая количество людей L и производительность уборки N можно сплани-ровать срок окончания уборки, не превышающий оптимальный, наблюдать коли-чество снимаемой массы плодов на графике, потребность в таре, сборщиках и другие характеристики уборочного процесса. На рис.10.11.- 10.14. приведены некоторые результаты моделирования.
Рис.10.11. Диаграммы изменения в садах количества плодов на дереве WM1,

…, WM4.



Рис.10.12. Диаграмма роста в садах массы одного плода: WL1, …, WL4.
1   2   3   4   5   6   7   8   9   10


Учебный материал
© bib.convdocs.org
При копировании укажите ссылку.
обратиться к администрации