Я использую глобальную максимизацию инструментов для максимизации следующей функции:Изменение переменной оптимизации для постоянной Динамически (Matlab)
function x = NameOfFunction (w1, w2, w3, a, b, c, Structure1, Structure2, Structure3)
где я минимизируя x
путем изменения значения w1
, w2
и w3
, который являются весами, которые назначаются другим функциям, рассчитанным при оценке значения x
. Остальные параметры - это константы и структуры, содержащие данные. Значение x
, а также три весовые переменные зависят от данных, которые передаются в функцию через структуры.
Есть ли способ изменить одну из весовых переменных (т. Е. Переменные, которые оптимизатор изменяет, чтобы свести к минимуму x
) константе изнутри оптимизируемой функции? Иногда, в зависимости от условий, удовлетворяемых входными данными, одна из переменных w
должна быть установлена равной 0. Есть ли способ сделать это изнутри функции?
Я пробовал сделать простой оператор if
, но оптимизатор все еще присвоил ненулевое значение рассматриваемому весу.
EDIT: Вот более конкретный пример. Иногда функция, связанная с w3
, будет оцениваться до NaN
(и поэтому ее следует исключить из расчета x). Когда это произойдет, я хотел бы присвоить 0 переменной w
для этой итерации цикла оптимизации.
В настоящее время у меня есть простой if
заявления в целевой функции, которая исключает функцию, связанную с w3
из расчета x
, но оптимизатор присваивает значение w3
независимо.
В какой момент времени вы знаете, хотите ли вы исключить переменную 'w'? Это до того, как вы назовите оптимизатор или только после того, как оптимизатор работает некоторое время? – mars
@mars: Это ты для своего ответа. Я знаю, что могу контролировать, выходит ли «w3' за пределы оптимизатора (а затем установите верхнюю и нижнюю границы« w3 »в 0 перед запуском), но это решение не идеально. Мне интересно, есть ли способ установить переменную 'w3' в константу после запуска оптимизатора. –