@Override public double evaluate() { DeterministicMaxWorkTimeNodes wton = new DeterministicMaxWorkTimeNodes(); int vehiType = -1; int departureNode, arrivalNode; double timeSpent = 0, speed; Request req; // each route for (Route r : Solution.getRoutes()) { vehiType = (r.isHasType() ? r.getType() : -1); if (Instance.getRequest(r.getRequests().get(0).getId()).getAttribute("serviceTime") != null) timeSpent += ((DoubleValue) Instance.getRequest(r.getRequests().get(0).getId()) .getAttribute("serviceTime") .get(0)) .getValue(); for (int reqIndex = 1; reqIndex < r.getRequests().size(); reqIndex++) { req = r.getRequests().get(reqIndex); arrivalNode = req.getNodeId(); departureNode = r.getRequests().get(reqIndex - 1).getNodeId(); if (vehiType != -1) speed = wton.getSpeed(Instance.getVehicle(vehiType).getAttribute("speedProfile"), timeSpent); else speed = wton.getSpeed(Instance.getVehicle(vehiType).getAttribute("speedProfile"), timeSpent); timeSpent += DistanceCalculator.calculateDistance(departureNode, arrivalNode) / speed; if (Instance.getRequest(req.getId()).getAttribute("serviceTime") != null) timeSpent += ((DoubleValue) Instance.getRequest(req.getId()).getAttribute("serviceTime").get(0)) .getValue(); } } return timeSpent; }
/* * (non-Javadoc) * * @see * vrpRep.solutionChecker.constraint.IConstraint#evaluate(vrpRep.solutionChecker * .instance.DefaultInstance, * vrpRep.solutionChecker.solution.DefaultSolution) */ @Override public ConstraintEvaluation checkConstraint() { cEval = new ConstraintEvaluation(); VehicleCResult vcr; DeterministicCapacitySingleVehicleSingleProduct dcsvsp = new DeterministicCapacitySingleVehicleSingleProduct(); // each route for (Route r : Solution.getRoutes()) { vcr = dcsvsp.new VehicleCResult(-1); // sum demands for (Request n : r.getRequests()) { if (n.getDemand().size() != 0) { for (Demand d : n.getDemand()) { vcr.addDemand(d.getId(), d.getDemand()); } } } checkDemands(vcr); } return cEval; }