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

고객지원

기술문의

Cplex 질문입니다.

  • 최명진
  • 2009.07.06
  • 조회수 2,075
모든 i, j에 대해 y[i][j]==1이면
z[i][j]>=1을 표현하려합니다.

forall(i in I, j in J)
if y[i][j]==1 then
z[i][j]>=1;
endif;
라고 표현하였는데 결정변수 y가 빨간색으로 변하면서
syntex error라고 뜨네요..
if 라는 제어문 사용방법에 대해 알고싶습니다.

댓글 1

  • 이보헌2009-07-06
    if 문에는 결정변수나 결정변수를 사용한 제약식이 들어갈 수 없습니다.

    C++, java 에서는 IloIfThen 이라는 메소드를 사용할 수 있지만 OPL에서는 정의가 되어 있지 않은듯 합니다.

    OPL에서는
    BigM을 사용하여 수리모형을 변경하시거나,
    Logical constraints / Logical Expressions를 사용하여 표현하실수 있습니다.

    예1)forall(i in r) (x[i]<=5) || (x[i]>=10);
    예2)forall(i in r) (x[i]<=5 + x[i]>=10) == 1);
    아이콘삭제

댓글 입력