IBM ILOG Dispatcher User's Manual > The Basics > Adding Visit Disjunctions > Model > Define the createVehicles function

The createVehicles function is defined as in Minimizing the Number of Vehicles. You use csv reader functionality to input vehicle data from a csv file. The vehicles have start and end visits. You add side constraints that the vehicles must leave the depot after it opens and return to the depot before it closes. You set the capacities of the vehicles using IloVehicle::setCapacity and the dimension _weight. Using IloVehicle::setCost, the cost of each vehicle is set to be directly proportional to the dimensions _time and _distance. This code is provided for you:

 void RoutingModel::createVehicles(const char * vehicleFileName) {
  IloCsvReader csvVehicleReader(_env, vehicleFileName);
  IloCsvReader::LineIterator  it(csvVehicleReader);
  while(it.ok()) {
    IloCsvLine line = *it;
    char * namefirst = line.getStringByHeader("first");
    char * namelast = line.getStringByHeader("last");
    char * name = line.getStringByHeader("name");
    IloNum capacity = line.getFloatByHeader("capacity");
    IloNode node1 = IloNode::Find(_env, namefirst);
    IloNode node2 = IloNode::Find(_env, namelast);
    IloVisit first(node1, "depot");
    _mdl.add(first.getCumulVar(_weight) == 0);
    IloVisit last(node2, "depot");
    _mdl.add(last.getCumulVar(_distance) >= line.getFloatByHeader("open"));
    _mdl.add(last.getCumulVar(_distance) <= line.getFloatByHeader("close"));
    IloVehicle vehicle(first, last, name);
    vehicle.setCapacity(_weight, capacity);
    vehicle.setCost(_time, 1.0);
    vehicle.setCost(_distance, 1.0);
    _mdl.add(vehicle);
    ++it;
  }
  csvVehicleReader.end();
}