Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Моделирование и оптимизация в LINGO

..pdf
Скачиваний:
10
Добавлен:
12.11.2023
Размер:
2.55 Mб
Скачать

 

По

 

Параметр

умол-

Краткое описание

п/п

 

чанию

 

 

 

 

123

NSLPSV

0

Использовать алгоритм последовательного линей-

 

 

 

ного программирования (SLP) для нелинейных

 

 

 

моделей (0: нет, 1: да)

124

FORCEB

0

Принудительно задавать границы переменных в

 

 

 

секциях calc и data (0: нет, 1: да)

125

NTHRDS

1

Максимальное число потоков или процессоров в

 

 

 

любой момент времени (0: использовать все ядра,

 

 

 

1: один поток, n>1: до n потоков

126

MTMODE

0

Режим многопоточности (–1: выбирает LINGO,

 

 

 

0: выключено в решателе, 1: предпочтительно па-

 

 

 

раллельное, 2: только параллельное, 3: предпочти-

 

 

 

тельно одновременное выполнение, 4: только од-

 

 

 

новременное)

127

BNPBLK

2

Задание блоков в BNP решателе (0: именами

 

 

 

строк, 1: пользователем, 2: отключено, >2: по мак-

 

 

 

симуму блоков)

128

BNPHEU

1

Эвристика разбиения модели на блоки в BNP

 

 

 

(1: GP1, 2: GP2)

129

REPROD

0

Воспроизводить результаты многими запусками

 

 

 

(0: нет, 1: да)

141

 

ПРИЛОЖЕНИЕ 5

Функции, экспортируемые LINGO DLL

 

 

Функция

Описание

void LSclearPointersLng(pLSenvLINGO

Чистит список указателей

pL)

@POINTER () в области памяти,

pL – указатель к среде Lingo, создан-

используемой для передачи, уста-

ный предыдущим вызовом

новленный при вызове

LScreateEnvLng()

LSsetPointerLng ()

int LScloseLogFileLng(pLSenvLINGO

Закрывает лог-файл LINGO, откры-

pL) pL – как выше

тый ранее функцией

 

LSopenLogFileLng(). Возвращает 0

 

при отсутствии ошибки, иначе –

 

ненулевой код (см. приложение 6)

pLSenvLINGO CALLTYPE LScreate-

Создает объект среды LINGO. При

EnvLng()

этом другие процедуры LINGO DLL

 

требуют действительного указателя

 

на объект среды LINGO. В конце

 

приложения нужно освободить этот

 

объект, вызвав LSdeleteEnvLng ().

 

Проводится поиск лицензионного

 

файла. Возвращает 0 при отсутствии

 

ошибки, иначе – указатель на объект

 

среды LINGO

pLSenvLINGO CALLTYPE LScreateEnv-

Действует, как предыдущая функ-

LicenseLng( char* pcLicenseKey, int*

ция, но LScreateEnvLicenseLng()

pnErr)

требует передачи лицензионного

pcLicenseKey – указатель на текстовую

ключа напрямую

строку, содержащую лицензионный

 

ключ,

 

pnError – указатель на 0 или код

 

ошибки

 

int LSdeleteEnvLng(pLSenvLINGO pL)

Удаляет объект среды LINGO, ранее

pL – как выше

созданный вызовом

 

LScreateEnvLng(), освобождая сис-

 

темную память, занимаемую объек-

 

том. Возвращает 0 или код ошибки

142

 

Функция

Описание

int LSexecuteScriptLng( pLSenvLINGO

Эта подпрограмма – главная в биб-

pL, char* pcScript)

лиотеке LINGO, она обрабатывает

pL – как выше,

скрипт, который может содержать-

pcScript – указатель на строку симво-

ся полностью в памяти или содер-

лов, содержащую командный скрипт.

жать только одну или несколько

Каждая строка должна быть завершена

команд TAKE для загрузки скрип-

символом перевода строки (ASCII 10),

тов с диска

а весь сценарий – NULL (ASCII 0)

 

int LSgetCallbackInfoLng(pLSenvLINGO

Позволяет установить в приложе-

pL, int nObject, void* pResult)

нии функцию обратного вызова,

nObject – индекс от 0 до 12, которому

с помощью которой LINGO будет

соответствует один параметр модели;

регулярно выдавать информацию

pResult – указатель адреса памяти для

о ходе процесса. Возвращает 0

результатов запроса

или код ошибки

int LSgetCallbackVarPrimalLng-

См. описание предыдущей функ-

(pLSenvLINGO pL, char* pcVarName,

ции

double* pdPrimals)

 

pcVarName – указатель на строку сим-

 

волов, содержащую имя скалярной

 

переменной или атрибута,

 

pdPrimals – указатель места, которого

 

должно быть достаточно для записи

 

значений переменных

 

int LSopenLogFileLng(pLSenvLINGO pL,

Создает файл, в который LINGO

char *pcLogFile)

будет записывать журнал во время

pcLogFile – указатель на строку сим-

обработки скрипта.

волов, содержащую путь к лог-файлу

Возвращает 0 или код ошибки

int

Используется для спецификации

LSsetCallbackErrorLng(pLSenvLINGO

функции обратного вызова

pL, lngCBFuncError_t pcbf, void*

(callback), которую LINGO будет

pUserData)

вызывать при возникновении

pcbf – указатель на подпрограмму

ошибки. Эта функция должна ис-

callback (обратного вызова),

пользовать стандартное соглашение

pUserData – указатель, определенный

о вызове и иметь следующий ин-

пользователем. Может использоваться

терфейс:

для указания любых данных, которые

Int MyErrCallback (pLSenvLINGO

могут потребоваться для ссылки из

pL, void * pUserData, int nErrorCode,

функции обратного вызова

char * pcErrorText);

 

Возвращает 0 или код ошибки

143

Функция

Описание

int LSsetCallbackSolverLng(pLSenv

Используется для определения

LINGO pL, lngCBFuncError_t pcbf,

функции обратного вызова, к кото-

void* pUserData)

рой LINGO будет часто обращаться

pcbf – указатель на подпрограмму

при решении модели. Эта функция

callback,

должна использовать стандартное

pUserData – см. предыдущую функ-

соглашение о вызове и иметь сле-

цию

дующий интерфейс:

 

Int MySolverCallback

 

(pLSenvLINGO pL, int nReserved,

 

void * pUserData);

 

Возвращает 0 или код ошибки

int CALLTYPE LSsetPointerLng-

Вызов процедуры один или не-

(pLSenvLINGO pL, double* pdPointer,

сколько раз для передачи списка

int* pnPointersNow)

указателей в память LINGO. Эти

pdPointer – указатель на расположение

указатели используются функцией

памяти передачи, которая будет испо-

@POINTER () LINGO для переме-

льзоваться экземпляром @POINTER(),

щения данных и решения из реша-

pnPointersNow – указатель на целочис-

теля, что обеспечивает прямые ка-

ленную переменную, в которой LINGO

налы памяти с LINGO для быстрой

возвращает текущее количество запи-

и удобной передачи данных

сей в списке указателей @POINTER().

 

При первом вызове LSsetPointersLng()

 

этот аргумент возвращает значение 1.

 

Список указателей может быть удален

 

в любой момент вызовом

 

LSclearPointersLng()

 

144

 

 

ПРИЛОЖЕНИЕ 6

 

Коды ошибок, возвращаемые LINGO DLL

 

 

 

Код

Имя

Описание

0

LSERR_NO_ERROR_LNG

Нет ошибки

1

LSERR_OUT_OF_MEMORY_L

Вне динамической системной памяти

 

NG

 

2

LSERR_UNABLE_TO_OPEN_

Не удалось открыть лог-файл

 

LOG_FILE_LNG

 

3

LSERR_INVALID_NULL_

Указатель NULL был передан в про-

 

POINTER_LNG

цедуру, которая ожидала указатель

 

 

не-NULL

4

LSERR_INVALID_INPUT_LN

Входной аргумент содержал недо-

 

G

пустимое значение

5

LSERR_INFO_NOT_AVAILAB

Была запрошена информация, кото-

 

LE_LNG

рая в настоящее время недоступна

6

LSERR_UNABLE_TO_COMPL

Не удалось успешно выполнить за-

 

ETE_TASK_LNG

дание

7

LSERR_INVALID_LICENSE_K

Лицензионный ключ, посланный в

 

EY_LNG

LScreateEnvLicenceLng(), был невер-

 

 

ным

8

LSERR_INVALID_VARIABLE

Имя переменной, посланной в

 

_NAME_LNG

LSgetCallbackVarPrimal(), было не-

 

 

верным

1000

LSERR_JNI_CALLBACK_NOT

Правильная функция обратного вы-

 

_

зова не найдена в вызывающем Java

 

FOUND_LNG

приложении

145

Учебное издание

ГОЛЬДШТЕЙН Аркадий Леонидович

МОДЕЛИРОВАНИЕ И ОПТИМИЗАЦИЯ В LINGO

Учебное пособие

Редактор и корректор Н.В. Бабинова

Подписано в печать 27.03.2018. Формат 70 100/16. Усл. печ. л. 11,77. Тираж 100 экз. Заказ № 41/2018.

Издательство Пермского национального исследовательского

политехнического университета.

Адрес: 614990, г. Пермь, Комсомольский пр., 29, к. 113. Тел. (342) 219-80-33.

Соседние файлы в папке книги