2017-01-16 1 views
-2

max-min을 계산하는 MATLAB 코드를 작성했습니다.MATLAB에서 max-min 검색

ki=G(i,:); 
ki(i)=0; 
fs(i)=-((G(i,i)*pt(i)+sum(ki.*pt)+C1)-(C2*(sum(ki.*pt)+C1))); 

G : 나는 다음과 같은 문제를 해결하기 위해 MATLAB의 "fminimax"를 사용하고 는 시스템 행렬이다. pt :는 최적화 변수입니다.

실제 시스템 행렬을 사용하면 "fminimax"는 "pt"의 초기 값에 관계없이 한 번의 반복 작업 후에 중지되고 "pt"의 초기 값을 반환합니다. 즉 솔루션이 없습니다. (초기 값은 문서에서 X0으로 정의됩니다). 시스템은 다음과 같은 파라미터를 갖는다 : G는 e-11, pt는 e-1, c1은 e-14의 순서이다.
임의로 생성 된 테스트 매트릭스와 다른 매개 변수를 시도하면 "fminimax"가 문제의 해결책을 찾고 모든 것이 잘 작동합니다. G는 e-2 순서, pt는 e-2 순서, c1은 e-7 순서입니다.
"fminimax"는 두 개 이상의 반복을 지속했지만, 여전히 pt의 초기 값을 반환했습니다. 즉, 솔루션을 찾을 수 없습니다.
"options"[StepTolerance, OptimalityTolerance, ConstraintTolerance 및 functiontolerance]를 사용하여 "fminmax"의 허용 오차를 변경하려고했습니다. 전혀 영향이 없었습니다. 여전히 해결책이 없습니다.

"fminimax"의 정밀도가 그렇게 높지 않거나 문제를 해결하기에 적합하지 않다고 생각했습니다. 나는 또한 그것이 느리다라고 생각한다.
내가 CPLX를 다운로드했는데 책에서 발견 한 방법을 사용하여 max-min 문제를 선형 프로그래밍으로 변환하려고했습니다. 그러나, 간단한 minimax 내 코드를 시도했을 때 동일한 솔루션을 제공하지 않았다.

예를 들어 CVX를 사용하려고 생각했지만 문제는 볼록하지 않았습니다.

무슨 문제 일 수 있습니까?
P. 시스템 매트릭스, G는 다른 실현을 가지고, 나는 그들 중 일부를 시도. 그러나 "fminimax"는 모든 사용자에게 동일한 방식으로 응답합니다. 즉, 적절한 해결책을 찾을 수 없습니다.

+0

책, 도구, 소프트웨어 라이브러리, 자습서 또는 기타 오프 사이트 리소스를 추천하거나 찾도록 요청하는 질문은 스택 오버플로에 대해 주제와 관련이 없습니다. 독단적 인 답변과 스팸을 유치하십시오. 대신 문제를 설명하고 지금까지 해결 된 문제를 설명하십시오. – dasdingonesin

+0

@dasdingonesin 나는 질문을 수정했다, 나는 그것이 지금 더 적합하기를 바란다. 머리를 가져 주셔서 감사합니다. – os12

답변

0

최적화 해결사가 고장 났다고 나는 확신하지 못합니다. 문제가 nonconvex이면 여러 로컬 최소화 도구가있을 수 있습니다. 귀하가 제공 한 정보를 감안할 때, 귀하는 초기 상태에서 시작했는지 여부를 알 수 없습니다.

첫 번째로 필요한 것은 최적화 종료 조건에서 더 많은 정보를 얻는 것입니다 ... 반복 한도를 초과했기 때문에 완료 했습니까? (나는 많은 반복을하지 않기 때문에 희망이 없다.) ... 관용에 부딪혀서 끝났습니까 (예 : 함수가 xxxx 이상 변경되지 않았습니다)? 아니면 실현 가능한 해결책을 찾지 못했을까요? (나는 당신이 만날 필요가있는 제약이 있는지 모른다.)

아마도 로컬 미세화 기에서 시작하지 않고 있다고 생각합니다. 따라서 초기 추정에서 평가 된 함수의 jacobian을보고 로컬 최소화기에 있는지 확인해야합니다. 분석적으로 계산하거나 유한 단계 근사법을 사용하십시오 ....