2013-08-02 3 views
3

최근에 저는 연구에서 2 차 제약 된 2 차 프로그래밍 (QCQP) 문제를 겪었습니다. MATLAB 최적화 도구 상자, 즉 'fmincon'함수 (비선형 제약 조건을 가진 일반적인 비선형 최적화)에서 유용한 것을 발견했습니다. 내 문제를 해결하기 위해 '내부 점 알고리즘'을 사용합니다. 여기에는 8 개의 변수, 1 개의 균등 2 차 제약 및 1 개의 불균등 2 차 제약 . 'Hessian'과 'Gradient'가 있든 없든 'fmincon'은 꽤 좋은 솔루션을 제공합니다. 주 코드에서 백만 번이나 호출해야하므로 효율성이 만족스럽지 않습니다. QCQP에 좀 더 구체적 일 수있는 것을 찾아야합니다. 효율성이 향상 될 수 있습니다. 그러나 netlib 및 wiki에서 많은 정보를 찾았지 만 어느 것을 사용해야하는지에 대한 판단이 없으며 하나씩 시도하는 것이 지루할 것입니다. 몇 가지 제안이 필요합니다. 그건 그렇고, 대부분이 문제에 대한 MATLAB 프로그래밍이지만, 적절한 C/포트란도 유용합니다.MATLAB에서 2 차 방정식 2 차 프로그래밍 (QCQP)

-Yan

+0

: 여기 QCQP를 해결하는 코드이다. 그 외에 다른 사람들이 더 빠른 알고리즘에 대해 이야기 할 수 있도록 spesific 문제에 대한 더 많은 정보를 제공해야 할 것입니다. –

+0

MATLAB 'quadprog'는 2 차 프로그래밍 솔버이지만 선형 등가성과 비등 성 제약 조건 및 경계 만 취합니다. 내 질문은 그것에 의해 처리 할 수없는 비선형 제약에 관한 것이다. MATLAB 'fmincon'은 제 문제에 매우 좋습니다. 그러나이 함수를 수백만 번 호출해야하기 때문에보다 효율적인 무언가를 찾고 있습니다. – ywang

답변

3

대안은 (문제의 많은 다른 종류의 사이에) QCQPs을 위해 잘 작동 CVX, available here을 사용하는 것입니다. 문제가 차 사용 'quadprog가'이면

close all; clear; clc 
n = 10; 
H = rand(n); H = H*H'; % make spsd 
f = -rand(n,1); 
Q = rand(n); Q = Q*Q'; % make spsd 
g = -rand(n,1); 
cvx_begin 
    variable x(n) 
    0.5*x'*Q*x+g'*x <=0 
    x >= 0 
    minimize(0.5*x'*H*x + f'*x) 
cvx_end