Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Детальное обсуждение команд для Windows

Разработка более сложных моделей в LINGO 221 | Указатель LINGO | Представление модели в What’s Best | Связь с фирмой LINDO Systems | Ввод задачи в LINDO | Синтаксис модели | Оператор FREE | Операторы SUB и SLB | Графическое изображение ненулевых элементов | Принципы моделирования |


Читайте также:
  1. C2. Участвующие команды
  2. Doors and windows
  3. II. Личные и командные Первенства Университета среди студентов
  4. III. Команда Aperol Spritz угощает всех Aperol Spritz
  5. III. Команда Aperol Spritz угощает всех Aperol Spritz
  6. III. Команда AperolSpritz угощает всех AperolSpritz
  7. Microsoft Windows 8

 

Ниже приводится описание всех сгруппированных по категориям команд меню LINDO, доступных в Windows. Команды разбиты на шесть категорий, в соответствии с меню: File, Edit, Solve, Reports, Window и Help.

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

 

 

Каждая их «кнопок» на палитре инструментов соответствует некоторой команде меню. Но не все команды меню имеют соответствующую «кнопку» на палитре инструментов, хотя, в общем-то, наиболее часто используемые команды имеют соответствующие эквиваленты на палитре инструментов. Например, команда New (новый) из меню File для создания новой модели может быть доступна нажатием следующей кнопки в палитре инструментов: .

Меню File

Слева показано изображение выпадающего меню File. Оно содержит команды, имеющие отношение к операциям чтения и записи на диск файлов и данных из системы LINDO. Ниже каждая из этих команд рассмотрена детально.

 

New F2

Команда New открывает новое пустое окно модели. Вы можете вводить в него модель непосредственно или вставить текст из буфера обмена.

Open F3

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

В процессе выполнения команды Open вам откроется стандартное диалоговое окно File Open в виде:

Этот диалог имеет стандартные возможности для просмотра директорий на диске и поиска файлов. Единственным нестандартным для таких диалогов элементом является список типов файлов “ List files of type” в нижней левой части окна. Он позволяет пользователю указать один из четырех фильтров для выбора файлов: LINDO text (*.ltx), LINDO Packed (*.lpk), MPS (*.mps) и All files (*.*). Первые три типа соответствуют трем различным форматам, поддерживаемых LINDO для сохранения моделей. В большинстве случаев мы рекомендуем использовать текстовый формат LINDO text (*.ltx). При этом модель будет сохранена точно в том виде, как она отображалась на экране. Относительно особенностей других форматов см. ниже команду Save.

После выбора файла LINDO исследует его, чтобы определить формат, в котором он был записан. Если модель записана в текстовом формате LINDO Text или в некотором неизвестном формате, она непосредственно считывается в LINDO безо всяких изменений. Файлы в форматах MPS и LINDO Packed конвертируются сначала к их эквивалентам записи уравнений в текстовом формате. Например, читатели, знакомые с форматом MPS, обнаружат, что при чтении следующего MPS-файла:

 

NAME

ROWS

N 1

L 2

L 3

L 4

COLUMNS

X 1 20.0000000

X 2 1.0000000

X 4 1.0000000

Y 1 30.0000000

Y 3 1.0000000

Y 4 2.0000000

RHS

RHS 2 50.0000000

RHS 3 60.0000000

RHS 4 120.0000000

ENDATA

LINDO конвертирует модель в более подходящий текстовый формат, прежде чем выведет его на экран в виде:

 

 

LINDO сохраняет разметку исходного формата файла. Так, когда вы сохраняете модель, LINDO будет использовать исходный формат (в данном случае MPS), если вы только не укажите что-либо иное.

View F4

 

Команда View читает ранее сохраненную модель с диска и помещает ее в окно просмотра (View Window). В отличие от команды Open, использующей окно редактирования (Edit Window), которое ограничено 64000 символами, команда View может читать файлы любого размера в пределах доступной памяти компьютера.

Команда View прежде всего полезна для просмотра моделей до того, как они будут отправлены в решатель. Хотя вы и можете прочитать в окно просмотра большие модели, у вас при этом не будет всех возможностей окна редактирования. Вы можете прокручивать содержимое окна просмотра, использовать команду Go to (перейти к …), чтобы перейти к нужной строке, использовать команду Find/Replace для поиска и замены выделенной строки. Если вам необходимо отредактировать большую модель, мы советуем использовать внешний текстовый редактор (типа MS Word) для внесения требуемых изменений, и затем только загрузить его в окно просмотра LINDO. При использовании внешнего текстового редактора обязательно сохраните модель в формате “Text Only” (только текст). Иначе LINDO не сможет прочитать ваш файл.

За указанным исключением в использовании окна просмотра, команда View работает точно также как и команда Open. Обратитесь непосредственно к документации, чтобы более детально представить функционирование команды View.

 

Save F5

Save As F6

 

Команды Save и Save As записывают содержимое активного окна в файл на диске. Первая из них использует при записи текущее имя модели, в то время как Save As предлагает пользователю самому указать имя файла. В момент выполнения команды Save As вы увидите стандартное диалоговое окно в виде:

 

 

Это диалоговое окно имеет стандартные элементы, позволяющие передвигаться по файловой системе на диске. Единственным нестандартным элементом является выпадающий список “File Format” в его левой нижней части. При сохранении модели вы можете выбрать один из трех форматов. Выпадающий список “File Format” используется для выбора нужного формата.

В следующей таблице описаны доступные форматы:

 

Формат Расширение Описание
LINDO Text *.ltx Содержимое окна сохраняется в текстовом формате точно в том виде, как оно появляется на экране. Применима для окна модели, окна отчета и командного окна. Комментарии и специальное форматирование сохраняется.
LINDO Packed *.lpk Модель сохраняется в специальном упакованном формате. Файл является по свой природе текстовым и может быть легко перенесен на другие платформы, но содержимое является нечитаемым для других текстовых редакторов. Команда применима только для окна модели. Все комментарии и специальное форматирование обрезаются перед сохранением.
MPS *.* Модель сохраняется в формате промышленного стандарта MPS. Он является достаточно неэффективным с точки зрения требуемого места на рабочем диске и довольно труден для интерпретации. Преимущество этого формата в том, что является широко распространенным стандартом для оптимизационных моделей. Применим только для окон моделей. Все комментарии и специальное форматирование обрезаются.

 

Отметим, что окно Отчета и Командное окно могут быть сохранены только в текстовом формате *.ltx. Окно модели может быть сохранено в любом из трех указанных форматов.

 

Замечание: Форматы LINDO Packed и MPS не поддерживают комментарии и специальное форматирование (например, знак табуляции и пробелы). Имейте это в виду, если придется сохранять модель в одном из этих форматов, что все комментарии будут обрезаны и LINDO переформатирует модель.

 

Кроме того, когда файлы типа *.lpk и *.mps будут читаться обратно в LINDO, они автоматически будут транслироваться в текстовый формат *.ltx, до того как будут выведены на экран. Использование же формата *.ltx позволит избежать этого дополнительного этапа транслирования. По этим причинам мы рекомендуем всегда пытаться сохранять модели, используя формат *.ltx.

 

Close F7

 

Команда Close закрывает активное окно. Если в него были внесены изменения, то вас попросят подтвердить, сохранять ли изменения перед закрытием.

 

Замечание: Вы потеряете все изменения, внесенные к этому моменту, если закроете окно без сохранения.

Print F8

Команда Print посылает содержимое активного окна на принтер. Вы можете печатать любой тип окна — Модели, Отчета или Командное Окно. Если, по тем или иным причинам, печать выполнена неправильно или с неудовлетворительным качеством, может возникнуть необходимость определить установки принтера с помощью команды Printer Setup (см. ниже).

Printer Setup F9

Команда Printer Setup выставляет вам стандартное диалоговое окно Windows. Оно позволяет контролировать многие параметры, влияющие на характер печати документа. Печать в LINDO достаточно проста, так что многие из этих параметров нет нужды использовать. В целом, нет особой необходимости использовать эту команду, если вы уже достаточно успешно выполняли печать на своем компьютере.

 

Log Output F10

Команда Log Output предлагает вам ввести имя файла, в который будет направляется содержимое всех окон отчета. Она полезна для образования копий на диске процесса решения и отчетов о диапазонах. Эти файлы-журналы можно читать в других приложениях или отправить на принтер.

При выборе команды Log Output появится следующее диалоговое окно:

Оно является стандартным Windows-диалогом, позволяющим выбрать конкретный файл для журнала отчета. Следует, однако, обратить внимание на два дополнительных элемента в его правом нижнем углу. Это два поля с метками “Echo to screen” (Эхо на экран) и “Append output” (Добавить вывод). По умолчанию в обоих полях отметки сняты.

Если вы оставите поле “Echo to screen” без отметки, то вывод будет направлен непосредственно в файл журнала, а не в Окно Отчета (Report Window). Отметка в этом поле заставит направлять вывод как в файл, так и на экран в Окно Отчета. Если вы направляете длинное решение непосредственно на диск, пользуясь командой Log Output, процесс может быть существенно ускорен за счет подавления параллельного вывода в Окно Отчета.

Если в поле “Append output” отметка снята, любой выбранный файл журнала отчета будет перезаписан и его старое содержимое стерто. LINDO выставит вам предупреждение о перезаписывании существующего файла с журналом отчета. Если в этом поле поставить отметку, вывод будет добавляться в конец существующего файла.

Команда Log Output работает как «переключатель». Когда вы первый раз выбираете ее, вы открываете файл для вывода журнала отчета. Пока этот файл открыт, возле команды в меню File будет стоять отметка, указывая, что вы находитесь в режиме Log Output. Выберите повторно эту команду и файл журнала закроется, а отметка возле команды будет убрана из меню.

В качестве примера предположим, что вы хотите создать на диске файл с копией отчета о решении для активного окна. Во-первых, решите модель, использую команду Solve из меню Solve. Затем выберите команду Log Output из меню File, чтобы открыть файл журнала отчета. После того, как вы открыли файл отчета, снова выберите меню File, дождавшись раскрытия его выпадающего подменю, и обратите внимание на появившуюся отметку у команды Log Output, сигнализирующую о том, что вы находитесь в соответствующем режиме. Теперь файл отчета открыт, но пока не содержит никаких данных. Чтобы исправить это, выберите команду Solution из меню Reports. При этом решение будет послано в файл отчета (напомним, что решение не будет появляться на экране, если не была установлена отметка в поле “Echo to screen” в диалоговом окне Log Output). Наконец, закройте файл журнала отчета, снова выбрав команду Log Output. Теперь вы имеете копию отчета о решении, пригодную для различной дальнейшей работы, такой как его печать, вставка в свой отчет или загрузка в какой-либо текстовый редактор.

 

Запись длинного сеанса

 

После запуска LINDO все сообщения направляются в окно отчета (Reports Window). Каждая нова строка вывода добавляется ко всем предыдущим, выведенным в это окно. Но оно может вместить только до 64000 символов. После того, как достигается этот предел, LINDO уничтожает предыдущий вывод, начиная с верхней строки окна отчета, чтобы освободить место для последующего вывода в нижней его части. Если вы захотите сохранить целиком отчет о всем сеансе работы, который превышает 64000 символа, просто откройте перед началом работы файл с журналом отчета и поставьте отметку в поле “Echo to screen” в диалоге Log Output. Все выводы по-прежнему будут направляться в окно отчета и дублироваться в выбранном файле. После окончания сеанса LINDO копия отчета обо всем сеансе будет содержаться в файле журнала отчета.

Take Commands F11

 

LINDO для Windows поддерживает командный язык для построения командных файлов или макросов. Доступные для этого команды рассмотрены подробно в главе 3 «LINDO for Command-line Environments» руководства пользователя. Если вы построили командный файл, вы должны запустить его командой Take Commands.

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

Такой файл со сценарием программы может выглядеть так:

LINDO

BAT

! транспортная модель с тремя складами и 4 потребителями:!

! XWH<i>C<j> = количество товара, отправляемого со клада warehouse <i>

! к потребителю customer <j>

MIN 6 XWH1C1 + 2 XWH1C2 + 6 XWH1C3 + 7 XWH1C4

+ 4 XWH2C1 + 9 XWH2C2 + 5 XWH2C3 + 3 XWH2C4

+ 8 XWH3C1 + 8 XWH3C2 + XWH3C3 + 5 XWH3C4

SUBJECT TO

! Ограничения на потребности:

C1) XWH1C1 + XWH2C1 + XWH3C1 >= 10

C2) XWH1C2 + XWH2C2 + XWH3C2 >= 17

C3) XWH1C3 + XWH2C3 + XWH3C3 >= 22

C4) XWH1C4 + XWH2C4 + XWH3C4 >= 12

! Ограничения на запасы поставщиков:

WH1) XWH1C1 + XWH1C2 + XWH1C3 + XWH1C4 <= 30

WH2) XWH2C1 + XWH2C2 + XWH2C3 + XWH2C4 <= 25

WH3) XWH3C1 + XWH3C2 + XWH3C3 + XWH3C4 <= 21

END

! решим модель

TERSE

GO

! решение

DIVERT SOLU.10

SOLU

RVRT

! установим значение RHS для C1 равным 15, заново решим задачу и сохраним отчет

ALT C1 RHS

TERS

GO

DIVERT SOLU.15

SOLU

RVRT

! Положим RHS для C1 равным 20, заново решим и сохраним отчет

ALT C1 RHS

TERS

GO

DIVERT SOLU.20

SOLU

RVRT

BAT

LEAVE

 

Чтобы заставить LINDO выполнить команды из этого файла, просто используйте команду Take Commands и введите имя файла в ответ на приглашение. Для более глубоко понимания того, как работает команда Take Commands, обратитесь к главе 7 «Running Command Script with TAKE Commands» руководства пользователя.

 

Basis Save Shift+F2

 

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

Сохраненные этой командой решения отличаются от отчета о решении, который LINDO генерирует командой Solution. В общем, решения, сохраненные командой Basis Save, трудны, если не сказать невозможны, для интерпретации. Они предназначены прежде всего для последующей загрузки в LINDO с целью их использования в качестве стартовой точки при создании аналогичной модели.

Предполагая, что вы сохранили активную модель, можно сохранить решение в любой точке ее выполнения командой Basis Save. Когда вы запустите эту команду, появится диалоговое окно примерно в таком виде:

 

Оно является стандартным диалогом Windows для выбора сохраняемого файла. Выбрав файл, в котором будет сохранен базис, вы должны также выбрать формат этого файла. LINDO для этих целей поддерживает три различных базисных формата:

*Punch MPS “Punch” формат

*FBS “ F ile B asis S ave” формат

*SDBC “ S ave D ata B ase C olumn” формат

 

Внутренние детали этих форматов мало интересны. Имейте, однако, в виду, что лучшие результаты будут получены при использовании форматов Punch или FBS. Формат SDBC не сохраняет все необходимые детали истинного базиса, а предлагается для поддержки совместимости с ранними версиями LINDO.

Сохранение базиса, в общем то, мало эффективно при решении целочисленных задач или квадратичных моделей.

Относительно чтения в модель сохраненного решения см. следующую команду Basis Read.

 

Basis Read F12

 

Команда Basis Read используется для того, чтобы вернуть ранее сохраненное решение в модель. О том, как сохранять решение, см. предыдущую команду Basis Save.

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

 

 

Оно является стандартным диалоговым окном Windows, позволяющим выбрать файл для чтения. Вы можете использовать выпадающий список в нижней левой части диалогового окна для выбора фильтра, основанного на трех форматах, используемых LINDO для хранения базисов:

 

*Punch MPS “Punch” формат

*FBS “ F ile B asis S ave” формат

*SDBC “ S ave D ata B ase C olumn” формат

 

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

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

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

 

Title Shift+F3

 

Вы можете присвоить модели заголовок. В следующем примере мы продублировали название модели в ее заголовке “Product Mix Example”:

 

 

Выполнение команды Title пошлет заголовок в окно отчета (Report Window), в результате вы увидите в этом окне:

 

 

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

 

Date Shift+F4

Команда Date посылает в окно отчета текущую дату и время. Это бывает полезным для того, чтобы отметить отчет соответствующей датой. Ниже приведен пример вывода даты в окно отчета:

 

 

Elapsed Time Shift+F5

Команда Elapsed Time посылает в окно отчета время, прошедшее с начала текущего сеанса LINDO. Ее полезно использовать для определения времени решения. Ниже показан пример вывода, осуществляемого этой командой:

 

 

В этом примере LINDO работает 17 минут и 12.11 секунды.

 

Exit Shift+F6

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

 

Замечание: Все изменения, сделанные в модели, будут утеряны, если вы ее не сохраните (см. команду SAVE).


2. Меню Edit

 

Меню Edit показано слева. Оно содержит команды, которые в целом поддерживают возможности полноэкранного редактирования в LINDO. Каждая из команд подробно рассматривается ниже. Прежде, чем перейти к их детальному рассмотрению, полезно в данный момент обсудить самые общие свойства редактора LINDO.

 

Имеются две команды в меню File, которые открывают модель в LINDO. Это команды Open и View. Когда вы считываете модель с помощью команды Open, она помещается в окно редактирования (Edit Window). Если же модель считывается с помощью команды View, то она помещается в окно просмотра (View Window). Можно определить, находится ли модель в окне просмотра, посмотрев на полосу заголовка окна. Если она действительно находится в окне просмотра, то после имени файла в заголовке появляется дополнительно символ “(v)”.

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

 

Средство редактирования Окно просмотра Окно редактирования
Допустимый размер Ограничено только доступной памятью 64 K
Undo   n
Cut   n
Copy   n
Paste   n
Clear   n
Find/Replace n n
Go To Line n n
Paste Symbol   n
Select All   n
Clear All   n
Choose New Font n n

 

Если возникает необходимость использовать расширенные возможности редактирования большой модели, мы рекомендуем использовать для этого внешний редактор. Во внешнем редакторе модель должна быть сохранена в текстовом формате “Text Only”. Если это сделано, то модель может быть затем прочитана в LINDO с помощью команды View.

 

Undo Ctrl+Z

Команда Undo используется, чтобы отменить последнее действие в окне редактора. Она недоступна в окне просмотра. Обсуждение различий между командами Open и View можно найти выше в описании этих команд в разделе «меню File».

Cut Ctrl+X

Команда Cut используется для того, чтобы вырезать выделенный текст в окне редактирования и поместить его в некоторое другое место окна. Удаляемый текст помещается в буфер обмена Window и может быть помещен в другое приложение или другие окна в LINDO. Чтобы выделить текст, предназначенный для вырезания, просто нажмите левую клавишу мыши в начальной точке текста и, не отпуская ее, протащите мышь до конца требуемого текста и затем отпустите клавишу мыши. Выделенный текст после этого будет на экране в инверсном виде (белые буквы на черном фоне). Выбор команды Cut в этот момент приведет к удалению выделенного текста с экрана и помещению его в буфер обмена. (Для последующей вставки этого текста в нужное место см. ниже команду Paste).

 

Copy Ctrl+C

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

Paste Ctrl+V

Команда Paste вставляет текст из системного буфера обмена в текущую позицию курсора в окне редактирования. Если в момент выбора команды какой-то текст был выделен, он будет удален и заменен текстом из буфера обмена. С помощью этой команды вы можете в LINDO вставлять только текст. Графику вставлять не разрешается.

Clear Del

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

Замечание: Текст, удаляемый команд Delete или с помощью клавиши Del, не помещается в буфер обмена и будет безвозвратно потерян. Его нельзя возвратить командой Undo.

 

Find/Replace Ctrl+F

Команда Find/Replace может быть использована как в окне редактирования, так и в окне просмотра для поиска указанной строки текста и, если есть желание, для замены ее другой строкой текста. После вызова этой команды на экране появится следующее диалоговое окно:

 

 

Если вы всего лишь хотите найти сроку текста, введите ее в поле с именем “Find What”

И нажмите клавишу “Find Next”. LINDO начнет поиск с текущей позиции курсора. Если вы хотите начать поиск с начала файла, поместите курсор в начало файла до активации команды.

Если вы хотите заменить искомую строку другой, введите замещающий текст в поле с именем “Replace With” и нажмите затем кнопку Replace. После первого нажатия этой кнопки LINDO просто перейдет к следующему появлению искомой строки. Повторное нажатие этой кнопки приведет к замене строки текста и к переходу к следующему появлению искомой строки. Используя этот прием, можно пройтись по всему окну, нажимая кнопку Replace, когда вы хотите заменить текст, или нажимая кнопку Find Next, чтобы пропустить следующее появление найденного текста без замены.

Чтобы заменить все появления искомого текста с текущей позиции до конца файла, нажмите кнопку Replace All. После выполнения команды LINDO информирует вас о том, сколько было выполнено замен.

По умолчанию LINDO игнорирует различие в нижнем и верхнем регистре при выполнении команды Find/Replace. Если вы хотите учитывать регистр при поиске строки, поставьте отметку в поле Match Case в левом нижнем углу диалогового окна до выполнения команды.

 

Options Alt+O

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

 

 

Установленные параметры системы действуют в течение всего сеанса LINDO. Если вы изменили некоторые параметры и хотите их сохранить до следующего сеанса, нажмите кнопку “Save”. Это приведет к сохранению установленных параметров, так что они могут быть восстановлены при повторном запуске LINDO. Если в какой-то момент вы захотите возвратиться к установкам по умолчанию, нажмите кнопку “Deafault”. Параметры по умолчанию рассматриваются подробно ниже.

Параметры настройки системы LINDO делятся на две категории:

I. Optimizer Options (Опции оптимизации) — которые имеют отношение к функционированию решателя

A. Integer Programming (IP) (Целочисленное программирование)— опции, влияющие на решатель целочисленных моделей

B. General (общие) — которые определяют влияние на работу решателя для всех моделей.

II. Output Options (опции вывода) — влияющие на характер вывода в LINDO.

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

 

Optimizer Options

Группа “Optimizer Options” диалогового окна содержит все опции, оказывающие влияние на работу оптимизатора. Она состоит из двух подгрупп: “Integer Programming” и “General”. Группа Integer Programming оказывает влияние на то, как решатель метода ветвей и границ обрабатывает целочисленную модель. Группа General имеет отношение к выбору пути, которым обрабатываются все классы моделей — линейные, целые и квадратичные.

 

Опции оптимизатора Integer Programming (IP)

 

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

 

· Препроцессорной обработки

· Выбора предпочтительного направления ветвления

· Точность оптимальности IP

· Точность фиксированных переменных

 

Многие из рассматриваемых здесь опций предполагают некоторые знания об алгоритме метода ветвей и границ решения задач целочисленного программирования. Если вы не знакомы с этим алгоритмом и хотите узнать о нем немного больше, можете обратиться к книге «Optimization Modeling with LINDO» компаньона нашей фирмы Лайнуса Шрейджа.

 

Preprocess

Первичная необязательная фаза целочисленного решателя в LINDO известна как препроцессорная обработка задачи. Во время этого этапа решатель производит расширение модели, добавляя отсечения. Отсечения представляют собой всего лишь вырезания из области решений, расширенной до непрерывной модели (то есть модели, в которой целочисленность отбрасывается), тех областей, которых не содержится в допустимой области целочисленной модели. В большинстве целочисленных задач эта процедура состоит из двух моментов. Во-первых, решения непрерывной задачи стягивается по возможности к наиболее естественному целому значению. Поэтому целочисленный решатель метода ветвей и границ должен будет выполнять всего по нескольким переменным. Во-вторых, границы, которые выходят за пределы решения в промежуточных узлах будут иметь тенденцию «устливаться», позволяя решателю заранее «прозондировать» некоторые ветви (то есть вывести их рассмотрения). Эти усовершенствования могут существенно ускорить решение многих моделей.

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

В таких случаях лучше пропустить препроцессорную стадию.

LINDO по умолчанию выполняет препроцессорную обработку.

 

Prefered Branch

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

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

 

IP Optimality Tolerance (точность оптимальности)

Параметр IP Optimality Tolerance определяет коэффициент f, который указывает решателю, что он должен разыскивать решение с целевым значением, в 100* f % раз лучшим по сравнению с найденным на предыдущих шагах. Эффект от использования этого параметра двоякий. Во-первых, положительным является то, что при этом время решения может значительно сократиться. С другой стороны, использование этого коэффициента может привести к тому, что LINDO не сможет найти оптимальное решение и вы не получите об этом никакого уведомления. Вы гарантируете, однако, что решение будет в пределах 100* f % от оптимального. Для больших моделей альтернатива получить оптимальное решение с точность 2% за несколько минут или ждать получение истинного оптимального значения в течение нескольких дней делает использование этого параметра достаточно привлекательным.

В качестве иллюстрации использования параметра IP Optimality Tolerance, рассмотрим следующую целочисленную модель:

 

 

По умолчанию LINDO не использует параметр IP Optimality Tolerance. Если работать с установкой по умолчанию, то после завершения решения окно состояния решателя будет содержать следующую информацию:

Отметим, что потребовалось 10,064 итераций, 1,715 ветвлений и 19 секунд для получения решения. Теперь установим значение параметра IP Optimality Tolerance, равное 0.01, в диалоговом окне:

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

 

Теперь решение получено всего за 74 итерации, потребовалось 7 ветвлений и всего 2 секунды. Истинное оптимальное значение 8,929,390 всего лишь на 0.002% лучше значения 8,929,170, найденного при установленном значении параметра IPTOL. Это различие, примененное для больших моделей, может приводить к огромной экономии расчетного времени.

По умолчанию для этого параметра установлено значение “None”, то есть другими словами действие параметра отключено.

 

IP Objective Hurdle (барьер для оптимального значения)

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

В качестве примера рассмотрим следующую модель целочисленного программирования:

 

 

Решение задачи без установленного значения барьера даст следующий результат работы решателя:

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

и затем заново решим модель, то получим следующий результат:

Отметим, что общее количество итераций уменьшилось более чем на 50%, с 68 до 32. Такое уменьшение может существенно помочь при решении больших моделей. Однако, если установить слишком жесткий барьер, то LINDO может вернуть сообщение о недопустимости решения. В только что рассмотренном примере установка барьера, равного 16, будет недопустимым, ибо значением целевой функции является всего лишь 15.

По умолчанию для параметра IP Objective Hurdle установлено значение “None”, другими словами эта опция отключена.

 

IP Variable Fixing Tolerance
(точность вычисления фиксированных переменных)

LINDO начинает решение IP-модели с решения линейного ослабления исходной целочисленной задачи. Оно сводится всего лишь к отмене ограничений на целочисленность и решению получившейся модели как обычной задачи линейного программирования. Вы можете при желании поручить LINDO исследовать решение с ослабленными ограничениями на целочисленность с целью определения, принимают ли целочисленные переменные целые значения, с помощью приведенных затрат. LINDO вначале фиксирует эти переменные в целых значениях, полученных на этапе линейной релаксации, и проводит оптимизацию по ограниченному дереву метода ветвей и границ. Лежащая в основе этого логика основана на том, что целые переменные с высокими значениями приведенных затрат будут приводить к большим затратам при удалении их от границ.

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

По умолчанию значение этого параметра установлено в “None”, другими словами эта опция отключена.

 

General Optimizer Options

Опции, рассматриваемые здесь, оказывают влияние на действия оптимизатора при решении всех классов моделей, и включают в себя следующие:

· Nonzero Limit (предел на ненулевые коэффициенты)

· Iteration Limit (предел итераций)

· Initial Constraint Tolerance (начальная погрешность ограничений)

· Final Constraint Tolerance (конечная погрешность ограничений)

· Entering Variable Tolerance (точность вводимы в решение
переменных)

· Pivot Size Tolerance (погрешность ведущего элемента)

Nonzero Limit

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

Когда LINDO начинает работу, он резервирует часть памяти под ненулевые коэффициенты. Вы можете определить предельное значение этой памяти, посмотрев на поле Nonzero Limit в диалоге Options. Если вы имеете дело с моделью с большим количеством ненулевых коэффициентов, то можете увеличить значение в поле Nonzero Limit, чтобы позволить LINDO оптимизировать модель. С другой стороны, если вы пытаетесь уменьшить используемую память, можете уменьшить значение в указанном поле. Эта память будет зарезервирована независимо от того, насколько велика сама модель.

Чтобы изменить этот предел, введите новое значение в поле Nonzero Limit и нажмите кнопку Save. В этот момент вы получите сообщение:

 

 

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

Замечание: При перезагрузке LINDO вы можете терять изменения, внесенные с момента последнего сохранения. Чтобы избежать этого сохраните результаты своей работы, прежде чем продолжать указанные здесь действия.

 

После перезагрузки будет установлен новый предел для ненулевых переменных. Если значение параметра Nonzero Limit будет установлен слишком большим для доступной памяти компьютера, LINDO автоматически снизит его до значения, позволяющего работать программе. Вы можете проверить величину установленного предела в любой момент работы LINDO, с помощью команды About LINDO из меню Help. Эта команда выведет на экран окно, в котором отображается серийный номер, лицензионная информация и в нижней части окна вы найдете группу следующего вида:

 

 

В этой группе указывается предел на ограничения, на количество переменных вашей версии LINDO вместе с пределом памяти под ненулевые переменные.

 

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

Если LINDO выходит за пределы установленной памяти, он прекращает оптимизацию и выдает сообщение об ошибке.

 

Iteration Limit

 

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

В некоторых случаях вы можете захотеть установить верхний передел для количества выполняемых итераций. Это можно сделать, введя предельное значение в поле “Iteration Limit” диалогового окна Options следующим образом:

 

 

В случае, если установленный предел на количество итераций будет превышен до получения оптимального решения, вы получите сообщение в виде:

 

 

Если вы захотите прервать оптимизацию, нажмите кнопку “Cancel”. LINDO закончит оптимизацию и вернет наилучшее решение, определенное к данному моменту.

Если вы измените свое решение и захотите продолжить процесс оптимизации, введите количество дополнительных итераций, которое должен выполнить LINDO, и нажмите кнопку “OK”. LINDO примет это, и если опять новый предел будет превышен, еще раз выдаст приглашение на дополнительное увеличение числа итераций.

По умолчанию значение этого параметра установлено в “None”, другими словами количество итераций не ограничено.

 

Initial Constraint Tolerance

Final Constraint Tolerance

В связи с конечной точностью выполнения компьютером операций с плавающей запятой, LINDO не всегда может точно удовлетворить ограничениям. В связи с этим LINDO имеет два порога точности, которые определяют, с какой максимальной погрешностью могут нарушаться ограничения. Две эти допустимые погрешности называются Initial Constrained Tolerance (начальная допустимая погрешность ограничений) и Final Constrained Tolerance (Конечная допустимая погрешность ограничений). Первая из них используется в момент, когда решатель начинает работу, и может быть задана относительно не жестко, чтобы ускорить решение. По мере того, как LINDO приближается к оптимальному решению, он включает оценку по величине Final Constrained Tolerance (конечной допустимой погрешности), которая должна быть относительно жесткой, чтобы гарантировать аккуратность окончательного решения. По умолчанию приняты следующие значения допустимых погрешностей: 0.00008 — для начальной и 0.00001 — для конечной.

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

 

Entering Variable Tolerance

Основной операцией алгоритма, используемого решателем LINDO, является операция введения в решение переменной, которая до этого имела нулевое значение, с одновременным выводом из решения других переменных, приравнивая их нулю. Переменные только тогда вводятся в решение, когда они способны улучшить целевое значение. За счет ошибок округления в операциях с плавающей запятой переменная может принята в качестве благоприятной, в то время как, фактически, она не оказывает влияния на целевое значение или, более того, приводит к его ухудшению. Величина Entering Variable Tolerance проводит границу между теми, которые мы можем считать благоприятными (для включения в решение) переменными и неблагоприятными. Переменная с отрицательной величиной приведенных затрат, если их абсолютная величина превышает установленное значение Entering Variable Tolerance, будет рассматриваться как потенциальный кандидат на ввод ее в решение. По умолчанию для Entering Variable Tolerance принято значение 0.0000005.

 

Pivot Size Tolerance

Когда LINDO вводит переменную в решение, он должен связать ее с определенным ограничением, или строкой (в матрице ограничений). Каждая строка имеет одну переменную, ассоциированную с ней, и эта строка используется для вычисления значения переменной. Строка, в которой происходит присваивание переменной, называется ее ведущей строкой (pivot row). Для того, чтобы LINDO присвоил переменную строке, в ней должен быть ненулевой элемент, который называется ведущим элементом. Точное значение ведущего элемента будет изменяться в зависимости от всех матричных операций, выполняемых перед присваиванием переменной строке. Если ведущий элемент слишком мал, то появляется вероятность того, что он является всего лишь иллюзорной величиной, обусловленной «шумом» от ошибок округления. Присваивание переменной такой строке может привести к непредсказуемой работе решателя. Величина Pivot Size Tolerance проводит границу между тем, что можно и что нельзя считать допустимым ведущим элементом.


Дата добавления: 2015-11-16; просмотров: 77 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Nbsp;   2 Команды LINDO| Output Options

mybiblioteka.su - 2015-2024 год. (0.086 сек.)