Как изменить параметры 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, для достижения той же цели. Это обеспечит максимальный контроль, но может занять больше времени (в зависимости от того, насколько вы удобны в программировании).