net.sf.cpsolver.studentsct.weights
Class PriorityStudentWeights

java.lang.Object
  extended by net.sf.cpsolver.studentsct.weights.PriorityStudentWeights
All Implemented Interfaces:
SolutionComparator<Request,Enrollment>, StudentWeights
Direct Known Subclasses:
EqualStudentWeights

public class PriorityStudentWeights
extends Object
implements StudentWeights

New weighting model. It tries to obey the following principles:

Version:
StudentSct 1.2 (Student Sectioning)
Copyright (C) 2007 - 2010 Tomas Muller
muller@unitime.org
http://muller.unitime.org

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not see http://www.gnu.org/licenses/.

Nested Class Summary
 
Nested classes/interfaces inherited from interface net.sf.cpsolver.studentsct.weights.StudentWeights
StudentWeights.Implementation
 
Field Summary
protected  double iAlternativeRequestFactor
           
protected  double iBalancingFactor
           
protected  double iDistanceConflict
           
protected  double iFirstAlternativeFactor
           
protected  boolean iLeftoverSpread
           
protected  double iPriorityFactor
           
protected  double iProjectedStudentWeight
           
protected  double iSecondAlternativeFactor
           
protected  double iTimeOverlapFactor
           
protected  double iTimeOverlapMaxLimit
           
 
Constructor Summary
PriorityStudentWeights(DataProperties config)
           
 
Method Summary
 double getBound(Request request)
          Return lower bound for the given request
 double getCachedWeight(Request request)
           
 double getDistanceConflictWeight(DistanceConflict.Conflict c)
          Return weight of a distance conflict
 double getTimeOverlapConflictWeight(Enrollment e, TimeOverlapsCounter.Conflict c)
          Return weight of a time overlapping conflict
 double getWeight(Enrollment enrollment)
          Return base weight of the given enrollment
 double getWeight(Enrollment enrollment, Set<DistanceConflict.Conflict> distanceConflicts, Set<TimeOverlapsCounter.Conflict> timeOverlappingConflicts)
          Return weight of the given enrollment
 double getWeight(Request request)
           
 boolean isBetterThanBestSolution(Solution<Request,Enrollment> currentSolution)
          Compares two solutions.
 boolean isFreeTimeAllowOverlaps()
          Return true if free time requests allow overlaps
static void main(String[] args)
          Test case -- run to see the weights for a few courses
protected  double round(double value)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

iPriorityFactor

protected double iPriorityFactor

iFirstAlternativeFactor

protected double iFirstAlternativeFactor

iSecondAlternativeFactor

protected double iSecondAlternativeFactor

iDistanceConflict

protected double iDistanceConflict

iTimeOverlapFactor

protected double iTimeOverlapFactor

iTimeOverlapMaxLimit

protected double iTimeOverlapMaxLimit

iLeftoverSpread

protected boolean iLeftoverSpread

iBalancingFactor

protected double iBalancingFactor

iAlternativeRequestFactor

protected double iAlternativeRequestFactor

iProjectedStudentWeight

protected double iProjectedStudentWeight
Constructor Detail

PriorityStudentWeights

public PriorityStudentWeights(DataProperties config)
Method Detail

getWeight

public double getWeight(Request request)

getCachedWeight

public double getCachedWeight(Request request)

getBound

public double getBound(Request request)
Description copied from interface: StudentWeights
Return lower bound for the given request

Specified by:
getBound in interface StudentWeights
Parameters:
request - given request
Returns:
weight of the best value

round

protected double round(double value)

getWeight

public double getWeight(Enrollment enrollment)
Description copied from interface: StudentWeights
Return base weight of the given enrollment

Specified by:
getWeight in interface StudentWeights
Parameters:
enrollment - given enrollment
Returns:
weight (higher weight means better value)

getDistanceConflictWeight

public double getDistanceConflictWeight(DistanceConflict.Conflict c)
Description copied from interface: StudentWeights
Return weight of a distance conflict

Specified by:
getDistanceConflictWeight in interface StudentWeights

getTimeOverlapConflictWeight

public double getTimeOverlapConflictWeight(Enrollment e,
                                           TimeOverlapsCounter.Conflict c)
Description copied from interface: StudentWeights
Return weight of a time overlapping conflict

Specified by:
getTimeOverlapConflictWeight in interface StudentWeights

getWeight

public double getWeight(Enrollment enrollment,
                        Set<DistanceConflict.Conflict> distanceConflicts,
                        Set<TimeOverlapsCounter.Conflict> timeOverlappingConflicts)
Description copied from interface: StudentWeights
Return weight of the given enrollment

Specified by:
getWeight in interface StudentWeights
Parameters:
enrollment - given enrollment
distanceConflicts - distance conflicts
timeOverlappingConflicts - time overlapping conflicts
Returns:
weight (higher weight means better value)

isBetterThanBestSolution

public boolean isBetterThanBestSolution(Solution<Request,Enrollment> currentSolution)
Description copied from interface: SolutionComparator
Compares two solutions. Returns true if the given solution is better than its best ever found solution (see Solution.saveBest() and Solution.restoreBest()).

Specified by:
isBetterThanBestSolution in interface SolutionComparator<Request,Enrollment>
Parameters:
currentSolution - given solution
Returns:
true if the given solution is better than the best ever found solution

isFreeTimeAllowOverlaps

public boolean isFreeTimeAllowOverlaps()
Description copied from interface: StudentWeights
Return true if free time requests allow overlaps

Specified by:
isFreeTimeAllowOverlaps in interface StudentWeights

main

public static void main(String[] args)
Test case -- run to see the weights for a few courses



Copyright © 2014 UniTime LLC. All Rights Reserved.