我在算法中使用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)不起作用。
答案 0 :(得分:1)
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