Как сохранить funccount из вывода в функции fseminf

Я использую функции 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), например, не работает.

Загадки Python - Генерация простых чисел!
Загадки Python - Генерация простых чисел!
Обычно существует несколько способов решения задач даже пограничной сложности. Как же определить оптимальное и эффективное решение?
0
0
39
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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

Большое спасибо!

ryszard eggink 22.05.2019 15:04

Другие вопросы по теме