Читайте также:
|
|
В этом разделе уточняются требования LINDO к синтаксису записи модели. К счастью, список правил достаточно короткий и легок для изучения.
Целевая функция должна обязательно располагаться в самом начале модели и начинаться со слов либо MAX (максимизировать) либо MIN (минимизировать). Конец целевой функции и начало секции ограничения отмечается одной из ключевых фраз следующего вида:
SUBJECT TO
SUCH THAT
S.T.
ST
Секция ограничений завершается словом END. Это слово в обязательном порядке требуется только в случае, когда за этой секцией следуют еще операторы, такие как GIN и BIN, которые рассматриваются далее в этой главе.
Имена в LINDO ограничены восемью символами. Имена должны начинаться с буквы (от A до Z), за которой следует до семи дополнительных символов. Последние могут включать в себя любые символы за исключением следующих:!) + – = > <. Так, например, следующие имена будут допустимыми:
XYZ MY_VARA12 SHIP.LA
В то время как следующие имена будут неправильными:
THISONEISTOOLING A-HYPHEN 1INFRONT
Первое из имен в последней строке содержит более восьми символов, второе содержит недопустимый символ дефиса, а последнее начинается не с буквы.
Вы можете при желании (но не обязательно) давать имена ограничениям. Эти имена для ограничений должны подчиняться тем же правилам, что и имена переменных. Чтобы дать имя ограничению, вы должны начать его запись с этого имени, поставив после него правую скобку. После правой скобки вы можете вводить ограничения, как обычно. Например, следующее ограничение имеет имя XBOUND:
XBOUND) X < 10
LINDO распознает только пять операторов: «плюс» (+), «минус» (–), «больше» (>), «меньше» (<) и «равно» (=). Когда вы вводите с клавиатуры операторы строго неравенства — «больше» (>) или «меньше» (<), LINDO будет их интерпретировать как операторы нестрогого неравенства, то есть как «больше или равно» (³) и «меньше или равно» (£) соответственно. Это связано с тем, что многие клавиатуры не имеют символов нестрогого неравенства. В системах, где такие операторы имеются, LINDO не распознает их. Однако, если вам это больше нравится, вы можете вводить комбинации символов “<=” и “>=” вместо “<” и “>”.
LINDO не воспринимает скобки как арифметические символы, определяющие порядок действий. Все операторы читаются слева направо.
В любом месте модели можно поместить комментарии. Комментарии начинаются с восклицательного знака (!). Все, что следует за ним в текущей строке, воспринимается как комментарий. Например, простая модель, рассмотренная выше в этом разделе, может быть записана в ином виде с использованием комментариев:
MAX 10 STD + 15 DLX! максимальная прибыль
SUBJECT TO
! Здесь приведены ограничения на запасы компонент
! для компьютеров STANDARD и DELUXE
STD < 10
DLX < 12
! Здесь приведены ограничения по запасам
! на физические компоненты
STD + 2 DLX < 16
END
Комментарии сохраняются, если файл модели сохраняется в текстовом формате. Сохранение фала в упакованном формате (*.LPK) или формате MPS (*.MPS) приведет к удалению из модели любого специального форматирования и комментариев.
Замечание: Комментарии не сохраняются в упакованных форматах (см. выше).
Ограничения и целевая функция могут отделяться друг от друга несколькими строками или могут быть объединены в одну строку. Вы можете оборвать строку в любом месте, только не внутри имени переменной или коэффициента. Следующая запись будет эквивалента ранее приведенной форме (хотя может быть и не очень удобной для чтения):
MAX
STD + 15 DLX SUBJECT TO
STD
<
dlx < 12 STD + 2
dlx < 16 end
Однако, если целевая функция будет записана следующим образом:
MAX 10 ST
D + 1
5 DLX
SUBJECT TO
… то LINDO выдаст сообщение об ошибке, поскольку переменная STD и коэффициент 15 разорваны и располагаются в разных строках.
Компилятор LINDO не чувствителен к регистру. Весь введенный текст будет преобразован к верхнему регистру внутри самого LINDO. Например, запись модели в виде:
Max x
st
X < 1
ENd
является допустимой и содержит одну переменную X, а не две — x и X.
В правой части ограничений допускаются только константы, но не переменные. Так, ограничение в виде:
X > Y
… будет забраковано компилятором. Подобное ограничение следует переписать в виде:
X – Y > 0
И наоборот, только переменные и их коэффициенты допускаются в левой части ограничений. Например, ограничение:
3X + 4Y - 10 = 0
не допустимо, поскольку в левой части появилась константа в виде –10.
Конечно, такое ограничение следует записать в виде:
3X + 4Y = 10
для того, чтобы удовлетворить правилам синтаксиса LINDO.
Дата добавления: 2015-11-16; просмотров: 147 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Ввод задачи в LINDO | | | Оператор FREE |