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

고객지원

기술문의

하나의 메인 함수에 여러개의 최적화 문제를 풀수 있나요?

  • 김광희
  • 2012.02.17
  • 조회수 1,902
MIP 문제를 라그랑지안 완화 기법을 이용해서 풀려고하는데

하나의 메인함수에서 여러개 최적화 문제를 풀수 있는지 알려주세요

그리고 최적화 문제를 풀고 결과값을 env.end() 다음으로 가지고 오는 방법은 없나요

기초가 부족해서 물어봅니다

파일첨부할게요 부탁드립니다 다운로드아이콘cplextest.cpp

댓글 1

  • 김민규2012-02-20
    1.
    하나의 메인함수에서 여러개의 최적화 문제를 푸는 것은 가능하지만 일반적으로 하나의 문제를 구성하는 것이 구현상 오류가 적게 납니다.

    단, 같은 모델을 파라미터나 데이터에 따라 조금 다르게 반복적으로 수행하고자 할때 모델을 호출하는 부분에 반복문을 걸어 구현하는 경우가 있는데요. 이때 주의하실 점은 Concert library의 메모리를 관리하는 env의 관리입니다.

    IloEnv env;
    모델 구현
    env.end();

    위와 같은 형태로 구현해야 메모리가 해제됩니다.
    이때 env를 다시 사용하거나 메모리상 오류를 피하기 위해 다음과 같이 초기화를 넣는 게 보통입니다.

    IloEnv env = IloEnv();

    2. env.end(); 가 끝난 후에는 Ilo 환경과 관련된 메모리가 해제되기 때문에 문제의 결과를 cplex.getValue(변수); 형태로 가져올 수 없습니다. 따라서 env.end()를 수행하기 전에 Ilo 환경과 관련없는 일반 변수에 (double, int 등이 되겠죠.) 값을 복사하여 필요하시면 추후에 사용합니다.

    IloEnv env;
    모델 구현
    double xValue = cplex.getValue(X);
    env.end();
    cout << xValue << endl;

    형태가 되겠지요.

    설명이 되었는지 모르겠네요.
    아이콘삭제

댓글 입력