1

MATLAB에서 볼록 최적화 문제의 수렴 속도를 높이고 싶습니다.MATLAB : 볼록 최적화 알고리즘의 느린 수렴

내 목적 함수는 3 개의 매개 변수를 갖는 볼록이며 최대화를 위해 그라데이션 상승을 사용하고 있습니다.

지금은 수동으로 새 매개 변수 값과 이전 매개 변수 값 사이의 차이가 종료 조건으로 반복 작성하는 중입니다 (약 0.0000001). 최적의 솔루션으로 수렴했다는 것을 보장하지 않기 때문에 반복 횟수에 따라 종료 할 수 없습니다.

이렇게 수렴하는 데는 거의 2 일이 걸립니다. 이 속도를 높이는 방법이 있습니까?

사실 내 목적 함수는 세 가지 매개 변수 만 있습니다. 내 첫 번째 매개 변수의 값이 두 번째 매개 변수의 값보다 커야한다는 것을 알고 있습니다.

초기 조건부터 시작하면 두 번째 매개 변수의 값이 급격히 증가하기 시작합니다. 특정 지점에 도달하면 첫 번째 매개 변수 값이 빠르게 증가하기 시작합니다. 첫 번째 매개 변수의 값이 증가하기 시작하는 동안 두 번째 매개 변수의 값은 천천히 감소하기 시작합니다. 결국, 첫 번째 매개 변수의 값이 두 번째 매개 변수의 값보다 큽니다.

처리 속도를 높일 방법이 있습니까? 2 일은 매우 긴 시간입니다. 또한, 그래디언트를 계산하는 것도 시간 소모적입니다. 그것은 많은 행렬 계산을 필요로합니다.

parameter1의 값이 second보다 큰 값으로 정의 된 값으로 시작하고 싶지 않습니다. 또한 첫 번째 매개 변수는 항상 두 번째 매개 변수보다 커야 할 필요는 없습니다. 나는 어떤 매개 변수 값이 더 커야 하는지를 알고있다. 어떤 제안?

+2

정직하게 말하자면, 약간의 수학은 질문을 이해하는 데 도움이되었을 것입니다. 목적 함수는 무엇입니까? 어떤 알고리즘을 사용하고 있습니까? 어떻게 구현 했습니까? 세 가지 가능한 문제가 있습니다. 알고리즘이 목적 함수에 적합하지 않습니다. 초기 값이 잘못되었거나 구현이 최적이 아닙니다. – Thilo

+1

그래, 우리에게 변수와 그 값에 대해 알려주지 않고 그라디언트 상승 구현, 특히 업데이트 규칙에 대한 자세한 내용을 제공해야합니다. – 3lectrologos

+1

그래디언트 검색은 뉴턴 유형 최적화이지만 그 가족 중에서 가장 느립니다. 비선형적인 경우 Gaus-Newton (LM 포함 또는 제외) 또는 [BFGS] (http://en.wikipedia.org/wiki/BFGS_method)를 사용해 보시지 않겠습니까? 대부분이 시간은 훨씬 빠릅니다. 다른 해결책을 완성하십시오 : 어쩌면 당신은 [yalmip] (http://users.isy.liu.se/johanl/yalmip/pmwiki.php?n=Main)을 사용할 수 있습니다.WhatIsYALMIP) –

답변

0

그라디언트의 계산은 매우 느리고 당신은 여전히 ​​당신이 시도 할 수 수동 구현, 더 조치를 취할 것입니다하지만 단계가 너무 간단으로 빨리 많은 수 수행 할 경우

가 정의 스텝 사이즈의 방향에 가변 이동 -1, 0 또는 1 회 (3^3 = 27 가능성)

최고 한 경우 가장 하나

선택 여기서

모든 점 사용해 스텝 사이즈 너의 이전 하나, 멀티 iply 단계별 요인 0.5

물론이 프로세스의 성공 여부는 함수의 속성에 따라 다릅니다. 또한 훨씬 간단한 해결책은 원하는 차이를 0.0001과 같이 설정할 수 있다는 점에 유의해야합니다.