ttsolver.heuristics
Class TimetableComparator

java.lang.Object
  extended by ttsolver.heuristics.TimetableComparator
All Implemented Interfaces:
SolutionComparator

public class TimetableComparator
extends Object
implements SolutionComparator

Timetable (solution) comparator.

The quality of a solution is expressed as a weighted sum combining soft time and classroom preferences, satisfied soft group constrains and the total number of student conflicts. This allows us to express the importance of different types of soft constraints.

The solution comparator prefers a more complete solution (with a smaller number of unassigned variables) and a solution with a smaller number of perturbations among solutions with the same number of unassigned variables. If both solutions have the same number of unassigned variables and perturbations, the solution of better quality is selected.

Parameters:

ParameterTypeComment
Comparator.HardStudentConflictWeightDoubleWeight of hard student conflict (conflict between single-section classes)
Comparator.StudentConflictWeightDoubleWeight of student conflict
Comparator.TimePreferenceWeightDoubleTime preferences weight
Comparator.ContrPreferenceWeightDoubleGroup constraint preferences weight
Comparator.RoomPreferenceWeightDoubleRoom preferences weight
Comparator.UselessSlotWeightDoubleUseless slots weight
Comparator.TooBigRoomWeightDoubleToo big room weight
Comparator.DistanceInstructorPreferenceWeightDoubleDistance (of the rooms of the back-to-back classes) based instructor preferences weight
Comparator.PerturbationPenaltyWeightDoublePerturbation penalty (see UniversalPerturbationsCounter)
Comparator.DeptSpreadPenaltyWeightDoubleDepartment balancing penalty (see DepartmentSpreadConstraint)

Version:
1.0
Author:
Tomáš Müller

Field Summary
static String CONSTR_PREFERENCE_WEIGHT
           
static String DEPT_SPREAD_PENALTY_WEIGHT
           
static String DISTANCE_INSTRUCTOR_PREFERENCE_WEIGHT
           
static String HARD_STUDENT_CONFLICT_WEIGHT
           
static String PERTURBATION_PENALTY_WEIGHT
           
static String ROOM_PREFERENCE_WEIGHT
           
protected static Logger sLogger
           
static String STUDENT_CONFLICT_WEIGHT
           
static String TIME_PREFERENCE_WEIGHT
           
static String TOO_BIG_ROOM_WEIGHT
           
static String USELESS_SLOT_WEIGHT
           
 
Constructor Summary
TimetableComparator(DataProperties properties)
           
 
Method Summary
 boolean isBetterThanBestSolution(Solution currentSolution)
          Compares two solutions.
static Collection parameters()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

sLogger

protected static Logger sLogger

USELESS_SLOT_WEIGHT

public static final String USELESS_SLOT_WEIGHT
See Also:
Constant Field Values

TIME_PREFERENCE_WEIGHT

public static final String TIME_PREFERENCE_WEIGHT
See Also:
Constant Field Values

STUDENT_CONFLICT_WEIGHT

public static final String STUDENT_CONFLICT_WEIGHT
See Also:
Constant Field Values

ROOM_PREFERENCE_WEIGHT

public static final String ROOM_PREFERENCE_WEIGHT
See Also:
Constant Field Values

CONSTR_PREFERENCE_WEIGHT

public static final String CONSTR_PREFERENCE_WEIGHT
See Also:
Constant Field Values

HARD_STUDENT_CONFLICT_WEIGHT

public static final String HARD_STUDENT_CONFLICT_WEIGHT
See Also:
Constant Field Values

TOO_BIG_ROOM_WEIGHT

public static final String TOO_BIG_ROOM_WEIGHT
See Also:
Constant Field Values

DISTANCE_INSTRUCTOR_PREFERENCE_WEIGHT

public static final String DISTANCE_INSTRUCTOR_PREFERENCE_WEIGHT
See Also:
Constant Field Values

PERTURBATION_PENALTY_WEIGHT

public static final String PERTURBATION_PENALTY_WEIGHT
See Also:
Constant Field Values

DEPT_SPREAD_PENALTY_WEIGHT

public static final String DEPT_SPREAD_PENALTY_WEIGHT
See Also:
Constant Field Values
Constructor Detail

TimetableComparator

public TimetableComparator(DataProperties properties)
Method Detail

parameters

public static Collection parameters()

isBetterThanBestSolution

public boolean isBetterThanBestSolution(Solution 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
Parameters:
currentSolution - given solution
Returns:
true if the given solution is better than the best ever found solution


Copyright © 2005 Tomáš Müller