Читайте также:
|
|
Нижней границей для всех переменных по умолчанию принимается 0. Другими словами, если не оговорено что-либо иное, LINDO не позволяет переменной принимать отрицательные значения. Оператор FREE позволяет убрать все ограничения на переменную (освободить ее), так что она может принимать любые вещественные значения, положительные или отрицательные.
Следующий небольшой пример иллюстрирует использование оператора FREE:
Если мы не объявим в этом примере переменную Y свободной, LINDO не сможет найти оптимальное решение в виде X =0 и Y = – 1. Вместо этого, взяв нижнюю границу для Y по умолчанию равной нулю, LINDO возвратит решение в виде X =7 и Y =0.
Оператор GIN
По умолчанию LINDO считает все переменные непрерывными. Другими словами, если не оговорено что-либо иное, LINDO предполагает, что переменные могут принимать любые неотрицательные, в том числе и дробные, значения. Во многих приложения дробные значения имеют мало смысла (например, 2.5 работника). В подобных ситуациях вы естественно захотите использовать оператор GIN. Этот оператор с последующим за ним именем переменной ограничивает ее значения только неотрицательными целыми числами (0, 1, 2, ….).
Следующий небольшой пример иллюстрирует применение оператора GIN:
Если мы не объявим переменные X и Y целыми, то он не сможет найти оптимальное решение X=6 и Y=0. Вместо этого LINDO будет считать X и Y непрерывными и вернет решение в виде X=5.29 и Y=1.43.
Замети, что простое округление непрерывного решения до ближайшего целого значения не приводит к оптимальному решению в последнем примере. В общем случае округленное непрерывное решение может и не быть оптимальным, а в худшем случае может оказаться и недопустимым. Основываясь на этом, можно предположить, что получение оптимального решения в модели со многими целочисленными переменными может быть сопряжено со значительными временными затратами. В общем случае, так оно и есть, и лучше использовать оператор GIN только там, где это действительно необходимо.
В заключение отметим, что оператор GIN может в качестве аргумента принимать и просто целое число вместо имени переменной. Это число соответствуют количеству переменных, которые вы хотите считать целыми в свой задаче. Такие переменные должны появиться первыми в формулировке модели. Так, в последнем простом примере мы можем заменить оба оператора GIN одним: GIN 2.
Оператор INT
Использование оператора INT ограничивает значения переменой двумя числами 0 и 1. Подобные переменные часто называют бинарными (binary). Во многих приложениях они могут быть очень полезными при моделировании ситуаций типа «все-или-ничего». Примерами могут служить такие ситуации, как фиксированные платежи, построение нового предприятия, закупка минимального уровня некоторого ресурса для получения оптовой скидки. За более полной информацией относительно полезности применения бинарных переменных вы можете обратиться к книге «Оптимизационные модели в LINDO» компаньона нашей фирмы Лайнуса Шрэйджа.
Следующий простой пример иллюстрирует использование оператора INT.
Если мы не объявим в этом примере переменную X бинарной, то LINDO вернет значение в виде X=0.4, A=4 и B=7 со значением целевой функции, равным 124. Условно считая X бинарной, вы можете предположить, что оптимальным решением для X будет значение 0, поскольку 0.4 ближе к 0 чем к 1. Если мы таким образом округлим X до нуля, и найдем оптимальные значения для A и B, то мы получим значение целевой функции, равным 84. в действительности же существует значительно лучшее решение при X=1. A=10 и B=1 со значением целевой функции, равным 112.
В общем случае округленное непрерывное решение может и не быть оптимальным, а в худшем случае может оказаться и недопустимым. Исходя из этого, можно предположить, что получение оптимального решения в модели со многими целочисленными переменными может быть сопряжено со значительными временными затратами. В общем случае, так оно и есть, и лучше использовать оператор INT только там, где это действительно необходимо.
В заключение отметим, что оператор INT может в качестве аргумента принимать и просто целое число вместо имени переменной. Это число соответствуют количеству переменных, которые вы хотите считать целыми в свой задаче. Такие переменные должны появиться первыми в формулировке модели.
Дата добавления: 2015-11-16; просмотров: 87 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Синтаксис модели | | | Операторы SUB и SLB |