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

고객지원

기술문의

수리모형 모델링

  • 박해수
  • 2008.08.29
  • 조회수 1,974
f1...fi 결정변수이고,
fi 의 값은 집합{1,2,3,6} 중에서 하나의 값을 가질때,
xi 가 바이너리 값을 가지면 제약식에 바이너리 값이라고 넣어주면 되는데,
fi 의 경우에는 어떻게 제약식에 표현해야 되는지 궁금합니다.

또, 제약식에 min 값을 찾는 제약식이 가능한지도 궁금합니다.
ex) min L1 - E2
이런식으로 쓸수 있나요? 아니면 목적식이 2개 이어도 괜찮은지?? 궁금합니다.

댓글 2

  • 이보헌2008-09-01
    IloNumArray list(env, 4, 1, 2, 3, 6);
    IloNumVar f1(env, list);

    f1은 list의 값을 도메인으로 갖습니다.
    아이콘삭제
  • 유환주2008-08-29
    CPLEX에서 어떤값의 집합중에 하나를 가져야 한다는 표현은 까다로운 표현입니다 (값이 최소~최대의 범위로 표현되는 변수는 표현이 쉽습니다).
    아래와 같이 표현하는 것도 하나의 방법인데, 정수 변수가 많이 늘어나게 됩니다.
    IloNumArray vals(env,4,1,2,3,6);
    IloNumVarArray vars(env,4,0,1,ILOINT);
    IloNumVar fi(env,0,IloInfinity);
    cplex.add( IloSum(vars) == 1 );
    cplex.add( fi == IloScalProd(vars,vals) );

    두번째 질문은 잘 이해가 안됩니다.
    L1의 최소값을 찾고 E2의 최대값을 찾는 경우라면 아래 둘중 하나를 사용하면 됩니다:
    cplex.add( IloMinimize(L1 - E2) );
    cplex.add( IloMaximize(E2 - L1) );

    목적함수는 하나의 수식만 부여 가능합니다.
    아이콘삭제

댓글 입력