Matlab, SCIP и Opti Toolbox

Я использую Opti Toolbox, бесплатный набор инструментов для оптимизации для Matlab. Я решаю смешанную целочисленную нелинейную программу, MINLP. Внутри Opti Toolbox используется решатель MINLP - SCIP.

Я определяю свою собственную цель как отдельную функцию (аргумент fun в Opti), и эта функция должна вызывать другие функции Matlab, которые принимают двойные аргументы.

Проблема в том, что всякий раз, когда Opti вызывает мою функцию для оценки цели, он сначала вызывает ее, используя вектор объектов 'scipvar', а затем снова вызывает ее, используя вектор 'double 'объекты. Моя функция obj не работает с объектами scipvar, возвращает ошибку.

Я попытался (только для тестирования) настроить вывод моей функции для чего-то фиксированного, когда тип - 'scipvar', и для реальной вещи, когда тип 'double ', и это не работает, изменение фиксированного значения фактически изменяет окончательное оптимальное значение.

Мне в основном нужно преобразовать объект scipvar в double, возможно ли это? Или есть другая альтернатива?

Спасибо.


person Chicoscience    schedule 02.12.2014    source источник
comment
Если возможно, не могли бы вы опубликовать свой код?   -  person Gregor    schedule 02.12.2014
comment
Модель довольно сложна, чтобы построить простой пример и опубликовать его здесь, но теперь я понимаю проблему, на которую я только что ответил ниже.   -  person Chicoscience    schedule 03.12.2014


Ответы (1)


Итак, после просветления Дж. Карри, разработчика набора инструментов Opti, я понял причину проблемы, описанной выше.

Первый вызов цели с вектором переменных scipvar - это на самом деле анализатор, просматривающий целевую функцию, чтобы увидеть, можно ли ее правильно сопоставить с чем-то, что может обрабатываться SCIP. Я переопределил целевую функцию, чтобы использовать только методы, разрешенные scip, полученные путем ввода методов (scipvar) в Matlab:

abs dot log минус mrdivide norm power rdivide sqrt times
display exp log10 mpower mtimes plus prod scipvar sum uminus

Как только цель могла быть проанализирована с помощью scip, моя проблема сработала нормально.

person Chicoscience    schedule 03.12.2014