조건부 제약 조건을 CPLEX에 대해 COPERT C ++로 변환하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com//questions/23044428

  •  21-12-2019
  •  | 
  •  

문제

선형 프로그래밍을 위해 OPL을 사용하여 IBM ILOG CPLEX Optimization Studio를 사용하여 모델을 썼습니다.그러나 이제는 콘서트 C ++를 사용하여 동일한 모델을 작성해야합니다.그러나 나는 제약 조건을 변환 할 수 없습니다.

내 제약 조건 중 하나는 다음과 같습니다.

forall(i in Nodes)
           edgeSum[i]:                
              if(i==0)
                sum (j in Ein[0])x[<j,i>] - sum (j in Eout[0])x[<i,j>] == -1;
              else if (i>=1 && i<n/2)
                sum (j in Ein[i])x[<j,i>] - sum (j in Eout[i])x[<i,j>] == 0;     
             else 
               sum (j in Ein[i])x[<j,i>] <= 1;
.

특히 조건부 제약 조건을 작성하는 방법을 알아야합니다. 사전에 감사드립니다.

도움이 되었습니까?

해결책

와 같은 것을 시도하십시오.
for (i=0; i<numNodes; i++)
{
  if (i == 0)
  {
    IloExpr expr1(env);
    for (j=0; j<numIn[0]; j++)
      expr1 += x[EInIndex[0][j]];
    IloExpr expr2(env);
      expr2 += x[EOutIndex[0][j]];
    model.add(expr1 - expr2 == -1);
  }
  else if ((i >= 1) && (i < n/2))
  {
    // etc
  }
  else
  {
   // etc
  }
}
.

메모리 에서이 작업을 수행 했으므로 구문은 아마도 조금만 흔들립니다. 모든 경우의 모든 세부 사항을 채우지 않았습니다. 비슷한 구조로 가능 해주십시오.나는 또한 당신의 지표를 맹촉 할 것입니다 - 당신이 당신의 C ++ 코드에서 당신의 슬라이스 접근 방식을 어떻게 개조하는지 확실하지 않으므로 전에 내가 한 일을 기반으로 조금 추측했습니다.또한 나는 쉽게 첨가 될 수있는 제약 조건을 지명하지 않았습니다.CPLEX와 함께 제공된 C ++ 예제 중 일부를보십시오.

이렇게하면 조금

가 도움이됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top