net.sf.cpsolver.coursett.criteria.additional
Class InstructorLunchBreak

java.lang.Object
  extended by net.sf.cpsolver.ifs.criteria.AbstractCriterion<Lecture,Placement>
      extended by net.sf.cpsolver.coursett.criteria.additional.InstructorLunchBreak
All Implemented Interfaces:
Criterion<Lecture,Placement>, InfoProvider<Lecture>, ModelListener<Lecture,Placement>

public class InstructorLunchBreak
extends AbstractCriterion<Lecture,Placement>

The class represents various criteria concerning compact timetables of instructors. The criteria are checked and updated when a variable is (un)assigned.
implemented criterion: lunch break

Version:
CourseTT 1.2 (University Course Timetabling)
Copyright (C) 2012 Matej Lukac

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
static class InstructorLunchBreak.CompactInfo
          The class is used as a container of information concerning lunch break of instructors.
 
Nested classes/interfaces inherited from class net.sf.cpsolver.ifs.criteria.AbstractCriterion
AbstractCriterion.ValueUpdateType
 
Field Summary
 
Fields inherited from class net.sf.cpsolver.ifs.criteria.AbstractCriterion
iBest, iDebug, iValue, iValueUpdateType, iWeight, sDoubleFormat, sPercentFormat
 
Constructor Summary
InstructorLunchBreak()
           
 
Method Summary
 void afterAssigned(long iteration, Placement value)
          Update criterion after an assignment.
 void afterUnassigned(long iteration, Placement value)
          Update criterion after an unassignment
protected  InstructorLunchBreak.CompactInfo getCompactInfo(InstructorConstraint constraint)
          Get compact info that is associated with an instructor constraint.
 void getInfo(Map<String,String> info)
          Adds some information into the table with information about the solution
 void getInfo(Map<String,String> info, Collection<Lecture> variables)
          Adds some information into the table with information about the solution, only consider variables from the given set
 double getValue(Collection<Lecture> variables)
          Value of a part of the problem (given by the collection of variables)
 double getValue(Placement value, Set<Placement> conflicts)
          Value of a proposed assignment (including hard conflicts)
protected  List<BitSet> getWeeks()
          The method creates date patterns (bitsets) which represent the weeks of a semester.
 double getWeightedValue(Placement value, Set<Placement> conflicts)
          Weighted value of a proposed assignment (including hard conflicts)
 boolean init(Solver<Lecture,Placement> solver)
          Notification that the model was initialized by the solver.
 void updateCriterion(InstructorConstraint instructorConstraint, Placement placement)
          Method checks or sets the CompactInfo of an InstructorConstraint.
 void updateLunchPenalty(InstructorConstraint constraint, Placement p)
          Method updates number of violations in days (Mo, Tue, Wed,..) considering each week in the semester separately.
 
Methods inherited from class net.sf.cpsolver.ifs.criteria.AbstractCriterion
beforeAssigned, beforeUnassigned, bestRestored, bestSaved, clearCache, computeBounds, constraintAdded, constraintRemoved, getBest, getBounds, getBounds, getModel, getName, getPerc, getPercRev, getValue, getWeight, getWeightDefault, getWeightedBest, getWeightedValue, getWeightedValue, getWeightName, inc, variableAdded, variableRemoved
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

InstructorLunchBreak

public InstructorLunchBreak()
Method Detail

init

public boolean init(Solver<Lecture,Placement> solver)
Description copied from interface: ModelListener
Notification that the model was initialized by the solver.

Specified by:
init in interface ModelListener<Lecture,Placement>
Overrides:
init in class AbstractCriterion<Lecture,Placement>
Parameters:
solver - IFS solver

getCompactInfo

protected InstructorLunchBreak.CompactInfo getCompactInfo(InstructorConstraint constraint)
Get compact info that is associated with an instructor constraint. Create a new one if none has been created yet.


afterAssigned

public void afterAssigned(long iteration,
                          Placement value)
Update criterion after an assignment.

Specified by:
afterAssigned in interface ModelListener<Lecture,Placement>
Overrides:
afterAssigned in class AbstractCriterion<Lecture,Placement>
Parameters:
iteration - current iteration
value - value to be assigned

afterUnassigned

public void afterUnassigned(long iteration,
                            Placement value)
Update criterion after an unassignment

Specified by:
afterUnassigned in interface ModelListener<Lecture,Placement>
Overrides:
afterUnassigned in class AbstractCriterion<Lecture,Placement>
Parameters:
iteration - current iteration
value - value to be unassigned

getWeeks

protected List<BitSet> getWeeks()
The method creates date patterns (bitsets) which represent the weeks of a semester.

Returns:
a list of BitSets which represents the weeks of a semester.

updateLunchPenalty

public void updateLunchPenalty(InstructorConstraint constraint,
                               Placement p)
Method updates number of violations in days (Mo, Tue, Wed,..) considering each week in the semester separately. The current number of violations for a day is stored in the CompactInfo.lunchDayViolations of the constraint, which must be set properly before the calling of the method.

Parameters:
constraint - the Instructor constraint of an instructor checked for a lunch break
p - placement of a lecture currently (un)assigned

updateCriterion

public void updateCriterion(InstructorConstraint instructorConstraint,
                            Placement placement)
Method checks or sets the CompactInfo of an InstructorConstraint. It updates the preference of chosen criteria. The update consists of decrementing the criterion value by previous preference, finding the current preference and incrementing the criterion value by the current preference.

Parameters:
instructorConstraint - the Instructor constraint of an instructor checked for criteria
placement - placement of a lecture currently (un)assigned

getValue

public double getValue(Placement value,
                       Set<Placement> conflicts)
Description copied from interface: Criterion
Value of a proposed assignment (including hard conflicts)


getWeightedValue

public double getWeightedValue(Placement value,
                               Set<Placement> conflicts)
Description copied from interface: Criterion
Weighted value of a proposed assignment (including hard conflicts)

Specified by:
getWeightedValue in interface Criterion<Lecture,Placement>
Overrides:
getWeightedValue in class AbstractCriterion<Lecture,Placement>

getValue

public double getValue(Collection<Lecture> variables)
Description copied from interface: Criterion
Value of a part of the problem (given by the collection of variables)

Specified by:
getValue in interface Criterion<Lecture,Placement>
Overrides:
getValue in class AbstractCriterion<Lecture,Placement>

getInfo

public void getInfo(Map<String,String> info)
Description copied from interface: InfoProvider
Adds some information into the table with information about the solution

Specified by:
getInfo in interface InfoProvider<Lecture>
Overrides:
getInfo in class AbstractCriterion<Lecture,Placement>

getInfo

public void getInfo(Map<String,String> info,
                    Collection<Lecture> variables)
Description copied from interface: InfoProvider
Adds some information into the table with information about the solution, only consider variables from the given set

Specified by:
getInfo in interface InfoProvider<Lecture>
Overrides:
getInfo in class AbstractCriterion<Lecture,Placement>


Copyright © 2014 UniTime LLC. All Rights Reserved.