- •Глава 1
- •Решение с помощью пакета WinQsb
- •Глава 2
- •Решение с помощью пакета WinQsb
- •Решение с помощью прог раммы Excel
- •Глава 3
- •Решенне с помощью пакета WinQsb
- •Решение с помощью программы Excel Ввод данных и анализ оптимального решении
- •Глава 4
- •Решение с помощью пакета WinQsb
- •Глава 1. Задача линейного программирования 5
- •Пример 5
- •Глава 2 .Задача целочисленного программирования 49
- •Глава 3. Транспортная задача 54
- •Глава 4. Задача о назначениях 77
Структура пособия
В главе 1 разобран пример решения задачи линейного программирования. В главе 2 на том же примере показано, как получить целочисленное решение этой задачи. Глава 3 посвящена решению транспортной задачи, а глава 4 — решению задачи о назначениях. В приложение А вынесены общие правила работы с пакетом WinQSB, рассмотрены возникающие при этом трудности и пути их преодоления. В приложении Б говорится о том, как в Excel установить средство Поиск решения, используемое в настоящем пособии. И наконец, в приложении В вы найдете перечень программ, используемых в настоящее время при выработке управленческих решений, с указанием источников их получения.
Глава 1
ЗАДАЧА ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ
Пример
Требуется определить план выпуска четырех видов продукции, обеспечивающий максимальную прибыль от ее реализации. На изготовление этой продукции расходуются трудовые ресурсы, сырье и финансы. С учетом рыночного спроса и производственно-технологических возможностей заданы предельные границы выпуска каждого вида продукции. Эти границы, наличие и нормы расхода ресурсов, а также маржинальная прибыль (разность между выручкой и переменными издержками) на единицу продукции приведены в таблице:
Ресурсы |
Продукт 1 |
Продукт 2 |
Продукт 3 |
Продукт 4 |
Наличие |
Труд |
1 |
2 |
1 |
2 |
19 |
Сырье |
7 |
4 |
5 |
4 |
80 |
Финансы |
5 |
7 |
9 |
8 |
100 |
Прибыль |
70 |
60 |
110 |
140 |
|
Нижн. гр. |
3 |
1 |
1 |
2 |
|
Верхн. гр. |
5 |
- |
3 |
4 |
|
Обозначив количество выпускаемых изделий через .ть -ГгЛ, -<Ч, а целевую функцию (валовую маржинальную прибыль) — через F, построим математическую модель задачи:
F— 70.V| + 6O.Y2 + 110x3 + 14 dr., —> max,
-v 1 + 2.Y2 + Д'з + 2.v,( <19, 3 < -t| < 5,
7.v 1 + 4.V2 + 5,v3 + 4.V4 <80, I < л,
5xi + 7.y2 + 9xj + 8.v4 < 100, 1 < л‘з < 3,
2 < X) < 4,
X|, x2, -тз, X| > 0.
Три неравенства, расположенные слева, будем в дальнейшем называть ограничениями, а четыре справа — граничными условиями (они показывают, в каких пределах могут изменяться значения переменных). В последней строке модели находятся условия неотрицательности. Они говорят о том, что количество выпускаемых изделий не может быть отрицательным. Так как такие условия присутствуют в большинстве моделей линейного программирования, мы привели их здесь для общности, хотя в данной задаче неотрицательность переменных вытекает из граничных условий.
Решение с помощью пакета WinQsb
Запуск программы
Чтобы запустить программу для решения задач линейного и целочисленного программирования, щелкните кнопку Пуск, найдите программную группу WinQSB и выберите в ней программу Linear and Integer Programming.
Задание параметров задачи
Для ввода новой задачи нужно выбрать команду File ► New Problem. В открывшемся окне задаётся (рис. 1.1):
Название задачи — в поле Problem Title.
Количество переменных — в поле Number of Variables.
Количество ограничений— в поле Number of Constraints (в нашей задаче — 3, без учета граничных условий).
Вариант оптимизации — максимизация (Maximization) или минимизация (Minimization).
Форма задачи — матричная (Spreadsheet Matrix Form) или стандартная (Normal Model Form). Стандартная форма хотя и нагляднее, но более
LP-ILP Problem Specification
Problem Title: |npoi
изводственныи план
Number of Constraints:
Number of Variables:
Objective Criterion
ii Maximization Г Minimization
Data Entry Format
'■ Spreadsheet Matrix Form Г Normal Model Form
Default Variable Type
ii Nonnegative continuous Г Nonnegative integer Г Binary (0.1)
Г Unsigned/unrestricted
:el Help
Рис. 1.1. Ввод параметров решения задачи линейного программирования
трудоемка для использования: в ней, кроме чисел (коэффициентов целевой функции и ограничений), требуется набирать на клавиатуре еще и буквы, обозначающие переменные, а также знаки ограничений. Поэтому в дальнейшем мы будем использовать матричную форму. Однако после ввода данных эту форму легко изменить с помощью команды меню Format.
® Тип переменных— непрерывные неотрицательные (Nonnegative continuous), целые неотрицательные (Nonnegative integer), двоичные (Binary (0,1)) или свободные, то есть произвольного знака (Unsigned/unrestricted).
Ввод числовых данных
Если выбрана матричная форма задачи, откроется окно с таблицей для ввода данных: коэффициентов целевой функции и ограничений, правых частей ограничений, а также для выбора их знаков. Вид этого окна после ввода данных показан на рис. 1.2.
В строке Variable — установленные по умолчанию имена переменных. В строке Maximize (или Minimize) вводятся коэффициенты целевой функции. Обозначения С1, С2, СЗ и т. д. — это установленные по умолчанию названия ограничений. В соответствующих строках вводятся коэффициенты этих ограничений, за которыми следуют их знаки (в столбце Direction) и правые части (в
(к Производственный план
Variable —> |
Х1 |
Х2 |
ХЗ |
Х4 |
Direction R. |
H. S. |
Maximize |
70 |
60 |
110 |
140 |
|
|
С1 |
1 |
2 |
1 |
2 |
<= |
19 |
С2 |
7 |
4 |
5 |
4 |
<= |
80 |
СЗ |
5 |
7 |
9 |
8 |
<= |
100 |
LowerBound |
3 |
1 |
1 |
2 |
|
|
UpperBound |
5 |
М |
3 |
4 |
|
|
VariableType |
Continuous |
Continuous |
Continuous |
Continuous |
|
|
Рис. 1.2. Задание коэффициентов целевой функции и ограничений
столбце R. Н. S.). Ниже— две строки для задания граничных ycMioBiiiiiLowerBound и UpperBound. В первой из них вводятся нижние границы переменных, а во второй — верхние. По умолчанию все нижние границы равны 0, а все верхние равны бесконечности, которая обозначается большой латинской буквой М. В строке Variable Туре указан заданный вами тип переменных: Continuous (непрерывная), Integer (целая), Binary (двоичная) или Unrestricted (свободная).
Вппманпе! В рассматриваемой версии WinQSB при вводе чисел, имеющих дробную часть, используйте в качестве разделителя целой и дробной части точку, а не запятую. (Хотя в таблицах результатов, выдаваемых программой после окончания решения, вы увидите в качестве разделителя тот знак, который определяется настройками вашей операционной системы, скорее всего запятую.)
При вводе данных, набрав число или знак, следует нажать клавишу Enter, чтобы перейти на следующую позицию ввода. Кроме того, можно выполнять следующие действия:
Перемещаться по таблице— с помощью клавиши Tab или клавиш со стрелками.
Выбрать ячейку таблицы — щелчком этой ячейки.
Редактировать содержимое ячейки таблицы — после щелчка голубого поля над таблицей. При этом выбранная ячейка выделится цветом и можно редактировать ее содержимое.
Изменить знак ограничения — двойным щелчком знака. Если двойной щелчок выполнить несколько раз, знаки будут меняться циклически(<=,>=,=).
Изменить тип переменной — двойным щелчком слова, обозначающего тип этой переменной в строке Variable Туре. При нескольких двойных щелчках названия типов будут меняться Lununi4ecKii(Continuous, Integer, Binary, Unrestricted).
С помощью указанных далее команд меню Edit можно изменить следующие параметры задачи:
Название задачи — Problem Name.
Имена переменных — Variable Names.
Названия ограничений — Constraint Names.
Вариант оптимизации целевой функции — Objective Function Criterion (максимизация меняется на минимизацию или наоборот).
Количество ограничений — Insert a Constraint или Delete a Constraint (ограничения добавляются или удаляются).
Количество переменных—• Insert a Variable или Delete a Variable (переменные добавляются или удаляются).
Воспользуемся этими командами, чтобы в нашей задаче ввести русские названия переменных и ограничений (рис. 1.3).
С помощью перечисленных далее команд меню Format могут быть изменены:
Форма задачи — Switch to Normal Model Form или Switch to Matrix Form (перейти в стандартную или матричную форму). Выбрав любую форму
к Производственный план
[Maximize Прод!
J70
Variable —> |
Прод1 |
Прод2 j |
ПродЗ |
Прод4 |
Direction |R. H. S. |
Maximize |
70 |
60 |
110 |
140 |
|
Труд |
1 |
2 |
1 |
2 |
<= 19 |
Сырье |
7 |
4 |
5 |
4 |
<= 80 |
Финансы |
5 |
7 |
9 |
8 |
<= 100 |
LowerBound |
3 |
1 |
1 |
2 |
|
UpperBound |
5 |
М |
3 |
4 |
|
VariableType |
Continuous |
Continuous |
Continuous |
Continuous |
|
Рис. 1.3. Измененные названия переменных и ограничений
задачи, вы можете построить задачу, двойственную к ней, с помощью команды Switch to Dual Form.
Формат чисел — Number.
Шрифт и ifeem — Font.
» Выравнивание — Alignment.
Высота строк — Row Height.
Ширина столбцов — Column Width.
Например, стандартная форма нашей задачи показана на рис. 1.4.
Вниманне! После ввода данных задачи не забудьте сохранить ее с помощью команды File ► Save Problem As.
Нахождение решения
Чтобы решить задачу, выберите в меню Solve and Analyze один из следующих вариантов действий:
Решить задачу— Solve the Problem. При этом задача решается симплексным методом, если все переменные определены вами как непрерывные, или методом ветвей и границ, если хотя бы одна из них определена как целая или двоичная. По окончании решения появится сообщение о том, что задача
(ь Производственный план |
|
й |
а |
Maximize 70Прод1 ♦60Прод2*11ОПродЗЧ 40Прод4 |
Maximize
OBJ/Conslraint/VariableType/Bound
70Прод1+60Прод2+110ПродЗ+140Прод4 1Прод1+2Прод2+1ПродЗ+2Прод4<=19 7Прод1+4Прод2+5ПродЗ+4Прод4<=80 5Прод1+7Прод2+9ПродЗ+8Прод4<=100
Integer:
Binary:
Труд
Сырье
Финансы
Unrestricted:
Прод1
>=3, <=5 >=1. <=М >=1, <=3 >=2, <=4
Прод2
ПродЗ
Прод4
Рис. 1.4. Задача линейного программирования в стандартной форме
решена (The problem has been solved.) и либо получено оптимальное решение (Optimal solution is achieved.), либо допустимых решении нет (However, the problem is infeasible!), либо целевая функция не ограничена (However, the problem is unbounded!). Щелкнув кнопку OK в окне с этим сообщением, вы увидите сводный отчет о решении, или анализ недопустимости (если нет допустимых решений), или анализ неограниченности (если не ограничена целевая функция). В дальнейшем можно открывать сводный отчет либо посредством меню Window, либо с помощью команды Results ► Combined Report.
Решить с показом шагов — Solve and Display Steps. В этом случае показываются все итерации решения. Если все переменные определены как непрерывные, задача решается симплексным методом и отображаются симплекс- таблицы с указанием переменных, вводимых в базнс и исключаемых из него. С помощью меню Simplex Iteration вы можете сами выбрать переменную, вводимую в базис (Choose Entering Variable), а также перейти к следующей итерации (Next Iteration), к последней итерации (Go to the Last Tableau) или к концу решения с выводом сводного отчета (Nonstop to Finish). В дальнейшем можно открывать таблицу с последней итерацией либо посредством меню Window, либо с помощью команды Results ► Final Simplex Tableau.
Решить графическим методом — Graphic Method. При выборе этой команды откроется окно (рис. 1.5), в котором нужно указать, какая переменная будет отображаться на горизонтальной оси (X), а какая — на вертикальной (Y). Если в задаче более двух переменных, вам будет предложено положить остальные переменные равными их значению в оптимальном решении (Set to optimal), или нулю (Set to zero) или тем значениям, которые вы сами зададите (Assign variables) (окно для задания значений откроется после щелчка кнопки ОК).
Анализ оптимального решения и его чувствительности
Сводный отчет, появляющийся после завершения вычислений, содержит наиболее полные сведения о найденном оптимальном решении (рис. 1.6). Кроме того, вы найдете в этом отчете информацию, необходимую для выполнения анализа чувствительности.
Этот анализ позволяет выяснить, как изменения коэффициентов целевой функции и правых частей ограничений могут повлиять на найденное решение. При этом, однако, предполагается, что изменяется только один коэффициент
Прод1
Прод2
Other Variables '■ Set to optimal Г Set to zero Г Assign values
Рис. 1.5. Задание данных для графического метода решения
Combined Report for Производственный план
|
12:36:09 |
|
| Tuesday^ |
August |
10 |
2004 |
|
|
|
Decision |
Solution |
Unit Cost or |
Total |
Reduced |
Basis |
Allowable |
Allowable |
|
Variable |
Value |
Protil c(j) |
Contribution |
Cost |
Status |
Min. c(j) |
Max. c(j) |
1 |
Прод1 |
5,0000 |
70,0000 |
350,0000 |
0 |
basic |
30,0000 |
M |
2 |
Прод2 |
1.5000 |
60,0000 |
90,0000 |
0 |
basic |
0 |
140.0000 |
3 |
ПродЗ |
3,0000 |
110,0000 |
330,0000 |
0 |
basic |
30,0000 |
M |
4 |
Прод4 |
4,0000 |
140,0000 |
560,0000 |
0 |
basic |
60,0000 |
M |
|
Objective |
Funclion |
(Max.) = |
1 330,0000 |
|
|
|
|
|
|
Lell Hand |
|
Right Hand |
Slack |
Shadow |
Allowable |
Allowable |
|
Constraint |
Side |
Direction |
Side |
or Surplus |
Price |
Min. RHS |
Max. RHS |
Т |
Труд |
19,0000 |
<= |
19,0000 |
0 |
30,0000 |
18.0000 |
20,5714 |
¥ |
Сырье |
72,0000 |
<= |
80,0000 |
8,0000 |
0 |
72,0000 |
M |
3 |
Финансы |
94,5000 |
<= |
100,0000 |
5,5000 |
0 |
94.5000 |
M |
Рис. 1.6. Сводный отчет о решении задачи линейного программирования
целевой функции или правая часть только одного ограничения. Сведений о том, что произойдет при одновременном изменении нескольких входных данных задачи, сводный отчет не дает.
Сводный отчет состоит из двух таблиц. В первой таблице выводится следующая информация, касающаяся переменных:
В первых двух столбцах — номера и имена переменных.
В столбце Solution Value— найденное решение (в нашем случае 5; 1,5; 3; 4 — оптимальный план выпуска продукции).
В столбце Unit Cost or Profit c(j) — коэффициенты целевой функции (в данном случае — удельная маржинальная прибыль).
В столбце Total Contribution— итоговый вклад в оптимальное значение целевой функции, определяемый каждой переменной (произведение коэффициента целевой функции на оптимальное значение этой переменной). В нашем примере — это маржинальная прибыль от продажи каждого продукта.
В столбце Reduced Cost— приведенные (нормированные) стоимости — двойственные оценки, которые в нашем случае все равны нулю. Такая оценка может быть отлична от нуля только для переменной, имеющей в оптимальном плане нулевое значение. Приведенная (нормированная) стоимость, взятая по абсолютной величине, показывает насколько, как минимум, нужно изменить коэффициент переменной в целевой функции, чтобы она стала положительной (например, как повысить прибыльность изделия, чтобы выпускать его стало выгодно). Кроме того, она показывает, насколько ухудшится значение целевой функции, если сделать эту переменную равной 1, не меняя ее коэффициента в целевой функции (например, насколько снизится прибыль, если ввести в план производство единицы изделия, выпускать которое невыгодно). Нулевая нормированная стоимость у нулевой переменной говорит о наличии альтернативных оптимальных решений.
В столбце Basis Status — состояние переменных в последней симплекс-таблице: они могут быть либо базисными (basic), либо небазисными и равными своей нижней границе (at bound). (Нижняя граница переменных задана в строке LowerBound матричной формы задачи.)
® В столбцах Allowable Min. c(j) и Allowable Max. c(j) — границы интервалов оптимальности, то есть пределы изменения коэффициентов целевой функции, при которых сохраняется прежнее оптимальное решение (М обозначает оо). В нашем примере такими интервалами будут: для 1-го вида продукции — [30, +со), для 2-го — [0, 140], для 3-го — [30, +оо) и для 4-го — [60, +оо).
В последней строке таблицы — Objective Function,оптимальное значение целевой функции (в нашей задаче максимальное значение валовой маржинальной прибыли — 1 330).
Вторая таблица сводного отчета содержит следующие сведения об ограничениях задачи:
В первых двух столбцах — номера и названия ограничений.
В столбце Left Hand Side — левые части ограничений, вычисленные при оптимальных значениях переменных. В нашей задаче — это количество ресурсов, которое будет израсходовано при оптимальном выпуске продукции.
В столбце Direction — знаки ограничений.
В столбце Right Hand Side — правые части ограничений.
В столбце Slack or Surplus — остатки или избытки, вычисленные по правилу: «правая часть минус левая» для ограничений типа <= или «левая часть минус правая» для ограничений типа>=. Они могут показывать, например, величину неиспользованного ресурса (для лимитирующих ограничений, то есть ограничений сверху) или превышение требуемого уровня (для ограничений- требований, то есть ограничений снизу). Если остаток или избыток равен нулю, то соответствующее ограничение является связанным (активным), а соответствующий ресурс — дефицитным (используемым полностью). В противном случае ограничение несвязанное (неактивное), а ресурс недефицитен. В нашей задаче связано первое ограничение и дефицитны трудовые ресурсы.
В столбце Shadow Price — теневые цены, двойственные оценки, показывающие, на какую величину изменится оптимальное значение целевой функции при увеличении на единицу правой части соответствующего ограничения, тогда как остальные данные неизменны (например при добавлении единицы соответствующего ресурса). Кроме того, теневая цена — это максимальная цена, которую стоит платить за дополнительное количество дефицитного ресурса, чтобы приобретение было выгодным, или минимальная цена его продажи. Теневая цена отлична от нуля только для связанных ограничений.
В столбцах Allowable Min. RHS и Allowable Max. RHS — границы интервалов устойчивости, то есть пределы изменения правых частей ограничений (в нашем примере — запасов ресурсов), при которых неизменны соответствующие теневые цены и в оптимальном решении сохраняется прежний набор ненулевых переменных (в данном случае -— ассортимент продукции). В
нашем примере интервалами устойчивости будут: для трудовых ресурсов — [18, 20,6], для сырья — [72, +оо) и для финансов — [94,5, +оо).
После нахождения решения становится доступным меню Results. С его помощью можно узнать, сколько итераций и времени работы процессора потрачено на поиск решения (Show Run Time and Iteration), а также впоследствии снова вызвать сводный отчет (Combined Report).
Все сведения о результатах решения и его чувствительности содержатся в сводном отчете. Однако можно вывести лишь некоторые из этих сведений в виде частных отчетов, вызываемых с помощью команд меню Results:
Отчет по результатам — Solution Summary. Показывает оптимальные значения переменных и их итоговый вклад в оптимальное значение целевой функции, нормированные стоимости, а также состояние переменных: входят они в окончательный базис или нет.
Отчет по ограничениям — Constraint Summary. Отображает левые и правые части ограничений, остатки или избытки, а также теневые цены.
Анализ чувствительности при изменении коэффициентов целевой функции— Sensitivity Analysis for OBJ. Показывает нормированные стоимости, а также пределы изменения коэффициентов целевой функции — границы интервалов оптимальности, внутри которых сохраняется оптимальное решение.
» Анализ чувствительности при изменении правых частей ограничений— Sensitivity Analysis for RHS. Отображает теневые цены, а также пределы изменения правых частей ограничений — границы интервалов устойчивости, внутри которых сохраняется базис решения и теневые цены.
Вннмание! Новый выбранный отчет всегда заменяет предыдущий (старый не сохраняется). Просмотрев сводный или частные отчеты, вы можете с помощью меню Window вернуться в окно с исходными данными. Данные можно изменить и решение повторить, получив при этом новый отчет.
Получение альтернативных решений
Когда получено оптимальное решение задачи и на экране — окно с ее исходными данными, можно получить альтернативные решения с помощью команды Solve and Analyze > Alternative Solution. Она открывает окно, содержащее два списка: в левом — текущий базис, а в правом — небазисные переменные вместе с двойственными оценками Cj-Zj, указанными в скобках (рис. 1.7).
Select Entering Variable from Non-
3asic Variables: |
|
'Jon-basic and its Cj-Zj: |
Прод1 |
|
Slack Труд [-30.00001 |
Прод2 |
|
Slack UB Прод! [-40.0000] |
ПродЗ |
|
Slack UB ПродЗ [-00.0000] |
Прод4 Slack_Ct>jpbe 51аск_Финансы |
|
Slack UB Прод4 [-00.0000] |
Help
Note: Choose a non-basic variable with Cj-Zj = 0. if any. to enter the basis will not change the objective value.
Рис. 1.7. Получение альтернативных решений
В правом списке нужно выбрать переменную, которую следует ввести в базис. После щелчка кнопки ОК программа автоматически выберет переменную, исключаемую из базиса, и найдет новое решение. Если вы выбрали небазисную переменную с Cj - Zj = 0, то значение целевой функции не изменится, то есть будет найдено альтернативное оптимальное решение. Если же вы выбрали переменную с Cj - Zj ф 0, то значение целевой функции может измениться. Предупреждение об этом появится после щелчка кнопки ОК.
Для продолжения вычислений необходимо в окне с предупреждением щелкнуть кнопку Да. Чтобы посмотреть новое решение, выберите любую форму отчета с помощью меню Results.
Альтернативное оптимальное решение, если оно есть, можно найти и проще, с помощью команды Results ► Obtain Alternate Optimal (при этом на экране может находиться либо отчет, либо окно с исходными данными). Эта команда сразу выдаст отчет с альтернативным решением. Однако она доступна, когда такое решение есть. О его наличии свидетельствует надпись (Note: Alternate Solution Exists!!) в сводном отчете рядом со значением целевой функции.
А нал т недопуст им ост и
Если оптимального решения нет из-за отсутствия допустимых решений, вместо сводного отчета автоматически выводится анализ недопустимости. Пример такого анализа показан на рис. 1.8.
В анализе недопустимости перечисляются ограничения, их знаки, правые части и теневые цены. Для каждого из ограничений указываются изменения правых частей ограничений, при которых решение может появиться. Предлагается добавить к правой части величину, большую, чем указано в столбце Add More Then This To RHS, но при этом не превышающую величины, указанной в столбце Add Up То This То RHS.
Не нужно вносить все предлагаемые изменения сразу, так как среди них могут быть и бесполезные. Некоторые изменения можно отвергнуть сразу, из практических соображений, поскольку они не соответствуют реальной ситуации. Другие — пробовать по очереди, внося их и заново решая задачу, пока не появится решение. Окно с исходными данными для внесения изменений открывается с помощью меню Window. Это же меню, а также команду Results ► Infeasibility Analysis можно использовать в дальнейшем, чтобы вернуться к анализу недопустимости.
Анализ н е о грач иченности
Если оптимального решения нет вследствие неограниченности целевой функции, вместо сводного отчета автоматически выводится анализ неограниченности. Пример такого анализа показан на рис. 1.9.
Г |
л Infeasibility Analysis for LP Sample Problem |
- [n |
X |
|||||||
|
Infeasible |
solution!!! |
Make any of |
the following |
RHS changes |
and solve Ihe |
problem again. |
|
||
10-02-2004 23:16:16 |
Constraint |
Direction |
Right Hand Side |
Shadow Price |
Add More Than This To RHS |
Add Up To This To RHS |
||||
1 2 3 |
C1 <= 5.0000 4,7500 0.4000 M C2 <= 0 0.2500 2,0000 5.0000 C3 >= 135,0000 0 -M -10,0000 |
|||||||||
|
|
» Unboundedness Analysts for LP Sample Problem |
■■ |
X |
|||||||
|
Unbounded |
solution!!! |
Make any of |
the following |
changes and |
solve it again. |
|
||
|
10-02-2004 22:56:23 |
Constraint |
Decision Variable |
Coefficient A(i.j) |
Subtract More Than This From A(i,j) |
Or Add More Than This To A(i.j) |
|
||
|
|
Change |
the direction |
of constraint |
C3 |
|
|
||
|
|
|
|
|
|
II |
Рис. 1.9. Пример анализа неограниченности
В анализе неограниченности указываются изменения либо знаков, либо коэффициентов ограничений, при которых решение может появиться. Могут быть предложены следующие варианты действий:
Изменить знак ограничения — Change the direction of constraint.
® Вычесть величину, большую, чем указано, из коэффициента j-й переменной в i-м ограничении — Subtract More Than This From A(i,j).
Или добавить величину, большую, чем указано, к коэффициенту j-й переменной в i-м ограничении — Or Add More Than This To A(i,j).
Здесь так же, как и в случае анализа недопустимости, не нужно вносить все предлагаемые изменения сразу: среди них могут оказаться и бесполезные. Некоторые изменения можно отвергнуть сразу, из практических соображений, поскольку они не соответствуют реальной ситуации. Другие — пробовать по очереди, внося их и заново решая задачу, пока не появится решение. Окно с исходными данными для внесения изменений открывается с помощью меню Window. Это же меню, а также команду Results ► Unboundedness Analysis можно использовать в дальнейшем, чтобы вернуться к анализу неограниченности.
Параметрический анализ
Параметрический анализ позволяет выяснить, как изменяется оптимальное значение целевой функции при изменении ее коэффициентов или правых частей ограничений. При этом предполагают, что изменяемые величины зависят от некоторого параметра (например времени), и находят, как от этого же параметра зависит оптимальное значение целевой функции.
Параметрический анализ можно выполнить после нахождения оптимального решения с помощью команды Perform Parametric Analysis. Она находится в меню Solve and Analyze, когда на экране открыто окно с исходными данными задачи, или в меню Results, когда на экране— отчет, сводный или частный, о результатах решения. Эта команда открывает окно для выбора варианта параметрического анализа (рис. 1.10).
По умолчанию в этом окне выбран параметр Objective Function, предполагающий анализ изменении коэффициентов целевой функции. Если вы хотите проанализировать изменение одного коэффициента, выберите в списке справа переменную, к которой он относится. После щелчка кнопки ОК появится таблица с результатами параметрического анализа.
Если же одновременно изменяются несколько коэффициентов, то нужно сделать следующее: в списке выбрать пункт Perturbation Vector, щелкнуть кнопку ОК и в открывшемся окне задать вектор изменения, показывающий, как изменяется каждый коэффициент целевой функции.
Пусть, например, целевая функция нашей задачи изменяется следующим образом: F = (70 + р).\] + 60,v? + (110 + 2р)д-3 + (140 + 3p)xi, где р — изменяющийся параметр. Вектор изменения в этом случае— (1, 0, 2, 3). Он состоит из коэффициентов параметра р и задается в окне, показанном на рис. 1.11. После щелчка в этом окне кнопки ОК появится таблица с результатами параметрического анализа.
Если изменяются правые части ограничений, нужно выбрать параметр Right Hand Side (рис. 1.12). Если вас интересует изменение одного ограничения, выберите в списке справа его название и щелкните кнопку ОК.
Если одновременно изменяются несколько ограничений, то в этом же списке выберите Perturbation Vector и щелкните ОК. В открывшемся окне задайте вектор изменения, показывающий, как изменяется правая часть каждого ограничения (в том числе и ограничений сверху в граничных условиях).
Рис. 1.10. Выбор варианта параметрического анализа
Objective Function Perturbati
Variable |
Perturbalion Veclor |
|
||||
Прод1 |
1 |
|
||||
Прод2 |
|
|
||||
ПродЗ |
2 |
|
||||
Прод4 |
3 |
|
||||
|
|
|||||
OK |
|
Cancel |
|
Help |
Рис. 1.11. Задание вектора изменення коэффициентов целевой функции
Рис. 1.12. Выбор параметрического анализа правых частей ограничений
Пусть, например, в нашей задаче ограничения изменяются так:
л-] + 2л'2 + v< + 2л\| < 19 + ц, 3 <лг, <5,
1х\ + 4л-2 + 5х3 + 4л‘4 < 80, 1
5л-, + Ъг + 9,v3 + 8.y4 < 100 + 2ц, 1 <х3 < 3 - ц,
2 <л'4 <4,
где р — изменяющийся параметр.
Вектор изменения в этом случае — (1, 0, 2, 0,-1, 0) — состоит из коэффициентов параметра р в правых частях ограничений и тех граничных условий, где имеется ограничение сверху. Он задается в окне, показанном на рис. 1.13, где буквы UB (от слов Upper Bound), добавляемые спереди к имени переменных, обозначают ограничения сверху для этих переменных в граничных условиях. После щелчка в этом окне кнопки ОК появится таблица с результатами параметрического анализа (рис. 1.14).
Right-Hand-Side Perturbation
Constraint |
Perturbation Vector |
Труд |
1 |
Сырье |
2 -1 |
Финансы |
|
иВ_Прод! |
|
иВ_ПродЗ |
|
иВ_Прод4 |
|
|
Cancel
Help
Рис. 1.13. Задание вектора изменения правых частей ограничений
» Parametric Analysis for Производственный план -- |
light-Hand-Side |
X |
||||||
|
From |
To |
From |
To |
|
Leaving |
Entering |
|
Запде |
jj (Vector) |
p (Vector) |
OBJ Value |
OBJ Value |
Slope |
Variable |
Variable |
|
1 |
0 |
2,0000 |
1 330,0000 |
570,0000 |
-50,0000 |
ПродЗ |
|
|
2 |
2,0000 |
Infinity |
Infeasible |
|
|
|
|
|
3 |
0 |
-0,5000 |
1 330,0000 |
695,0000 |
-50,0000 |
Прод2 |
81аск_иВ_Прод 1 |
|
4 |
-0,5000 |
-1,5000 |
695,0000 |
665,0000 |
30,0000 |
Прод1 |
Slack_UB_npofl4 |
|
5 |
-1.5000 |
-2,3333 |
665,0000 |
640,0000 |
30,0000 |
81аск_Финансы |
81аск_иВ_ПродЗ |
|
6 |
-2,3333 |
-4,0000 |
640,0000 |
550,0000 |
54,0000 |
Прод4 |
81аск_Финансы |
|
7 |
-4,0000 |
-9,0000 |
550,0000 |
0 |
110,0000 |
ПродЗ |
|
|
8 |
-9,0000 |
-Infinity |
Infeasible |
|
|
|
|
|
|
|
|
|
|
|
|
II |
Рис. 1.14. Результаты параметрического анализа при изменении правых частей ограничений
В первых трех столбцах полученной таблицы — номера и границы интервалов изменения параметра р. (Если бы рассматривалось изменение только одного коэффициента целевой функции или одной правой части ограничения, то это были бы интервалы изменения именно этого коэффициента или этой правой части, а не параметра р.) Интервалы расположены в следующей последовательности. Сначала идут интервалы по возрастанию параметра от р = 0 до +со, затем по убыванию — от р = 0 до -со (в таблице бесконечность обозначается словом Infinity).
В столбцах From OBJ Value и То OBJ Value— значения целевой функции на границах интервалов изменения параметра р. В столбце Slope — угловой коэффициент целевой функции. Наконец, в последних столбцах Leaving Variable и Entering Variable — имена переменных, которые исключаются из базиса и вводятся в него при переходе к следующему по порядку интервалу изменения параметра р.
В последних двух столбцах используются следующие обозначения. Буквы UB, добавляемые к именам переменных, обозначают ограничения сверху для этих переменных в граничных условиях, а слова Slack или Surplus перед названиями ограничений — дополнительные переменные, остаточные или избыточные, используемые в симплексном методе для превращения ограничений- неравенств в равенства.
Если в столбце Leaving Variable указана переменная, а в столбце Entering Variable — нет, данный интервал изменения параметра р является последним, в котором имеется решение, а в следующем — решение отсутствует. Интервалы без допустимых решений обозначаются в столбце From OBJ Value словом Infeasible.
К результатам параметрического анализа можно возвращаться из других окон WinQSB посредством меню Window или с помощью команды Results ► Show Parametric Analysis.
Решающая функция
Результаты предварительно выполненного параметрического анализа можно представить в графической форме с помощью команды Results ► Graphic Parametric Analysis. При этом выводится график решающей функции, показывающий зависимость целевой функции от параметра р. (Если изменяется только один коэффициент целевой функции или правая часть одного ограничения, то показывается зависимость именно от этого коэффициента или этой правой части.)
Рассмотренные ранее результаты параметрического анализа (см. рис. 1.14), представлены графически на рис. 1.15.
Графический анализ чувствительности
Если выбран графический метод решения (см. рис. 1.5), то построенное графическое изображение (рис. 1.16) можно использовать для анализа чувствительности модели. Для этого выберите команду Sensitivity ► Objective Function and Constraints. Появится окно (рис. 1.17), в котором можно внести изменения в любые параметры задачи.
В списке, расположенном слева, нужно выбрать, что именно будет изменяться: целевая функция (пункт OBJ) или ограничение (укажите его название). Затем в раскрывающихся списках выберите (или введите с клавиатуры) новые
Рис. 1.15. График решающей функции при изменении правых частей ограничений
Вектор изменения в этом случае — (1, 0, 2, 0,-1, 0) — состоит из коэффициентов параметра р в правых частях ограничений и тех граничных условий, где имеется ограничение сверху. Он задается в окне, показанном на рис. 1.13, где буквы UB (от слов Upper Bound), добавляемые спереди к имени переменных, обозначают ограничения сверху для этих переменных в граничных условиях. После щелчка в этом окне кнопки ОК появится таблица с результатами параметрического анализа (рис. 1.14).
Right-Hand-Side Perturbation
Constraint |
Perturbation Vector |
Труд |
1 |
Сырье |
2 -1 |
Финансы |
|
иВ_Прод! |
|
иВ_ПродЗ |
|
иВ_Прод4 |
|
|
Cancel
Help
Рис. 1.13. Задание вектора изменения правых частей ограничений
» Parametric Analysis for Производственный план -- |
light-Hand-Side |
X |
||||||
|
From |
To |
From |
To |
|
Leaving |
Entering |
|
Запде |
jj (Vector) |
p (Vector) |
OBJ Value |
OBJ Value |
Slope |
Variable |
Variable |
|
1 |
0 |
2,0000 |
1 330,0000 |
570,0000 |
-50,0000 |
ПродЗ |
|
|
2 |
2,0000 |
Infinity |
Infeasible |
|
|
|
|
|
3 |
0 |
-0,5000 |
1 330,0000 |
695,0000 |
-50,0000 |
Прод2 |
81аск_иВ_Прод 1 |
|
4 |
-0,5000 |
-1,5000 |
695,0000 |
665,0000 |
30,0000 |
Прод1 |
Slack_UB_npofl4 |
|
5 |
-1.5000 |
-2,3333 |
665,0000 |
640,0000 |
30,0000 |
81аск_Финансы |
81аск_иВ_ПродЗ |
|
6 |
-2,3333 |
-4,0000 |
640,0000 |
550,0000 |
54,0000 |
Прод4 |
81аск_Финансы |
|
7 |
-4,0000 |
-9,0000 |
550,0000 |
0 |
110,0000 |
ПродЗ |
|
|
8 |
-9,0000 |
-Infinity |
Infeasible |
|
|
|
|
|
|
|
|
|
|
|
|
II |
Рис. 1.14. Результаты параметрического анализа при изменении правых частей ограничений
В первых трех столбцах полученной таблицы — номера и границы интервалов изменения параметра р. (Если бы рассматривалось изменение только одного коэффициента целевой функции или одной правой части ограничения, то это были бы интервалы изменения именно этого коэффициента или этой правой части, а не параметра р.) Интервалы расположены в следующей последовательности. Сначала идут интервалы по возрастанию параметра от р = 0 до +со, затем по убыванию — от р = 0 до -со (в таблице бесконечность обозначается словом Infinity).
В столбцах From OBJ Value и То OBJ Value— значения целевой функции на границах интервалов изменения параметра р. В столбце Slope — угловой коэффициент целевой функции. Наконец, в последних столбцах Leaving Variable и Entering Variable — имена переменных, которые исключаются из базиса и вводятся в него при переходе к следующему по порядку интервалу изменения параметра р.
В последних двух столбцах используются следующие обозначения. Буквы UB, добавляемые к именам переменных, обозначают ограничения сверху для этих переменных в граничных условиях, а слова Slack или Surplus перед названиями ограничений — дополнительные переменные, остаточные или избыточные, используемые в симплексном методе для превращения ограничений- неравенств в равенства.
Если в столбце Leaving Variable указана переменная, а в столбце Entering Variable — нет, данный интервал изменения параметра р является последним, в котором имеется решение, а в следующем — решение отсутствует. Интервалы без допустимых решений обозначаются в столбце From OBJ Value словом Infeasible.
К результатам параметрического анализа можно возвращаться из других окон WinQSB посредством меню Window или с помощью команды Results ► Show Parametric Analysis.
Решающая функция
Результаты предварительно выполненного параметрического анализа можно представить в графической форме с помощью команды Results ► Graphic Parametric Analysis. При этом выводится график решающей функции, показывающий зависимость целевой функции от параметра р. (Если изменяется только один коэффициент целевой функции или правая часть одного ограничения, то показывается зависимость именно от этого коэффициента или этой правой части.)
Рассмотренные ранее результаты параметрического анализа (см. рис. 1.14), представлены графически на рис. 1.15.
Графический анализ чувствительности
Если выбран графический метод решения (см. рис. 1.5), то построенное графическое изображение (рис. 1.16) можно использовать для анализа чувствительности модели. Для этого выберите команду Sensitivity ► Objective Function and Constraints. Появится окно (рис. 1.17), в котором можно внести изменения в любые параметры задачи.
В списке, расположенном слева, нужно выбрать, что именно будет изменяться: целевая функция (пункт OBJ) или ограничение (укажите его название). Затем в раскрывающихся списках выберите (или введите с клавиатуры) новые
Рис. 1.15. График решающей функции при изменении правых частей ограничений
Piic. 1.16. Графическое решение
Graphic Sensitivity Analysis
Труд Coefficients
Прод1 Прод2 R.H.S.
лЛ <= jlI
Cancel jHelpj
Труд
Draw OK
Рис. 1.17. Графический анализ чувствительности
значення для коэффициентов целевой функцин или ограничения, для правой части ограничения (в списке R.H.S.) или для величины целевой функции (в списке OBJ, появляющемся, если выбрано изменение целевой функции). После щелчка кнопки Draw (без закрытия окна) пли ОК (с закрытием окна) все внесенные изменения будут отражены в окне с графическим решением: появятсяновые линии, соответствующие новой целевой функции или новому ограничению.
После многократного внесения изменений графическое изображение загромождается множеством новых линий. Чтобы вернутся к исходному виду изображения, нужно выбрать команду Options > Redraw Graphic Solution.
С помощью команд меню Options можно также внести в изображение следующие изменения:
Изменение пределов отображения переменных и цветов изображения — Change XY Ranges and Colors. В окне, открываемом этой командой, можно с помощью раскрывающихся списков определить, в каких пределах должно выводиться изображение переменных х и у, а также выбрать цвета различных элементов изображения. Чтобы изменить текущий цвет элемента, щелкайте в поле, показывающем этот цвет, пока не добьетесь нужного эффекта.
Изменение переменных, отображаемых на горизонтальной и вертикальной оси — Change XY Variables. Эта команда вызывает окно (см. рис. 1.5), в котором можно выбрать, какие переменные будут отображаться на горизонтальной оси (X) и вертикальной (Y).
Решение с помощью программы Excel
Ввод числовых данных
Решим задачу, сформулированную в разделе 1.1, с помощью программы Excel. Для удобства ввода данных в электронную таблицу перепишем ограничения следующим образом:
каждое граничное условие, представляющее собой интервал, разобьем на два отдельных ограничения;
все ограничения разместим друг под другом так, чтобы коэффициенты при каждой переменной располагались в одном столбце;
ограничения расположим в таком порядке, чтобы подряд шли ограничения одного знака, например, сначала со знаком <, а затем — со знаком >.
В результате этих преобразований каждое ограничение должно содержать только один знак неравенства. Слева от него —переменные с коэффициентами, справа — числа. (Не должно быть чисел слева от знака неравенства или переменных — справа.) Нахождение одинаковых переменных в одном столбце поможет заполнению соответствующих столбцов электронной таблицы.
F= 70.V| + 6O.V2 + 1 Юл'з + 140x4 —> max,
-V) |
+ |
2.\'2 + |
х} + |
2х, < 19, |
7.v, |
+ |
4.\'2 + |
5х3 + |
4.Y4 < 80, |
5.v, |
+ |
7*2 + |
9х3 + |
8x4 < 100, |
Х\ |
|
|
|
<5, |
|
|
|
*3 |
<3, |
|
|
|
|
*4 < 4, |
-V) |
|
|
|
>3, |
|
|
•V2 |
|
> 1, |
|
|
|
V3 |
> 1, |
|
|
|
|
*4 > 4, |
|
|
|
Х|,Х2, |
*3, *4 > 0. |
Руководствуясь этой алгебраической формой модели, введем на лист Excel числовые данные (рис. 1.18). При этом условия неотрицательности переменных вводить не нужно, так как они задаются с помощью соответствующего параметра средства Поиск решения.
В первой строке таблицы располагается заголовок, во второй — наименования продуктов. Третья строка отведена для значений переменных, которые после вычислений появится в ячейках ВЗ:ЕЗ, выделенных с помощью рамки, образованной внешней границей ячеек. Можно, конечно, оставить эти ячейки пустыми, но лучше ввести какие-нибудь небольшие числа, например единицы, которые позволят проверить правильность вводимых формул (будут видны отличные от нуля результаты вычислений). В четвертой строке в ячейках В4:Е4 заданы коэффициенты целевой функции, а ячейка F4, выделенная внешней границей и цветом заливки, зарезервирована для вычисления значения целевой функции. Строки с 6-й по 15-ю содержат коэффициенты, знаки и правые части ограничений. В столбце Лев.часть будут вычисляться левые части ограничений, а в столбце Разница — разность правых и левых частей.
Предложенная форма таблицы удобна для выполнения расчетов, анализа
т |
А |
" |
С |
о |
Е |
F |
G |
Н I 1 |
j 1 |
||
1 |
Производственный план |
|
|
||||||||
2 |
Продукт |
П1 |
П2 |
пз |
П4 |
|
|
||||
3 |
Произведенное к-во |
1 |
1 |
1 |
1 |
Прибыль |
|
|
|||
4 |
Удельная прибыль |
70,00р. |
60,00р. |
110,00р. 140,00р. |
|
|
|
||||
5 |
Ограничения |
|
Расход ресурсов |
|
Лев.часть! |
Прав.часть! Разница |
|
||||
б |
ТРУД |
1 |
2 |
1 |
2 |
1< |
19 |
|
|
||
7 |
Сырье |
7 |
4 |
5 |
4 |
|
< |
80 |
|
|
|
8 |
Финансы |
5,00р. |
7,00р. |
9,00р. |
8,00р. |
|
< |
100,00р. |
|
|
|
9 |
Мах.П1 |
1 |
|
|
|
|< |
5 |
|
|
||
10 |
Мах.ПЗ |
|
|
1 |
|
|
< |
3 |
|
|
|
11 |
Мах.П4 |
|
|
|
1 |
|
< |
4 |
|
|
|
12 |
Мин.П1 |
1 |
|
|
|
|
> |
3 |
|
|
|
13 |
Мин.П2 |
|
1 |
|
|
|
> |
1 |
|
|
|
14 |
Мин.ПЗ |
|
|
1 |
|
|
> |
1 |
|
|
|
15 |
Мин.П4 |
|
|
|
1 |
1> |
2 |
|
|
||
16 |
|
|
|
|
|
|
|
Рис. 1.18. Ввод числовых данных для решения задачи линейного программирования
результатов и документирования модели. Наглядность обеспечивается соответствующим форматированием: использованием заголовков, жирного шрифта, подчеркивания текста, рамок по границам ячеек, выделения цветом и различных видов выравнивания. При этом денежные величины следует представлять в денежном или финансовом формате (в котором к числу автоматически добавляется обозначение денежной единицы). Фон всех пустых ячеек вокруг нашей модели сделан темным (выбран соответствующий цвет заливки), что помогает сконцентрировать внимание на значимых частях модели.
Оформление таблицы облегчают следующие кнопки на вкладке Главная (в старых версиях Excel— на панели форматирования): Объединить и поместить в центре — для центрирования заголовка, занимающего несколько ячеек, Финансовый числовой формат (в старых версиях Денежный формат) — для задания финансового формата, Увеличить разрядность или Уменьшить разрядность — для задания нужного числа десятичных знаков.
Для отображения знаков ограничений можно либо воспользоваться кнопкой Символы на вкладке Вставка, либо ввести их с клавиатуры. Во втором случае нужно сначала переключить клавиатуру на английский язык, ввести знак > или <, а затем подчеркнуть его с помощью кнопки Подчеркнутый. Знак = вводится также с клавиатуры.
После составления таблицы подберите ширину ее столбцов в соответствии с содержимым ячеек. Для этого выделите весь лист, щелкнув кнопку Выделить все — прямоугольник в верхнем левом углу листа (над цифрой 1 и левее буквы А). Затем дважды щелкните правую границу заголовка любого столбца (вертикальную черточку между заголовками любых столбцов, например между буквами А и В). (Чтобы при этом столбец А не расширился до размера заголовка, необходимо всегда объединять те ячейки первой строки, в которой он находится, с помощью кнопки Объединить и поместить в центре.)
Ввод формул
В ячейки таблицы введем следующие формулы:
Ячейка Формула Копировать в
F4
16
112
F6:F 15
17:111
113:115
=СУММПРОИЗВ($В$3:$Е$3;В4:Е4)
=H6-F6
=F12-H12
Чтобы ввести, например, формулу для вычисления целевой функции:
Щелкните ячейку F4.
Введите с клавиатуры знак равенства.
В левой части строки формул раскройте список функций и щелкните имя функции СУММПРОИЗВ. Если ее там нет, выберите в списке функций пункт Другие функции. В открывшемся окне в категории Математические найдите функцию СУММПРОИЗВ и дважды щелкните ее имя.
Введите аргументы функции СУММПРОИЗВ (рис. 1.19).
Щелкните кнопку ОК.
Сразу после ввода формулы в ячейке F4 появится 380, так как формула вычисляется с переменными, которые мы положили равными единице (легко проверить, просуммировав числа в 4-й строке — в этом преимущество значений переменных, равных единице).
Другой возможный способ ввода формулы доступен в Excel 2010 и 2007. Введите в ячейку знак равенства, а затем начальные буквы названия функции, например «су». Для прокрутки появившегося списка функций, имеющих подходящие названия, используйте клавишу Стрелка вниз, затем дважды щелкните в списке нужную функцию — в ячейку будет введено ее имя с открывающей
Аргументы функции |
|
mr*i |
СУММПРОИЗВ |
|
|
Массив1 |$Б$3:$Е$3 [fSi] |
= {i;i;i;i} |
|
Массив2 |в4:Е4 [!Зё| |
= {70;60;110;м0} |
|
МассивЗ | [ЁЗШ |
= массив |
|
|
= 380 |
|
Возвращает сумму произведений диапазонов или массивов. |
|
|
Массив^ маса'1в1;масо4в2;... |
от 2 до 255 массивов, соответствующие |
|
компоненты которых* нужно сначала перемножить, а затем сложить |
||
полученные произведения. Все массивы должны иметь одинаковую |
||
Значение: 380 |
|
|
Справка по этой функции |
1 ок |
[ Отмена ] |
Рис. 1.19. Ввод аргументов функции СУММПРОИЗВ
круглой скобкой, в нашем случае =СУММПРОИЗВ(. После задания аргументов, которые нужно разделять точкой с запятой (;), вводимой с клавиатуры, нажмите клавишу Enter (или кнопку Ввод в строке формул) — закрывающая круглая скобка будет добавлена автоматически, а в ячейке отобразится результат вычислений. Увидеть формулу можно в строке формул, выделив соответствующую ячейку.
Функция СУММПРОИЗВ позволяет вычислить сумму произведений двух массивов, первый из которых содержит значения переменных, а второй — коэффициенты целевой функции. Чтобы указать соответствующие диапазоны, нужно их выделить. Если они закрыты окном для ввода аргументов, его можно перетащить с помощью мыши, потянув за строку заголовка, или воспользоваться кнопками свертывания, расположенными справа от полей ввода (они позволяют временно сворачивать окно).
Ссылка на первый диапазон должна быть абсолютной, со знаками доллара перед каждой буквой и цифрой: $В$3:$Е$3 (чтобы изменить относительную ссылку на абсолютную, нажмите клавишу F4 непосредственно после ввода этой ссылки). Если сразу этого не сделать, то в дальнейшем понадобится сначала выделить ссылку, а затем нажать клавишу F4. Ссылка на второй диапазон В4:Е4, напротив, должна быть относительной: это понадобится в дальнейшем при копировании формулы.
После ввода формулы для вычисления целевой функции необходимо задать формулы левых частей ограничений. Для этого скопируйте формулу пз ячейки F4 в ячейки F6:F15. Чтобы копировалась только сама формула (без формата ячейки, к которому относятся, например, рамка, заливка и обозначение денежной единицы), нужно воспользоваться специальной вставкой. Для этого щелкните ячейку F4 правой кнопкой мыши и в контекстном меню выберите команду Копировать, затем выделите диапазон F6:F15, щелкните его правой кнопкой мыши и в контекстном меню выберите:
® в Excel 2010 — параметр вставки Формулы;
® в предыдущих версиях Excel — команду Специальная вставка (затем в открывшемся окне выберите параметр формулы и щелкните кнопку ОК).
При копировании относительная ссылка В4:Е4 будет меняться, указывая на массивы коэффициентов соответствующих ограничений, а абсолютная $В$3:$Е$3 останется неизменной. Для проверки формулы в ячейке достаточно дважды щелкнуть эту ячейку. Формула будет отображена на экране, ссылки на ячейки выделены цветом, а сами ячейки — обведены рамками соответствующих цветов (после просмотра нажмите клавишу Esc).
Аналогично, с помощью копирования, вводятся формулы в ячейки 16:115 для вычисления разницы между правыми и левыми частями ограничений. Для ограничений со знаком < из правой части ограничения вычитается левая, а для ограничений со знаком > — из левой правая (для ограничений со знаком = вычитать можно из правой части левую или из левой правую — все равно). Таким образом, если ограничения выполняются п план допустим, разница всегда будет неотрицательной.
После ввода формул вы можете подставлять в ячейки ВЗ:ЕЗ любые значения (количество выпускаемой продукции), получая соответствующую величину прибыли в ячейке F4 и объем израсходованных ресурсов в столбце Лев.часть. Столбец Разница покажет, допустим ли соответствующий производственный план (в этом случае разница неотрицательна), какие ресурсы дефицитны (для них разница равна нулю) и каков остаток недефицнтных ресурсов.
Вид нашей модели после ввода формул показан на рис. 1.20. Ясно, что, план, предполагающий выпуск одной единицы каждого продукта, недопустим, так как нарушаются ограничения Мин.ГИ и МИН.П4 (разница отрицательна).
т |
А |
В |
С |
■> |
Е |
F |
G |
Н |
1 |
J |
|||
1 |
Производственный план |
|
|
|
|
||||||||
2 |
Продукт |
П1 |
П2 |
пз |
П4 |
|
|
|
|
||||
3 |
Произведенное к-во |
1 |
1 |
1 |
1 |
Прибыль |
|
|
|
||||
4 |
Удельная прибыль |
70,00р. |
60,00р. |
110,00р. |
140,00р. |
380,00р. |
|
|
|
||||
5 |
Ограничения |
Расход ресурсов |
Лев.часть |
| Прав.часть |
Разница |
|
|||||||
6 |
труд |
1 |
2 |
1 |
2 |
6 |
< |
19 |
13 |
|
|||
7 |
Сырье |
7 |
4 |
5 |
4 |
20 |
< |
80 |
60 |
|
|||
8 |
Финансы |
5,00р. |
7,00р. |
9,00р. |
8,00р. |
29,00р. |
< |
100,00р. |
71,00р. |
|
|||
9 |
Мах.П1 |
1 |
|
|
|
1 |
< |
5 |
4 |
|
|||
10 |
Мах.ПЗ |
|
|
1 |
|
1 |
< |
3 |
2 |
|
|||
11 |
Мах.П4 |
|
|
|
1 |
1 |
< |
4 |
3 |
|
|||
12 |
Мин.П1 |
1 |
|
|
|
1 |
> |
3 |
-2 |
|
|||
13 |
Мин.П2 |
|
1 |
|
|
1 |
> |
1 |
0 |
|
|||
14 |
Мин.ПЗ |
|
|
1 |
|
1 |
> |
1 |
0 |
|
|||
15 |
Мин.П4 |
|
|
|
1 |
1 |
> |
2 |
-1 |
|
|||
16 |
|
|
|
|
|
|
|
|
|
Рис. 1.20. Модель с введенными формулами
Проверка и документирование модели
После ввода модели на лист Excel ее необходимо проверить п задокументировать. Для проверки задаются различные значения переменных (в нашем случае— в ячейках ВЗ:ЕЗ), чтобы выявить возможные ошибки вычислений. Если, например, для заведомо допустимых значений переменных нарушаются какие-то ограничения, появляются странные значения левых частей ограничений или целевой функции, то, скорее всего, в числах или формулах модели есть ошибки.
Чтобы задокументировать созданную модель, нужно сохранить ее изображение не только с числами, как на рис. 1.20, но и с формулами (рис. 1.21). Для этого сначала сделайте копию листа с моделью, чтобы на этой копии сохранить изображение формул модели. Наиболее простой способ копирования заключается в следующем. Удерживая нажатой клавишу Ctrl, перетащите ярлычок с названием листа по строке ярлычков (движущаяся стрелочка над строкой покажет, где будет вставлена копия) и затем отпустите кнопку мыши (раньше, чем клавишу Ctrl).
Чтобы на полученной копии листа отображались формулы, выберите:
в Excel 2010 — вкладку Формулы ► Показать формулы;
т |
А |
В |
С |
|
Е |
F |
|
Н |
""1" ТП |
|||
1 |
Производственный план |
|
|
|
|
|||||||
2 |
Продукт |
П1 |
П2 |
ПЗ |
П4 |
|
|
|
|
|||
3 |
Произведенное к-во |
1 |
1 |
1 |
1 |
Прибыль |
|
|
|
|||
4 |
Удельная прибыль |
70 |
60 |
110 |
140 |
=СУММПРОИЗВ($В$3:$Е$3;В4:Е4) |
|
|
|
|||
5 |
Ограничения |
Расход ресурсов |
Лев.часть |
| Прав.часть |
Разница |
|
||||||
б |
труд |
1 |
2 |
1 |
2 |
=СУММПРОИЗВ($В$3:$Е$3;Вб:Еб) |
< |
19 |
=H6-F6 |
|
||
7 |
Сырье |
7 |
4 |
5 |
4 |
=СУММПРОИЗВ($В$3:$Е$3;В7:Е7) |
< |
80 |
=H7-F7 |
|
||
8 |
Финансы |
5 |
7 |
9 |
8 |
=СУММПРОИЗВ($В$3:$Е$3;В8:Е8) |
< |
100 |
=H8-F8 |
|
||
9 |
Мах.П1 |
1 |
|
|
|
=СУММПРОИЗВ($В$3:$Е$3;ВЭ:Е9) |
< |
5 |
=H9-F9 |
|
||
10 |
Мах.ПЗ |
|
|
1 |
|
=СУММПРОИЗВ($В$3:$Е$3;В10:Е10) |
< |
3 |
=H10-F10 |
|
||
11 |
Мах.П4 |
|
|
|
1 |
=СУММПРОИЗВ($В$3:$Е$3;В11:Е11) |
< |
4 |
=H11-F11 |
|
||
12 |
Мин.П1 |
1 |
|
|
|
=СУММПРОИЗВ($В$3:$Е$3;В12:Е12) |
> |
3 |
=F12-H12 |
|
||
13 |
Мин.П2 |
|
1 |
|
|
=СУММПРОИЗВ($В$3:$Е$3;В13:Е13) |
> |
1 |
=F13-H13 |
|
||
14 |
Мин.ПЗ |
|
|
1 |
|
=СУММПРОИЗВ($В$3:$Е$3;В14:Е14) |
> |
1 |
=F14-H14 |
|
||
15 |
Мин.П4 |
|
|
|
1 |
=СУММПРОИЗВ($В$3:$Е$3;В15:Е15) |
> |
2 |
=F15-H15 |
|
||
16 |
|
|
|
|
|
|
|
|
|
Рис. 1.21. Модель с отображением формул
в Excel 2007 — вкладку Формулы ► Зависимости формул > Показать формулы;
в предыдущих версиях Excel — меню Сервис ► Параметры ► Формулы.
Поскольку при переходе к отображению формул столбцы значительно расширяются, важно подобрать их ширину в соответствии с содержимым ячеек, иначе некоторые формулы могут не поместиться на экране. Для этого, как и раньше, выделите весь лист, щелкнув кнопку Выделить все, и дважды щелкните правую границу заголовка любого из столбцов.
На рис. 1.22 показано использование имен диапазонов в формулах модели. Это позволяет сделать формулы понятнее. Рекомендуется всегда использовать имена для документирования сложных моделей.
Чтобы получить такое изображение нужно сначала создать имена диапазонов. Можно преобразовать в имена существующие заголовки строк и столбцов. Для этого их выбирают вместе с соответствующими диапазонами значений.
В нашем примере начнем с присвоения имен строкам. Для этого на листе с отображением формул, показанном на рис. 1.21, выделите одновременно два диапазона строк вместе с соответствующими заголовками: АЗ:Е4 и А6:Е15. (При выборе этих несмежных диапазонов не забудьте удерживать нажатой клавишу Ctrl.)
и |
А |
» |
с 1 о |
Е |
F |
|G| II |
1 И | |
||
1 |
Производственный план |
|
|
|
|||||
2 |
Продукт |
... |
(1? |
ПЗ |
Г14 |
|
|
|
|
3 |
Произведенное к-во |
1 Ч |
1 11 |
Прибыль |
|
|
|||
4 |
Удельная прибыль |
70 |
60 |
110 1140 |
^-СУММПРОИЗЩПронэиоденное К по;Уделышп прибыль) |
|
|
||
5 |
Ограничения |
Расход ресурсов |
Леп.частъ |
1 1Г1рао.часть |
Разница |
|
|||
6 |
труд |
1 |
2 |
1 |
2 |
=СУММПРОИЗВ(Г1роизведенное к во;Труд) |
!< 119 |
=Пров.часть-Лев.часть |
|
7 |
Сырье |
7 |
-1 |
5 |
4 |
=СУММПРОИЗВ{Произиеденное к во;Сырье) |
"1< 'so |
=Пров.чааь-Лев.часть |
|
8 |
Финансы |
|
/ |
9 |
8 |
=СУММПРОИЗВ(Произведенное к по;Финансы) |
!< |ioo |
=Проо.часть-Лев.часть |
|
9 |
Мах.П1 |
1 |
|
|
|
=СУММПРОИЗВ(Ороизпеденное к во;Мах.П1) |
!< ’5 |
=Пров.часть-Лев.часть |
|
10 |
Мах.ПЗ |
|
|
1 |
|
=СУММПРОИЗВ(Произведенное к во;Мах.Г13) |
< 3 |
=Пров.часть-Лев.часть |
|
11 |
Мах.П4 |
|
|
|
1 |
^СУММПРОИЗВ(Произпеденное к во;Мах.П4) |
!<« |
^Лров.част^ Лев.часть |
|
12 |
Мин.П1 |
1 |
|
|
|
=СУММЛРОИЗВ(Произведенное к во;Мин.П1) |
1>з |
=Лев.часть-Пров.часть |
|
13 |
Мик.П2 |
|
1 |
|
|
=СУММПРОИЗО(Произведенное к во;Мим.П2) |
!> Ii |
=Лев.часть Пров.часть |
|
14 |
Мин.ПЗ |
|
|
1 |
|
=СУММПРОИЗВ(Произведониое к по;Мин.ПЗ) |
!>|i |
=Лев.часть-Пров.часть |
|
13 |
Мии.П4 |
|
|
|
1 |
=СУММПРОИЗВ(Произведенное к во;Мин.1И) |
"l> 12 |
=Лев.часть-Пров.часть |
|
16 |
|
|
|
|
|
|
|
|
|
Рис. 1.22. Использование имен диапазонов
Далее выберите:
в Excel 2010 и 2007 — вкладку Формулы ► Создать из выделенного;
в предыдущих версиях Excel — меню Вставка ► Имя ► Создать.
В открывшемся окне будет правильно указано расположение заголовков — в столбце слева, поэтому щелкните кнопку ОК (при другом расположении заголовков этот параметр можно изменить).
Теперь присвоите имена столбцам. Удерживая нажатой клавишу Ctrl, выделите одновременно два диапазона столбцов: F5:FI5, Н5:Н15 и выполните те же самые действия (и на этот раз в открывшемся окне будет правильно указано расположение заголовков — в строке выше).
Созданные таким образом имена будут относиться только к диапазонам чисел, без заголовков. Посмотреть список этих имен можно, щелкнув стрелочку рядом с полем Имя у левого края строки формул. Выбрав любое из них, вы увидите выделенным соответствующий диапазон.
Чтобы созданные имена отображались в формулах, выделите все ячейки с формулами: F4, F6:F 15, 16:115 (удерживая нажатой клавишу Ctrl). Затем выберите:
в Excel 2010 и 2007— вкладку Формулы ► стрелку рядом с кнопкой Присвоить имя ► Применить имена;
в предыдущих версиях Excel — меню Вставка ► Имя ► Применить.
В открывшемся окне выделите все перечисленные имена, прокручивая список и щелкая их мышыо, а затем щелкните кнопку ОК.
Чтобы имена были видны полностью, используйте автоматический подбор ширины столбцов (щелкните сначала кнопку Выделить все, а затем дважды — правую границу заголовка любого столбца).
Вызов средстви Поиск решения
Для поиска оптимального решения воспользуемся средством Поиск решения. Чтобы его вызвать, выберите:
в Excel 2010 и 2007— вкладку Данные ► Поиск решения (в группе Анализ);
в предыдущих версиях Excel — меню Сервис > Поиск решения.
Если команда Поиск решения отсутствует, необходимо активировать или установить соответствующую надстройку (см. приложение Б).
Если вы работаете в Excel 2010, откроется окно, показанное на рис. 1.23.
В предыдущих версиях Excel, это окно выглядит иначе (рис. 1.24).
Указание целевой функции и изменяемых ячеек
Далее будут перечислены параметры, задаваемые при заполнении окна средства Поиск решения в Excel 2010, а в скобках— названия этих же параметров в предыдущих версиях Excel.
В окне Параметры поиска решения (Поиск решения) вы должны задать следующие параметры:
Оптимизировать целевую функцию (Установить целевую ячейку) — для указания ячейки с целевой функцией.
До (Равной)—для выбора варианта оптимизации (максимизация, минимизация или подбор заданного значения).
Изменяя ячейки переменных (Изменяя ячейки) — для указания ячеек со значениями переменных.
При вводе ссылок на ячейки перетаскивайте окно, потянув за строку заголовка, чтобы были видны выделяемые диапазоны, или воспользуйтесь кнопками свертывания, расположенными справа от соответствующих полей ввода.
Добавление ограничений
Ограничения задаются в поле В соответствии с ограничениями (Ограничения). Для ввода ограничений нажмите кнопку Добавить. Откроется окно Добавление ограничения (рис. 1.25), в котором два поля ввода:
Ссылка на ячейки (Ссылка на ячейку) — для указания ячейки или
Оптимизировать целевою функцию: 5F54
До: (о) Максимум Q Минимум Q Значения: Изменяя ячейки переменных:
S8$3:SES3 |
Ш |
В соответствии с ограничениями: |
|
SFS12:SFS15 >= SHSi2:SH5l5 iF56:5Fsil <= SHS6:SH5li
Добавить
Изменить
Удалить
Сбросить
Загрузить/сохранить
[71 Сделать переменные без ограничений неотрицательными
Выберите метод решения:
Метод решения
Для гладких нелинейных задач используйте поиск решения нелинейных задач методом ОПГ, для линейных задач - поиск решения линейных задач симплекс-методом, а для негладких задач - эволюционный поиск, решения.
Справка |
|
Найти решение |
|
Закрыть |
Рис. 1.23. Окно средства Поиск решения в Excel 2010
диапазона ячеек, содержащих формулы левых частей ограничений. Диапазон можно задать лишь в том случае, когда несколько ограничений подряд, находящихся в смежных строках, имеют один и тот же знак. (Конечно, можно каждое ограничение ввести отдельно, но задание диапазонов удобнее.)
Ограничение — для указания ячейки или диапазона ячеек, содержащих правые части ограничений. Если в поле Ссылка на ячейки (Ссылка на ячейку) указан диапазон ячеек, то и в поле Ограничение тоже должен быть
Поиск решения
Установить целевую ячейку:
ЦТ]
ш
Равной: (3) максимальному значению Означению: [0_
0 минимальному значению Изменяя ячейки:
|$Б$3:$Е$3 |
(^] [ Предположить ] |
Ограничения: |
|
$F$12:$F$15 >= $Н$12:$Н$15
Добавить
Закрыть
Параметры
Восстановить
Удалить
Справка
Рнс. 1.24. Окно средства Поиск решения в Excel 2007 и предыдущих версиях
Добавление ограничения
Ссылка на ячеики:
Ограничение:
Добавить
0;гмена
ОК
Рис. 1.25. Добавление ограничения
диапазон, причем той же размерности.
В раскрывающемся списке (между этими полями) можно выбрать:
знак <=, =, >=;
цел — целое число;
бин в Excel 2010 (или двоим в предыдущих версиях)— бинарное (двоичное) значение: число 0 или 1;
раз (только в Excel 2010)— разные целые числа от 1 до N (где N — число переменных).
Последние три варианта используются при целочисленном решении (см. далее гл. 2).
Для ввода ссылок на ячейки и диапазоны перетаскивайте окно, открывая выделяемые ячейки, или пользуйтесь кнопками свертывания, расположенными справа от полей ввода. После ввода ограничений, кроме самого последнего, следует нажимать кнопку Добавить. При этом поля окна Добавление ограничения очищаются и можно вводить следующие ограничения.
После ввода последнего из них щелкните кнопку ОК, чтобы вернуться в окно Поиск решения, где вы увидите список всех введенных ограничений. При необходимости их изменения или удаления можно выделить любое из ограничений и нажать кнопку, соответственно, Изменить или Удалить.
Задание дополнительных параметров поиска решения
Кроме целевой функции и ограничений, необходимо задать условия неотрицательности переменных и выбрать метод решения. В Excel 2010 это делается том же окне, где задавалась целевая функция (см. рис. 1.23). Там необходимо выбрать параметры:
Сделать переменные без ограничений неотрицательными — чтобы задать условия неотрицательности для переменных, не имеющих нижних граничных условий;
» Поиск решения линейных задач симплекс-методом (в раскрывающемся списке Выберите метод решения) — чтобы использовался метод линейного программирования.
Числа в модели необходимо масштабировать, если наибольшее из них отличается от наименьшего более чем в 107 раз (иначе ошибки округления не позволят найти правильного решения). Даже если кажется, что в задаче такой разницы чисел нет, все равно, для профилактики, следует предусмотреть возможность такого масштабирования. Чтобы оно выполнялось автоматически в Excel 2010, щелкните кнопку Параметры и в появившемся окне выберите параметр Использовать автоматическое масштабирование (рис. 1.26).
Выбор этого параметра все же не гарантирует успешного решения всех проблем, поэтому, по возможности, вручную изменяйте масштаб измерения очень больших или очень маленьких чисел модели. Например, изменив денежную единицу, можно выразить прибыль не в рублях, а в тысячах или в миллионах рублей.
Параметры | ? || S3 |
Все методы | Поиск решения нелинейных задач методом ОПГ | Эе 4 | ►
1очность ограничения:
0 Использовать автоматическое масштабирование
Показывать результаты итераций
Решение с целочисленными ограничениями
П Игнорировать целочисленные ограничения Целочисленная оптимальность (%):
Пределы решения
Максимальное время (в секундах): Число итераций:
Эволюционные и целочисленные ограничения Максимальное число подзадач:
Максимальное число допустимых решений:
ОК
Рис. 1.26. Дополнительные параметры поиска решения в Excel 2010
В предыдущих версиях Excel все три перечисленные выше параметра задаются в одном окне, вызываемом кнопкой Параметры (рис. 1.27).
В этом окне нужно установить три флажка:
Линейная модель — для использования симплекс-метода;
Неотрицательные значения — чтобы все переменные были неотрицательными;
Автоматическое масштабирование — чтобы масштабировать числа, если разница между ними велика.
Значения других параметров, как правило, задавать или менять не нужно.
Параметры поиска решения |
ши |
Максимальное время: |
100 I секунд ( ОК |
|
|
Предельное чиспо итераилй: |
100 | [ Отмена |
|
|
Относительная погрешность: |
0,000001 | [ Загрузить модель... ] |
|
|
Допустимое отклонение: |
5 |% | Сохранить модель... ] |
|
|
Сходимость: |
0,0001 | [ Справка |
[71 Линейная модель |
[71 Автоматическое масштабирование |
[7] Неотрицательные значения П Показывать результаты итераций Оценки Разности Метод поиска |
|
(О) линейная (О) прямые ■£) Ньютона |
|
О квадратичная О центральные (_) сопряженных градиентов |
Рис. 1.27. Дополнительные параметры поиска решения в Excel 2007 (и предыдущих
версиях)
Чаще всего их изменяют при решении задач целочисленного программирования, когда необходимо сократить чрезмерное время решения (см. далее гл. 2).
Если хотите видеть, как в ходе решения меняются значения переменных и целевой функции, нужно задать еще один параметр— Показывать результаты итераций (см. рис. 1.26 и 1.27). При этом после каждой итерации поиск решения приостанавливается и на листе показываются текущие значения, а в появившемся окне можно выбрать либо продолжение показа итераций, либо остановку с возможностью сохранения найденного промежуточного решения.
Сохранение или загрузка параметров модели
Если на листе — только одна модель, то для сохранения параметров поиска решения достаточно сохранить книгу с этим листом. При открытии окна поиска решения вы всегда увидите там значения заданных параметров -— заново их вводить не нужно, пока существует лист с моделью. Однако если на листе — несколько моделей (или вариантов одной модели) с разными параметрами поиска решения, то нужно сохранять эти параметры на листе, а затем загружать оттуда в окно поиска решения. Это делается следующим образом:
В Excel 2010 кнопку щелкните Загрузить/сохранить в окне средства Поиск решения (см. рис. 1.23). В Excel предыдущих версий сначала щелкните кнопку Параметры в окне средства Поиск решения, а затем в окне параметров — кнопку Сохранить модель или Загрузить модель (см. рис. 1.27).
В открывшемся окне введите ссылку:
для сохранения — на верхнюю ячейку вертикального диапазона пустых ячеек, в котором хотите разместить информацию о сохраняемых параметрах поиска решения;
для загрузки — на весь диапазон ячеек, в котором содержится информация о загружаемых параметрах поиска решения (этот диапазон легко найти: он состоит из заполненных ячеек, появившихся на пустом месте, которое ранее вы отвели для сохранения).
В Excel 2010 щелкните кнопку Сохранить (или Загрузить), в Excel предыдущих версий — кнопку ОК.
Если выбрана загрузка, появится еще одно окно, где в Excel 2010 можно щелкнуть кнопку:
Заменить — для замены текущих параметров поиска решения, на загружаемые;
Объединить— для объединения текущих параметров с загружаемыми (при этом целевая функция и ячейки переменных берутся из загружаемого набора параметров, а ограничения объединяются: к текущим добавляются загружаемые).
В Excel предыдущих версий — только щелкните кнопку ОК.
Нахождение решения
Задав все необходимые параметры поиска решения, вы можете приступать к вычислениям. Для этого в Excel 2010 щелкните кнопку Найти решение, а в Excel предыдущих версии — кнопку Выполнить. На листе появятся результаты вычислений и одновременно — окно Результаты поиска решения с сообщением о том, найдено решение или нет (рис. 1.28 или 1.29). (Для больших моделей процесс оптимизации может длиться достаточно долго. В этом случае в строке состояния можно увидеть информацию о ходе вычислений: выполненное число итераций и текущее значение целевой функции.)
Если это окно появилось, это еще не означает, что решение найдено. В случае благополучного завершения вычислений сообщение будет содержать следующие два предложения: «Решение найдено. Все ограничения и условия оптимальности выполнены». Если решения найти не удалось, сообщение
Решение найдено. Все ограничения и условия зптимальности выполнены. |
Отчеты |
|
|
|
Результаты |
0 Сохранить найденное решение |
|
Устойчивость |
|
|
Пределы |
О Восстановить исходные значения |
|
|
1~1 Вернуться в диалоговое окно параметров
П Отчеты со
Сохранить сценарий-
Решение найдено. Все ограничения и условия оптимальности выполнены.
Если используется модуль ОПГ, то найдено по крайней мере локально оптимальное решение. Если используется модуль поиска решений линейных задач симплекс-методом, то найдено глобально оптимальное решение.
Рис. 1.28. Сообщение о результатах поиска решения в Excel 2010
Результаты поиска решения
Решение найдено. Eice ограничения и условия оптимальности выполнены.
(S) Сохранить найденное решение © Восстановить исходные значения
Отмена
Тип отчета
Результаты
Устойчивость
Пределы
ОК
Отмена
Справка
LoxpaHiiTb сценарии...
Рис. 1.29. Сообщение о результатах поиска решения в Excel 2007 (и более ранних версиях)
может выглядеть по-разному, в зависимости от причин неудачи. В Excel 2003 возможные варианты сообщений и советы по исправлению модели можно получить, введя в справочной системе слова Поиск решения и затем перейдя в раздел Разрешение вопросов, возникающих при поиске решения. При работе в Excel 2007 аналогичную информацию можно найти в Интернете по адресу: office.microsoft.com/ru-ru/excel-help/HP005203541.aspx. Работая в Excel 2010,
вы можете найти соответствующую информацию (к сожалению, на английском языке) в Интернете по адресу: www.solver.com/excel2010/solverhelp.htm.
В окне с сообщением о результатах, если решение найдено, можно выделить в списке один или несколько типов отчетов: Результаты, Устойчивость, Пределы, которые появятся на отдельных листах. Кроме того можно выбрать следующие параметры:
Сохранить найденное решение — для сохранения на листе найденного решения.
Восстановить исходные значения — для восстановления исходного вида листа.
Вернуться в диалоговое окно параметров (только в Excel 2010) — чтобы вернуться в окно поиска решения, изменить параметры и повторить вычисления.
Отчеты со (только в Excel 2010) — для выдачи отчетов в компактном виде. Чтобы отобразить подробную информацию в таких отчетах нужно нажать кнопку (+), а чтобы скрыть — кнопку (-).
Если решение найти не удалось, то в Excel 2003 и 2007 отчеты недоступны. В Excel 2010 в этом случае можно выбрать отчеты другого типа, помогающие выяснить, где допущена ошибка.
Если отсутствуют допустимые решения, сообщение о результатах будет в Excel 2010 выглядеть, как показано на рис. 1.30. В любом из возможных отчетов, Допустимость или Границы допустимости, будут указаны ограничения, из-за которых, возможно, не удалось найти допустимых решений. Отчет Допустимость более полный: он анализирует все ограничения, включая и граничные условия, и поэтому для его получения может потребоваться больше времени. Отчет же Границы допустимости не анализирует граничные условия и, следовательно, выводится быстрее.
Если не выполняются условия линейности, необходимые для линейной оптимизации, сообщение о результатах будет выглядеть, как показано на рис. 1.31. В этом случае можно вызвать отчет Линейность. В нем указывается, являются ли линейными целевая функция и левые части ограничений, а также входят ли линейно в модель переменные.
В ходе поиска не удалось найти допустимого решения.
0 Сохратггь найденное решение О Восстановить исходные значения
Допустимость Границы допустимости
П Вернуться в диалоговое окно параметров □ Ответы со
Сохранить сценарий..
ОК
Отмена
В ходе поиска не удалось найти допустимого решения.
В коде поиска решения не удается найти точку, для которой выполняются все ограничения.
Рис. 1.30. Сообщение об отсутствии допустимых решений в Excel 2010
Результаты поиска решения
Условия линейности, необходимые для этой
линейной оптимизации, не выполнены. Отчеты
0 Сохранить найденное решение О Восстановить исходные значения
Вернуться в диалоговое окно параметров
Сохранить сценарий..
Условия линейности, необходимые для этой линейной а оптимизации, не выполнены.
У Создайте отчет о линейности, чтобы выяснить, где затруднение, или « переключитесь на модуль ОПГ.
Рис. 1.31. Сообщение о нарушении линейности в Excel 2010
Анализ оптимального решения
На рис. 1.32 показано, как на листе выглядят результаты вычислений. В ячейках ВЗ:ЕЗ выводится оптимальный производственный план, в ячейке F4 — получаемая максимальная прибыль. В строках 6-8, содержащих ограничения на ресурсы, в столбце Лев.часть— количество использованных ресурсов, а в столбце Разница— их остаток после выполнения оптимального плана. Если разница равна нулю, то соответствующий ресурс будет использован полностью, то есть является дефицитным. В строках 9-15, содержащих граничные условия, в столбце Лев.часть— значения переменных в оптимальном решении, а в столбце Разница — разность между этими значениями и заданными для переменных верхними или нижними границами. Если разница равна нулю, то соответствующая переменная принимает свое граничное значение.
Ту же информацию, но в несколько иной форме, можно увидеть, если вы решили вывести отчет Результаты. При этом в книге появится новый лист, показанный на рис. 1.33. В его верхней части содержится общая информация о ходе решения, заданных параметрах и достигнутых результатах. Кроме того, в графе Целочисленное указан тип полученного числового значения: Целочисленное, Бинарное, Продолжить (последнее слово обозначает
т |
А |
в |
С |
D |
Е |
F |
G |
н |
' |
J |
1 |
Производственный план |
|
|
|
|
|||||
2 |
Продукт |
П1 |
П2 |
пз |
П4 |
|
|
|
|
|
3 |
Произведенное к-во |
5 |
1,5 |
3 |
4 |
Прибыль |
|
|
|
|
4 |
Удельная прибыль |
70,00р. 1 60,00р. I 110,00р. |
140,00р. |
1330,00р. |
|
|
|
|||
5 |
Ограничения |
Расход ресурсов |
Лев.часть | |
Прав.часть |
Разница |
|
||||
б |
Труд |
1 |
2 |
1 |
2 |
19 |
< |
19 |
0 |
|
7 |
Сырье |
7 |
4 |
5 |
4 |
72 |
< |
80 |
8 |
|
8 |
Финансы |
5,00р. |
7,00р. |
9,00р. |
8,00р. |
94,50р. |
< |
100,00р. |
5,50р. |
|
9 |
Мах.П1 |
1 |
|
|
|
5 |
< |
5 |
0 |
|
10 |
Мах.ПЗ |
|
|
1 |
|
3 |
< |
3 |
0 |
|
11 |
Мах.П4 |
|
|
|
1 |
4 |
< |
4 |
0 |
|
12 |
Мин.П1 |
1 |
|
|
|
5 |
> |
3 |
2 |
|
13 |
Мин.П2 |
|
1 |
|
|
1,5 |
> |
1 |
0,5 |
|
14 |
Мин.ПЗ |
|
|
1 |
|
3 |
> |
1 |
2 |
|
13 |
Мин.П4 |
|
|
|
1 |
4 |
> |
2 |
2 |
|
16 |
|
|
|
|
|
|
|
|
|
Рис. 1.32. Результаты решения задачи линейного программирования
Microsoft Excel 14.0 Отчет о результатах
Результат: Решение найдено. Все ограничения и условия оптимальности выполнены. Модуль поиска решения
Модуль: Поиск решения линейных задач симплекс-методом Время решения: 0,015 секунд.
Число итераций: 8 Число подзадач: О
Ячейка целевой функции (Максимум)
Ячейка |
Имя |
Исходное значение |
Окончательное значение |
|
|
$F$4 |
Удельная прибыль Прибыль |
1330,00р. |
1330,00р. |
|
|
чейки переменных |
|
|
|
|
|
Ячейка |
Имя |
Исходное значение |
Окончательное значение |
Целочисленное |
|
$в$з |
Произведенное к-во П1 |
5 |
5 |
Продолжить |
|
$с$з |
Произведенное к-во П2 |
1,5 |
1,5 |
Продолжить |
|
$D$3 |
Произведенное к-во ПЗ |
3 |
3 |
Продолжить |
|
$Е$3 |
Произведенное к-во П4 |
4 |
4 |
Продолжить |
|
!граничения |
|
|
|
|
|
Ячейка |
Имя |
Значение ячейки |
Формула |
Состояние |
Допуск |
$F$12 |
Мин.П1 Лев.часть |
5 |
$F$12>=$H$12 |
Без привязки |
2 |
$FSl3 |
Мин.П2 Лев.часть |
1,5 |
$F$13:-=$H$13 |
Без привязки |
0,5 |
$F$14 |
Мин.ПЗ Лев.часть |
3 |
$F$14>=$H$M |
Без привязки |
2 |
$F$15 |
Мин.П4 Лев.часть |
4 |
$F$L5>=SH$13 |
Без привязки |
2 |
$F$5 |
Труд Лев.часть |
19 |
$F$6<=$H$6 |
Привязка |
0 |
$F$7 |
Сырье Лев.часть |
72 |
$F$7<-$H$7 |
Без привязки |
8 |
$F$8 |
Финансы Лев.часть |
94,50р. |
$F$8<=$H$8 |
Без привязки |
5,5 |
$F$9 |
Мах.П1 Лев.часть |
5 |
$F$9<=$H$9 |
Привязка |
0 |
$F$10 |
Мах.ПЗ Лев.часть |
3 |
$F$KK=$H$10 |
Привязка |
0 |
$F$11 |
Мах.П4 Лев.часть |
4 |
$F$11<=$H$11 |
Привязка |
0 |
Рис. 1.33. Отчет о результатах в Excel 2010
вещественное число — недостаток перевода). В предыдущих версиях Excel этой информации нет, а в остальном вид отчета отличается незначительно — лишь используемой терминологией. (В дальнейшем за термином Excel 2010, в скобках указывается термин, используемый в предыдущих версиях.) Вид ограничений указан в графе Состояние (Статус). Ограничения, у которых Допуск (Разница) равен нулю, обозначаются словом Привязка (связанное), а остальные— Без привязки (не связан.).
Содержимое любого отчета можно свободно форматировать, распечатывать или копировать. Например, в отчете, показанном на рис. 1.33 некоторые строки были удалены, а содержимое некоторых столбцов выравнено по центру. Для удобства форматирования можно восстановить линии сетки, для чего выберите:
® в Excel 2010 — вкладку Вид ► Сетка;
в Excel 2007 — вкладку Вид ► Показать или скрыть ► Сетка;
в предыдущих версиях Excel — меню Сервис ► Параметры ► Сетка.
Анализ чувствительности
Если, задавая параметры поиска решения, вы указали, что задача должна решаться симплекс-методом (она линейна), но при этом не требовали, чтобы какие-либо переменные были целыми или двоичными, то можно получить отчеты Устойчивость и Пределы.
Отчет об устойчивости содержит основную информацию для анализа чувствительности модели. Этот отчет показывает, насколько чувствительно найденное решение к изменениям параметров модели (коэффициентов целевой функции и правых частей ограничений). При этом предполагается, что значения всех параметров, за исключением какого-то одного, остаются неизменными. На рис. 1.34 показано, как этот отчет выглядит в Excel 2010. Он состоит из двух таблиц, заголовки которых отличаются в разных версиях программы. (При описании отчета, как и раньше, дается вариант из Excel 2010, за которым в скобках — вариант из предыдущих версий.)
Microsoft Excel 14.0 Отчет об устойчивости
Ячейки переменных
|
|
Окончательное Приведенн. Целевая функция Допустимое |
Допустимое |
|||
Ячейка |
Имя |
Значение |
Стоимость |
Коэффициент |
Увеличение |
Уменьшение |
$в$з |
Произведенное к-во П1 |
5 |
0 |
70 |
1Е+30 |
40 |
$с$з |
Произведенное к-во П2 |
1,5 |
0 |
50 |
80 |
60 |
$D$3 |
Произведенное к-во ПЗ |
3 |
0 |
110 |
1Е+30 |
80 |
$Е$3 |
Произведенное к-во П4 |
4 |
0 |
140 |
1Е+30 |
80 |
граничения |
||||||
|
|
Окончательное |
Тень |
Ограничение |
Допустимое |
Допустимое |
Ячейка |
Имя |
Значение |
Цена |
Правая сторона |
Увеличение |
Уменьшение |
$F$12 |
Мин.П1 Лев.часть |
5 |
0 |
3 |
2 |
1Е430 |
$F$13 |
Мин.П2 Лев.часть |
1,5 |
0 |
1 |
0,5 |
1Е+30 |
$F$M |
Мин.ПЗ Лев.часть |
3 |
0 |
1 |
2 |
1Е+30 |
$F$15 |
Мин.П4 Лев.часть |
4 |
0 |
2 |
2 |
1Е+30 |
$F$6 |
Труд Лев.часть |
19 |
30 |
19 |
1,571428571 |
1 |
$F$7 |
Сырье Лев.часть |
72 |
0 |
80 |
1Е430 |
8 |
$F$8 |
Финансы Лев.часть |
94,50р. |
0 |
100 |
1Е+30 |
5,5 |
$F$9 |
Мах.П1 Лев.часть |
5 |
40 |
5 |
1 |
2 |
$F$10 |
Мах.ПЗ Лев.часть |
3 |
80 |
3 |
1 |
2 |
$F$11 |
Мах.П4 Лев.часть |
4 |
80 |
4 |
0,5 |
2 |
Рис. 1.34. Отчет об устойчивости в Excel 2010
В таблице Ячейки переменных (Изменяемые ячейки) выводится следующая информация:
В первых двух столбцах перечислены ячейки, в которых находятся значения переменных, и имена этих ячеек. (Имя любой ячейки образуется из заголовков модели: объединяются ближайший текст слева и ближайший текст сверху.)
В столбце Окончательное Значение (Результ. Значение)— найденное оптимальное решение (5; 1,5; 3; 4).
В столбце Приведенн. Стоимость (Нормир. Стоимость)— приведенные (нормированные) стоимости — двойственные оценки, которые в нашем случае все равны нулю. Такая оценка может быть отлична от нуля только для переменной, имеющей в оптимальном плане нулевое значение. Приведенная (нормированная) стоимость, взятая по абсолютной величине, показывает насколько, как минимум, нужно изменить коэффициент переменной в целевой функции, чтобы она стала положительной (например, как повысить прибыльность изделия, чтобы выпускать его стало выгодно). Кроме того, эта оценка (но уже с учетом знака) показывает, насколько ухудшится значение целевой функции, если сделать эту переменную равной 1, не меняя ее коэффициента в целевой функции (например, насколько снизится прибыль, если ввести в план производство единицы изделия, выпускать которое невыгодно). Абсолютную величину приведенной (нормированной) стоимости, если она отлична от нуля, вы увидите также в одном из столбцов Допустимое увеличение или Допустимое уменьшение, при этом в другом столбце будет стоять бесконечность (вместо символа +со в Excel выводится 1Е+30, что означает 10+3°).
В столбце Целевая функция Коэффициент (Целевой Коэффициент) — коэффициенты целевой функции.
В последних двух столбцах — допустимые изменения коэффициентов целевой функции, при которых сохраняется прежнее оптимальное решение. При увеличении и уменьшении коэффициентов целевой функции на указанные величины можно получить интервалы оптимальности, которые показывают, в каких пределах могут меняться коэффициенты целевой функции, чтобы сохранялось найденное оптимальное решение. В нашем примере такими интервалами будут: для 1-го вида продукции — [30, +сю), для 2-го — [0, 140], для 3-го — [30, +оо) и для 4-го — [60, +оо). (Нулевые значения в этих столбцах — признак наличия альтернативных оптимальных решений.)
Во второй таблице — Ограничения выводится следующая информация:
В первых двух столбцах перечислены ячейки, в которых вычисляются левые части ограничений, и их имена.
В столбце Окончательное Значение (Результ. Значение)— значения левых частей ограничений (для ограничений на ресурсы — их использованное количество, для граничных условий — значение переменных в оптимальном плане). Если левая часть ограничений была задана в финансовом или денежном формате, то этот формат сохраняется и в отчете по устойчивости.
В столбце Тень Цена (Теневая Цена) — теневые цены, двойственные оценки, показывающие, на какую величину изменится целевая функция при увеличении на единицу правой части ограничения, в то время, как остальные данные неизменны (например при добавлении единицы соответствующего ресурса). Теневая цена имеет и еще один смысл: это максимальная цена, которую стоит платить за дополнительное количество дефицитного ресурса, чтобы приобретение было выгодным, или минимальная цена его продажи. Теневая цена отлична от нуля только для связанных ограничений.
В столбце Ограничение Правая сторона (Ограничение Правая часть) — правые части ограничений (запасы ресурсов или граничные значения переменных).
В последних двух столбцах — допустимые изменения правых частей ограничений (запасов ресурсов или граничных значений переменных), при которых неизменны соответствующие теневые цены и в оптимальном решении сохраняется прежний набор ненулевых переменных (например не меняется ассортимент продукции). При увеличении и уменьшении правых частей ограничений на указанные величины можно получить интервалы устойчивости. В нашем примере такими интервалами будут: для трудовых ресурсов — [18, 20,6], для сырья — [72, +со) и для финансов — [94,5, +ю).
Внимание! Наличие в этих двух столбцах хотя бы одного нулевого значения — признак вырожденности решения. В этом случае выводы из отчета об устойчивости, сделанные выше, могут оказаться неверными.
Отчет о пределах (рис. 1.35) содержит дополнительную информацию о чувствительности модели. Он показывает наименьшее и наибольшее значения, которые может принимать каждая переменная при выполнении всех ограничений и постоянстве значений остальных переменных. Для этих предельных значений переменной приводятся соответствующие значения целевой функции.
Ячейка |
Целевая функция Имя |
Значение |
|
|
|
|
|
||
$F$4 |
Удельная прибыль Прибыль |
1330,00р. |
|
|
|
|
|
||
|
|||||||||
Ячейка |
Переменная Игля |
Значение |
Нижний Предел |
Целевая функция Результат |
Верхний Предел |
Целевая функция Результат |
|||
$В$3 |
Произведенное к-во П1 |
5 |
3 |
1190 |
5 |
1330 |
|||
$С$3 |
Произведенное к-во П2 |
1,5 |
1 |
1300 |
1,5 |
1330 |
|||
$D$3 |
Произведенное к-во ПЗ |
3 |
1 |
1110 |
3 |
1330 |
|||
$Е$3 |
Произведенное к-во П4 |
4 |
2 |
1050 |
4 |
1330 |
Рис. 1.35. Отчет о пределах в Excel 2010
В разных версиях Excel этот отчет выглядит практически одинаково.
После нахождения оптимального решения можно исследовать различные альтернативные варианты решения, изменяя значения переменных в окрестности найденных оптимальных значений (в ячейках ВЗ:ЕЗ). При этом повторно вызывать средство Поиск решения не нужно: все формулы модели пересчитываются автоматически.
Кроме того, можно проследить, как отразится на оптимальном значении целевой функции (в нашем случае прибыли) изменение параметров модели:
правых частей ограничений (запаса ресурсов);
коэффициентов целевой функции (удельной прибыли);
коэффициентов ограничений (норм расхода ресурсов),
После каждого такого изменения необходимо вновь использовать Поиск решения для повторной оптимизации. При этом не нужно вводить какие-либо новые данные: достаточно лишь вызвать Поиск решения и щелкнуть кнопку Найти решение (Выполнить). (Все настройки средства Поиск решения сохраняются для каждой модели при сохранении книги Excel.)