2014-06-07 2 views
0

MATLAB에서,이 목적 함수가 : 어떤 제약없이최적화 매트릭스를 찾기

function answer = OBJ(alpha,D,y,lambda) 
    answer = norm(D*alpha - y,2)^2 + lambda*norm(alpha,1); 
end 

을,이 기능에, alpha을 찾으려면 :

OBJ_F = @(x)OBJ(x,D,y,0.5); 

최고의 최적화가 무엇인지 이 작업에 대한 기능 및 수행 방법 예를 들어

: 나는 빈 제약 CON_F을 정의 fmincon 기능, 나는이 문제를 해결하지만,이 솔루션은, 나는이 일에 가장 적합한 솔루션을 천천히 싶어한다

option = optimoptions(@fmincon, 'display','off','algorithm','interior-point'); 
[alpha,fval] = fmincon(OBJ_F,INIT,[],[],[],[],[],[],CON_F,option); 

참고 : D는 9 * 10000 - y는 9 * 1 - 알파는 10000 * 1입니다.

답변

1

유전 알고리즘을 시도하십시오. 그것은 행 벡터와 함께 작동하며 alpha은 col 벡터입니다. 따라서 목적 함수를 조금 변경해야합니다.

function answer = OBJ(alpha,D,y,lambda) 
alpha = alpha'; 
    answer = norm(D*alpha - y,2)^2 + lambda*norm(alpha,1); 
end 

OBJ_F = @(x)OBJ(x,D,y,0.5); 
problem.fitnessfcn = OBJ_F; 
problem.nvars = size(alpha,1); 
problem.options = gaoptimset('display','off'); 
[alpha fval] = ga(problem); 
alpha = alpha'; 
+0

나를 위해 작동하지 않습니다 ... –

+0

무엇이 문제입니까? – Nishant