close

Вход

Забыли?

вход по аккаунту

?

команды LINDO

код для вставкиСкачать
Приложение 1
Список команд, используемых в иЦ\Т)0.
1) Информация
HELP
Команда "НЕLР" используется, чтобы вывести общую информацию о LINDO. Чтобы получить помощь по определенной команде напечатайте " НЕLР command", где "command" - интересующая Вас команда.
-Сот
Выдает список всех команд LINDO, сгруппированных по категориям.
- lосаl
Дает информацию о версии программы, которую Вы используете.
- саt
Выдает категории команд и список команд в выбранных категориях.
- Time
Отображает на экране процессорное время.
-datа
Отображает на экране текущую дату и время.
2) Ввод
- тах/тin
Эти команды используются, чтобы ввести LР модель, состоящую из целевой функции, которая будет (Макс) имизироваться или (Минимизироваться согласно списку ограничений.
Введите "Мах" или "Мin" в начале первого ряда (целевая функция) в естественном формате. Затем введюе "Subject to" перед остальными рядами (ограничениямй). После записи ограничений наберите "Епd", чтобы возвратиться в режим комманд. Далее вы можете дать команду "GО", чтобы начать оптимизацию.
Имена переменных могут быть от 1 до 8 символов, и должны начаться с буквы. Коэффициенты не могут быть в показательной форме. Например, коэффициенты подобно. 258Е + 29 не допускаются. Количество значимых цифр в любом коэффициенте - приблизительно 6-5. Ключевые слова ("Мах", "st", "ins"...) и строки должы разделяться одним или более пробелами(blanks). Пробел может быть включен в пределах ряда, но не может быть вставлен в именах переменных или коэффициентах. Перевод каретки эквивалентен пробелу .
Далее приведены два правильных способа ввода одной и той же задачи:
1) МIN 2Х + ЗY SUBJЕСТ ТО -5Х - 2Х <=10
+10X - Y > 5ЕND
2) МIN 2Х + 3Y SТ -5Х - 2X
<10
10Х - Y > +5 ЕND
Ограничению может быть присвоено имя, например: (DEMAND)10X-У>5
-Retr
Загружает модель с диска. LINDO запросит имя файла или предложит выбрать файл из списка. Восстанавливаемая модель должна предварительно быть сохранена командой "SAVE".
- Rmps
Вводит задачу из файла в формате МРS (См. руководство IВМ МРSХ для получения более подробной информации.)
- take
Позволяет ряд команд взять из файла. Содержание файла должно соответствовать терминальному вводу, например, файл не может содержать номера линий. Последней командой в файле должна быть "LEAVE". - Leave
Команда "Leave" сообщает о конце ввода из "Take"-файла. Она должна быть последней командой влюбом Take-файле.
- Rdbc
Пытается получить начальное решение текущей модели из предыдущего решения, сохраненного командой "sdbc"
-Fbr
Восстанавливает базис из файла, сохраненного командой FBS. Формулировка, соответствующая этому базису должна быть в памяти.
- Fins
Восстановливает базис.сохраненный в формате МРS Punch. Формулировка, соответствующая этому базису должна быть в памяти.
3) Отображение на экран
-Рiс
Дает сокращенную картину коэффициентов LР матричной формы. Это полезно для отладки модели. Следующий код используется, чтобы представить числа:
Z.000000 THRU.000001
Y.000001 THRU.000009
X.000010 THRU.000099
W.000100 THRU.000999
V.001000 THRU.009999
U.010000 THRU.099999
T.100000 THRU.999999
A 1.000001 THRU 10.000000
B 10.000001 THRU 100.000000
C 100.000001 THRU 1000.000000
D 1000.000001 THRU 10000.000000
E 10000.000001 THRU 100000.000000
F 100000.000001 THRU1000000.000000
G1000000
- tabl
Печатаются коэффициенты текущей сиплекс- таблицы.
- look
Используйте "LOOK", чтобы исследовать всю или часть текущей модели. " LOOK АLL " чтобы исследовать всю модель. " LOOK row1, row2" Все коэффициенты будут округлены до 5 -го десятичного места. Существует предел до 9 цифр, напечатнных в обязательной части коэффициента. Все большее по размеру будет напечатано как *****.
- Monz
Печатает решение в краткой форме, состоящее только из ненулевых переменных и базисных рядов. Обратите внимание: "Мonz" не решает задачу, так что Вы должны сначала использовать команду "Go". Использование "Мonz" имеет смысл только, если Вы установили диалоговый режим "TERSE".
- Shos Тип " Shoc variable-name " используется, чтобы показать коэффициенты в колонке переменных.
- Solu
Печатает решение в стандартной форме. Чтобы записать его на диск, см. команду "DIVERT". Чтобы получить решение в краткой форме, см. "MONZ", "СРКI", и команду "RPRI".
- range
Печатает решение в диапазоне RHS и ОВJ коэффициентов.
- Bpic
Печатает логическую картину текущего базиса .используя строки последнего преобразования.
-cpri/rpri
Печатает отобранную информацию относительно столбцов (СРRI) или строк (RPRI). Формат для СРRI:
CPRI [/,][n] print - list : conditional - expression
Например,
CPRI N P : "MXXX" .AND. D > 0
Будет напечатано имя и основную значение(?) для каждой колонки с первым символом имени = М., четвертый символ = X, и большее нуля. Если "print-list" опущен, то только число matches печатается. Опция - /, вставляет запятую между полями вывода. Опция - /n подавляет заголовки решения. Символы столбца / строки
- DMPS
Отображает решение в формате MPS
- ppic
Допускаемая картина матрицы: строки и столбцы преобразуются таким образом, чтобы получить матрицу, в которой будет наибольшее число ненулевых коэффициентов, стоящих по диагонали.
4)Файловый вывод
- save
Сохраняет текущую модель в файле LINDO формата. Модель может быть восстановлена командой "RETR".
- dive
Вас спросят имя файла. Весь последующий вывод, например решение, будут заноститься в этот файл, пока не будет дана команда RVRT.
- Rvrt
Заставляет все результаты выводится на терминал. Отменяет команду "DIVERT".
- Smps
Сохраняет текущую модель в MPS формате
- Sdbc
Сохраняет результат в формате баз данных. Имя, значение, уменьшенная стоимость, переменный тип, sub, и SLB запомнены в формате (A8, 2g15. 8, A1, 2g15. 8).
- Fbs
Сохраняет текущий базис в файле. Команда Fbr восстанавливает его.
- Fpun
Сохраняет текущий базис в файле формата MPS Punch. Команда FINS восстанавливает его.
- Smpn
Сохраняет текущую модель в формате monstandard MPS; использует BN, LI и UI расширения.
5) Решение
- go
Решает текущую модель. В процессе решения модель остается без изменений. Положительное целое число, напечатанное после GO, интерпретируется как верхний предел числа pivots.
- Piv
Выполняется один шаг симплекс- метода . Если имя переменной напечатано после "Pivot" тогда эта переменная вносится в решение. Имя строки можно давать после имени переменной.
-Glex
Последовательная оптимизация: сначала оптимизируется 1-ая переменная в целевой функции . Затем она фиксируется и оптимизируется следующая переменная, и т.д.
6) Редактирование задачи
-Alt
Использование " Alter", чтобы редактировать текущую модель. Формат для команды - " Alter row-id var-id ". "Row-id" - id ряда, который Вы хотите редактировать, и "var-id" - имя переменной, чей коэффициент Вы хотите изменить. Lindo тогда спросит у Вас новое значение . Если Вы желаете изменить RHS, НАПРАВЛЕНИЕ, или ИМЯ строки используете "var-id" любую команду "RHS", "DIR", или "NАМЕ". Примечания:
- Имеющие силу направления для целевой функции - "МАХ" или "MIN"; Для всех других рядов используют "<" ", = ", или ">".
- Не пытайтесь удалить ряд командой "ALTER". Используйте "DELЕТЕ" для этого.
-Ехt
Разрешает Вам добавлять строки ограничений к предварительно определенной модели. Введите новые ряды, которые станут ограничивать целевую функцию. Не напечатайте ключевые слова "mах", "min", или "subject to". Новые ряды будут добавлены в конец модели. Укажите конец добавлений напечатав "END".
-Del
Тип " Delete row-id " используется чтобы удалить ряд "row-id" текущей модели. Вы не можете удалять целевую функцию.
-Sub
Тип " Sub var-id bound" используется чтобы ввести или изменить ограничения , налагающиеся на переменную, где " var-id" -имя переменной) и "bound", числовая связь. Для больших задач, subs более эффективен для объвления таких ограничений как:
Х<10.
-Аррс
Тип " АРРС var-id " применяют, чтобы добавить в конец модели новую колонку с именем "var-id". Согласно этому вводят строку и значение.разделенные пробелом. Конец ряда определяется вводом 0. Имя колонки "RHS" заставит вввод интерпретироваться как новый RHS.
-Slb
Тип " Slb var-id bound " используется, чтобы вводить или изменять ограничения переменной, где "var-id " - имя переменной и "bound", числовое ограничение. Для больших задач, SLBS более эффективен для заявления ограничений подобно:
Х>10.
- free
Ввод : FRЕЕ Х делает Х свободной переменной в текущей формулировке, то есть x{-,+}
- edit
Переключает LINDO в режим полноэкранного редактирования . Клавиши управления курсором могут использоваться, чтобы перемещаться по вашей модели. Другие возможности включают:
<НОМЕ> перемещение к началу текста модели
< Е N D> перемещение к концу текста модели
<РgUP> / <PgDn> перемещение на страницу вверх/вниз
Сntr - S перемещение к началу строки
Сntr - Е перемещение к концу строки
Сntr - right arrow перемещение к концу текущего слова
Сntr - left arrow перемещение к началу текущего слова
Размер модели при применении редактирования ограничен 65998 символами. Для моделей большего размера используют команды Alter, Del и ЕХТЕND.
7)Выход - quit
Используйте "Quit" для выхода из Lindo. Любая несохраненная модель будет потеряна!
8) Целочисленные, квадратичные, и параметрические программы
- Int
Команда Integer опознает переменные, значение которых 0/1 в модели, 1-ое "INTEGER n " где n - число этих переменных. LINDO требует, чтобы эти переменные описывались первыми в модели, 2-ая форма - " INTEGER var-id " где "var-id" - имя переменной. Когда дается команда GO , в LP решении печатается сначала найденное оптимальное решение.
- Qcp
"QСР" решает задачи квадратичного программирования. Например, мы желаем:
МIN ЗХ*Х + YY - Х*Y + .4Y
SТ
1.2Х+.9Y> 1.1
Х+Y=1
Y<7
Задача должна быть преобразована в линейную форму. Это требует, чтобы мы добавили двойную переменную для каждого реального ограничения. Мы будем использовать Rt, One, и Ul для нашего примера. Для QСР задач первый ряд (цель в LР) используется исключительно, чтобы определить порядок переменных, соответствующих порядку ограничений. Мы вводим нашу задачу следующим образом:
МIN X+Y + RТ + ОNЕ + UL
SТ
6 X - Y - 1.2RТ + ОNЕ > 0.
- Х + 2Y - .9RТ + ОNЕ +UL > -.4
Х + Y=1
Y < .7
ЕND
QСР ROW NO. OF FIRST REAL CONSTRAINT
4 GO
-раrа
Тип " PARA row-id new rhs " применяется чтобы проводить параметрический гпз анализ в строке "ROW-ID". "PARA" изменяет RНS этого ряда от текущей ценности до новой "new rhs" ценности, показывая оптимальную объективную ценность в при каждой замене. Задача должна быть оптимизирована перед использаванием команды "РАRА".
-Рosd
Проверяет, является ли подматрица ограничений, соответствующих квадратной форме "QСР", положительно определенной задаче.
-titan
Мощная команда для сжатия Iр/iр модели. Сначала сжимаются (если это возможно) верхние границы. Например:
2х+у< 12
-х + 2у<3
Команда выведет
SUB X 6
SUB Y 4.5
Во-вторых, она попробует сжать коэффициенты целочисленных переменных. Если дополнительно мы имеем:
ЗОW - ЗХ +2Y >3
Где w - 1/0, после сжатия получим :
21w-3х+2у>3
- Вiр
Тип " ВIP bound-val " используется, чтобы определить ограничения на "bound-val" переменные в самом плохом iр решение. Lindo тогда отбросит любую ветвь В& В дерева, чей узел имеет худшую ценность. Например, любое известное выполнимое решение может служить как "ВIР".
-gin
Команда GIN опознает переменные, которые должны быть целочисленными в модели, 1-ая форма - " GIN n " где n -число этих переменных. LINDO требует, чтобы эти переменные описывались первыми в модели, 2-ая форма - " GIN var-id " где "var-id" - имя переменной. Когда дают команду G0, печатается LР решение.
- lptol
Форма: IРТ0L F; Где F - неотрицательное значение. При поиске другого iр решения, будут рассматриваться только решения, которые имеют значение F лучшее, чем текущее.
9) Диалоговые параметры
- width
Тип " WIDTH n "используется, чтобы сообщить LINDO, что ваш терминал вмещяет n знаков по ширине. Например, " WIDTH 132 " указывает, что ваш терминал использует line printer width рареr.
- Теrs
Заменяет диалоговый стиль на краткий, например, э автоматически не печатается оптимальное решение. Пользователь может получить решение командами "МОNZ", "СРRI", или "RPRI". "VERBOSE" отменяет этот режим.
- verb
Преобразует стиль "TERSE" в "VERBOSE" стиль.
-bat
Устанавливает диалоговый способ to batch. Если Вы выполянете работу по шагам, это делает результат(output) более удобочитаемой и позволяет остановится при первой ошибке.
-раgе
Устанавливает страницу или размер экрана в линиях. Например, раде 24 сделает паузу перед распечоткой 24-ой строки сообщения. Нажатие "Еnter" распечатает следующую часть линий. Страница 0 устанавливает размер в бесконечность и соответствует терминалам твердой копии.
-Раиs
Используется take-файле, делает паузу пока не будет нажат "Еnter". Любой текст после паузы выводится на терминал.
10) Пользовательские подпрограммы
- user
Выполняет пользовательские подпрогрммы вызываемые пользователем
Является текущим модулем ввода. Разнообразные подпрограммы в пределах lindo, который может вызывать пользователь:
1) Создать модель,
2) Изменить существующую,
3) Решить модель,
3) Восстановить информацию решения. Чтобы получить более подробную информацию см. руководство пользователей.
11) Разное
-INV
Инвертирует текущий базис. Результаты имеют тенденцию быть немного более точными.
-Stat
Дает stats текущей модели, например, номера или строки и столбцы.
-bug
Сообщения об ошибках или информационный запрос должен быть послан по адресу:
LINDO SYSTEMS, INC
P. O. BOX 148231
CHICAGO, IL 60614
TEL: 312-871-2524
- deb
Если модель не имеет решения из-за ошибки в коэффициенте ограничения или RHS, отладка идентифицирует самый маленький набор ограничений, которые должны быть восстановлены, называемый необходимым набором. Он может также идентифицировать предмет этого набора, называемого достаточным набором, изменение любого из которых приведет к устранению неисправности.
Для неограниченных моделей, отладка опознает необходимые и достаточные наборы переменных, изменение которых заставит модели стать ограниченными.
Отладка не может использоваться для целочисленных или квадратичных моделей.
-set
Позволяет Вам повторно устанавливать внутренние параметры LINDO. Форма:
"SET param - id"
Доступные параметры:
Param - idPurpose
1final constraint tolerance
2initial constraint tolerance
3entering varaible reduced cost tolerance
4fixing threshold for ip varaibles
5pivot size threshold
6do ip preprocessing, 0 means NO; >0 : YES
7do scaling, 0 means NO; >0 : YES
8display status window, 0 means NO; >0 : YES
- titl
TITL "ТЕХТ"
Связывает "ТЕКСТ" с текущей задачей. TITL Отдельно показывает текущее название. MPS-формат.
MPS - формат используется для записи/хранения численной информации в файлах удобных как для ЭВМ так и наглядных для человека.
Ниже приводится программа преобразования поставленной задачи в задачу в МРS - формате
Uses Crt;
Const m=7
N=10
A: array[2..n+1] of integer = (7,3,5,7,5,5,7,5,8,1);
B: array[n+2..m+n+1] of integer = (6,7,9,11,3,2,4);
C: array[1..n,1..m] of integer = ((4,4,4,5,4,7,5),
(3,4,6,6,4,6,4),
(7,7,6,5,3,4,8),
(5,6,8,2,5,6,4),
(4,5,7,9,6,7,8),
(4,6,7,8,7,8,7),
(8,5,4,9,4,5,3),
(1,3,5,6,8,4,4),
(6,7,6,7,8,6,5),
(9,6,7,6,7,7,5));
aa: array[1..n,1..m] of integer = ((7,8,6,3,5,5,7),
(6,4,4,6,8,9,3),
(4,6,7,9,3,4,6),
(8,10,13,15,17,12,10),
(6,7,8,9,9,8,6),
(6,5,3,7,3,5,12),
(4,7,8,10,13,9,12),
(8,10,10,9,8,7,5),
(6,8,7,8,10,12,8),
(9,8,8,10,7,8,9));
var f: text;
s:string;
Procedure Replace(s1: string; var s:string; i:integer);
Var j: integer;
Begin
For j:=i-byte(s1[0]) to i-1 do begin
S[j]:=s1[j-i+byte(s1[0]+1];
End;
End;
Procedure Replace1(s1: string; var s:string; i:integer);
Var j: integer;
Begin
For j:=i to i+byte(s1[0])-1 do begin
S[j]:=s1[j-i+1];
End;
End;
Procedure Row (i:integer; var S1:string);
Var j: integer;
Begin J:=(i+m) div m;
If ((i+m) mod m)<>0 then inc(j);
Str(j,s1);
End;
Procedure Row1 (i:integer; var S1:string);
Var j: integer;
Begin J:=i mod m;
If j=0 them j:=m;
J:=j+n+1;
Str(j,s1);
End;
Procedure DoMPSFile;
Var s,s1,ss: string;
I,k : integer;
Begin
Assign(f,'1.mps');
Rewrite(f);
S:='NAME';
Writeln(f,s);
S:='ROWS';
Writeln(f,s);
S:=' N 1 ';
Writeln(f,s);
For i:=2 to n+1 do begin
Str(i,s);
S:=' G'+s;
Writeln(f,s);
End;
For i:=n+2 to n+m+1 do begin
Str(i,s);
S:= ' L'+s;
Writeln(f,s);
End;
S:='COLUMNS';
Writeln(f,s);
For i:=1 to m*n do begin
Str(i,s);
S1:='Y'+s1;
S:=' 1 .0000000';
Replace1(s1,s,5);
Ss:=s;
K:=(i-1)div m+1;
Str(c[k,i-(k-1)*m],s1);
Replace(s1,s,29);
Writeln(f,s);
S:=ss;
Row(i,s1);
Replace1(s1,s,15);
K:=(i-1) div m+1;
Str(c[k,i-(k-1)*m],s1);
Replace(s1,s,29);
S:=ss;
Row(i,s1);
Replace1(s1,s,15);
K:=(i-1) div m+1;
Str(aa[k,i-(k-1)*m],s1);
Replace(s1,s,29);
S:=ss;
Row(i,s1);
Replace1(s1,s,15);
S1:='1';
Replace(s1,s,29);
Writeln(f,s);
End;
S:='RHS';
Wrileln(f,s);
For i:=2 to n+1 do begin
Str(i,s1);
S:=' RHS 2 .0000000';
Replace(s1,s,15);
Str(a[i],s1);
Replace(s1,s,29);
Writeln(f,s);
End;
For i:=n+2 to n+m+1 do begin
Str(i,s1);
S:=' RHS 2 .0000000';
Replace(s1,s,15);
Str(b[i],s1);
Replace(s1,s,29);
Writeln(f,s);
End;
S:='ENDATA'
Writeln(f,s);
Close(f);
End;{DoMPSFile}
Begin
DoMPSFile;
End.
Программа обработки результатов, сохраненных в формате баз данных.
Uses Crt;
Const m=7;
N=10;
Var f:text;
Procedure WriteLP(s:string);
Var s1: string;
X: real;
Code: integer;
I: integer;
Begin
I:=1;
Repeat
Inc(i);
Until s[i]<>' ';
S1:=";
Repeat
S1:=s1+s[i];
Inc(i);
Until s[i]=' ';
Writeln(' :',s1);
Writeln(' ');
End;
Procedure WritePar(k:integer);
Var xx,yy: integer;
J:integer;
Begin
Xx:=whereX;
Yy:=whereY;
J:=(k-1) div m+1;
GotoXY(xx+3,yy);
Write(j);
J:=k-(j-1)*m;
GotoXY(xx+18,yy);
Write(j);
End;
Procedure WriteVar(s:string);
Var xx,yy:integer:
I,j,k,code: integer;
S1:stirng;
X:real;
Begin
Xx:=whereX;
Yy:=whereY;
I:=1;
Repeat
Inc(i);
Until s<>' ';
S1:=";
Repeat
If s[i] in ['0'..'9'] then
S1:=s1+s[i];
Inc(i);
Until s[i]=' ';
Val(s1,k,code);
Repeat
Inc(i);
Until s[i]<>' ':
S1:=";
Repeat
If s[i] in ['0'..'9','.','-','E'] then
S1:=s1+s[i];
Inc(i);
Until s[i]=' ';
Val(s1,x,code);
If x<>0 then begin
WritePar(k);
GotoXY(xx+29,yy);
Write(x:7:9);
Writeln;
End;
End;{WriteVar}
Procedure WriteSolution;
Var s:string;
Begin
Clrscr;
Assign(f,'3.mps');
Reset(f);
Readln(f,s)
WriteLP(s);
While not eof(f) do begin
Readln(f,s);
WriteVar(s);
End;
End;{WriteSolution}
Begin
WriteSolution;
End.
Документ
Категория
Рефераты
Просмотров
38
Размер файла
236 Кб
Теги
lindo, команды
1/--страниц
Пожаловаться на содержимое документа