книги / Оптимизация в LINDO
..pdfДалее, в;сскщш щрок отчета,приводится одна строка для каждого ограничения, включающая имя ограничения, его резерв (slack) или избыток (surplus) и его двойственную цену. SLACK OR SURPLUS - это значение дополнительной переменной, равное разности правой и левой частей ограничения. Эта величина в неравенствах «меньше или равно» называется резервом, а в неравенствах «больше или равно» - избытком. Если ограничение в точности удовлетворяется как равенство, то значение SLACK OR SURPLUS равно нулю. Если ограничение,^нарушено, что соответствует недопустимому решению, значение SLACK OR SURPLUS будет отрицательным. Это знание поможет найти невыполняемые ограничения в неразрешимой модели.
Двойственную цену (Dual price) можно интерпретировать как значение, на которое критерий; мог бы улучшиться при добавлении единицы в правой части ограничения. Ее цнорда называют .теневой иеной Iресурса1. потому что она показывает, сколько бы был.- готов ЛПР заплатить за дополнительную единицу ресурса. Двойственные цёны Имеют важное значение в линейннрс и квадратичных моделях, но обычно не предб'Жляют интереса для моделей целочисленного программирования.
Как и Reduced cost, двойственная цена действительна только в ограниченном диапазоне значения правой части, так как строго математически двойственная переменная - это производная оптимального значения критерия по правой части ограничения. Для определения этих диапазонов может быть использована команда Range.
Последняя строчка отчета показывает число итераций, или симплекспреобразований, требуемых для решения модели. В моделях целочисленного программирования LINDO будет также печатать, число ветвей, т.е. число переменных, которые решатель использовал. для ветвления до достижения решения.
Ranee____________ Alt + 1
Команда Range генерирует отчет о диапазонах (т.е. анализ чувствительности) для активной модели. Использование команды возможно только после решения модели. Этот отчет включает:
•имена переменных с их текущими коэффициентами в целевой функции и допустимыми увеличениямии уменьшёншми этих коэффициентов,
•номера строк (Условий) с их текущим правосторонним значением (RHS) и допустимыми увеличениями и уменьшениями этих значений.
Отчет о диапазонах уместен только для линейных моделей и практически не используется при решении квадратичных и целочисленных моделей.
Для ранее приведенной модели фирмы "Кама” вид отчёта показан на рис. 10. Интерпретация отчета* следующая: допустимое увеличение и уменьшение
коэффициентов каждой переменней в критерии - это значение, на которое могут быть увеличены или уменьшены коэффициенты без изменения базиса (значений ненулевых переменных). Так, из приведенного отчета следует, что увеличение коэффициента при переменной Х2 в критерии на величину, меньшую 11, или уменьшение его на величину, меньшую 3, не изменит базиса' и значений переменных XI и Х2. Таким образом, имеем следующий диапазон:
7 < значение коэффициента <^1
Допустимое увеличение и уменьшение правой части каждого ограничения - это значение, на которое могут быть увеличены или уменьшены правые части без смены базиса.
31
ЩRepoila W indow |
|
|
|
|
| RflHGES IH WHICH THE BASIS |
IS UNCHANGED: |
|
||
t |
|
|
|
|
1 |
|
|
OBJ COEFFICIENT |
RANGES |
|
|
CURRENT |
||
j VARIABLE |
ALLOWABLE |
ALLOWABLE |
||
|
|
COEF |
INCREASE |
DECREASE |
i |
X1 |
14.000000 |
6.000000 |
7.333333 |
| |
X2 |
10.000000 |
11.000000 |
3.000000 |
:i:' |
ROW |
CURRENT |
RIGHTHAND SIDE RANGES |
|
\ |
ALLOWABLE |
ALLOWABLE |
||
} |
2 |
RHS |
INCREASE |
DECREASE |
|
19.000000 |
З.ЗЭЭЭЗЗ |
2.666667 |
|
\ |
з |
13.000000 |
0.888889 |
3.333333 |
:! |
* |
14.000000 |
INFINITY |
5.000000 |
i |
5 |
17.000000 |
INFINITY |
2.000000 |
|
'Ш штштт |
|||
|
|
|
||
|
|
|
Рис. 10 |
|
Parametrics |
A lt+ 2 |
|
|
Щ
jfcg
Ш
1
y;•: HlS
«11
Команда LINDO Parametrics автоматизирует процесс параметрирования только для правых частей ограничений (LINDO не поддерживает эту функцию для коэффициентов целевой функции). Команда Parametrics будет генерировать отчет и/или график детального изменения значения критерия как функции изменения определенных правосторонних значений. Достаточно определить новое значение правой части ограничения, и LINDO будет изменять текущее правостороннее значение □о шагам до нового значения, показывая значение критерия на каждом шаге. Перед использованием команды Parametrics необходимо решить модель с исходными значениями правых частей.
Вызов команды Parametrics приводит к появлению диалогового окна (рис. 11).
Рис. 11
32
Сначала выбирается параметризуемое ограничение. Его можно ввести непосредственно в поле Parametric Row или двойным щелчком на выбранном имени в списке строк под этим полем. Тогда UNDO покажет ниже списка тип введенного ограничения (<=, = или >=), а в поле New RHS Value текущее значение его правой части. Если в нашем примере мы выберем строку 2, то диалоговое окно примет вид как на рис. 12.
Рис. 12
Теперь в поле New RHS Value нужно изменить текущее значение правой части на то, до которого требуется провести параметрирование. .Далее с помощью флажков в правой половине окна выбирается тип отчета (Report Туре): текстовый или графический, или оба. Для графического отчета можно выбрать его размерность: 2- мерный или 3-мерный. Генерация параметрического отчета начнется после нажатия кнопки ОК. Текстовый отчет будет послан в окно отчетов, а графический - в отдельное окно.
Для иллюстрации введем в поле New RHS Value значение 7 и закажем оба отчета. Полученный текстовый отчет приведен на рис. 13.
|TL^ Reports Window |
|
|
- Г*-.-■- |
-- |
-------* |
в й ; |
|||
......... |
|
|
|
||||||
|
|
|
|
|
|
|
m |
||
] RIGHTHA N D S I D E |
P A R A M E T R I C S |
REPORT FOR |
ROU: 2 |
|
|
||||
|
|
|
|||||||
|
UAR |
|
U A R |
PIVOT |
RIIS |
DUAL |
PRICE |
OBJ |
|
|
OUT |
|
IN |
R O M |
i UAL |
BEFORE |
PIUOT |
UAL |
|
|
|
|
|
|
T9 . 0 0 0 0 |
1 . 5 0 0 0 0 |
100 . 000 |
Ш |
|
i SLK |
5 |
SLK |
3 |
5 |
1 6 . 9333 |
1 . 5 0000 |
9 6 . 0000 |
|
|
{( |
X2 |
SLK |
.5 |
h r |
1 1 . 3333 |
З .ЭЗЭЗЭ |
79. 3339 |
Ш |
|
i |
|
|
|
|
7 . 0 0 0 0 0 |
7 . 0 0000 |
Л 9 . 0000 |
Ш |
|
•i |
|
|
|
|
|
|
|
|
|
'Ш.Т |
|
|
|
|
|
|
|
т |
Ш |
|
|
|
|
|
|
|
|
|
Рис. 13
Как видно, параметрический отчет показывает для каждого симплекспреобразования вводимые (var in) и выводимые переменные (var out), направляющую
33
строку (pivot row), правосторонние значения (rhs vai) и как они изменяются от текущего значения до нового, двойственную цену (dual price)1и значение критерия (obj val) для соответствующего значения правой части.
Примечание. LINDO использует • обозначение SLK для дополнительных переменных, вводимых в неравенства. Номер такой переменной - это номер строки соответствующего условия в модели.
Каждая строка отчета представляет собой точку излома в кусочно-линейной (или кусочно-квадратичной в квадратичной модели) зависимости между значением критерия и правой части (точка излома - момент смены базиса). Графический отчет наглядно иллюстрирует эту зависимость (рис.14).
^ R H S Paramedics Graph |
______ |
Г
\RHS Parametrics for Row: 2
Рис. 14
Если взять две соседние строки отчета, то приращение критерия вычисляется как произведение двойственной оценки во второй строке на разность значений правых частей в этих строках, что следует из смысла теневых цен. Так, например, изменение правой части с 16.3333 до 11.3333 приводит к уменьшению критерия на
(16.3333 - 11.3333)^3.3333 = 16.6667
и новое значение критерия будет (96 - 16.6667) = 79.3333.
Очевидно, что команда Parametrics позволяет исследовать непосредственно изменения в правой части только одного ограничения. Однако простая модификация модели делает возможным параметрировать одновременно несколько ограничений в линейной модели. Для этого в условия вводится дополнительный столбец (переменная изменений) и дополнительное ограничение, правая часть которого и будет парамЬтризироваться UNDO. При этом будут одновременно изменяться значения правых частей тех исходных ограничений, в которые вошла переменная изменений. Например, пусть исходная модель имеет вид
34
10X+25Y->max
X<30
Y<40
3X + Y < 85
Для одновременного параметрирования 1 и 2 ограничения- с разной величиной изменения модифицируем модель следующим образом:
10X+25Y->max X + 22 < 30 Y -Z<40 ЗХ + Y < 85:
Z = t
При t = 0 имеем исходную модель, при t = 5 правая :ласть 1-го ограничения уменьшается на 10, а второго - увеличивается на 5. Таким^образом, лараметрируя только t, получаем желаемое параметрирование необходимого числа ограничений.
Команда Parametrics может быть применена для линейных и квадратичных моделей, но не применима для целочисленных моделей:
Statistics_________Alt + 3
Команда Statistics посылает небольшой отчет в окно отчетов. Этот отчет дает сводную статистику активной модели.
Первая строка содержит:
•число строк, включая строку критерия;
•число переменных;
•число всех целых переменных, в скобках - из них бинарных;
•QCP - индекс первого реального ограничения в квадратичной модели (О показывает, что модель не квадратичная).
Вторая строка содержит:
•число ненулевых коэффициентов во всей модели;
•число ненулевых коэффициентов в ограничениях, в скобках - из них число коэффициентов, равный +1 или -1;
•плотность модели, определенную как:
(число ненулевых элементов) / [(число строк) * (число столбцов + 1)].
Третья строка содержит абсолютные значения минимальных н максимальных ненулевых элементов соответственно.
В четвертой строке представлены:
•смысл целевой функции (MIN или МАХ);
•число ограничений «меньше или равно», «равно» и «больше или равно »;
•оценка верхней границы числа ограничений с обобщенной.верхней границей (GUBS) ~ ограничения, не имеющие общих переменных;
•оценка нижней границы числа верхних границ переменных (VUBS). Для примера, ограничение XI + Х2 - ХЗ - 0 содержит следующие выводы:
из ХЗ = 0 следует XI = О из ХЗ = 0 следует Х2 = 0.
Последняя строка содержит:
•число столбцов, имеющих только один ненулевой коэффициент;
•число лишних столбцов, т.е. идентичных некоторым другим столбцам кроме, возможно, границ.
35
Окно отчета для нашей моделипредставлено нарис. 15.
Reports Window |
|
|
|
|
|
|
|
|
a |
|
4 R0US= |
5 |
BARS- |
2 INTEGER UARS« |
0( |
|
0 ® 0/1) |
QCP= |
0 |
||
!: NONZEBOS* |
|
12 CONSTRAINT N0N2= |
6( |
1 = *-1) DENSITY-0.800 |
||||||
|j SMALLEST AND |
LARGEST ELEMENTS IN ABSOLUTE UALUE® |
1.00000 |
|
19.0000 |
||||||
il 0BJ=MAX, |
NO. |
<,=,>: |
4 |
0 |
0, GUBS |
<= |
2 UUBS |
>- |
0 |
|
i!SINGLE COLS® |
0 REDUNDANT C0LS= |
0 |
|
|
|
|
|
Рис. 15
Команда Statistics может быть использована для проверки возможных ошибок в модели. Например, если в каком-нибудь ограничении имя переменной будет записано с ошибкой, то в отчете появится столбец с единичным ненулевым элементом, которого не должно быть.,Или если неправильно поставлена или пропущена десятичная точка в коэффициенте, то эта ошибка может-быть обнаружена в отчете при анализе самого большого или самого маленького по абсолютной величине значения среди коэффициентов.
Peruse__________ A lt+ 4
Команда Peruse может быть использована для просмотра или анализа отдельных частей решения модели и/или структуры. Pemse-отчеты генерируются в текстовом и/шш графическом формате. Возможность сфокусироваться на отдельных частях модели и ее решения с помощью Peruse - это очень полезное средство в больших моделях, где попытка внимательно рассмотреть всю модель или решение может оказаться сверхсложной задачей.
Чтобы использовать все возможности команды Peruse, можно сначала запустить команду Solve для активной модели (хотя это и не обязательно). Далее, по команде Peruse UNDO выдаст диалоговое окно настройки параметров (рис. 16).
Команда Peruse будет выдавать отчет или по столбцам, или по строкам. В левой части диалогового окна даны параметры управления отчетом (Report Parameters). В зависимости от желаемого типа отчета выбирается кнопка Columns (столбцы) или Rows (строки) в группе Orientation. Далее нужно выбрать данные, включаемые в отчет, с помощью установки флажков в группе View Items. Список элементов этой группы с их интерпретацией в зависимости от выбора ориентации отчета приведен в табл. 5.
Факультативное поле Condition (optional) может понадобиться для ввода условия, которое отфильтрует нежелательные столбцы или строки, исключив их из отчета.
Оставшиеся параметры определяют формат отчета. С помощью группы Report Typesможно выбрать текстовый отчет, графический или оба. Текстовый отчет выводится в окно отчетов. Графический отчет располагается в отдельном окне. При выборе текстового отчета становится доступной группа опций Text Report Format, которая позволяет включать в отчет, если нужно, заголовки столбцов (Include Headers) и вставлять в числа разграничительные запятые (Comma Delimited). Если выбран графический отчет, то можно включить только одну кнопку из группы Graph Туре, определяющей вид графика: area диаграмма с областями, bar - столбиковая диаграмма, pie - секторная диаграмма, line или point - график из линий или точек , а также указать размерность пространства для графика (2D или 3D) в группе Graph Style. При этом доступно и поле Graph Title, куда можно ввести свой заголовок графика.
36
Рис. 16
Таблица 5
Name
Primal
Dual
Rim
Upper bound Lower bound
Type
Nonzeros
Имя переменной |
|
Имя строки |
|
|||
|
|
|
|
Недостаток/избыток |
||
Значение переменной |
(значение дополнитель |
|||||
|
|
|
|
ной переменной) |
|
|
Относительная |
оценка |
Двойственная |
пере |
|||
переменной |
|
менная (теневая пена) |
||||
Коэффициент в крите |
Значение правой части |
|||||
рии при переменной |
условия |
|
|
|||
Верхняйтраница |
|
- о |
_ |
|
||
Нижняя граница |
•-' |
|
— |
|
||
«С» |
для |
непрерывной, |
«<» - меньше или равно, |
|||
«F» |
для |
свободной, |
«=» |
равно, |
«>» - |
|
«I» |
для целого |
|
больше пли равно |
|||
Число |
ненулевых |
'Число |
ненулевых |
|||
элементов |
|
|
^элементов |
|
В качестве примера приведен графический отчет Peruse (рис. 17) для задачи о фирме "Кама” при параметрах команда, установленных в диалоговом окне Peruse Model (см, рис. 16). На графике показаны переменные и их относительные оценки (dual), которые равны нулю, так как обе переменные - базисные.
37
Как уже упоминалось, можно ограничивать объем выводимых данных с помощью условия фильтрования. Это средство используется, когда исследуются большие модели и полный отчет может быть громоздким.
Условное выражение вычисляется для всех строк и столбцов. Если выражение истинно, то строка или столбец попадают в отчет, иначе они пропускаются.
При. записи |
условий используются |
восемь |
символов, которые |
соответствуют восьми элементам группы View Items: |
|
||
|
Name |
N |
|
|
Primal |
P |
|
|
Dual |
D |
|
|
Rim |
R |
|
|
Upper bound |
U |
|
|
Lower bound |
L |
|
|
Type |
T |
|
|
Nonzeros |
7 |
|
В дополнение к этим символам табл. 6 показывает различные операции, которые могут быть применены к ним при конструировании условных выражений.
|
Таблица 6 |
|
% |
Метка-заполнитель, используется в формировании |
|
шаблонов имен переменных |
||
|
||
rf |
Суммирование |
-Вычитание
/Деление
* |
Умножение |
___ |
|
A |
|||
Степень |
|
||
LOG(x) |
|
||
Натуральный логарифм |
___ |
38
Окончание табл. 6
ЕХР(х) |
Экспонента |
ABS(x) |
Абсолютное значение х |
.AND. |
Логическое И |
.OR. |
Логическое ИЛИ |
.NOT. |
Логическое НЕ |
>Сравнение, больше чем
<Сравнение, меньше чем
=Сравнение,.равно ; .
#Сравнение, не равно
___ Q_________ |
Скобки для определения приоритетов операций |
|
Например, если в отчете не нужны переменные (primal), равные нулю, то условие следует записать в виде Р >0.
Picture________ Alt+ 5
Команда Picture показывает модель в матричной форме. Она обычно используется для получения визуальной картины модели. Можно получить текстовое или графическое представления матрицы ненулевых коэффициентов.
Просмотр модели в матричной форме может быть полезен в двух случаях. Вопервых, при отладке модели помогает анализ картины ненулевых коэффициентов. Большинство моделей линейного программирования имеют явно повторяющуюся структуру. Неправильно введенные секции модели будут «бросаться в глаза» в ненулевой картине. Во-вторых, ненулевая матрица может быть полезна для распознания специальной структуры модели. Например, если картина матрицы показывает строго блочно-диагональную структуру, то могут оказаться весьма эффективными алгоритмы декомпозиции.
Для получения картины ненулевой матрицы запускают команду Picture в окне модели. Появляющееся диалоговое окно Nonzero Picture позволяет задать вид картины (рис. 18).
Рис. 18
39
Для переупорядочения столбцов и строк следует выбрать опцию Lower Triangular, иначе - None. В первом случае UNDO переупорядочит строки и столбцы так, что максимальное число ненулевых элементов будет под диагональю матрицы. Модель, у которой наибольшее количество ненулевых элементов находится под диагональю, с большой вероятностью будет относительно просто решаться. Кнопки в группе Picture Туре дают возможность выбрать графический отчет, текстовый отчет или оба. Текстовый отчет запишется в окно отчетов. Графический отчет располагается
вотдельном окне.
Втекстовом отчете имена переменных печатаются вертикально сверху вниз в начале отчета, имена строк - слева, а значения правых частей - справа. Матрица нерулевых коэффициентов располагается между ними. Коэффициенты, которые имеют цеЬые значения в диапазоне от 1 до 9, печатаются без изменений. Другие значения коэффициентов представлены буквами, которые определяют диапазон по табл. 7.
|
|
Таблица 7 |
g U g g |
l |
|
Z |
.000000 |
.000001 |
Y |
.000001 |
.000009 |
,,Х- |
.000010 |
.000099 |
W |
.000100 |
.000999 |
V |
.001000 |
.009999 |
и |
.010000 |
.099999 |
т |
.100000 |
.999999 |
А |
1.000001 |
10.000000 |
В ’ |
10.000001 |
100.000000 |
С |
100.000001 |
1000.000000 |
D |
! .1000.000001 |
10000.000000 |
Е |
10000.000001 |
100000.000000 |
F |
100000.000001 |
1000000.000000 |
G |
> 1000000 |
|
Текстовая версия отчета ненулевой картины модели согласуется с параметром ширины терминала, который может переустанавливаться командой EditjOptions. Таким образом, если ширина картины превышает ширину терминала, отчет может быть продолжен на дополнительных страницах.
В графической версии отчета ненулевой.картины приводятся имя модели, ее размерность и, если пространство позволяет, имена строк слева и имена переменных сверху матрицы. Отрицательные коэффициенты представлены красными прямоугольниками, а положительные голубыми. Если в прямоугольнике есть свободное пространство, то также будет показано действительное значение коэффициента. Различие между графической и текстовой версией отчета ненулевой картины в том, что графическая версия не имеет значений правых частей и направления цели, но она включает точные числа наибольших коэффициентов.
Для иллюстрации возьмем модель небольшой транспортной задачи с ограничениями пропускной способности по двум коммуникациям (рис. 19).
Выбрав в диалоговом окне команды оба отчета, получим их в виде, представленном на рис. 20.
40