Loop for local function:fmincon
    조회 수: 4 (최근 30일)
  
       이전 댓글 표시
    
Dear all,
I want to make a loop for the code below: every step, I want to update objective function in such a way that pr=p.
I would appreciate any thoughts and helps!
Dat
function [p,fval] = MC_NT(p0,opts)
if nargin < 2
    opts = optimoptions('fmincon','Algorithm','interior-point');
end
[p,fval] = fmincon(@Obj,p0,[],[],Aeq1,beq1,[],[],[],opts);
function f= Obj(p)
f = 0;
pr=0.25*ones(1,16);
for i = 1:16
    f = f + p(i)*log(p(i))-p(i)*log(pr(i));
end
댓글 수: 0
채택된 답변
  Matt J
      
      
 2016년 2월 15일
        
      편집: Matt J
      
      
 2016년 2월 15일
  
      Here is the way I would code it. However, because your objective function is just the KL-divergence, it is trivial to see that the minimum occurs at p=pr. In particular, your loop should produce the same result at every iteration.
    function [p,fval] = MC_NT(p0,opts,N)
    if nargin < 2
        opts = optimoptions('fmincon','Algorithm','interior-point');
    end
    M=length(p0);
    p0=p0(:);
    pr=0.25*ones(M,1);
    p=nan(M,N);
    fval=nan(1,N);
   for i=1:N
     fun=@(p) sum(p.*log(p./pr));
     [p(:,i),fval(i)] = fmincon(fun,p0(:),[],[],Aeq1,beq1,[],[],[],opts);
     pr=p(:,i);
   end
추가 답변 (0개)
참고 항목
카테고리
				Help Center 및 File Exchange에서 Argument Definitions에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!