net.sf.cpsolver.exam.neighbours
Class ExamPeriodSwapMove

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

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

Try to swap a period between two exams. Two examinations are randomly selected. A new placement is generated by swapping periods of the two exams. For each exam, the best possible room placement is found. If the two exams are in the same period, it just tries to change the room assignments by looking for the best available room placement ignoring the existing room assignments of the two exams. If no conflict results from the swap the assignment is returned. The following exams of the second exam in the pair are tried for an exam swap otherwise.

Version:
ExamTT 1.2 (Examination Timetabling)
Copyright (C) 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/.

Constructor Summary
ExamPeriodSwapMove(DataProperties properties)
          Constructor
 
Method Summary
 boolean checkDistributionConstraints(Exam exam, ExamPeriodPlacement period, Map<Exam,ExamPlacement> placements)
           
 boolean checkDistributionConstraints(Exam exam, ExamRoomPlacement room, Set<ExamPlacement> conflictsToIgnore, Map<Exam,ExamPlacement> placements)
           
 Set<ExamRoomPlacement> findBestAvailableRooms(Exam exam, ExamPeriodPlacement period, Set<ExamPlacement> conflictsToIgnore, Map<Exam,ExamPlacement> placements)
           
 int getDistributionConstraintPenalty(Exam exam, ExamRoomPlacement room, Set<ExamPlacement> conflictsToIgnore, Map<Exam,ExamPlacement> placements)
           
 void init(Solver<Exam,ExamPlacement> solver)
          Initialization
 Neighbour<Exam,ExamPlacement> selectNeighbour(Solution<Exam,ExamPlacement> solution)
          Select an exam randomly, select an available period randomly (if it is not assigned), use rooms if possible, select rooms using Exam.findBestAvailableRooms(ExamPeriodPlacement) if not (exam is unassigned, a room is not available or used).
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ExamPeriodSwapMove

public ExamPeriodSwapMove(DataProperties properties)
Constructor

Parameters:
properties - problem properties
Method Detail

init

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

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

selectNeighbour

public Neighbour<Exam,ExamPlacement> selectNeighbour(Solution<Exam,ExamPlacement> solution)
Select an exam randomly, select an available period randomly (if it is not assigned), use rooms if possible, select rooms using Exam.findBestAvailableRooms(ExamPeriodPlacement) if not (exam is unassigned, a room is not available or used).

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

checkDistributionConstraints

public boolean checkDistributionConstraints(Exam exam,
                                            ExamPeriodPlacement period,
                                            Map<Exam,ExamPlacement> placements)

checkDistributionConstraints

public boolean checkDistributionConstraints(Exam exam,
                                            ExamRoomPlacement room,
                                            Set<ExamPlacement> conflictsToIgnore,
                                            Map<Exam,ExamPlacement> placements)

getDistributionConstraintPenalty

public int getDistributionConstraintPenalty(Exam exam,
                                            ExamRoomPlacement room,
                                            Set<ExamPlacement> conflictsToIgnore,
                                            Map<Exam,ExamPlacement> placements)

findBestAvailableRooms

public Set<ExamRoomPlacement> findBestAvailableRooms(Exam exam,
                                                     ExamPeriodPlacement period,
                                                     Set<ExamPlacement> conflictsToIgnore,
                                                     Map<Exam,ExamPlacement> placements)


Copyright © 2014 UniTime LLC. All Rights Reserved.