파이썬에서 선형 제약 조건으로 최소 제곱 문제 해결


12

나는 해결해야한다

minxAxb22,s.t.ixi=1,xi0,i.

내가 생각하는 그것으로 풀 수 있어야한다 이차 문제 CVXOPT ,하지만 난 방법을 작동하지 않을 수 있습니다.


이 질문이 compsci에 너무 구체적이지 않기를 바랍니다.
tillsten

Geoff Oxberry : 호기심이 많지만 왜 선형 부분을 편집 했습니까? 나는 그것이 문제 설명의 무해한 부분이라고 생각합니다. 비선형 최소 제곱 최적화의 경우 해결책이 상당히 다릅니다.
tillsten

Btw, 다른 편집은 훌륭합니다!
tillsten

매우 효율적인 방법으로 자신의 코드로 쉽게 해결할 수 있습니다. CVXOPT가 필요하지 않습니다.
Royi

답변:


11

내가 발견하기 전에 (행 아래) 전체 답을 썼다 CVXPY (MATLAB에 대한 CVX 같은) 당신을 위해 모든 하드 물건을 수행하고 당신과 거의 동일 매우 짧은 예를 가지고, 여기를 . 관련 줄만 바꾸면됩니다.

 p = program(minimize(norm2(A*x-b)),[equals(sum(x),1),geq(x,0)])

내 대답은 CVXOPT로 더 열심히하는 것입니다.

Geoff의 제안에 따라 목적 함수의 제곱

Axb22=xTATbT,Axb=xTATAxbTAxxTAbbTb

물론 모든 항은 스칼라이므로 세 번째 항을 바꾸고 마지막 항을 버릴 수 있습니다 ( 의존하지 않으므로 를 최소값으로 변경 하지는 않지만 다시 추가해야 함) 에서 수득)하여 목표의 정확한 값을 얻기 위해 해결 후 에 따른다 () 제약 조건을 포함 이것은, 이차 프로그램의 형태를 갖는다 이러한 문제를 해결하기위한 예제 코드가 있는 CVXOPT 문서를 참조하십시오 .xx

xTATAxbT(A+AT)x

4

해결 한 문제 대신 해결

minxAxb22,s.t.ixi=1,xi0,i.

이 문제는 CVXOPT, IPOPT 또는 다른 볼록 최적화 솔버에서 해결할 수있는 차별화되고 볼록한 비선형 최적화 문제입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.