Как изменить параметры CPLEX в oplrun?

Есть ли способ позволить oplrun принять конкретный параметр CPLEX, например, CPX_PARAM_LPMETHOD (метод линейного программирования). В ссылке здесь он называется различными именами для разных языков:

C Name: CPX_PARAM_LPMETHOD

C++ Name: RootAlg

Java Name: RootAlg

.NET Name: RootAlg

InteractiveOptimizer: lpmethod 

Но нет никаких упоминаний об OPL или oplrun.

Можно ли изменить этот параметр в oplrun сессия? Или я должен использовать эти другие языки / интерфейсы?

3 ответа

Решение

В.mod вы можете написать

execute
{
  cplex.lpmethod=4;
}

и тогда вы увидите в журнале

CPXPARAM_LPMethod                                4

С уважением

Если у вас есть определенный параметр, который вы хотите изменить, в файле.mod вы можете получить что-то вроде:

int myParameter = …;

В том же файле.mod вы также можете использовать

execute
{
  cplex.lpmethod=myParameter;
}

И тогда у вас есть значение по умолчанию в вашем файле.dat.

Чтобы изменить этот параметр с run на run при использовании oplrun, вы можете вызвать его со следующими аргументами командной строки:

oplrun myModel.mod myData.dat -D myParameter=4

Это невозможно сделать (напрямую) с помощью параметров командной строки oplrun. Однако вы можете использовать oplrun для выполнения определенной конфигурации запуска, которая имеет связанный файл настроек (файл.ops). Например:

oplrun [options] -p project-dir [run-configuration ...]

Когда вы используете IDE для установки отдельных параметров, имена OPL для параметров сохраняются в файле.ops. Например, параметр CPLEX CPX_PARAM_TILIMIT назван tiLimit в OPL (см. здесь для более).

Кроме того, вы можете экспортировать модель OPL, используя -e Оплрун вариант. Затем вы можете запустить это с помощью интерактивного CPLEX и использовать файл параметров или установить их в самой командной строке (синтаксис см. Здесь).

Наконец, вы можете использовать один из API-интерфейсов языка программирования, доступных в CPLEX, для достижения той же цели. Это обеспечит максимальный контроль, но может занять больше времени (в зависимости от того, насколько вы удобны в программировании).

Другие вопросы по тегам