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

Освобожденные» переменные и простые границы

Вероятностные функции | Другие функции | Пример для Windows | Доступ к элементам множества — функция @FOR | Использование других функций поэлементной обработки множеств с условиями | Плотное производное множество: TRAN.LNG | Разреженное производное множество — пример 2 | Условие принадлежности элементов множеству — Пример 1 | Условие принадлежности элементов множеству — Пример 2 | Обобщенные целочисленные переменные |


Читайте также:
  1. Double x1, mas[5], p1; //здесь объявлены вещественные переменные x1, p1
  2. Internal variables (переменные) of consumer behavior
  3. Арифметические переменные
  4. Бинарные целые переменные
  5. ВАлалные границы вмерикавсккх штатов, постепенно передвигавшиеся к тххоокевяскоыу побережью по мере захвата вндейокях земель. — Прим. пери.
  6. Воздушные границы
  7. ВТО изменило структуру вложений в РФ из-за границы

 

По умолчанию переменные LINGO имеют нижнюю границу, равную нулю, и верхнюю — бесконечности. Функция @FREE убирает нижнюю нулевую границу, позволяя переменной принимать отрицательные значения и снимая ограничение на знак. Синтаксис функции следующий:

@FREE(переменная)

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

MODEL:

1] 3 * Y + Z / X = -5;

2] X = 2;

3] Y * X + Z = 6;

END

Решением является X=2, Y=–4, Z=14. Однако, LINGO не может вычислить значение Y, поскольку оно отрицательное, и выдает сообщение об ошибке. Чтобы преодолеть эту трудность, необходимо использовать функцию @FREE, снимающую у Y ограничение на знак. Соответствующим образом исправленная модель из последнего примера будет:

 

MODEL:

1] 3 * Y + Z / X = -5;

2] X = 2;

3] Y * X + Z = 6;

4] @FREE (Y);

END

После решения модели LINGO выдаст следующее решение:

 

OPTIMUM FOUND AT STEP 2

OBJECTIVE VALUE =.000000000

 

VARIABLE VALUE

Y -4.000000

Z 14.00000

X 2.000000

ROW SLACK OR SURPLUS

1.0000000

2.0000000

3.0000000

Точно также, как это было только что показано для скалярных значений, вы можете с помощью функции @FREE изменять принятый по умолчанию диапазон ( и для атрибутов множеств. Следующий пример решения общих связанных уравнений иллюстрирует использование @FREE для множеств.

 

MODEL:

1]! Решатель системы линейных уравнений;

2] SETS:

3]! Размерность строк/столбцов;

4] RC /1..4/: X, B;

5]! множество элементов матрицы A;

6] MATRIX(RC, RC): A;

7] ENDSETS

8]

9]! Для каждой строки;

10] @FOR(RC(I):

11]! Сумма LHS должна быть равна RHS;

12] @SUM(RC(J): A(I, J) * X(J)) = B(I);

13]

14]! Снять ограничения на знак X;

15] @FREE(X));

16]

17] DATA:

18] B = 19, 26, 17, 40;

19] A = 6, 4, 7, 3,

20] 2, 9, 4, 1,

21] 1, 9, 3, 8,

22] 8, 6, 4, 2;

23]

24] ENDDATA

END

 

В строке 15 снято ограничение на знак переменных X. То есть они могут иметь любые вещественные значения как положительные, так и отрицательные. Как и в случае с @GIN, это может быть сделано применением функции @FREE к каждому элементу X. Заметим, что с этой целью оператор:

@FREE(X)

… расположен внутри области действия оператора @FOR. Если мы не используем оператор @FREE (или как показано ниже, оператор @BND), то LINGO не сможет найти допустимое решение.

 

VARIABLE VALUE

X(1) 4.0000000

X(2) 3.0000000

X(3) -2.0000000

X(4) -1.0000000


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


<== предыдущая страница | следующая страница ==>
Бинарные целые переменные| Ввод из файлов с помощью @FILE

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