Передача других аргументов в simulannealbnd в Matlab с сохранением каждой итерации - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть функция Matlab с именем criterion_simann, аргументы которой

  • param и

  • несколько других переменных, собранных в X.

Я хочу свести эту функцию к минимуму, используя simulannealbnd. Далее, во время минимизации я хочу сохранить все значения param и функции, с которой столкнулся решатель.

Как я могу это сделать?


Это то, что я пытался (представьте, что переменные X и param0 были предопределены)

filename = sprintf('result.%d.mat', 1);
iteration=0; 
result=[0,iteration,param0.']; 
save(filename,'result')

criterion_simann2 = @(param)criterion_simann(param,X,iteration, result,filename);  

[param,fval, exitflag] = simulannealbnd(criterion_simann2,param0);

, где его функция criterion_simann определяется как

function S=criterion_simann(param,X,iteration,result,filename)

% S= some function of param, X

iteration=iteration+1;

result=[result;[S,iteration,param.']];

save(filename,'result') 

end

Не работает, потому что каждый [S iteration param.'] перезаписан во втором ряду result, вместо того, чтобы быть сложенными один за другим. Как я могу это исправить?

Примечание: я не могу использовать глобальные переменные

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...