주메뉴 바로가기 본문 바로가기 하단 바로가기

고객지원

기술문의

CPlex로 LP 풀때 Error관련 질문드립니다.

  • 김용우
  • 2007.10.15
  • 조회수 1,479
첨부한 파일의 LP를 importModel해서 Solve하면

CPlex Error 5002: Q in objective is not positive semi-diginite. 라고 나오는데 무엇이 문제일까요.

아래의 내용이 첨부한 lp모델인데,

Minimize
obj: [ 0.005913 id1 ^2 + 0.171490 id1 * id2 + 0.001131 id2 ^2] / 2
Subject To
c1: 0.051281 id1 + 0.029377 id2 >= 0.01
c2: id1 + id2 = 1
Bounds
0 <= id1 <= +inf
0 <= id2 <= +inf
End

위의 모델의 obj 중 id1 * id2의 계수를 0.171490에서 0.00171490으로 바꾸면 id1과 id2의 최적값을 0.0513, 0.9486
으로 구할수 있습니다.

Error 이유가 무엇인지 궁금합니다. 다운로드아이콘example.lp

댓글 1

  • 이보헌2007-10-18
    김용우님께서 말씀하신 결과는 1/2 을 목적함수에서 뺏을 경우 같군요.

    c1 제약은 c2에 의해 무시됩니다.
    c2의 제약에 의해 id1, id2는 0~1 의 값밖에 가질 수 없습니다.

    목적식의 형태가 위로 볼록한 concave 인경우 Maximize 문제 밖에 풀 수 없습니다. (convex 는 Minimize)

    id1*id2 의 계수를 0.0017149 로 바꿨을 경우에는 id1, id2 가 0~1 사이의 값을 갖는 구간이 아래로 볼록한 convex 이며 minimize 를 구할 수 있습니다.

    id1*id2 의 계수가 0.17149일경우 목적함수는 위로 볼록한 concave 형태를 갖습니다.

    CPLEX에서 QP를 풀기 위한 제한 사항들이 메뉴얼에 정리 되어있습니다. 메뉴얼의 QP, PSD 관련 설명을 참고하시기 바랍니다.
    아이콘삭제

댓글 입력