## Uses of Class
org.cpsolver.studentsct.model.Section

- Packages that use Section
  Package | Description
  --- | ---
  org.cpsolver.studentsct | Student Sectioning Solver.
  org.cpsolver.studentsct.constraint | Student Sectioning: Constraints.
  org.cpsolver.studentsct.extension | Student Sectioning: Various Extensions.
  org.cpsolver.studentsct.model | Student Sectioning: Model.
  org.cpsolver.studentsct.online | Online Student Sectioning Solver.
  org.cpsolver.studentsct.online.expectations | Student Sectioning Solver: Over-Expectation Criteria.
  org.cpsolver.studentsct.online.selection | Online Student Sectioning Solver: Selection Weights and Heuristics.
  org.cpsolver.studentsct.report | Student Sectioning: Various Reports.
  org.cpsolver.studentsct.reservation | Student Sectioning: Reservations.

- - ### Uses of Section in org.cpsolver.studentsct

    Methods in org.cpsolver.studentsct that return Section
    Modifier and Type | Method and Description
    --- | ---
    `protected Section` | StudentSectioningXMLLoader.`loadSection(Element sectionEl, Subpart subpart, Map<Long,Section> sectionTable, Map<Long,Placement> timetable)` Load section

    Methods in org.cpsolver.studentsct with parameters of type Section
    Modifier and Type | Method and Description
    --- | ---
    `void` | StudentSectioningModel.`addLinkedSections(boolean mustBeUsed, Section... sections)` Link sections using `LinkedSections`
    `void` | StudentSectioningModel.`addLinkedSections(Section... sections)` Deprecated.
    `protected void` | StudentSectioningXMLSaver.`saveSection(Element sectionEl, Section section)` Save section

    Method parameters in org.cpsolver.studentsct with type arguments of type Section
    Modifier and Type | Method and Description
    --- | ---
    `void` | StudentSectioningModel.`addLinkedSections(boolean mustBeUsed, Collection<Section> sections)` Link sections using `LinkedSections`
    `void` | StudentSectioningModel.`addLinkedSections(Collection<Section> sections)` Deprecated.
    `protected Config` | StudentSectioningXMLLoader.`loadConfig(Element configEl, Offering offering, Map<Long,Subpart> subpartTable, Map<Long,Section> sectionTable, Map<Long,Placement> timetable)` Load config
    `protected Reservation` | StudentSectioningXMLLoader.`loadReservation(Element reservationEl, Offering offering, HashMap<Long,Config> configTable, HashMap<Long,Section> sectionTable)` Load reservation
    `protected Restriction` | StudentSectioningXMLLoader.`loadRestriction(Element restrictionEl, Offering offering, HashMap<Long,Config> configTable, HashMap<Long,Section> sectionTable)` Load restriction
    `protected Section` | StudentSectioningXMLLoader.`loadSection(Element sectionEl, Subpart subpart, Map<Long,Section> sectionTable, Map<Long,Placement> timetable)` Load section
    `protected Subpart` | StudentSectioningXMLLoader.`loadSubpart(Element subpartEl, Config config, Map<Long,Subpart> subpartTable, Map<Long,Section> sectionTable, Map<Long,Placement> timetable)` Load subpart

  - ### Uses of Section in org.cpsolver.studentsct.constraint

    Methods in org.cpsolver.studentsct.constraint that return types with arguments of type Section
    Modifier and Type | Method and Description
    --- | ---
    `Set<Section>` | LinkedSections.`getSections(Subpart subpart)` Return section (or sections) of a subpart of this link

    Methods in org.cpsolver.studentsct.constraint with parameters of type Section
    Modifier and Type | Method and Description
    --- | ---
    `static double` | SectionLimit.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Section section, Request request)` Enrollment weight of a section if the given request is assigned.
    `static double` | SectionLimit.`getUnreservedSpace(Assignment<Request,Enrollment> assignment, Section section, Request request)` Remaining unreserved space in a section if the given request is assigned.
    `static boolean` | HardDistanceConflicts.`inConflict(StudentQuality sq, Section s1, Section s2)`
    `static boolean` | HardDistanceConflicts.`inConflict(StudentQuality sq, Section s1, Unavailability s2)`

    Constructors in org.cpsolver.studentsct.constraint with parameters of type Section
    Constructor and Description
    `LinkedSections(Section... sections)` Constructor

    Constructor parameters in org.cpsolver.studentsct.constraint with type arguments of type Section
    Constructor and Description
    `LinkedSections(Collection<Section> sections)` Constructor

  - ### Uses of Section in org.cpsolver.studentsct.extension

    Methods in org.cpsolver.studentsct.extension that return Section
    Modifier and Type | Method and Description
    --- | ---
    `Section` | DistanceConflict.Conflict.`getS1()` First section
    `Section` | DistanceConflict.Conflict.`getS2()` Second section

    Methods in org.cpsolver.studentsct.extension that return types with arguments of type Section
    Modifier and Type | Method and Description
    --- | ---
    `Iterator<Section>` | StudentQuality.Online.`iterator()`

    Methods in org.cpsolver.studentsct.extension with parameters of type Section
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | StudentQuality.`hasDistanceConflict(Student student, Section s1, Section s2)`
    `boolean` | DistanceConflict.`inConflict(Student student, Section s1, Section s2)` Return true if the given two sections are in distance conflict.
    `protected boolean` | StudentQuality.Online.`skip(Section section)`

    Constructors in org.cpsolver.studentsct.extension with parameters of type Section
    Constructor and Description
    `Conflict(Student student, Enrollment e1, Section s1, Enrollment e2, Section s2)` Constructor

  - ### Uses of Section in org.cpsolver.studentsct.model

    Methods in org.cpsolver.studentsct.model that return Section
    Modifier and Type | Method and Description
    --- | ---
    `Section` | Section.`getParent()` Parent section of this section (can be null).
    `Section` | Unavailability.`getSection()` Section
    `Section` | CourseRequest.`getSection(long sectionId)` Return section of the requested courses with the given id
    `Section` | Offering.`getSection(long sectionId)` Return section of the given id, if it is part of one of this offering configurations.

    Methods in org.cpsolver.studentsct.model that return types with arguments of type Section
    Modifier and Type | Method and Description
    --- | ---
    `Set<Section>` | Choice.`getParentSections()` List of parent sections of sections of the instructional offering which represent this choice.
    `Set<Section>` | Choice.`getSections()` List of sections of the instructional offering which represent this choice.
    `Set<Section>` | Enrollment.`getSections()` List of sections (only for course request)
    `List<Section>` | Subpart.`getSections()` List of sections

    Methods in org.cpsolver.studentsct.model with parameters of type Section
    Modifier and Type | Method and Description
    --- | ---
    `int` | Section.`compareTo(Assignment<Request,Enrollment> assignment, Section s)` Compare two sections, prefer sections with lower penalty and more open space
    `int` | Section.`compareTo(Section s)` Compare two sections, prefer sections with lower penalty
    `double` | RequestGroup.`getSectionSpread(Assignment<Request,Enrollment> assignment, Section section)` Return section spread of this group.
    `double` | RequestGroup.RequestGroupContext.`getSectionSpread(Section section)` Return section spread of this group.
    `double` | RequestGroup.`getSectionWeight(Assignment<Request,Enrollment> assignment, Section section, Request excludeRequest)` Section weight -- weight of all requests which have an enrollment that is of this request group and that includes the given section, excluding the given one.
    `double` | RequestGroup.RequestGroupContext.`getSectionWeight(Assignment<Request,Enrollment> assignment, Section section, Request excludeRequest)` Section weight -- weight of all requests which have an enrollment that is of this request group and that includes the given section, excluding the given one.
    `boolean` | CourseRequest.`hasSelection(Section section)` Return true when the given section has a preference (i.e., there is a matching selection), or when there is a section preference for a different configuration
    `boolean` | Student.`isAvailable(Section section)` Check if student is available during the given section
    `boolean` | Choice.`isMatching(Section section)` True if this choice is applicable to the given section (that is, the choice is a config choice or with the same subpart / instructional type)
    `boolean` | CourseRequest.`isNotAllowed(Course course, Section section)` Return true when there are restrictions for a course of this course request and the given section does not meet any of them
    `boolean` | CourseRequest.`isRequired(Section section)` Return true when the given section is required (i.e., its choice is among required choices, or there are no requirements)
    `boolean` | CourseRequest.`isSelected(Section section)` Return true when the given section is selected (i.e., its choice is among selected choices)
    `boolean` | CourseRequest.`isWaitlisted(Section section)` Return true when the given section is wait-listed (i.e., its choice is among wait-listed choices)
    `boolean` | Choice.`sameChoice(Section section)` True if the time assignment as well as the instructor(s) are the same
    `boolean` | Section.`sameChoice(Section section)` True if the time assignment as well as the instructor(s) are the same
    `boolean` | Choice.`sameConfiguration(Section section)` True if the configuration is the very same
    `boolean` | Choice.`sameInstructionalType(Section section)` True if the instructional type is the same
    `boolean` | Section.`sameInstructionalType(Section section)` True if the instructional type is the same
    `boolean` | Choice.`sameInstructors(Section section)` True if the section contains all instructors of this choice
    `boolean` | Section.`sameInstructors(Section section)` True if the instructor(s) are the same
    `boolean` | Choice.`sameOffering(Section section)` True if the offering is the same
    `boolean` | Choice.`sameSection(Section section)` True if the section is the very same
    `boolean` | Choice.`sameSubart(Section section)` True if the subpart is the very same
    `boolean` | Choice.`sameTime(Section section)` True if the time assignment is the same
    `boolean` | Section.`sameTime(Section section)` True if the time assignment is the same

    Constructors in org.cpsolver.studentsct.model with parameters of type Section
    Constructor and Description
    `Choice(Section section)` Constructor
    `Section(long id, int limit, String name, Subpart subpart, Placement placement, List<Instructor> instructors, Section parent)` Constructor
    `Section(long id, int limit, String name, Subpart subpart, Placement placement, Section parent, Instructor... instructors)` Constructor
    `Section(long id, int limit, String name, Subpart subpart, Placement placement, String instructorIds, String instructorNames, Section parent)` Deprecated.
    `Unavailability(Student student, Section section, boolean canOverlap)` Constructor

  - ### Uses of Section in org.cpsolver.studentsct.online

    Subclasses of Section in org.cpsolver.studentsct.online
    Modifier and Type | Class and Description
    --- | ---
    `class` | `OnlineSection` An online section.

    Methods in org.cpsolver.studentsct.online with parameters of type Section
    Modifier and Type | Method and Description
    --- | ---
    `double` | OnlineSectioningModel.`getOverExpected(Assignment<Request,Enrollment> assignment, Enrollment[] enrollment, int index, Section section, Request request)` Expectation penalty, to be minimized
    `double` | OnlineSectioningModel.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)` Expectation penalty, to be minimized (computed using `OverExpectedCriterion.getOverExpected(Assignment, Section, Request)`)

    Method parameters in org.cpsolver.studentsct.online with type arguments of type Section
    Modifier and Type | Method and Description
    --- | ---
    `protected Request` | Test.`addRequest(Student student, Student original, Request request, Map<Long,Section> classTable, StudentSectioningModel model)`
    `protected Course` | Test.`clone(Course course, long studentId, Student originalStudent, Map<Long,Section> classTable, StudentSectioningModel model)`

    Constructors in org.cpsolver.studentsct.online with parameters of type Section
    Constructor and Description
    `OnlineSection(long id, int limit, String name, Subpart subpart, Placement placement, List<Instructor> instructors, Section parent)`
    `OnlineSection(long id, int limit, String name, Subpart subpart, Placement placement, String instructorIds, String instructorNames, Section parent)` Deprecated.

  - ### Uses of Section in org.cpsolver.studentsct.online.expectations

    Methods in org.cpsolver.studentsct.online.expectations with parameters of type Section
    Modifier and Type | Method and Description
    --- | ---
    `protected double` | PercentageOverExpected.`getEnrollment(Assignment<Request,Enrollment> assignment, Section section, Request request)` Section enrollment (using `OnlineSection.getEnrollment()` if applicable}, `getEnrollmentWeight(Assignment, Request)` otherwise)
    `protected int` | PercentageOverExpected.`getLimit(Section section)` Section limit (using `OnlineSection.getEnrollment()` if applicable}, `getLimit()` otherwise)
    `double` | FractionallyOverExpected.`getMaximum(Section section)` Maximum, section limit if not set
    `double` | FractionallyUnbalancedWhenNoExpectations.`getMaximum(Section section, double defaultValue)` Get maximum
    `double` | MinimizeConflicts.`getOverExpected(Assignment<Request,Enrollment> assignment, Enrollment[] enrollment, int index, Section section, Request request)`
    `double` | OverExpectedCriterion.HasContext.`getOverExpected(Assignment<Request,Enrollment> assignment, Enrollment[] enrollment, int index, Section section, Request request)` Expectation penalty, to be minimized
    `double` | AvoidUnbalancedWhenNoExpectations.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`
    `double` | FractionallyOverExpected.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`
    `double` | FractionallyUnbalancedWhenNoExpectations.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`
    `double` | MinimizeConflicts.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`
    `double` | NeverOverExpected.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`
    `double` | OverExpectedCriterion.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)` Expectation penalty, to be minimized
    `double` | PenaltyNotNegative.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`
    `double` | PercentageOverExpected.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`

  - ### Uses of Section in org.cpsolver.studentsct.online.selection

    Fields in org.cpsolver.studentsct.online.selection with type parameters of type Section
    Modifier and Type | Field and Description
    --- | ---
    `protected Hashtable<CourseRequest,Set<Section>>` | SuggestionSelection.`iPreferredSections`
    `protected Hashtable<CourseRequest,Hashtable<Subpart,Section>>` | SuggestionSelection.`iRequiredSection`

    Methods in org.cpsolver.studentsct.online.selection that return types with arguments of type Section
    Modifier and Type | Method and Description
    --- | ---
    `protected Set<Section>` | OnlineSectioningCriterion.`getPreferredSections(Request request)`

    Methods in org.cpsolver.studentsct.online.selection with parameters of type Section
    Modifier and Type | Method and Description
    --- | ---
    `int` | SuggestionsBranchAndBound.EnrollmentSectionComparator.`compare(Section a, Section b)`
    `int` | SuggestionsBranchAndBound.SectionAssignmentComparator.`compare(Section a, Section b)`
    `boolean` | SuggestionsBranchAndBound.EnrollmentSectionComparator.`isParent(Section s1, Section s2)` Is section s1 parent of section s2 (or a parent of a parent...)
    `boolean` | SuggestionsBranchAndBound.SuggestionFilter.`match(Course course, Section section)` Match the given section
    `static boolean` | ResectioningWeights.`sameChoice(Section section, Choice choice)`
    `boolean` | ResectioningWeights.LastSectionProvider.`sameLastChoice(Section current)` Check the choice (see `Choice`)
    `boolean` | ResectioningWeights.LastSectionProvider.`sameLastName(Section current, Course course)` Check section name (external id)
    `boolean` | ResectioningWeights.LastSectionProvider.`sameLastRoom(Section current)` Check the room
    `boolean` | ResectioningWeights.LastSectionProvider.`sameLastTime(Section current)` Check the time
    `static boolean` | ResectioningWeights.`sameName(Long courseId, Section s1, Section s2)`
    `static boolean` | ResectioningWeights.`sameRooms(Section s, List<RoomLocation> rooms)`
    `static boolean` | ResectioningWeights.`sameTime(Section s, TimeLocation t)`

    Method parameters in org.cpsolver.studentsct.online.selection with type arguments of type Section
    Modifier and Type | Method and Description
    --- | ---
    `void` | MultiCriteriaBranchAndBoundSelection.`setPreferredSections(Hashtable<CourseRequest,Set<Section>> preferredSections)`
    `void` | OnlineSectioningSelection.`setPreferredSections(Hashtable<CourseRequest,Set<Section>> preferredSections)` Set preferred sections
    `void` | SuggestionSelection.`setPreferredSections(Hashtable<CourseRequest,Set<Section>> preferredSections)`
    `void` | MultiCriteriaBranchAndBoundSelection.`setRequiredSections(Hashtable<CourseRequest,Set<Section>> requiredSections)`
    `void` | OnlineSectioningSelection.`setRequiredSections(Hashtable<CourseRequest,Set<Section>> requiredSections)` Set required sections
    `void` | SuggestionSelection.`setRequiredSections(Hashtable<CourseRequest,Set<Section>> requiredSections)`

    Constructors in org.cpsolver.studentsct.online.selection with parameters of type Section
    Constructor and Description
    `MultiCriteriaBranchAndBoundSuggestions(DataProperties properties, Student student, Assignment<Request,Enrollment> assignment, Hashtable<CourseRequest,Set<Section>> requiredSections, Set<FreeTimeRequest> requiredFreeTimes, Hashtable<CourseRequest,Set<Section>> preferredSections, Request selectedRequest, Section selectedSection, SuggestionsBranchAndBound.SuggestionFilter filter, double maxSectionsWithPenalty, boolean priorityWeighting)` Constructor
    `SuggestionsBranchAndBound(DataProperties properties, Student student, Assignment<Request,Enrollment> assignment, Hashtable<CourseRequest,Set<Section>> requiredSections, Set<FreeTimeRequest> requiredFreeTimes, Hashtable<CourseRequest,Set<Section>> preferredSections, Request selectedRequest, Section selectedSection, SuggestionsBranchAndBound.SuggestionFilter filter, double maxSectionsWithPenalty)` Constructor

    Constructor parameters in org.cpsolver.studentsct.online.selection with type arguments of type Section
    Constructor and Description
    `EqualWeightCriterion(Student student, OnlineSectioningModel model, Assignment<Request,Enrollment> assignment, Hashtable<CourseRequest,Set<Section>> preferredSections)`
    `MultiCriteriaBranchAndBoundSuggestions(DataProperties properties, Student student, Assignment<Request,Enrollment> assignment, Hashtable<CourseRequest,Set<Section>> requiredSections, Set<FreeTimeRequest> requiredFreeTimes, Hashtable<CourseRequest,Set<Section>> preferredSections, Request selectedRequest, Section selectedSection, SuggestionsBranchAndBound.SuggestionFilter filter, double maxSectionsWithPenalty, boolean priorityWeighting)` Constructor
    `MultiCriteriaBranchAndBoundSuggestions(DataProperties properties, Student student, Assignment<Request,Enrollment> assignment, Hashtable<CourseRequest,Set<Section>> requiredSections, Set<FreeTimeRequest> requiredFreeTimes, Hashtable<CourseRequest,Set<Section>> preferredSections, Request selectedRequest, Section selectedSection, SuggestionsBranchAndBound.SuggestionFilter filter, double maxSectionsWithPenalty, boolean priorityWeighting)` Constructor
    `OnlineSectioningCriterion(Student student, OnlineSectioningModel model, Assignment<Request,Enrollment> assignment, Hashtable<CourseRequest,Set<Section>> preferredSections)` Constructor
    `SuggestionsBranchAndBound(DataProperties properties, Student student, Assignment<Request,Enrollment> assignment, Hashtable<CourseRequest,Set<Section>> requiredSections, Set<FreeTimeRequest> requiredFreeTimes, Hashtable<CourseRequest,Set<Section>> preferredSections, Request selectedRequest, Section selectedSection, SuggestionsBranchAndBound.SuggestionFilter filter, double maxSectionsWithPenalty)` Constructor
    `SuggestionsBranchAndBound(DataProperties properties, Student student, Assignment<Request,Enrollment> assignment, Hashtable<CourseRequest,Set<Section>> requiredSections, Set<FreeTimeRequest> requiredFreeTimes, Hashtable<CourseRequest,Set<Section>> preferredSections, Request selectedRequest, Section selectedSection, SuggestionsBranchAndBound.SuggestionFilter filter, double maxSectionsWithPenalty)` Constructor

  - ### Uses of Section in org.cpsolver.studentsct.report

    Methods in org.cpsolver.studentsct.report that return Section
    Modifier and Type | Method and Description
    --- | ---
    `Section` | CourseSection.`getSection()` Class

    Constructors in org.cpsolver.studentsct.report with parameters of type Section
    Constructor and Description
    `CourseSection(Course course, Section section)` Constructor

  - ### Uses of Section in org.cpsolver.studentsct.reservation

    Methods in org.cpsolver.studentsct.reservation that return types with arguments of type Section
    Modifier and Type | Method and Description
    --- | ---
    `Map<Subpart,Set<Section>>` | Reservation.`getSections()` One or more sections on which the reservation is set (optional).
    `Map<Subpart,Set<Section>>` | Restriction.`getSections()` One or more sections on which the restriction is set.
    `Set<Section>` | Reservation.`getSections(Subpart subpart)` One or more sections on which the reservation is set (optional).
    `Set<Section>` | Restriction.`getSections(Subpart subpart)` One or more sections on which the restriction is set (optional).

    Methods in org.cpsolver.studentsct.reservation with parameters of type Section
    Modifier and Type | Method and Description
    --- | ---
    `void` | Reservation.`addSection(Section section)`
    `void` | Restriction.`addSection(Section section)` Add a section (of the offering `Restriction.getOffering()`) to this restriction.
    `void` | Reservation.`addSection(Section section, boolean inclusive)` Add a section (of the offering `Reservation.getOffering()`) to this reservation.
    `boolean` | Restriction.`isIncluded(Section section)`