2013-08-26 2 views
0

그래서 다음 코드를 사용하여 내 함수를 최적화 :MATLAB에서 fmincon를 실행하는 문제

function [fval, z, Z, x] = fCarterFunction 

%Searches parameter space for the best values given the model and LSE 

A = []; 
b = []; 
Aeq = []; 
beq =[]; 
options = optimset('Display','iter', 'Algorithm', 'interior-point'); 
options.MaxFunEvals = 100000; 
options.MaxIter = 100000; 
[pOPT, fval] = fmincon(@(p)fRSS(p),[.01 .01 .01],A, b, Aeq, beq, 0, 1, [], options); 

z = pOPT(1); 
Z = pOPT(2); 
x = pOPT(3); 

end 

이 문제는 내 기능에이를 실행할 때 다음과 같은 반환한다는 것입니다 :

Warning: Length of lower bounds is < length(x); filling in missing lower bounds with - Inf. 
> In checkbounds at 34 
In fmincon at 332 
In fCarterFunction at 12 
In RunRSSfunc at 1 
In run at 64 
Warning: Length of upper bounds is < length(x); filling in missing upper bounds with +Inf. 
> In checkbounds at 48 
In fmincon at 332 
In fCarterFunction at 12 
In RunRSSfunc at 1 
In run at 64 

내가 이해할 수없는 것은 이전 데이터 집합에 대해이 문제를 실행했지만 아무런 문제가 없다는 것입니다. 자, matlab은 내 상한과 하한을 대체하고 있습니다. 누구든지이 문제를 해결하는 방법을 알고 있습니까? 실제로 데이터를 반복하는 다른 함수를보고 최소 사각 기법을 통해 시뮬레이션을 실제와 비교하는 경우 알려 주시기 바랍니다. 감사! @grantnz는 시도를 지적 하듯이

+1

제한하려는 값에 따라 [0 -Inf -Inf], [1 Inf Inf] 또는 [0 0 0], [1 1 1] 중 하나 여야합니다. – grantnz

+0

당신이 경고를 보지 못했을 때 더 많은 정보 (코드)를 볼 수있어서 재미있다 –

+0

코드는 정확히 동일했다. 나는 데이터 세트를 바꾸기 만했다. – cwdaniels

답변

1

는 :

[pOPT, fval] = fmincon(@(p)fRSS(p),[.01 .01 .01],A, b, Aeq, beq, [0 0 0], [1 1 1], [], options); 

fmincon 모든 변수에 대한 낮은 상단의 값을/기대하고있다.

+0

그게 효과가있다. 감사! – cwdaniels

관련 문제