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

고객지원

기술문의

3D-ARRAY 질문있습니다.

  • 김성은
  • 2020.07.01
  • 조회수 842
안녕하십니까, 질문있어서 문의 드립니다.

예제 파일에서 3차원 배열을 만드는 문제를 통하여 코딩을 해봣는데 SOLVE를 못하여 문의드립니다.

typedef IloArray<IloNumVarArray> NumVarMatrix;
typedef IloArray<NumVarMatrix> NumVar3Matrix;

int work_time = 24;

int fif_matrix = 50;
int thr_matrix = 3;
int two_matrix = 2;
int one_matrix = 1;



//// elec and heat, gas( anyway) chp [24][3][3]
NumVar3Matrix arr_cpx_total_chp(env, work_time);
for (int i = 0; i < work_time; i++) {
for (int j = 0; j < thr_matrix; j++) {
arr_cpx_total_chp[i][j] = IloNumVarArray(env, thr_matrix);
for (int k = 0; k < thr_matrix; k++) {
arr_cpx_total_chp[i][j][k] = IloNumVar(env, 0, IloInfinity, ILOFLOAT);
}
}
};

3차원 배열을 이렇게 정의하면 되는 것인지 궁금합니다.

감사합니다.

수고하십시오

댓글 1

  • 비회원2020-07-08
    김성은님이 공유해주신 코드를 아래와 같이 대체해 보았습니다.

    방법1 : 작성자님이 구현하고자 하는 의도대로 구현한 방법
    방법2 : array의 개수는 for 문을 도는 개수로 한정하면서 add 하는 방법.

    NumArray로 정의해서 출력되는 결과까지 검토한 것입니다.
    따라서 변수로 정의하실때는 IloNumArray --> IloNumVarArray. 로 수정하시면 되겠습니다.
    차원 Array 구현방법은 더 간한하게도 가능하지만, 아래처럼 standard 한 방법으로 구현해 보심을 추천 드립니다.
    수고하세요

    int work_time = 24;
    int fif_matrix = 50;
    int thr_matrix = 3;
    int two_matrix = 2;
    int one_matrix = 1;

    // 방법 1
    IloArray <IloArray<IloNumArray>> matrix(_env, work_time);

    for (int i = 0; i < work_time; ++i)
    {
    IloArray<IloNumArray> secondMatrix(_env, thr_matrix);
    matrix[i] = secondMatrix;

    for (int j = 0; j < thr_matrix; ++j)
    {
    IloNumArray numArray(_env, thr_matrix);
    matrix[i][j] = numArray;

    for (int k = 0; k < thr_matrix; ++k)
    {
    matrix[i][j][k] = i+j+k;//IloNumVar(_env, 0, IloInfinity);
    }
    }
    }

    // 방법 2
    //IloArray <IloArray<IloNumArray>> matrix(_env);

    //for (int i = 0; i < work_time; ++i)
    //{
    // IloArray<IloNumArray> secondMatrix(_env);
    // matrix.add(secondMatrix);

    // for (int j = 0; j < thr_matrix; ++j)
    // {
    // IloNumArray numArray(_env);
    // matrix[i].add(numArray);

    // for (int k = 0; k < thr_matrix; ++k)
    // {
    // //matrix[i][j][k] = i + j + k;//IloNumVar(_env, 0, IloInfinity);
    // matrix[i][j].add(i + j + k);
    // }
    // }
    //}

    // 출력 test
    for (int i = 0; i < work_time; ++i)
    {
    for (int j = 0; j < thr_matrix; ++j)
    {
    for (int k = 0; k < thr_matrix; ++k)
    {
    cout << i << "-" << j << "-" << k << "->" << matrix[i][j][k] << ";";
    }
    cout << endl;
    }
    cout << endl;
    }
    아이콘삭제

댓글 입력