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

고객지원

기술문의

수리모형

  • 박해수
  • 2008.09.23
  • 조회수 2,101
수리모형 제약식이 결정변수에 따라서 변하게 되는 모형이 있습니다.
첨부파일에 수식 첨부했습니다.
다운로드아이콘수리모형.doc

댓글 5

  • 김민규2008-09-23
    보통 결정변수의 값을 정할때 제약식으로 해의 범위를 축소시키는데요. 제약식이 결정변수에 따라 변한다는 것은 쉽게 이해하기 힘든 부분입니다. 시간에 따라 stage를 나누어 전 stage의 값을 다음 stage에 사용하는 stochastic programming의 형태가 있긴 하지만, 첨부된 문서만 가지고는 풀고자 하는 문제의 목적을 정확히 알기 어렵습니다. 자세한 문제 상황을 설명해 주시면 감사하겠습니다.
    아이콘삭제
  • 박해수2008-09-25
    여러 지점들의 보충 주기와 보충량, 보충시점 을 구하는게 목적입니다.
    정해진 보충기간을 지켜가면서 보충을 해야 되는 문제입니다.
    수리모형을 다시 첨부해서 보내드립니다.

    부가적으로

    보충주기가 2일때는..
    제약식이 y[01]+y[02]=1 , y[02]+y[03]=1 .... y[T-2-1]+y[T-2]=1 되구요.
    보충주기가 3일때는
    제약식이 y[01]+y[02]+y[03]=1, y[02]+y[03]+y[04]=1.
    이런식으로 제약식이 변하게 됩니다.



    아이콘삭제
  • 임승빈2008-09-25
    안녕하세요.

    y_it 변수와 f_i 변수 모두 현 모델에서 결정되어져야 할 변수네요.

    그렇다면 (7)번 제약은 구성(적용)될 수가 없을 것으로 생각됩니다.

    모델 풀이 시점에서, (7)번 제약이 적용되기 위해서는 f_i 변수(값)가 미리 결정되어져야 합니다.

    하지만, 현 모델에서는 풀이 과정에서 f_i 와 y_it가 동시에 결정되어지게 되어있습니다.
    따라서 (7)번 제약에 모순이 발생되어지는 것으로 생각됩니다.


    감사합니다.



    아이콘삭제
  • 박해수2008-09-25
    음...그럼.. 결정변수가 다른 변수의 첨자로 사용되는 경우는 CPLEX 에서 풀수 있는지 궁금합니다.

    예를 들면 T가 결정변수이구요. 그에 따른 Q_T 는 T 시점에 발주량입니다.

    이런 표현이 가능한지 궁금합니다.
    아이콘삭제
  • 임승빈2008-09-26
    안녕하세요.

    우선 결정변수를 다른 결정변수의 첨자로 사용하는 생각하시기 전에, 과연 제약 형태가 LP/MIP의 정규화 형태인지 고려해 보셔야 할 것 같습니다.

    결정해야 하는 변수가 binding 되지 않은 상태에서 다른 변수의 index로 사용한다는 것은 LP/MIP 모델 규약에 어긋납니다.

    문제가 풀려야 알 수 있는게 결정변수의 값인데, 이것을 문제가 풀리지 않은 상태에서 또다른 변수의 첨자로 사용한다는 것은 모델 구성과 순서가 잘못된 것으로 생각됩니다.

    결론적으로 제약 자체의 구성이 어려울 것으로 생각됩니다.

    따라서 위 결정변수를 결정하는 또다른 sub problem을 구성하셔서 값을 구하거나, phase 별 풀이 방식 또는 휴리스틱을 이용한 방식 등이 필요할 것으로 생각됩니다.

    아울러 cplex를 이용한 제약적용 셈플 코드는 아래와 같습니다.

    Q_i라는 0-1 변수가 있다고 가정하고 Q 변수의 합이 1이 되는 제약을 적용할 경우,
    Q_i, i=1...10

    코드
    IloEnv env;
    IloModel model(env);
    IloIntVarArray Q(env, 10, 0, 1);

    => 제약 적용부분
    model.add(Q[0] + Q[1] + ....+ Q[9] == 1);

    만약 결정변수가 index i를 대신한다고 한다면, 이것은 제약 적용 자체가 불가능 합니다. 변수 선언부에서도 Q 변수의 index range를 알 수가 없습니다.


    감사합니다.

    아이콘삭제

댓글 입력