Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Установка параметров оптимизации в MATLAB
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Вопросы системного уровня проектирования
EUrry
Для оптимизации применяю функцию fmincon с нелинейными ограничениями. При запуске при параметрах по умолчанию выдается сообщение (хотя оптимизация худо-бедно проходит):
Код
In fmincon at 437
  In Optimization at 31
Optimization terminated: no feasible solution found.
  Directional derivative predicts change in objective value less
  than options.TolFun.
Warning: Trust-region-reflective method does not currently solve this type of problem,
using active-set (line search) instead.

В последней строке призыв к смене метода оптимизации Trust-region-reflective method на active-set
Из хелпа: The 'active-set' algorithm is not a large-scale algorithm

Потому делаю установку параметров оптимизации следующим образом:
Код
options = optimset('Algorithm','active-set', 'LargeScale', 'off', 'Display', 'iter');
fmincon('opt_fun', x0, [], [], [], [], low, up, 'opt_con', 'options', f, row);

В результате то же самое сообщение о смене алгоритма. Причем, при опции Display', 'iter', должны отображаться результаты выполнения поитерационно - ничего нет. Более того, ограничения low и up в оптимизационной функции fmincon так же не действуют - случаются "вылеты за ворота" оптимизируемых параметров!!! cranky.gif
Что делать?
Leonidos
когда мучился с ГА, многие опции настройки удалось понять, только сделав StepIn во все важные функции, попробуейте и можеть многое проясниться. Найдете места где выдаются предупреждения и сможите понять почему это происходит.
EUrry
Цитата(Leonidos @ Jan 16 2010, 03:03) *
когда мучился с ГА, многие опции настройки удалось понять, только сделав StepIn во все важные функции, попробуейте и можеть многое проясниться. Найдете места где выдаются предупреждения и сможите понять почему это происходит.

Да, можно попробовать и так. Раньше задачки попроще были и как-то без этого справлялся. А вообще перед Новым годом опции всё-таки удалось установить. Как оказалось переменную options в функции fmincon не нужно было заключать в апострофы:
Код
fmincon('opt_fun', x0, [], [], [], [], low, up, 'opt_con', options, f, row);

В общем виде записи функции не указано, что должно быть в апострофах, а что нет, делать приходится по примеру, а примера с использованием optimset не нашел.
Это то заработало, но вот вопрос по выхождению значений оптимизируемых переменных за заданные границы всё еще на повестке дня.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.