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

고객지원

기술문의

QP

  • 강보람
  • 2012.10.30
  • 조회수 2,151
안녕하세요^^ 수고하십니다..
제가 CPLEX 사용 시작단계라,, 기초적인것들을 물어보려고 합니다.

1. QP는 목적함수를 입력하면
Minimize
obj: [ a^2 - 2 a * b + b^2]/2 이렇게 나누기 2가 표시가 되고
출력값 또한 나누기2가 되어서 나오던데,,, 정상적인 출력결과값을 얻으려면 어떻게
해야하나요?

2. Bounds에서 아래와 같이 x1의 범위를 2개로 주고 그것들의 교집함 처리를 해서
범위를 주고 싶으면 어떤 식을 써야하나요? 예를 들어 Matlab등은 and로 표현한 다음에 입력하면 교집합이 되는데,, cplex는 무엇을 입력해야는지 궁금합니다.
Bounds
y1 = 21.398
-6.38 <= x1 <= 5.1
-3.3 <= x1 <= 6.7

3. cplex 매뉴얼을 보면 예제들이 많이 나와있던데 실제적으로 예제파일을 cplex.exe에서 어떻게 불러올 수 있는지 잘 모르겠어요 ㅜㅜ 알려주세요~~

이상입니다. 기초적인것들인데,, 이제 시작이라 모르는것들이 너무 많네요.
부탁드려요~^^

댓글 3

  • 이병기2012-10-30
    KSTEC 이병기입니다.

    1. 주어진 목적식에 나누기가 포함되어 있으므로 Objective Value를 출력하면 당연히 나눈 값이 출력됩니다.
    어떤 값을 정상적인 값이라고 보시는지 잘 모르기 때문에, 정확한 답변을 드릴 수 없습니다.

    2. CPLEX에서도 제약식 또는 결정변수의 값을 제한하기 위한 상/하한의 제한을 여려개 줄 수 있습니다.
    당연히 교집합의 범위 내에서 최적 결정변수 값을 결정하게 되며, 위의 식과 같이 여러개를 입력하시면 됩니다.

    3. CPLEX의 예제들은 각각의 구현 환경에 대한 여러 예제들을 포함하고 있습니다.
    C, C++, Matlab 등을 이용한 모델링 및 구현 방법과 IBM ILOG의 Script Language인 OPL을 이용한 방법 등이 포함되어 있습니다.
    말씀하시는 CPLEX.EXE를 이용하는 Interactive Optimizer에서는 각각의 식을 직접 Typing하여 입력하거나, 이미 만들어진 모델(확장자가 lp, mps 등)을 불러와서 문제를 푸는 경우에 사용됩니다.
    Interactive Optimizer에서의 명령어는 Help에서 "Interactive Optimizer"로 검색해 보시면 찾을 수 있습니다.
    그러나, CPLEX에 처음 접하시는 것이면, "CPLEX Studio IDE"를 이용하는 OPL 방법을 권해드립니다.
    Interactive Optimizer보다 IDE 환경에서의 OPL 모델링 및 풀이 방법이 다루기 쉽습니다. Help에서 IDE and OPL > Starting Kit 부분부터 보시면 될 것 같습니다.
    Matlab을 계속 사용하는 경우에는 Help에서 "CPLEX for MATLAB"을 참조하시기 바랍니다.

    이상입니다.
    감사합니다.
    아이콘삭제
  • 강보람2012-10-30
    감사합니다. ^^ 그런데 더 보충해서 물어봐야 할것 같아서,,,
    1번, 2번문제에 대한 캡쳐화면을 파일첨부하였습니다.

    1. 저는 메모장에
    Minimize
    obj: [ x^2 + y^2 ] 이렇게 입력하였고 나누기 2를 하지 않았습니다.
    그런데 cplex.exe에서 read te.lp 이렇게 불렀을때
    빨간색 줄친 부분처럼 떴고~
    dis pro all 해서 출려고하면을 보았을 때는
    obj에 /2가 붙어서 나왔고
    opt를 입력하여 얻게되 결과값 또한 13이 아닌 6.5가 나옴을 확인했습니다.

    2. 예를 들어 여러개를 입력한 결과
    출력 화면은 교집합이 아닌 2 <= x <= 5 제일 아래의 범위였습니다.. ㅜㅜ
    안되서 여쭈어본것인뎀, ㅠ

    자세히 알려주시면 감사하겠습니다^^
    아이콘삭제
  • 이병기2012-10-30
    KSTEC 이병기입니다.

    1. interactive optimizer 상태에서는 quadratic model을 변형하여 입력하여야 합니다.
    첨부된 압축파일 내 lp 파일(CPLEX Studio IDE를 이용한 모델의 lp 추출 결과)과 help topic "Changing quadratic terms"을 참조하시기 바랍니다.
    interactive mode나 lp format을 이용한 quadratic 입력 방법에 대해서는 저희도 많은 지식이 없는 점 양해 부탁드립니다.

    2. Bound로 선언하는 것은 변수에 대하여 가질 수 있는 값의 범위를 설정하는 것입니다.
    따라서 중복선언하게 되면 합집합의 개념이 됩니다. 말씀하시는 교집합으로 적용하기 위해서는 제약식(Subject to)으로 선언하여야 합니다.
    첨부된 압축파일내 화면을 참조하시면 CPLEX Studio IDE를 이용해서 풀었을 경우, x=2, y=3, objective value=13 으로 정확하게 나옵니다.
    아이콘삭제

댓글 입력