Читайте также:
|
|
@IN(элемент_множества, имя_множества)
Функция @IN возвращает значение true (истина), если элемент_множества принадлежит множеству с именем, указанным в качестве второго аргумента. Она полезна для генерирования дополнений множеств. В приведенном ниже примере, определяющем «открытые» предприятия, функция @IN используется для того, чтобы определить подмножество «закрытых» предприятий по принципу является оно «открытым» или нет.
MODEL:
1] SETS:
2]! здесь определяются все предприятия;
3] PLANTS /LA, DENVER, CHICAGO, HOUSTON, MIAMI,
NEWARK/:
4] FIXCOST;
5]! здесь определяются открытые предприятия;
6] OPEN(PLANTS) /LA, CHICAGO, MIAMI, NEWARK/;
7]! теперь используем @IN(set, set element) чтобы опрелить
8] подмножество закрытых предприятий;
9] CLOSED(PLANTS) | #NOT# @IN(OPEN, &1):;
10] ENDSETS
11]! Присвоим величину фиксированных затрат для открытых предприятий;
12] @FOR(OPEN(i): FIXCOST(i) = 100);
13]! присвоим меньшую величину фиксированных затрат для закрытых предприятий;
14] @FOR(CLOSED(i): FIXCOST(i) = 20);
END
@SIZE(имя_множества)
Возвращает количество элементов в множестве с именем, указанным в качестве аргумента.
@USER
Функция @USER позволяет использовать в LINGO произвольные функции, спроектированные пользователем самостоятельно. В версии LINGO под Windows, вы поставляете DLL (Dynamic Link Library — динамическую библиотеку), содержащую вашу @USER функцию. Любая система программирования, которая поддерживается в Windows, позволяет строить DLL. Для других платформ LINGO поставляет для вас откомпилированные в FORTRAN или C подпрограммы, содержащие функцию @USER.
С точки зрения модели LINGO функция @USER является функцией, принимающей любое количество аргументов (но не менее одного). Она возвращает результат, вычисляемый написанной вами подпрограммой.
С точки зрения программиста, пишущего заказанную подпрограмму-функцию, функция @USER принимает только два входных аргумента и возвращает единственный результат (значение функции @USER). Два входных аргумента состоят из:
§ Целого числа, определяющего количество аргументов, вычисляемых при появлении ссылки на функцию @USER в модели LINGO
§ Вектор, содержащий значения аргументов в порядке, котором они вычисляются при появлении ссылки на функцию.
Другими словами, хотя для разработчика модели в LINGO функция @USER может появиться с любым количеством аргументов, для программиста, разрабатывающего эту функцию, в нее передается только два аргумента.
Возможно использование наборов функций @USER,написав и откомпилировав каждую функцию как отдельную подпрограмму, и принимающую в качестве аргумента для функции @USER числовой индекс, определяющий к какой конкретно функции переходить.
Дата добавления: 2015-11-16; просмотров: 41 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Вероятностные функции | | | Пример для Windows |