안녕하십니까. 다름이 아니라 솔라리스 환경에서 callable library를 사용해서 작업중인데요 입력에 따라 최대 60000개 정도의 제약조건이 생성됩니다. 그리고 찾고자 하는 변수 또한 최대 20000개 정도가 되는데요 이러한 변수와 제약조건을 하나의 자료구조로 생성하는것이 무리라 이렇게 질문을 드립니다. 제약조건이 상당히 많을 경우 모델을 구성하는 방법에 대해서 힌트를 주셨으면 감사하겠습니다. 그럼 수고하십시오.
댓글 3
장용성2003-09-30
우선 callable library를 사용하기가 불편하기 때문에 가장 좋은 방법은 concert를 사용해서 문제를 표현하는 게 상당히 쉬울 거라고 생각하구요, 그럴 사정이 안 되시면 concert처럼 데이터를 처리할 수 있게 lp를 표현하기 위한 클래스가 필요합니다. 예를들어 MyCplex라는 클래스를 만들어서 그 안에서 addRow(), startColumn(), addNzToCurrentColumn(), endColumn()등의 멤버를 통해서 접근하시면 쉬울 수 있을 거 같구요.
각 변수를 만들때는 필요없는 변수를 제거하기 위해서 컴파일러가 지원을 해줄 수 있다면 map을 통해서 인덱스로 관리를 해주시는 게 좋을 것 같구요. 변수나 제약식은 종류별로 배열을 만드시는 게 좋을 것 같습니다.. 종류별로 클래스를 만드시는 것도 유용할 겁니다. 예를 들어 제약식의 종류별로 MySetRows클래스를 만들거나, 변수의 종류별로 MySetColumns클래스를 만들어서 그 안에 변수나 제약식에 해당되는 자료를 집어넣는 겁니다.
아마 제가 위에서 언급했던 MyCplex 클래스 정의만 해도 많이 수월해 질 거라고 봅니다. 수고하세요..
보안상 모든 부분은 불가능하구요, 일부 함수를 보여드리겠습니다.. IlCgCplex::IlCgCplex(int c,int r,int z) :numRows_(0), numCols_(0), numNz_(0), numColNz_(0), clp_(0), maxMipMins_(-1) {