Скачиваний:
64
Добавлен:
08.04.2015
Размер:
625.23 Кб
Скачать
Рис.5.1.

5. РЕШЕНИЕ ЗАДАЧ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ В MS EXCEL С ПОМОЩЬЮ НАДСТРОЙКИ «ПОИСК РЕШЕНИЯ»

5.1. Общие сведения о надстройке «Поиск решения».

Наряду с хорошо известными возможностями Excel* по проведению расчетов с помощью библиотеки встроенных стандартных функций – математических, статистических, финансовых и других, дополнительные возможности для моделирования представляют так называемые надстройки. Надстройки – это особые приложения, позволяющие расширить стандартные возможности Excel. Они созданы в виде самостоятельных программных модулей, которые связываются с Excel специальной программой, встроенной в Excel и написанной на языке Visual Basic. Обе программы взаимодействуют на основе внутреннего интерфейса. Информация, введенная в электронную таблицу, переносится в соответствующий программный модуль, обрабатывается там и затем возвращается на рабочий лист в виде результатов. Такая организация работы позволяет до-

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

* Дальнейшее изложение предполагает, что оптимизация проводится в версиях

MS Excel 97 и выше.

59

«Пакет анализа» и «Поиск решения» - Рис 5.1. «Пакет анализа» – это набор программ по обработке статистики и прогнозированию. Надстройка «Поиск решения» предназначена для оптимизации линейных

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

«Поиск решения» – разработка компании Frontline Systems, Inc. (http://www.solver.com). Ею создано несколько версий программы, одна из которых входит в состав стандартной комплектации MS Excel

ипозволяет решать задачи, содержащие до 200 переменных. В оригинальной англоязычной версии надстройка носит название Solver. Для сложных задач с большим количеством переменных и ограничений (до 1000) существует более мощная версия программы – Premium Solver, обладающая и более высоким быстродействием. Она предлагается компанией Frontline Systems, Inc. на коммерческой основе.

«Поиск решения» не появляется в меню Excel автоматически при установке Microsoft Office или Excel на компьютер. Для активации надстройки необходимо в пункте меню «Сервис» выбрать пункт «Надстройки» и в открывшемся диалоговом окне (рис. 5.1.) поставить флажок в окошке «Поиск решения». После чего в пункте меню «Сер-

Рис. 5.2.

вис» появится строка «Поиск решения...» (рис. 5.2.). В дальнейшем

60

вызов надстройки можно выполнять командами Сервис ¾ Поиск ре-

шения....

5.2. Ввод информации о модели линейного программирования в надстройку «Поиск решения»

Запуск программы по команде Сервис ¾ Поиск решения... открывает диалоговое окно (рис. 5.3.).

Рис. 5.3.

По терминологии, используемой в надстройке, «Целевая ячейка»

– это ячейка, в которую записана формула для вычисления целевой функции. Термин «Изменяемые ячейки» - используется для тех ячеек, в которых расположены переменные решения x1, x2,Kxn .

Вполе «Установить целевую ячейку:» указывается адрес ячейки,

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

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

вточности равна некоторому значению, ставится флажок у надписи «Равной: значению:» и в поле справа устанавливается это требуемое значение (подобные задачи относятся к классу задач на подбор параметров).

61

Поле «Изменяя ячейки:» предназначено для ввода адресов тех ячеек, куда помещены переменные решения x1, x2,Kxn . Их значения

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

Для записи ограничений в диалоговом окне «Поиска решения» предусмотрено поле «Ограничения:». Ввод каждого из ограничений производится с помощью кнопки «Добавить». После ее нажатия появляется окно «Добавление ограничения» (рис. 5.4.).

Рис. 5.4.

Адреса ячеек рабочего листа Excel, в которых записаны формулы для вычисления левых частей ограничений, записываются в левом поле «Ссылка на ячейку:». Адреса ячеек, в которых записаны константы (числовые значения) для правых частей соответствующих ограничений, вносятся в правое поле «Ограничение:». Знаки ограничений « <= », « = », « >= » и др. вводятся в среднем поле. Для ввода каждого нового ограничения следует нажать клавишу «Добавить» и повторить процедуру. После завершения ввода необходимо нажать клавишу OK и программа вернется в основное окно «Поиск решения» (рис. 5.3.), где в поле «Ограничения:» появятся введенные условия. Внести изменения или удалить любое из ограничений можно клави-

шами «Изменить» и «Удалить» (рис. 5.3.).

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

метры» (рис. 5.3.) и перейти на вкладку «Параметры поиска реше-

ния» (рис. 5.5.). Для задач линейного программирования в открывшемся диалоговом окне необходимо установить флажок «Линейная модель». Для задания условия неотрицательности переменных устанавливается флажок «Неотрицательные значения». Условие неотрицательности переменных можно было задать также и в окне «Огра-

62

ничения» (рис.5.4.). Однако делать это следует только в одном месте. Дублирование условий неотрицательности может приводить к ошибкам в работе программы.

Флажок «Автоматическое масштабирование» устанавливать крайне желательно, особенно в тех задачах, где масштаб переменных решения существенно отличается друг от друга (граммы и тонны, рубли и миллионы рублей и т.д.). В этом случае программа автоматически масштабирует переменные для избежания ошибок округления.

Рис. 5.5.

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

5.3. Решение задач линейного программирования с помощью надстройки «Поиск решения»

Для иллюстрации алгоритма решения задач линейного программирования рассмотрим следующий пример.

Пример 5.1.

Мебельная фабрика выпускает три вида изделий: шкафы, тумбочки и столы, – расходуя для их производства ресурсы четырех типов: ДСП, фанеру, стекло, крепежные изделия. Нормы расхода ресурсов на

63

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

Таблица 5.1.

 

Нормы расхода ресурсов для произ-

 

Ресурсы

водства единицы продукции

Ограничения

 

 

 

по ресурсам

 

Шкафы

Тумбочки

Столы

 

 

 

 

 

ДСП

1

2

1

18

Фанера

2

1

1

16

Стекло

1

1

0

8

Крепеж

0

1

1

6

Кроме того, известна прибыль от реализации одного изделия каждого типа ( в у.е.) – табл. 5.2.

Таблица 5.2.

C1

C2

C3

(Шкафы)

(Тумбочки)

(Столы)

3

4

2

 

 

 

Требуется:

1)Найти производственную программу – объемы выпуска шкафов, тумбочек и стульев, обеспечивающую максимальную прибыль.

2)Установить размеры максимальной прибыли в случаях

yуменьшения запаса ресурса «ДСП» на 6 единиц,

yувеличения запаса ресурса «Фанера» на 4 единицы.

3) Оценить целесообразность введения в план производства нового (четвертого) изделия (например, стульев), нормы затрат ресурсов на единицу которого составляют 1, 2, 0, 2, а прибыль от реализации 15 у.е./шт.

Решение

Обозначим через x1, x2 , x3 искомую производственную програм-

му – объемы выпуска (штук) шкафов, тумбочек и столов. Тогда математическая модель задачи оптимизации примет вид

Z = 3x1 + 4x2 + 2x3 max

(5.1)

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

64

x

1

+2x

2

+x

3

18,

 

 

 

 

 

 

 

2x1 +x2

+x3

16,

 

 

+x2 8,

 

 

 

(5.2)

x1

 

 

 

 

 

+x3 6,

 

 

 

 

x2

 

 

 

0.

x

1

0, x

2

0, x

3

 

 

 

 

 

 

 

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

Рис. 5.6.

Выделим на рабочем листе Excel ячейки B4, C4, D4 (массив B4:D4) для переменных решения x1, x2 , x3 . В ячейку E4 запишем формулу

(5.1) для вычисления целевой функции. Так как целевая функция равна сумме попарных произведений коэффициентов целевой функции c1,c2 ,c3 на соответствующие переменные решения x1, x2 , x3, то

формулу в ячейке E4 удобно записать с помощью стандартной функции Excel СУММПРОИЗВ (Вставка ¾ Функция ¾ Математические ¾ СУММПРОИЗВ) - рис.5.7.

65

Рис. 5.7.

Соответствующая формула в ячейке E4, вычисляющая значения целевой функции для производственной программы x1, x2 , x3 , запи-

шется следующим образом

=СУММПРОИЗВ(B4:D4;B3:D3).

В ячейках B4:D4 расположены (и далее будут подбираться «Поиском решения» значения x1, x2 , x3 , а в ячейках B3:D3 записаны значе-

ния коэффициентов целевой функции. На этой стадии переменным x1, x2 , x3 можно не придавать никакого начального числового значе-

ния – оставить их пустыми или положить равными нулю.

Для записи ограничений в табличной модели предусмотрены ячейки A6:H11 (рис. 5.6.). В ячейках B8:D11 записаны известные из условий задачи удельные расходы ресурсов, необходимые для производства каждого изделия. В колонку «Запас ресурсов» помещены значения запасов ресурсов – правые части ограничений (5.2). Для удобства анализа полученных решений можно также добавить колонку «ЗапасРасход», в которой будут вычисляться излишки каждого ресурса, остающиеся после выполнения найденной производственной программы. Формула для нахождения остатка проста – это разность между имевшимся запасом и фактически потребленным количеством ресурса

(см. рис.5.7.).

Колонка «Расход ресурса» предусмотрена для записи формул, вычисляющих левые части ограничений системы (5.2). Как видно из структуры ограничений (5.2), их левые части представляет собой сумму попарных произведений переменных x1, x2 , x3 на удельные рас-

66

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

Первое ограничение системы (5.2) имеет вид x1 +2x2 +x3 18.

Левая часть ограничения – это сумма попарных произведений чисел {1, 2, 1} на x1, x2 , x3 , т.е. удельных расходов ресурса ДСП на объемы

производства каждого изделия. Так как удельные расходы для ДСП {1, 2, 1} расположены в ячейках B8:D8, а производственная программа x1, x2 , x3 (объемы выпуска изделий) расположена в ячейках

B4:D4, то для вычисления левой части ограничения в ячейку E8 записываем формулу

=СУММПРОИЗВ($B$4:$D$4;B8:D8).

Знак абсолютной ссылки - $ (клавиша F4) добавлен к адресам ячеек B4:D4 для того, чтобы записанную один раз формулу можно было скопировать в нижерасположенные ячейки E9:E11 для вычисления левых частей других ограничений.

Рис. 5.8.

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

В открывшемся диалоговом окне (рис. 5.8.), вводим адрес целевой ячейки - E4 (поле «Установить целевую ячейку») и адреса массива ячеек B4:D4, в которых содержатся переменные решения - x1, x2 , x3

(поле «Изменяя ячейки»). Устанавливаем флажок «Равной: макси-

мальному значению».

67

Устанавливаем параметры поиска решения, необходимые для

Рис. 5.9.

решения задачи линейного программирования – кнопка Параметры ¾ переход в окно «Параметры поиска решения» (рис. 5.9.). Устанав-

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

рис.5.8.

Для ввода ограничений используем кнопку Добавить и переходим в окно «Добавление ограничений» – рис. 5.10.

Рис. 5.10.

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

68