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

고객지원

기술문의

초보라 질문 하나 더 드릴께요.

  • 권순욱
  • 2009.07.09
  • 조회수 2,377
이전 질문인 VC와 연동하는 것은 CPLEX 예제들이 돌아가는 것으로 보아 잘 이루어진거 같습니다.

연동 후에 시험삼아 간단한 LP 모델을 하나 작성했습니다.

(#include 할때 꺽쇠는 생략)


#include ilcplex/ilocplex.h

void main()
{
IloEnv env;

IloModel mod(env);
IloNumVarArray x(env,2,0,IloInfinity,Ilofloat);
mod.add(IloMaximize(env,3*x[0]+2*x[1]));
mod.add(2*x[0]+x[1]<=180);
mod.add(x[0]+x[1]<=80);
mod.add(x[0]<=40);

IloCplex cpx(mod);

int stat = cpx.solve();

if(stat)
{
env.out() << "objective value : " << cpx.getObjValue() << endl;
env.out() << "soldier : " << x[0] << endl;
env.out() << "train : " << x[1] << endl;
}

env.end();
}


이것을 실행하였더니

c:\ilog\concert25\include\ilconcert\ilosys.h(393) : fatal error C1083: 포함 파일을 열 수 없습니다. 'iostream.h': No such file or directory

라는 오류가 뜨네요.




제가 알기론 VC2005 이후로는

#include iostream.h

같은 .h 형태의 라이브러리는

#include iostream

using namespace std;

형태로 고쳐줘야 되는 것으로 알고 있는데요.


위의 CPLEX의 concert 경로상에 iostream.h이 없다는건

어떤 오류일까요?



질문이 잦아서 죄송합니다. ;;

댓글 1

  • 이보헌2009-07-10
    약간의 코드를 수정하였습니다.

    #include <ilcplex/ilocplex.h>
    ILOSTLBEGIN
    void main()
    {
    IloEnv env;

    IloModel mod(env);
    IloNumVarArray x(env,2,0,IloInfinity);
    ...
    ...
    ...
    이하 동일

    IloNumVar를 선언할때 IloNumVar는 이미 float 형을 지칭하고 있으므로 따로 float 형의 값을 사용한다고 따로 지정할 필요는 없습니다.
    하지만 형식을 지정할 필요가 있을겨우에는
    1. ILOFLOAT, ILOINT, ILOBOOL - 대문자
    2. IloNumVar::Float, IloNumVar::Int, IloNumVar::Bool
    - IloNumVar 의 Type
    를 사용하시기 바랍니다.

    그리고 결과 출력부분에서
    변수의 결과 값을 프린트 하기 위해서
    cpx.getValue(x[0]);
    과 같이 IloCplex 클래스의 getValue() 함수를 사용하셔야 원하는 결과값이 나옵니다.


    처음 사용하실 때에 모르는 부분이 있는것이 당연하지요. ^^
    언제든지 편하게 물어보세요. ^^
    아이콘삭제

댓글 입력