Решение задач на оптимизацию с помощью MS EXEL

Автор: Пользователь скрыл имя, 05 Декабря 2010 в 11:23, лекция

Описание работы

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

Работа содержит 1 файл

Решение задач на оптимизацию с помощью MS Excel.doc

— 278.50 Кб (Скачать)
Решение задач на оптимизацию с помощью MS Excel
Написал Алексей Шмуйлович   
29.05.2007
Надстройка MS Excel "Поиск решений" позволяет решать широкий круг задач на оптимизацию. Думаю, многие посетители сайта изучали в институте линейное программирование или исследования операций. "Поиск решений" в Excel позволяет в считанные секунды находить оптимальные решения достаточно сложных моделей, кстати не только линейных, без знания алгоритмов и длительных рутинных итерраций.

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

Модели  всех задач на оптимизацию состоят  из следующих элементов:

1. Переменные - неизвестные величины, которые  нужно найти при решении задачи.

2. Целевая  функция - величина, которая зависит  от переменных и является целью, ключевым показателем эффективности или оптимальности модели.

3. Ограничения  - условия, которым должны удовлетворять  переменные.

Поиск решения  такой модели рассмотрим на примере  вопроса, поступившего на форум. Итак, сам вопрос:

Издательский дом «Геоцентр-Медиа» издает два журнала: «Автомеханик» и «Инструмент», которые печатаются в трех типографиях: «Алмаз-Пресс», «Карелия-Принт» и «Hansaprint» (Финляндия), где общее количество часов, отведенное для печати и производительность печати одной тысячи экземпляров ограничены и представлены в следующей таблице: 
 
Спрос на журнал «Автомеханик» составляет 12 тысяч экземпляров, а на журнал «Инструмент» -не более 7,5 тысячи в месяц. 
Определите оптимальное количество издаваемых журналов, которое обеспечит максимально выручку от продажи.

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

Найти нам  необходимо оптимальное количество издаваемых журналов каждого вида. А издавать их можно в трех типографиях  на разных условиях. Вот и получается, что нам необходимо определить размер тиража каждого журнала напечатанного в каждой типографии. Это и будут наши переменные.

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

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

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

Еще одно важное ограничение, о котором обычно забывают - переменные должны быть неотрицательными. 

Попытаемся  представить модель в Excel.

 

 

Переменные, то есть объем тиража, находятся  в ячейках B10:C12. Целевая функция - в ячейке D13. Обратите внимание, целевая  функция построена формулой, ссылаясь на ячейки с переменными и исходные данные (стоимость единицы тиража).

Также формулами  подсчитывается фактическое время  печати тиража в каждой из типографий (ячейки E3:E5).

Все готово, приступаем решению задачи с помощью  надстройки.

Включается  она через меню Сервис - Поиск  решений. Если такого пункта меню нет, войдите в меню Сервис - Надстройки и отметьте галочкой соответствующую надстройку. Может понадобиться установочный комплект Office.

Перед Вами появится следующий диалог:

Здесь указываем  адрес целевой ячейки, отмечаем, что ее нужно привести к максимальному значению, изменяя ячейки $B$10:$C$12. Диапазоны можно указывать мышью - станьте в нужное поле диалога и выделите на листе нужные ячейки. Адрес автоматически попадет в диалог.

Добавляем ограничения. После нажатия кнопки Добавить появляется диалог:

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

Для Алмаз-Пресс  ограничение будет таким E3 <= D3. В ячейке E3 должна быть формула суммы  продолжительности печати тиража первого и вторго журналов в этой типографии, полученной перемножением тиража на норму времени.

Думаю, понятно, как ввести в диалог описанное  ограничение.

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

Ограничения неотрицательности можно также  задать с помощью этого диалога - для каждой ячейки с объемом тиража установить ограничение >=0.

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

Здесь достаточно отметить галочку Неотрицательные  значения.

Все модель готова к расчету:

Нажимаем  Выполнить.

Через пару секунд Вы будете иметь оптимальное  решение.

Теперь выберите Сохранить решение и нажмите Ok.

Можете  проверить решение, пробуя подставлять  другие значения тиража, перераспределяя  тираж между типографиями. Вряд ли Вам удастся улучшить результат.

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

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

Поиск параметра.

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

Рассмотрим процедуру поиска параметра  на простом примере: решим уравнение 10 * x - 10 / x = 15. Здесь параметр (аргумент) - x. Пусть это будет ячейка A3. Введем в эту ячейку любое число, лежащее в области определения функции (в нашем примере это число не может быть равно нулю). Это значение будет использовано в качестве начального. Пусть это будет 3. Введем формулу =10*A3-10/A3, по которой должно быть получено требуемое значение, в какую-либо ячейку, например, B3. Теперь можно запустить функцию поиска параметра, выбрав команду Goal Seek (Подбор параметра) в меню Tools (Сервис). Введите параметры поиска:

  • В поле Set cell (Установить в ячейке) введите ссылку на ячейку, содержащую необходимую формулу.
  • Введите искомый результат в поле To value (Значение).
  • В поле By changing cell (Изменяя значение ячейки) введите ссылку на ячейку, содержащую подбираемое значение.
  • Кликните на клавише OK.

 

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

 

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

Задачу поиска параметра при налагаемых граничных  условиях поможет решить специальная  надстройка Microsoft Excel Solver (Поиск решения).

Поиcк  решения.

Надстройка Microsoft Excel Solver (Поиск решения) не устанавливается автоматически при обычной установке:

  • В меню Tools (Сервис) выберите команду Add-Ins (Надстройки). Если диалоговое окно Add-Ins (Надстройки) не содержит команды Solver (Поиск решения), нажмите кнопку Browse (Обзор) и укажите диск и папку, в которой содержится файл надстройки Solver.xla (как правило, это папка Library\Solver) или запустите программу установки Microsoft Office, если найти файл не удается.
  • В диалоговом окне Add-Ins (Надстройки) установите флажок Solver (Поиск решения).

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

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

Если Вы щелкните на кнопке Guess (Предположить), Excel сам попытается найти все ячейки, влиящие на формулу.

Вы можете добавить граничные условия, кликнув на клавише Add (Добавить).

Кликнув на кнопке Options (Параметры), можно изменить условия поиска решения: максимальное время поиска решения, количество итераций, точность решения, допуск на отклонение от оптимального решения, метод экстраполяции (линейная или квадратичная), алгоритм оптимизации и т.д.

Вернемся к  предыдущему примеру: для того, чтобы  получить второе (неположительное) решение, достаточно добавить граничное условие A3<=-0.01. Так же как и при подборе параметра, на экране появится окно, в котором будет отображен отчет о результатах поиска требуемого решения. Само решение будет показано в предназначенных для него ячейках (в ячейке A3 отобразится значение -0.50).

 

Надстройка Microsoft Excel Solver (Поиск решения) позволяет, также, решать системы уравнений или неравенств. Рассмотрим простой пример: попробуем решить систему уравнений

x + y = 2 
x - y = 0
 

  • Введем  в ячейки, предназначенные для  решения (A1:A2) произвольные величины, лежащие в области определения (начальные значения).
  • В ячейки B1 и B2 внесем формулы, по которым должны вычисляться правые части уравнений (= A1 + A2 и = A1 - A2).
  • Запустим Solver (Поиск решения) из меню Tools (Сервис).
  • Выберем одну из ячеек, содержащих формулы, в качестве целевой ячейки (например, B1), сделаем ее равной 2.
  • Кликнем на кнопке Guess (Предположить) для того, чтобы Excel определил влияющие ячейки (A1:A2).
  • Добавим ограничение B2 = 0.
  • Кликнем на клавише Solve (Выполнить).

 

Результаты поиска отобразятся в  предназначенных для решения  ячейках (A1:A2), отчет о результатах появится на экране.

 
Как Вы уже знаете, формулы в Microsoft Excel позволяют определить значение функции по ее аргументам. Однако может  возникнуть ситуация, когда значение функции известно, а аргумент требуется  найти (т.е. решить уравнение). Для решения подобных проблем предназначена специальная функция
Goal Seek (Подбор параметра).

Поиск параметра.

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

Рассмотрим процедуру поиска параметра  на простом примере: решим уравнение 10 * x - 10 / x = 15. Здесь параметр (аргумент) - x. Пусть это будет ячейка A3. Введем в эту ячейку любое число, лежащее в области определения функции (в нашем примере это число не может быть равно нулю). Это значение будет использовано в качестве начального. Пусть это будет 3. Введем формулу =10*A3-10/A3, по которой должно быть получено требуемое значение, в какую-либо ячейку, например, B3. Теперь можно запустить функцию поиска параметра, выбрав команду Goal Seek (Подбор параметра) в меню Tools (Сервис). Введите параметры поиска:

  • В поле Set cell (Установить в ячейке) введите ссылку на ячейку, содержащую необходимую формулу.
  • Введите искомый результат в поле To value (Значение).
  • В поле By changing cell (Изменяя значение ячейки) введите ссылку на ячейку, содержащую подбираемое значение.
  • Кликните на клавише OK.

Информация о работе Решение задач на оптимизацию с помощью MS EXEL