У меня есть функция Matlab с именем criterion_simann
, аргументы которой
Я хочу свести эту функцию к минимуму, используя 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
, вместо того, чтобы быть сложенными один за другим. Как я могу это исправить?
Примечание: я не могу использовать глобальные переменные