net.sf.cpsolver.studentsct.constraint
Class CourseLimit
java.lang.Object
net.sf.cpsolver.ifs.model.Constraint<V,T>
net.sf.cpsolver.ifs.model.GlobalConstraint<Request,Enrollment>
net.sf.cpsolver.studentsct.constraint.CourseLimit
- All Implemented Interfaces:
- Comparable<Constraint<Request,Enrollment>>
public class CourseLimit
- extends GlobalConstraint<Request,Enrollment>
Course limit constraint. This global constraint ensures that a limit of each
course is not exceeded. This means that the total sum of weights of course
requests (see Request.getWeight()) enrolled into a course is below
the course's limit (see Course.getLimit()).
Sections with negative limit are considered unlimited, and therefore
completely ignored by this constraint.
Parameters:
| Parameter |
Type |
Comment |
| CourseLimit.PreferDummyStudents |
Boolean |
If true, requests of dummy (last-like) students are preferred to be
selected as conflicting. |
- 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/.
| Methods inherited from class net.sf.cpsolver.ifs.model.Constraint |
addConstraintListener, compareTo, constraintListeners, countAssignedVariables, countVariables, equals, getDescription, getId, getModel, getName, hashCode, isConsistent, isHard, removeConstraintListener, setModel |
CourseLimit
public CourseLimit(DataProperties cfg)
- Constructor
- Parameters:
cfg - solver configuration
getEnrollmentWeight
public static double getEnrollmentWeight(Course course,
Request request)
- Enrollment weight of a course if the given request is assigned.
- Parameters:
course - a course that is of concernrequest - a request of a student to be assigned containing the given
section
- Returns:
- section's new weight
computeConflicts
public void computeConflicts(Enrollment enrollment,
Set<Enrollment> conflicts)
- A given enrollment is conflicting, if the course's enrollment
(computed by
getEnrollmentWeight(Course, Request))
exceeds the limit.
If the limit is breached, one or more existing enrollments are
(randomly) selected as conflicting until the overall weight is under the
limit.
- Specified by:
computeConflicts in class Constraint<Request,Enrollment>
- Parameters:
enrollment - Enrollment that is being consideredconflicts - all computed conflicting requests are added into this set
inConflict
public boolean inConflict(Enrollment enrollment)
- A given enrollment is conflicting, if the course's enrollment (computed by
getEnrollmentWeight(Course, Request)) exceeds the
limit.
- Overrides:
inConflict in class Constraint<Request,Enrollment>
- Parameters:
enrollment - Enrollment that is being considered
- Returns:
- true, if the enrollment cannot be assigned without exceeding the limit
toString
public String toString()
- Overrides:
toString in class Object
Copyright © 2013 UniTime LLC. All Rights Reserved.