@Override public final Plan selectPlan(HasPlansAndId<Plan, Person> person) { // First check if there are any unscored plans Plan selectedPlan = new RandomUnscoredPlanSelector<Plan, Person>().selectPlan(person); if (selectedPlan != null) return selectedPlan; // Okay, no unscored plans... // Build the weights of all plans // - now calculate the weights Map<Plan,Double> wc = calcWeights(person.getPlans() ); double sumWeights = 0. ; for ( Double score : wc.values() ) { sumWeights += score ; } // choose a random number over interval [0,sumWeights[ double selnum = sumWeights*MatsimRandom.getRandom().nextDouble(); for (Plan plan : person.getPlans()) { selnum -= wc.get(plan); if (selnum <= 0.0) { return plan; } } // this case should never happen, except a person has no plans at all. return null; }
T plan = new RandomUnscoredPlanSelector<T, I>().selectPlan(person) ;
Plan plan = new RandomUnscoredPlanSelector<Plan, Person>().selectPlan(person); assertNull(plan.getScore()); plan.setScore(1.0); plan = new RandomUnscoredPlanSelector<Plan, Person>().selectPlan(person); assertNull(plan.getScore()); plan.setScore(2.0); plan = new RandomUnscoredPlanSelector<Plan, Person>().selectPlan(person); assertNull(plan.getScore()); plan.setScore(3.0); plan = new RandomUnscoredPlanSelector<Plan, Person>().selectPlan(person); assertNull(plan.getScore()); plan.setScore(4.0); plan = new RandomUnscoredPlanSelector<Plan, Person>().selectPlan(person); assertNull(plan); for (int i = 0; i < plans.length; i++) {