Задача о рационе питания пример решения excel

Обновлено: 07.07.2024

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

Рассмотрим решение простейшей задачи оптимизации кормового рациона средствами Excel.

Для решения оптимизационных задач необходимо, чтобы был установлен инструмент "Поиск решения", который не устанавливается при стандартной установке MS Office, а только при выборочной.
Если в меню Сервис отсутствует пункт "Поиск решения", посмотрите, может, он не актуализирован. Для этого в меню Сервис - Надстройки устанавливаем флажок на Поиск решения (если есть).
Если же и в Надстройках отсутствует Поиск решения, то этот компонент придется установить дополнительно(.

Итак, Задача.

  • в продукте M - 150 ккалорий и 14 единиц жира;
  • в продукте N - 200 ккалорий и 4 единицы жира.

Экономико-математическая постановка задачи:

  • Ограничение по количеству ккалорий:
    150x1+200x2>=200
  • Ограничение по количеству жира:
    14x1+4x2 =0; x2>=0

Целевая функция - минимум стоимости рациона:
1,5x1+2,3x2->min

Ввод исходных данных в ячейки Excel:

Ввод исходных формул в ячейки Excel

Итак, в ячейки А2 и А3 вводим начальные значения x1 и x2 - нули.
В ячейки А4 и А5 вводим левые части ограничений (первоначально получатся нули), в ячейки В4 и В5 - правые части соответствующих ограничений.
В ячейку А6 вводим целевую функцию.
Ввод исходных данных завершен.

Решение задачи.

Последовательностью команд меню Сервис - Поиск решения вызываем инструмент "Поиск решения".

Инструмент

Итак, с использованием красной стрелки (переход на рабочий лист)
Устанавливаем целевую ячейку - $A$6
Равной минимальному значению
Изменяя ячейки - $A$2:$A$3
с использованием кнопки Добавить последовательно добавляем три исходных ограничения.
Нажимаем кнопку Выполнить.

Интерпретация результатов.

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

Нажмите, чтобы узнать подробности

Задание 2. Найдите оптимальное решение задачи о дневном рационе:


Для этого выполните следующую последовательность действий:

1. Откройте из папки МАТ_МОД файл _1(а) , содержащий экранную форму для ввода условия задачи (Рис. 1).


Рис. 1. Экранная форма для ввода условия задачи

2. Введите исходные данные в экранную форму:

  • коэффициенты ЦФ;
  • направление целевой функции (min);
  • коэффициенты при переменных в ограничениях;
  • знаки в ограничениях ( >= );
  • правые части ограничений.

После заполнения форма должна выглядеть следующим образом (Рис. 2).


Рис. 2. Ввод исходных данных

1. Введите формулы, описывающие математическую модель задачи, в экранную форму:

согласно условию задачи значение ЦФ определяется выражением


поэтому в ячейку B9 необходимо внести формулу



Напоминаем, что данную формулу можно ввести, воспользовавшись функцией =СУММПРОИЗВ(B3:D3;B7:D7), для этого:


  • установите курсор в ячейку B9;
  • нажав кнопку «», вызовите окно «Мастер функций – шаг 1 из 2»;
  • выберите в окне «Категория» категорию «Математические»;
  • в окне «Функция» выберите функцию СУММПРОИЗВ;
  • в появившемся окне «СУММПРОИЗВ» в строку «Массив 1» введите выражение B3:D3, а в строку «Массив 2» – выражение B7:D7;
  • нажмите OK.


В экранной форме (Рис. 3) в ячейке B9 появится текущее значение, вычисленное по введенной формуле, то есть 0 (так как в момент ввода формулы значения переменных задачи нулевые).

  • аналогичным образом введите формулы для расчета значений левых частей ограничений (это потребляемое количество в сутки) в ячейки E13,E14,E15,E16,E17 соответственно.

Формулы, описывающие ограничения модели можно увидеть ниже (Таблица 2).

Таблица 2. Формулы, описывающие ограничения модели



Напоминаем, что ввод соответствующей формулы в каждую ячейку необязателен, достаточно в ячейку E13 внести формулу =СУММПРОИЗВ(B$3:D$3;B13:D13), а потом воспользоваться возможностью автозаполнения формул в других ячейках.


В экранной форме ( Рис. 3 ) в ячейках E13, E14, E15, E16, E17 появится текущее значение, вычисленное по введенной формуле, то есть 0 (так как в момент ввода формулы значения переменных задачи нулевые).


Рис. 3. Окно после ввода зависимостей в математической модели

1. Установите целевую ячейку и укажите направление поиска, для этого:

  • зайдите в меню Сервис / Поиск решения;
  • в поле «Установить целевую ячейку» укажите целевую ячейку $B$9;
  • введите направление оптимизации ЦФ, щелкнув один раз левой клавишей мыши по кнопке «минимальному значению»;

2.Укажите диапазон изменения ячеек, для этого в окне «Поиск решения» в поле «Изменяя ячейки» впишите адреса $B$3:$D$3.


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

3. Внесите условие неотрицательности для переменных (в окне «Поиск решения») (Рис. 4), для этого:


  • нажмите кнопку «Добавить», после чего появится окно «Добавление ограничения»;
  • в поле «Ссылка на ячейку» введите адреса ячеек переменных $B$3:$D$3;
  • в поле знака откройте список предлагаемых знаков и выберите ;
  • в поле «Ограничение» введите число 0.


Рис. 4. Добавление условия неотрицательности переменных

Аналогичным образом введите оставшиеся ограничения (Рис. 5).


Рис. 5. Ввод ограничений

В нашем случае все ограничения содержат один знак , поэтому мы ввели ограничение $E$13:$E$17>=$G$13: $G$17. Если же ограничения задачи содержат разные знаки, то каждое ограничение надо вводить отдельно, например, $E$13>=$G$13.


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


Задача запускается на решение в окне «Поиск решения» нажатием на кнопку «Выполнить». Но предварительно для установления конкретных параметров решения задач оптимизации необходимо нажать кнопку «Параметры» и заполнить некоторые поля окна «Параметры поиска решения».

8. Установите параметры решения задачи (Рис. 6) и подтвердите установленные параметры нажатием кнопки «OK».

Параметр «Максимальное время» служит для назначения времени (в секундах), выделяемого на решение задачи. В поле можно ввести время, не превышающее 32 767 секунд (более 9 часов).

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


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

Параметр «Относительная погрешность» служит для задания точности, с которой определяется соответствие ячейки целевому значению или приближение к указанным границам. Поле должно содержать число из интервала от 0 до 1. Чем меньше количество десятичных знаков во введенном числе, тем ниже точность. Высокая точность увеличит время, которое требуется для того, чтобы сошелся процесс оптимизации.

Параметр «Допустимое отклонение» служит для задания допуска на отклонение от оптимального решения в целочисленных задачах. При указании большего допуска поиск решения заканчивается быстрее.

Параметр «Сходимость» применяется только при решении нелинейных задач.

Установка флажка «Линейная модель» обеспечивает ускорение поиска решения линейной задачи за счет применения симплекс-метода.

9. Запустите задачу на решение путем нажатия кнопки «Выполнить».

После запуска на решение задачи ЛП на экране появляется окно «Результаты поиска решения» (Рис. 7).


10. В появившемся окне нажмите кнопку ОК и посмотрите на экране оптимальное решение задачи (Рис. 8).


Рис. 8. Экранная форма задачи после получения решения




Если Вы не смогли найти решение задачи, следовательно, Вы допустили ошибки на предыдущих этапах. Откройте из папки МАТ_МОД файл ошибки.doc и внимательно прочтите приведенную там информацию.

Задание 3. Сохраните файл в своей папке с именем lab_1(a).


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

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

Задание 4. Найдите целочисленное оптимальное решение задачи о дневном рационе, для этого:

  • в окне «Поиск решения» (меню «Сервис»/«Поиск решения»), нажмите кнопку «Добавить»;
  • в появившемся окне «Добавление ограничений» введите ограничения следующим образом: в поле «Ссылка на ячейку» введите адреса ячеек переменных задачи, то есть $B$3:$D$3;
  • в поле ввода знака ограничения установите «целое» (Рис. 11);


Рис. 11. Ввод условия целочисленности переменных задачи

  • подтвердите ввод ограничения нажатием кнопки OK и проанализируйте полученный результат (Рис. 12).


Рис. 12. Решение задачи при условии целочисленности ее переменных

Задание 5. Сохраните файл в своей папке с именем lab_1(b).

Задача о составлении рациона (задача о диете, задача о смесях)

Пример №1 . Имеется два вида продукции П1 и П2, содержащие питательные вещества S1, S2, S3, S4 (жиры, белки, углеводы, витамины). Содержание числа единиц питательных веществ в единице каждого вида продукции и необходимый минимум питательных веществ приведены в табл. 2.

F = 3x1 + 4x2. (5)
С учетом необходимого минимума питательных веществ составим систему ограничений. Рацион включает (x1 + 2x2) единиц питательного вещества S1, (3x1 + 2x2) единиц питательного вещества S2, (2x1 + x2) единиц питательного вещества S3 и (2x1 + 2x2) единиц питательного вещества S4. Так как содержание питательных веществ S1, S2, S3, S4 в рационе должно быть не менее 10, 8, 9, 11 единиц, соответственно, то получим систему ограничений неравенств:
x1+2x2 ≥ 10 (6)
3x1+2x2 ≥ 8
2x1+x2 ≥ 9
2x1+2x2 ≥ 11
x1 ≥ 0, x2 ≥ 0
Итак, экономико-математическая модель задачи: составить дневной рацион , удовлетворяющий системе ограничений (6), при котором функция (5) принимает минимальное значение.
Сформулируем данную задачу в общей постановке.
Обозначим через xj (j = 1, 2,…, n) – количество единиц j-го продукта в дневном рационе. В рационе используется n видов продуктов. Каждый продукт содержит m питательных веществ в количестве не менее bi (i = 1,2,…,m) единиц, aij – число единиц питательного вещества si в единице продукта j-го вида. Известна стоимость cj единицы j-го продукта. Необходимо составить рацион нужной питательности при минимальных затратах на него.
Экономико-математическая модель примет вид:

(10)
Замечание 2. В задаче составления рациона (диеты, кормовой смеси) могут использоваться ограничения не только по необходимому минимуму питательных веществ, но и по минимальному общему весу смеси.
Например. Некоторая фирма имеет возможность купить n различных видов сырья и приготавливать различные виды смесей (продуктов). Каждый вид сырья содержит разное количество питательных веществ. Установлено, что продукция должна удовлетворять некоторым минимальным требованиям с точки зрения питательности (полезности). Необходимо определить количество каждого j-го вида сырья, образующего смесь минимальной стоимости при соблюдении требований к общему расходу смеси и её питательность.
Экономико-математическая модель задачи будет иметь вид:

,
при ограничениях: на общий расход смеси
на питательность смеси

на не отрицательность переменных

Пример №3 . В заводской лаборатории создается антифрикционный сплав (оловянистый баббит), который должен содержать: олова - не меньше 15%, сурьмы - не меньше 15%, свинца - около 70%. Есть четыре сплава, процентный состав и цены на которые приведенные в таблице:

Элементы Сплав
1 2 3 4
Олово 12 20 12 20
Сурьма 12 18 18 14
Свинец 76 62 70 66
Цена на 1 кг 3,5 5,2 4,0 4,6

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

Решение
Составим экономико-математическую модель задачи.
Обозначим через
x1 – количество сплава 1, кг
x2 – количество сплава 2, кг
x3 – количество сплава 3, кг
x4 – количество сплава 4, кг

В Excel 2007 для включения пакета анализа надо нажать перейти в блок Параметры Excel, нажав кнопку в левом верхнем углу, а затем кнопку «Параметры Excel» внизу окна:





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


Для того чтобы решить задачу ЛП в табличном процессоре Microsoft Excel , необходимо выполнить следующие действия:
1. Ввести условие задачи:
a) создать экранную форму для ввода условия задачи:
· переменных,
· целевой функции (ЦФ),
· ограничений,
· граничных условий;
b) ввести исходные данные в экранную форму:
· коэффициенты ЦФ,
· коэффициенты при переменных в ограничениях,
· правые части ограничений;
c) ввести зависимости из математической модели в экранную форму:
· формулу для расчета ЦФ,
· формулы для расчета значений левых частей ограничений;
d) задать ЦФ (в окне "Поиск решения" ):
· целевую ячейку,
· направление оптимизации ЦФ;
e) ввести ограничения и граничные условия (в окне "Поиск решения" ):
· ячейки со значениями переменных,
· граничные условия для допустимых значений переменных,
· соотношения между правыми и левыми частями ограничений.
2. Решить задачу:
a) установить параметры решения задачи (в окне "Поиск решения" );
b) запустить задачу на решение (в окне "Поиск решения" );
c) выбрать формат вывода решения (в окне "Результаты поиска решения" ).

Рассмотрим подробно использование MS Excel на примере решения следующей задачи.

Фабрика "GRM pic" выпускает два вида каш для завтрака - "Crunchy" и "Chewy". Используемые для производства обоих продуктов ингредиенты в основ­ном одинаковы и, как правило, не являются дефицитными. Основным ограничением, накладываемым на объем выпуска, является наличие фонда рабочего времени в каждом из трех цехов фабрики.

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


Цех

Необходимый фонд рабочего времени
чел.-ч/т

Общий фонд рабочего времени
чел.-ч. в месяц

"Crunchy"

"Chewy"
А. Производство
10

4

1000
В. Добавка приправ
3

2

360
С. Упаковка
2

5

600
Доход от производства 1 т "Crunchy" составляет 150 ф. ст., а от производства "Chewy" - 75 ф, ст. На настоящий момент нет никаких ограничений на возможные объемы продаж. Имеется возможность продать всю произведенную продукцию.

а) Сформулировать модель линейного программирования, максимизи­рующую общий доход фабрики за месяц.

б) Решить ее c помощью MS Excel.

Ввод исходных данных
Создание экранной формы и ввод исходных данных

Экранная форма для решения в MS Excel представлена на рисунке 1.


В экранной форме на рисунке 1 каждой переменной и каждому коэффициенту задачи поставлена в соответствие конкретная ячейка на листе Excel. Имя ячейки состоит из буквы, обозначающей столбец, и цифры, обозначающей строку, на пересечении которых находится объект задачи ЛП. Так, например, переменным задачи 1 соответствуют ячейки B4 (x1), C4 (x2), коэффициентам ЦФ соответствуют ячейки B6 (c1=150), C6 (c2=75), правым частям ограничений соответствуют ячейки D18 (b1=1000), D19 (b2=360), D20 (b3=600) и т.д.

Ввод зависимостей из формальной постановки задачи в экранную форму

Для ввода зависимостей определяющих выражение для целевой функции и ограничений используется функция MS Excel СУММПРОИЗВ , которая вычисляет сумму попарных произведений двух или более массивов.


Одним из самых простых способов определения функций в MS Excel является использование режима "Вставка функций" , который можно вызвать из меню "Вставка" или при нажатии кнопки fx (рисунок 2) на стандартной панели инструментов.

Рисунок 2


Так, например, выражение для целевой функции из задачи 1 определяется следующим образом:
· курсор в поле D6;
· нажав кнопку fx , вызовите окно "Мастер функций - шаг 1 из 2";
· выберите в окне "Категория" категорию "Математические";
· в окне "Функция" выберите функцию СУММПРОИЗВ (рис. 3);

Рисунок 3
· в появившемся окне "СУММПРОИЗВ" в строку "Массив 1" введите выражение B$4:C$4 , а в строку "Массив 2" - выражение B6:C6 (рис. 4);


Левые части ограничений задачи (1) представляют собой сумму произведений каждой из ячеек, отведенных для значений переменных задачи ( B3, C3 ), на соответствующую ячейку, отведенную для коэффициентов конкретного ограничения ( B13, C13 - 1-е ограничение; B14, С14 - 2-е ограничение и B15, С15 - 3-е ограничение). Формулы, соответствующие левым частям ограничений, представлены в табл.1.
Таблица 1.

Формулы, описывающие ограничения модели (1)

Левая часть ограниченияФормула Excel
10x1+4x2 или B3×B13+C3×C13 =СУММПРОИЗВ(B4:C4;B13:C13))
3x1+2x2 или B3×B14+C3×C14 =СУММПРОИЗВ(B4:C4;B14:C14))
2x1+5x2 или B3×B15+C3×C15 =СУММПРОИЗВ(B4:C4;B15:C15)

Дальнейшие действия производятся в окне "Поиск решения" , которое вызывается из меню "Сервис" (рис.5):

· поставьте курсор в поле "Установить целевую ячейку" ;

· введите направление оптимизации ЦФ, щелкнув один раз левой клавишей мыши по селекторной кнопке "максимальному значению".


Ввод ограничений и граничных условий
Задание ячеек переменных

В окно "Поиск решения" в поле "Изменяя ячейки" впишите адреса $B$4:$С$4 . Необходимые адреса можно вносить в поле "Изменяя ячейки" и автоматически путем выделения мышью соответствующих ячеек переменных непосредственно в экранной форме.
Задание граничных условий для допустимых значений переменных

Окно "Поиск решения" после ввода всех необходимых данных задачи (1) представлено на рис. 5.
Если при вводе условия задачи возникает необходимость в изменении или удалении внесенных ограничений или граничных условий, то это делают, нажав кнопки "Изменить" или "Удалить" (см. рис. 5).

Решение задачи
Установка параметров решения задачи


Задача запускается на решение в окне "Поиск решения" . Но предварительно для установления конкретных параметров решения задач оптимизации определенного класса необходимо нажать кнопку "Параметры" и заполнить некоторые поля окна "Параметры поиска решения" (рис. 7).

Рис. 7 - Параметры поиска решения, подходящие для большинства задач ЛП

Параметр "Максимальное время" служит для назначения времени (в секундах), выделяемого на решение задачи. В поле можно ввести время, не превышающее 32 767 секунд (более 9 часов).
Параметр "Предельное число итераций" служит для управления временем решения задачи путем ограничения числа промежуточных вычислений. В поле можно ввести количество итераций, не превышающее 32 767.
Параметр "Относительная погрешность" служит для задания точности, с которой определяется соответствие ячейки целевому значению или приближение к указанным границам. Поле должно содержать число из интервала от 0 до 1. Чем меньше количество десятичных знаков во введенном числе, тем ниже точность. Высокая точность увеличит время, которое требуется для того, чтобы сошелся процесс оптимизации.
Параметр "Допустимое отклонение" служит для задания допуска на отклонение от оптимального решения в целочисленных задачах. При указании большего допуска поиск решения заканчивается быстрее.
Параметр "Сходимость" применяется только при решении нелинейных задач.Установка флажка "Линейная модель" обеспечивает ускорение поиска решения линейной задачи за счет применение симплекс-метода.
Подтвердите установленные параметры нажатием кнопки "OK" .

Запуск задачи на решение
Запуск задачи на решение производится из окна "Поиск решения" путем нажатия кнопки "Выполнить" .

Читайте также: