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

고객지원

기술문의

오류 수정을 도와주셨으면 합니다.

  • 권순욱
  • 2009.07.15
  • 조회수 2,115
얼마전 VC++ 와 CPLEX 연동 질문을 시작으로

도움을 많이 주신 덕택에 직접 fomulation 하나를 작성해보는

단계까지 왔습니다. 먼저 너무 감사드립니다.


지금 제가 풀고있는 문제의 비교 대상이 되는 문제의

Fomulation을 C++로 코딩해봤는데요, LP 파일로 실행했을 때는

Solution이 나오는데 C 코딩에는 어딘가 문제가 있는거 같은데

해결하기가 쉽지가 않네요.


나름 메뉴얼과 예전의 질문 답변들을 참고해가면서 작성한 것인데, CPLEX concert의 문법이 익숙치 않아서 어디를 손대야 될지 감이 잘 오지 않네요. 사실 C++ 코딩 실력 역시 변변찮구요.

아래 첨부한 파일을 한번 검토해 주시면 정말 감사하겠습니다.

(문제설명, LP파일, C++ 코드 폴더 로 구성되어있습니다.)



ps. X[i][t], T[i][j][t] 처럼 여러개의 index를 가지는 변수들의 선언은 메뉴얼을 봐도 잘 이해가 안되서, 예전의 다른 질문자의 코딩을 수정해주신 부분을 참고해서 작성했습니다.


(communication route: loblover1@naver.com) 다운로드아이콘test_problems.zip

댓글 1

  • 이보헌2009-07-16
    1. C++ 에러
    - 배열을 사용함에 있어 배열의 사이즈를 초과하는 인덱스를 사용하면 에러가 출력됩니다.
    예를 들어, float C[ 3 ] 으로 정의해 놓고 C[3]의 값을 찾는 경우
    - 배열을 탐색할때 "for(i,,i++) "에 대한 구문이 종료된 후 i인덱스를 사용하면 i는 for문 내에서 마지막 사용된 수치+1의 값을 갖습니다.
    즉, 배열의 사이즈보다 큰 인덱스를 사용하게 됩니다.
    - for 문이 수행되는 한도를 nb_item, nb_priod 까지라고 하고 두개의 상수 모두 같은 값을 주어 현재 소스가 실행되지만, for문 안에서 두개의 상수를 혼용하고 있으므로 서로 다른 값을 주면 사이즈에러가 발생할 것입니다.

    2. cplex 에러
    - cplex 에 사용하는 제약식은 " ==, <=, >= "의 세가지 표현만 적용됩니다.
    사용하시는 제약식중 ' = '을 사용하는 부분이 있는데 ' == '으로 수정해 놓았지만 값을 치환해 주려는 의도였다면 잘못된 표현 방식입니다.

    저희가 c++등의 언어 관련 기술지원까지 해 드릴수는 없습니다.
    이번과 같은 경우 ILOG S/W관련 에러가 있는지 확인하기 위하여 먼저 나타나는 C++에러를 수정하였습니다.
    실행은 되는데 infeasible 메시지가 나옵니다.
    첨부를 참고하세요.
    헤더파일은 수정하지 않았습니다.
    아이콘삭제

댓글 입력