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

고객지원

기술문의

변수사용에 관한 문의

  • 이상원
  • 2006.07.24
  • 조회수 1,778
제가 사용하는 변수는 배열처럼 인덱스를 가지고 있는데...
Cplex90 에서 배열을 다음과 같이 변수로 선언하여
사용할 수 있는지 궁금합니다.

for( i = 0 ; i < N u m S ; i + + )
for( j = 0 ; j < N u m I ; j + + )
{
IloNumVar X[i+1][j+1](env, 0, IloInfinity,ILOFLOAT);
}


제약식에서도.. (Linear combination) N[][] <-- 2차 배열을 사용할 수 잇는지... 궁금합니다.
for(k=0;k<NumTruck;k++)
{
c22=c22+N[i+1][k+1]*Ma_we_t[NumT+1]; <-- Q1. 선형제약을 이런식으로 표현가능한가??
}
m=0;
c2[m]=c21-c22; <-- Q2. 배열로 목적함수를 표현 할 수 있는가?
OptAlloc.add(c2[m]<=0);
m=m+1;


사용할 수 없다면.. CPLEX에서 변수의 인덱스가 2개인경우에 어떻게 다루어여 하는지 궁급합니다. ^^

댓글 1

  • 유환주2006-07-25
    방법1:

    //2차원 Array를 Matrix로 typedef 합니다.
    typedef IloArray < IloNumVarArray > IloNumVarMatrix;

    //Matrix에 들어갈 실제 변수를 생성합니다.
    IloEnv env;
    IloInt x = 3, y=5;
    IloNumVarMatrix vars(env, x);
    for (IloInt i = 0; i < x; i++) {
    vars[i] = IloNumVarArray(env, y, 0, IloInfinity);
    }

    //Matrix 변수를 2차원 인덱스로 엑세스 할 수 있습니다.
    for (IloInt i = 0; i < x; i++) {
    for (IloInt j = 0; j < y; j++) {
    cout << vars[i][j] << " ";
    }
    }

    ---------------------------------------------------------------------
    방법2:

    //2차원 변수를 선언하고 생성합니다.
    IloNumVar vars[3][5];
    for (IloInt i = 0; i < 3; i++) {
    for (IloInt j = 0; j < 5; j++) {
    vars[i][j] = IloNumVar(env, 0, IloInfinity);
    }
    }

    //변수를 2차원 인덱스로 엑세스 할 수 있습니다.
    for (IloInt i = 0; i < 3; i++) {
    for (IloInt j = 0; j < 5; j++) {
    cout << vars[i][j] << " ";
    }
    }
    아이콘삭제

댓글 입력