2012-03-26 2 views
0

MATLAB에서 fmincon을 사용하여 최선을 다하고 있습니다. 나는 함수를 호출 할 때, 나는 다음과 같은 두 가지 오류 중 하나가 얻을 : 기능 평가의최적화가 조기에 중단됩니다 (MATLAB)

수를 초과하거나, 반복의

수를 초과했습니다.

그리고 내가 지금까지의 해결책을 보면, 그것은 의도 된 것 (나는 최소 벡터를 만들었 기 때문에 나는 알고있다)에서 벗어난 것이다.

이제 허용치 제약 조건이나 최대 반복 횟수를 늘려도 여전히 동일한 문제가 발생합니다.

도움을 주시면 감사하겠습니다.

+1

크기는 무엇입니까? 알려진 해결책을 시작하려고 했습니까? 그래디언트와 헤센을 제공하고 있습니까? – Memming

+0

아니요, 평등 매트릭스와 벡터를 제공합니다 : Aeq와 beq. 이제는 균등 제약 조건 만있는 L1 최소화 문제를 고려하고 있지만 시뮬레이션은 너무 오랜 시간이 걸리고 잘못된 결과 (가까운 곳이 아님)를 제공하거나 해결자가 메모리 오류를 생성하고 있습니다. 제 말은 어떻게 JPEG가이 메모리/시간 오버 헤드로 1ms의 이미지를 압축 할 수 있습니까? – ToniAz

답변

1

먼저 문제를 선형 또는 2 차 프로그래밍으로 캐스팅 할 수 있다면 먼저 그렇게하십시오.

그렇지 않으면 다른 시작 값 x0으로 시딩을 시도 했습니까? 그것은 나쁜 장소에서 시작하는 경우, 그것은 최적에 도착하는 것이 훨씬 어려울 수 있습니다.

함수의 그래디언트를 제공하면 옵티마이 저가 매우 도움이 될 수 있습니다 (단, 수치 차별화 이외의 방법으로 만 찾을 수 있음). 마찬가지로, (전체 또는 희소 한) 헤 시안을 비교적 저렴하게 제공 할 수 있다면, 당신은 황금색입니다.

using a different algorithm in the solver으로 시도 할 수도 있습니다.

기본적으로 fmincon은 기본적으로 최적화하려고하는 기능에 대한 정보가 거의 없으며 더 많이 제공하면 매우 유용 할 수 있습니다. 목적 함수에 대해 더 많이 알려 주시면 더 많은 도움말을 드릴 수 있습니다.

+0

당신은 내가 말하는 모든 것을 말했지만, 더 좋았습니다. +1 및 브라보. –

+0

@Dougal 이 "" "" 이미 내가 모두 0 벡터로 시작하고 그래서 수행 "문제는 실제로 선형 또는 차 프로그래밍으로 캐스팅 할 수있는 경우 먼저, 첫 번째는 그렇게"흠, 내가 ' 그렇게 해보려고합니다. 그것은 L1 표준입니다. 차별화 가능한지 나는 알 수 없습니다. 목적 함수는 사실 픽셀의 열 벡터입니다. 그래서 내가하려는 것은이 함수를 이미지의 전체 열에 적용하는 것입니다. 이것은 원자 분해와 관련된 것입니다. – ToniAz

+0

@ToniAz 나는 당신이 무슨 뜻인지 정말로 모르겠다. 선형 또는 2 차 프로그래밍 문제라면'fmincon '대신'linprog' 또는'quadprog'를 사용하면 안됩니다. 또한 목적 함수가 실제로 L1 표준 인 경우 닫힌 형식으로 할 수 있습니다. '|| x - q || _1'의 최소값은 단지'q'입니다. 그러나 L1 표준은 차등입니다 (단, 0에서); 부분 w.r.t. 컴퍼넌트는 그 컴퍼넌트의 절대치의 미분법입니다. 즉, 부호의 내부의 파생 시간입니다. 즉, 직선적 인 L1 표준의 경우, 그것은 1 또는 -1뿐입니다. 그래서'grad_x (|| x || _1)'는 단지'sign (x)'입니다. – Dougal

0

L1 표준은 미분 가능하지 않습니다. 이는 알고리즘이 잔차 중 하나가 0 인 지점으로 수렴하기 어렵게 만듭니다. 이것이 반복 횟수 제한을 초과 한 이유라고 생각합니다. 원래 문제가

min norm(residual(x),1) 

s.t. Aeq*x=beq 

경우 (전 x)는 미지의 원래 벡터이다 i 번째 잔류, X 잔여입니다

min sum(b) 

s.t. -b(i)<=residual(x,i)<=b(i) 

     Aeq*x=beq   

을 다음과 같이, differentiably 문제를 재구성 할 수 있습니다, b는 문제에 추가하는 바운드의 더 이상 알려지지 않은 벡터입니다.

관련 문제