Я использую функции fseminf и fmincon в своем алгоритме. я использую это так
[x,fval,exitflag,output,lambda] = fseminf(f,x0,1,@seminfcon1,A,b,Aeq,beq,lb,ub);
В качестве вывода я получаю некоторую информацию:
iterations: 5
funcCount: 21
lssteplength: 1
stepsize: 4.9851e-06
algorithm: 'active-set'
firstorderopt: 2.9906e-08
constrviolation: 1.1283e-10
Меня интересует funcCount, я хочу его сохранить. В моем другом алгоритме я использую это в цикле и хочу суммировать все funcCount, которые делает мой алгоритм. Для этого мне нужно сохранять на каждой итерации этот funcCount и добавлять его. Как я могу это сделать? output(2), например, не работает.
output.funcCoun
дает вам текущий funcCoun
output.lssteplength
дает вам текущий lssteplength
, и так далее
% l is the length of the iteration
% Initialize an 1D array to store funcCoun
funcCoun_per_iteration = zeros(1,l);
for i = 1:l
[x,fval,exitflag,output,lambda] = fseminf(f,x0,1,@seminfcon1,A,b,Aeq,beq,lb,ub);
funcCoun_per_iteration(i) = output.funcCoun;
end
Чтобы суммировать их все, просто используйте sum()
Total_funcCoun = sum(funcCoun_per_iteration)
Но если вам действительно нужна только сумма, вам не нужно их хранить, вы можете сделать это напрямую, как показано ниже.
% l is the length of the iteration
% Initialize Total_funcCoun to accumulate funcCoun
Total_funcCoun = 0;
for i = 1:l
[x,fval,exitflag,output,lambda] = fseminf(f,x0,1,@seminfcon1,A,b,Aeq,beq,lb,ub);
Total_funcCoun = Total_funcCoun + output.funcCoun;
end
Большое спасибо!