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

고객지원

기술문의

dispatcher관련 문의

  • 강경환
  • 2005.12.19
  • 조회수 1,547
안녕하세요. dispatcher사용간에 어려운 점이 있어서 질문드립니다.

아래 내용은 마지막 display 화면인데요..
---------------------------------------------------
Cost : 161.66
Number of vehicles used :
Solution :
customer:12
Unperformed visits : None
Vehicle 0 Route : Depot -> 4 -> 1 -> 2 -> 3 -> 5 -> 7 -> 6 -> 9 -> 8 -> 10 -> Depot
------------------------------------------------
질문)
여기서, 고객정보 즉, 4, 1, 2, 3.... 이 정보만을 다른 변수로 저장하고 싶은데, 어떻게 불러야 하나요?
---------------------------------------------------------------

예를들어 총 비용은 dispatcher.getTotalCost() 로 부르잖아요..
위 화면은 그냥 iloterse(dispatcher)로 부른화면입니다..

댓글 1

  • 김용환2005-12-19
    해를 출력하는 방법은 Iterator를 돌면서 해당 변수의 결정된 값을 출력하게 됩니다.

    IloRoutingSolution과 IloDispatcher 클래스를 이용하는 방법이 있는데 IloDispatcher을 이용하는것이 조금 편할듯 합니다.


    /////////////////////////////////////////////////////////////

    IloSolver solver(model);
    IloRoutingSolution solution(model);
    IloDispatcher dispatcher(solver);

    문제를 풀고...

    solution.store(solver);


    for (int i = 0; i < dispatcher.getNbOfVehicles(); i++)
    {
    IloVehicle vehicle = dispatcher.getVehicle[i];
    IloVisit firstVisit = vehicle.getFirstVisit();
    IloVisit lastVisit = vehicle.getLastVisit();

    if(!solution.isUnused(vehicle)) // 서비스한 차량만
    {
    for (IloDispatcher::RouteIterator iter(dispatcher, vehicle); iter.ok(); ++iter)
    {
    IloVisit visit = *iter;

    if(visit.getName() != firstVisit.getName() && visit.getName() != lastVisit.getName())
    {
    int startTime = dispatcher.getCumulVar(visit, time).getMin();
    int endTime = startTime + dispatcher.getDelayVar(visit, time).getMin();

    cout << visit.getName() << "\t" << startTime << "\t" << endTime << endl;
    }
    }
    }
    }
    아이콘삭제

댓글 입력