public double cost() { double totalCost = 0; for (MyVehicle v : vehicleActions.keySet()) { City c = v.homeCity(); long vehicleDistanceSum = 0; for (Action action : vehicleActions.get(v)) { vehicleDistanceSum += c.distanceUnitsTo(action.getCity()); c = action.getCity(); } double vehicleCost = Measures.unitsToKM(vehicleDistanceSum * v.costPerKm()); totalCost += vehicleCost; } return totalCost; }
public boolean appendTaskToBiggestMyVehicle(Task t) { MyVehicle biggestMyVehicle = domainVal.vehicles.get(0); for (MyVehicle v : domainVal.vehicles) { if (biggestMyVehicle.capacity() < v.capacity()) { biggestMyVehicle = v; } } if (biggestMyVehicle.capacity() < t.weight) { return false; } else { appendActionForMyVehicle(new Action(Type.PICKUP, t), biggestMyVehicle); appendActionForMyVehicle(new Action(Type.DELIVERY, t), biggestMyVehicle); return true; } }
public Plan getPlanForMyVehicle(int index) { MyVehicle v = domainVal.vehicles.get(index); City currentCity = v.homeCity(); Plan plan = new Plan(currentCity); for (Action a : vehicleActions.get(v)) { City destination = a.getCity(); for (City c : currentCity.pathTo(destination)) { plan.appendMove(c); } if (a.type == Type.PICKUP) plan.appendPickup(a.task); else plan.appendDelivery(a.task); currentCity = destination; } return plan; }