net.sf.cpsolver.exam.split
Class ExamSplitMoves

java.lang.Object
  extended by net.sf.cpsolver.exam.split.ExamSplitMoves
All Implemented Interfaces:
NeighbourSelection<Exam,ExamPlacement>

public class ExamSplitMoves
extends Object
implements NeighbourSelection<Exam,ExamPlacement>

Experimental neighbor selection that allows an exam to be split into two if it decreases the number of student conflicts.

An examination split is improving (and is considered) if the weighted number of student conflicts that will be removed by the split is bigger than the weight of the splitter criterion AbstractCriterion.getWeight().

Version:
ExamTT 1.2 (Examination Timetabling)
Copyright (C) 2008 - 2013 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
protected  class ExamSplitMoves.ExamMergeNeighbour
          Merge two exams that have been split before back into one.
protected  class ExamSplitMoves.ExamShuffleNeighbour
          Shuffle students between the parent exam and all of its children.
protected  class ExamSplitMoves.ExamSplitNeighbour
          Split an exam into two
 
Constructor Summary
ExamSplitMoves(DataProperties properties)
          Constructor
 
Method Summary
 ExamSplitMoves.ExamSplitNeighbour bestSplit(Exam exam)
          Find a best split for the given exam.
 Set<ExamRoomPlacement> findBestAvailableRooms(Exam exam, ExamPeriodPlacement period, int examSize)
          Find best available rooms for a new exam (that is to be split from the given one), if is is assigned into the given examination period.
 void init(Solver<Exam,ExamPlacement> solver)
          Initialization
 Neighbour<Exam,ExamPlacement> selectNeighbour(Solution<Exam,ExamPlacement> solution)
          Select a split (split an exam into two), a merge (merge two split exams back together) or shuffle operation (move students between two exams that has been split before).
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ExamSplitMoves

public ExamSplitMoves(DataProperties properties)
Constructor

Method Detail

init

public void init(Solver<Exam,ExamPlacement> solver)
Initialization

Specified by:
init in interface NeighbourSelection<Exam,ExamPlacement>

findBestAvailableRooms

public Set<ExamRoomPlacement> findBestAvailableRooms(Exam exam,
                                                     ExamPeriodPlacement period,
                                                     int examSize)
Find best available rooms for a new exam (that is to be split from the given one), if is is assigned into the given examination period.

Parameters:
exam - an exam to be split
period - a period to be assigned to the new exam
examSize - size of the new exam (i.e., the number of students that will be moved from the given exam to the new one)
Returns:
best room placement for the given exam and period

bestSplit

public ExamSplitMoves.ExamSplitNeighbour bestSplit(Exam exam)
Find a best split for the given exam. Only improving neighbors are considered.

Parameters:
exam - an exam to be split
Returns:
best neighbor that will do the split

selectNeighbour

public Neighbour<Exam,ExamPlacement> selectNeighbour(Solution<Exam,ExamPlacement> solution)
Select a split (split an exam into two), a merge (merge two split exams back together) or shuffle operation (move students between two exams that has been split before).

Specified by:
selectNeighbour in interface NeighbourSelection<Exam,ExamPlacement>
Parameters:
solution - given solution
Returns:
a neighbour assignment


Copyright © 2014 UniTime LLC. All Rights Reserved.