org.cpsolver.studentsct.online.selection

## Class MultiCriteriaBranchAndBoundSuggestions

- java.lang.Object
- - org.cpsolver.studentsct.online.selection.SuggestionsBranchAndBound
  - - org.cpsolver.studentsct.online.selection.MultiCriteriaBranchAndBoundSuggestions

-     public class MultiCriteriaBranchAndBoundSuggestions
      extends SuggestionsBranchAndBound

  Computation of suggestions using a limited depth branch and bound, using a multi-criteria selection criterion. Everything is the same, but `MultiCriteriaBranchAndBoundSelection.SelectionCriterion.compare(Assignment, Enrollment[], Enrollment[])` is used to compare two suggestions.
  Version:
    StudentSct 1.3 (Student Sectioning)
    Copyright (C) 2014 Tomáš Müller
    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.
  Author:
    Tomáš Müller
  See Also:
    `MultiCriteriaBranchAndBoundSelection.SelectionCriterion`

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class org.cpsolver.studentsct.online.selection.SuggestionsBranchAndBound

      `SuggestionsBranchAndBound.EnrollmentSectionComparator, SuggestionsBranchAndBound.SectionAssignmentComparator, SuggestionsBranchAndBound.Suggestion, SuggestionsBranchAndBound.SuggestionFilter`

  - ### Field Summary

    - ### Fields inherited from class org.cpsolver.studentsct.online.selection.SuggestionsBranchAndBound

      `iComparator, iMatched, iMaxSectionsWithPenalty`

  - ### Constructor Summary

    Constructors
    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

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected int` | `compare(Assignment<Request,Enrollment> assignment, SuggestionsBranchAndBound.Suggestion s1, SuggestionsBranchAndBound.Suggestion s2)` Compare two suggestions

    - ### Methods inherited from class org.cpsolver.studentsct.online.selection.SuggestionsBranchAndBound

      `backtrack, canContinue, canContinueEvaluation, canLeaveUnassigned, checkBound, computeSuggestions, getNrMatched, getNrSolutionsSeen, getTime, isAllowed, isTimeoutReached, values`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### MultiCriteriaBranchAndBoundSuggestions

          public 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
      Parameters:
        `properties` - configuration
        `student` - given student
        `assignment` - current assignment
        `requiredSections` - required sections
        `requiredFreeTimes` - required free times (free time requests that must be assigned)
        `preferredSections` - preferred sections
        `selectedRequest` - selected request
        `selectedSection` - selected section
        `filter` - section filter
        `maxSectionsWithPenalty` - maximal number of sections that have a positive over-expectation penalty `OverExpectedCriterion.getOverExpected(Assignment, Section, Request)`

  - ### Method Detail

    - #### compare

          protected int compare(Assignment<Request,Enrollment> assignment,
                                SuggestionsBranchAndBound.Suggestion s1,
                                SuggestionsBranchAndBound.Suggestion s2)

      Description copied from class: `SuggestionsBranchAndBound`
      Compare two suggestions
      Overrides:
        `compare` in class `SuggestionsBranchAndBound`
      Parameters:
        `assignment` - current assignment
        `s1` - first suggestion
        `s2` - second suggestion
      Returns:
        true if s1 is better than s2