книги / Моделирование и оптимизация в LINGO
..pdf№ |
|
По |
|
Параметр |
умол- |
Краткое описание |
|
п/п |
|
чанию |
|
|
|
|
|
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.