Если математическая модель исследуемого процесса и ограничения на значения ее параметров линейны, то задача достижения цели является задачей линейного программирования.
Пример: В ресторане готовятся фирменные блюда трех видов (блюдо А, блюдо В и блюдо С) с использованием при приготовлении ингредиентов трех видов (ингредиент 1, ингредиент 2, ингредиент 3). Расход ингредиентов задается таблицей:
Вид ингр. | Блюдо А | Блюдо В | Блюдо С |
Ингр. 1 | |||
Ингр. 2 | |||
Ингр. 3 |
Стоимость блюд одинакова (100 руб.)
Ежедневно в ресторан поступает 5 кг ингредиента 1 и по 4 кг ингредиентов 2 и 3. Каково оптимальное соотношение дневного производства блюд различного вида, если производственные мощности ресторана позволяют использовать весь запас поступивших продуктов?
Решение:
Пусть х1 – дневной выпуск блюд А; х2 – дневной выпуск блюд В; х3 – дневной выпуск блюд С.
Составим целевую функцию, она заключается в стоимости выпущенных рестораном блюд:
Z = 100*x1 + 100*x2 + 100*x3
Определим имеющиеся ограничения:
- 20*х1 + 50*х2 + 10*х3 <=5000; 2. 20*x1 + 0*x2 + 40*x3<=4000; 3. 20*x1 + 10*x2 + 10*x3<=4000
Поскольку количество блюд не может быть отрицательным, еще одно ограничение:
х1 >=0; x2>=0; x3>=0; x1 –целое; х2 – целое; х3 – целое.
В ячейки А2, А3 и А4: дневной запас продуктов – 5000, 4000, 4000. В ячейки С1, D1 и Е1: начальные значения неизвестных х1, х1 и х3 (нули). В ячейках С2:Е4 разместим таблицу расхода ингредиентов (С2 – 20, D2 – 50, Е2 – 10, С3 – 20, D3 – 0, …)
В ячейках В2:В4 укажем формулы для расчета расхода ингредиентов по видам. В ячейке В2:
=$C$1*C2 + $D$1*D2 + $E$1*E2
Затем копируем формулу в ячейку В3 и В4.
В ячейку F1 занесем формулу целевой функции:
=100 * (С1 + D1 + Е1).
Меню Данные > Поиск решения (при отсутствии данной опции следует ее включить в Надстройках).
В поле Установить целевую ячейку – мышью указать F1. Установить переключатель «равной» в положение «максимальному значению». В поле «Изменение ячейки» мышью задать диапазон С1:Е1.
Чтобы определить набор ограничений, - щелкнуть на кнопке Добавить. В поле «Ссылки на ячейку» мышью указать диапазон В2:В4. В качестве условия задать <=.
В поле «Ограничение» мышью задать диапазон А2:А4. ОК. Снова щелкнуть на Добавить. В поле «Ссылки на ячейку» указать С1:Е1. В качестве условия выбрать пункт «цел.».
Щелкнуть на кнопке Выполнить. Установить переключатель «Значения параметров» в положение «Сохранить найденное решение». Ок.
Пример: Туристическая фирма заключил контракт с двумя турбазами: в г. Сухуми и в окрестностных городах, рассчитанных, соответственно, на 200 и 150 человек.
Туристам для осмотра предлагается обезьяний питомник в городе, ботанический сад и поход в горы. Составить маршрут движения туристов так, чтобы это обошлось возможно дешевле, если:
- обезьяний питомник принимает в день 70 человек, ботанический сад – 180 человек, а в горы в один день могут пойти 110 человек;
Стоимость одного посещения выражается таблицей:
Турбаза | Обез питомник | Ботан сад | Поход |
Решение: пусть х1 – число туристов из турбазы в Сухуми, посещающих обезьяний питомник; х2 – число туристов из Сухуми, посещающих ботанический сад; х3 – число туристов из Сухуми, отправляющихся в поход; х4 – число туристов из окрестной турбазы, посещающих обезьяний питомник; х5 – туристы из окрестных турбаз, посещающие ботанический сад; х6 – туристы из окрестных турбаз, отправляющихся в поход.
Составим целевую функцию:
Z= 5* x1 + 6*x2 + 20*x3 + 10*x4 + 12*x5 + 5*x6
Определим ограничения:
x1 + x4 <=70; x2 + x5 <=180; x3 + x6 <=110; x1 + x2 + x3 =200; x4 + x5 + x6 = 150
Кроме того, поскольку турист неделим и количество туристов, участвующих в каждом мероприятии, не может быть отрицательным, то:
1) Х1>=0; 2) X2>=0; 3) X3>=0; 4) X4>=0; 5) X5>=0; 6) X6>=0; | 7) X1 – целое; 8) X2 – целое; 9) X3 – целое; 10) X4 – целое; 11) X5 – целое; 12)X6 – целое; |
На новом рабочем листе в ячейки А2, А3 и А4 внесите дневное количество посетителей различных мероприятий, т.е. числа 70, 180, 110.
В ячейки А5 и А6: количество туристов в обеих гостиницах, т.е. 200 и 150.
В ячейки С1:Н1 занесите начальные значения неизвестных х1,х2, …, х6 (нули).
В диапазон С2:Н6 разместите таблицу коэффициентов основных ограничений:
1,0,0,1,0,0;
0,1,0,0,1,0;
0,0,1,0,0,1;
1,1,1,0,0,0;
0,0,0,1,1,1.
В ячейках В2:В6 укажите формулы для расчета ограничений. В ячейке В2 формула будет иметь вид =$C$1*C2+$D$1*D2+$E$1*E2+$F$1*F2+$G$1*G2+$H$1*H2, остальные формулы получите автозаполнением (копированием).
В ячейку I1 занесите формулу целевой функции =5*С1+6*D1+20*E1+10*F1+12*G1+5*H1.
Меню Данные – Поиск решения.
В поле установить целевую ячейку – I1. Переключатель Равной установите в положение минимальному значению (требуется минимальный объем затрат).
В поле Изменяемые ячейки – диапазон С1:Н1.
Чтобы начать определять ограничения щелкните по кнопке Добавить. В поле Ссылка на ячейку укажите диапазон В2:В4. В качестве условия задайте <=. В поле Ограничение задайте диапазон А2:А4. Щелкните ОК. (Дневное количество посетителей не должно превосходить их возможностей).
Опять щелкните на кнопке Добавить. В поле Ссылка на ячейку укажите диапазон В5:В6. В качестве условия задайте =. В поле Ограничение задайте диапазон А5:А6. (дневное количество посетителей мероприятий должно быть равно количеству туристов). Щелкните ОК.
Снова щелкните на кнопке Добавить. В поле Ссылка на ячейку укажите диапазон С1:Н1. В качестве условия задайте >=. В поле Ограничение задайте число 0. Это условие указывает, что число участников мероприятий неотрицательно. Нажмите ОК.
Снова щелкните на кнопке Добавить. В поле Ссылка на ячейку укажите диапазон С1:Н1. В качестве условия выберите пункт цел. Это условие указывает, что турист неделим. Щелкните на ОК.
Щелкните на кнопке Выполнить. В открывшемся окне установите переключатель Сохранить найденное решение. Щелкните ОК.