Я использую Opti Toolbox, бесплатный набор инструментов для оптимизации для Matlab. Я решаю смешанную целочисленную нелинейную программу, MINLP. Внутри Opti Toolbox используется решатель MINLP - SCIP.
Я определяю свою собственную цель как отдельную функцию (аргумент fun в Opti), и эта функция должна вызывать другие функции Matlab, которые принимают двойные аргументы.
Проблема в том, что всякий раз, когда Opti вызывает мою функцию для оценки цели, он сначала вызывает ее, используя вектор объектов 'scipvar', а затем снова вызывает ее, используя вектор 'double strong> 'объекты. Моя функция obj не работает с объектами scipvar, возвращает ошибку.
Я попытался (только для тестирования) настроить вывод моей функции для чего-то фиксированного, когда тип - 'scipvar', и для реальной вещи, когда тип 'double ', и это не работает, изменение фиксированного значения фактически изменяет окончательное оптимальное значение.
Мне в основном нужно преобразовать объект scipvar в double, возможно ли это? Или есть другая альтернатива?
Спасибо.