fminunc не работает
26.06.2020
Изменил вопрос.
создал функцию [y]=matlab_fminimax01(x)
задал начальные условия:
x=[1*0.090/20;1*0.42/20;1*0.210/20]
options = optimset('LargeScale','off','TolFun',1e-2);
запустил поиск минимума
[x,fval,exitflag,output] = fminunc(@matlab_fminimax01,x,options)
Не работает.
fminunc на 1-й итерации x делает шаг 2e-7.
Это очень малый шаг для моей функции, которая "округляет" yдо трех знаков .
В результате y не изменяется и итрационный процесс не происходит.
Мне надо чтобы первый шаг x был в районе 5e-3
Вопрос - какой параметр fminunc, optimset может загрубить перый шаг по x ?
Ответы
Выложите файл с кодом
пришлось решать используя однокоординатный поиск fminbnd
запустил итерации по последовательным координатам.
Для aBoomest
Код очень большой и с вызовом python, не буду высылать.
Выяснил саму проблему.
На 1-й итерации шаг по х 1е-7.
У меня промежуточные рассчеты округляются и при малом шаге х 1е-7 шаге не меняется y, поэтому алгоритм остановился, считая что у в минимуме.
Пробовал установить 'TolFun',1e-2, не помогло.
Мне надо чтобы перый шаг по х был 1е-3 - 3е-3
Криво решил задачу однокоординатным поиском минимума fminbnd последовательно двигаясь по отдельным координатам х. Метод не удобный. так как при переходе на новую координату нельзя стартовать с заданного начения х по этой координате, метод начинает счеты с средины заданного диапазона этой координаты.
Возможно это, но не уверен - StepTolerance - TolX
Для aBoomest.
Спасибо, 'TolX',1e-2 проверил на fminbnd, работает.