Cplex оптимальная целевая установка в Matlab - PullRequest
0 голосов
/ 31 октября 2018

Я пытаюсь решить большую проблему квадратичной оптимизации, используя CPLEX (cplexqp) в matlab. К сожалению, матрица H (или матрица Q, как ее называют некоторые источники) не является выпуклой по своей природе, и поэтому я хочу установить целевое значение оптимальности от 0 (по умолчанию) до 3, чтобы указывать CPLEX не прекращать работу при обнаружении невыпуклых Q , Однако я не уверен, как это сделать. Я пытался прочитать руководства и инструкции, и все они просто сказали установить оптимальность цели = 2 или 3 без каких-либо реальных примеров или общей команды о том, как это сделать. Я попытался сделать это в настройках, но получил сообщение об ошибке, что CPLEX не распознает 'optimitytarget'.

options = cplexoptimset('Display','on','TolFun',0.0000001,'TolRLPFun',0.0000001,'MaxNodes',50000,'MaxIter',50000, 'optimalitytarget',3);

Я тоже пробовал:

Cplex = cplexoptimset('cplex')
Cplex.Param.optimalitytarget = 3;

без успеха. Я знаю, что API Cplex.Param.optimalitytarget, но я не могу понять, где это установить.

Извините, если это тривиальный или тупой вопрос. Я чувствую, что это одна из вещей, которые очень просты, и вы либо знаете, либо не знаете, и я не знаю, как это сделать. Буду очень признателен за любую помощь или совет по этому поводу.

1 Ответ

0 голосов
/ 31 октября 2018

Вы можете найти примеры использования CPLEX из MATLAB в дистрибутиве. Они расположены в [installPath]/cplex/examples/src/matlab.

Вы упомянули, что используете cplexqp, который является API панели инструментов . Глядя на https://www.ibm.com/support/knowledgecenter/es/SSSA5P_12.7.0/ilog.odms.cplex.help/CPLEX/MATLAB/topics/gs_param.html, Я подозреваю, что проблема с вашим вторым примером связана с использованием Param. Эта структура относится к API класса Cplex, а не к API панели инструментов. Я полагаю, что следующее будет работать лучше:

options = cplexoptimset('cplex'); 
options.optimalitytarget=3; 
...