The Coursedog Section Optimizer is used to automatically make the best time and room assignments for an academic schedule. The optimizer is most commonly used to assign only rooms, however with the proper setup, it can be used to assign meeting times as well. Once the optimizer is run, custom optimizer reports appear in the dashboard to examine the results. Additionally, all optimizer assignments will be stored as a separate schedule, which can be ultimately merged into the existing class schedule.
Note: When running the optimizer, please give yourself a 10 day buffer from the time your schedule must be finalized to make any necessary adjustments.
Note: The Optimizer only loads in data from a single term and cannot conflict check over multiple terms. If you have overlapping terms, make sure to create 'Parts of Term' within a single term to store all these sections. This article provides guidance on creating parts of terms.
Note: The Optimizer is currently unable to support the scheduling of classes that require an 'Online' room
14.2 Optimizer Preparation
The optimizer pulls information from a variety of different sources. It is important to review all this information before running the optimizer, to ensure that you are providing the optimizer with a clean set of data.
The optimizer pulls the following information:
- Current Academic Schedule (Sections)
- Rooms & Buildings
- Time blocks
- Section Relationships
14.2.1 Sections: An academic section is the base unit of data that is used within the optimizer. For every section brought into the optimizer, it will examine the section’s place in the schedule, along with any preferences or constraints attached to the section, and determine the best room (and/or time) to assign that particular section (without creating any conflicts or violating any predefined rules).
Each Section has a “Meeting Patterns & Rooms” data attribute (example shown below):
The information in this data attribute is what the optimizer will attempt to assign. When a section enters the optimizer it can be in one of four preset states in regards to its meeting & room information. The following lists those states and outlines how these states will impact the optimizer when it runs on those sections.
In addition to the Meeting Times and Rooms attributes, the enrollment capacity (maximum enrollment) attribute is used by the optimizer. This attribute will be used to determine the minimum capacity of the room that can possibly be assigned to this section via the optimizer. For example if the section has an enrollment capacity of 15, then the optimizer WILL be allowed to assign a room with a capacity of 15, but WILL NOT be allowed to assign a room with a capacity of less than 15. Please note, waitlist capacity does not impact optimizer results.
Additionally, you can assign specific room preferences to each section within the Section Editor.
These preferences are used to determine the best-fit rooms for each section. You can specify the importance of each of these preferences in the Optimizer Settings page (see below).
These preferences are used to determine the best-fit rooms for each section. You can specify the importance of each of these preferences in the Optimizer Settings page (see 14.5 Optimizer Advanced Settings).
Lastly, you may flag certain sections which should not be assigned a room (or time) by the Optimizer. To do so, you may add the pre-built 'Optimize Rooms' (i.e. 'Do Room Scheduling') field in the Section Template (Settings > Field Options > Section Template). If this field is set to 'No' for a given section, then the Optimizer will not assign a room to this section. Similar logic applies to the 'Optimize Times' pre-built field, which can be used to signal a given section should not be assigned a time by the Optimizer. You should also note that selecting 'TBA' within a section's room select modal does count as a room assignment for the purposes of the section optimizer: if a section has a room assignment of 'TBA', then the Optimizer will not assign this section a room.
14.2.2 Rooms & Buildings: All the rooms & buildings within the Coursedog system are also by default brought into the optimizer. For each room, the following attributes are used by the optimizer:
Below is a sample room settings page, within which all these settings can be modified:
14.2.3 Instructors are brought into the optimizer only if there are time and/or room preferences associated with that Instructor. Instructor preferences can be collected via Preference forms, or by directly editing the Instructor’s preferences within the Section Editor (Section Editor > Instructors > *click on Instructor name* > Edit Settings):
For more information on instructor preferences, please see the following article.
Instructors can have the following preferences:
Instructors with preferences that are assigned to sections included in the optimizer will have their preferences appended to any section preferences that have already been defined. Note that the optimizer does not favor or prioritize instructor preferences over section preferences or vice versa. The optimizer does not try to meet preferences one by one, it drives to satisfy them all at the same time. If, ultimately, one preference is satisfied and the other is not a preference violation will be flagged for admins to highlight what was not met. More detail on preference violations can be found below.
Here are two examples of how the optimizer uses the instructor preference information. Let’s say Instructor John Doe is assigned to Section A
Section A has a Preferred Room Type of “Seminar”, and Instructor John Doe has a Preferred Building of “Green Hall”, then the optimizer will look for a “Seminar” room in “Green Hall.”
Section A has a Preferred Room Type of “Seminar”, and Instructor John Doe has a Preferred Room Type of “Lecture”, then the optimizer will look for a “Seminar” or “Lecture” room.
Each Instructor can also have an “Optimizer Priority”. This attribute determines how highly an Instructor’s preferences are weighted inside the optimizer. To set an instructor's 'Optimizer Priority,' go to Section Editor > Instructors > *click on Instructor name* > Edit Settings:
14.2.3 Standard Meeting Patterns are a set of pre-defined meeting patterns, and the time optimizer will only assign meeting times to sections if such a meeting time is defined as a Standard Meeting Pattern. Standard meeting patterns can be found via Settings > Standard Meeting Patterns (for more details on setting up Standard Meeting Patterns, you may consult this article).
Each meeting pattern is associated with a meeting pattern group. Often groups are divided along section types (i.e. a group for lab sections, a group for lecture sections), but this is not always the case. See example of a meeting pattern group below:
To edit a meeting pattern group, click on the blue 'Group Info' pencil button on the top right of the group card. Within the editing modal, each group can be associated with a specific subset of sections using the 'Allowed Sections' input. The Allowed Sections input defines what sections are allowed to use meeting patterns contained within this meeting pattern group. If the Meeting Pattern Group “Lab Meetings” has allowed sections defined as “Section Type contains Lab”, then the time optimizer will only assign meeting patterns from the “Lab Meetings” group to sections where “Section Type” contains the word “Lab”.
14.2.4 Section Relationships (Linked Sections): Sections can have specific scheduling relationships with other sections that the optimizer can take into account while making time and room assignments. These relationships are called “Linked Sections”. They can be set in two places:
- Within the Section Editor, there is an input called Linked Sections (see this article for more details, )
- Within the Settings > Relationships page, there is the ability to add/edit existing relationships (see this article for more details)
The following relationships have an impact on optimizer assignments:
14.3 Viewing the Optimizer
To prepare for your Optimizer Run, select 'Optimizer' from the left navigation, select the term for which you want to create a run for, and click on '+ Optimizer Run.'
The optimizer has many settings that will define the behavior of the optimizer. The settings are divided between General and Advanced settings. General settings are commonly adjusted settings, while advanced settings are less commonly adjusted and relate to more nuanced preferences and constraints. These settings are defined in the optimizer settings page, shown below.
14.4 Optimizer General Settings
The optimizer has the following settings under General Settings:
Here is an example of how the optimizer uses the minimum seat utilization setting: let’s say a course, Course X, has a maximum capacity of 20 and minimum seat utilization is set to 50%. The optimizer has 3 rooms to select from, Room S 237, Room S 238, and Room S 313, with room capacities of 25, 42, and 12, respectively. The optimizer will not assign Room S 313 as it cannot accommodate the maximum capacity for the course. The optimizer will not assign Room S 238 as seat utilization would be less than 50% (only 48% of the seats would be occupied by students in Course X). The optimizer will assign Room S 237 as it can accommodate the maximum capacity for the course and seat utilization would be greater than 50%. Note that minimum seat utilization is always considered a hard constraint. This is evaluated first over other inputs or criteria such a preferences (i.e. Preferred Room Capacity is a soft constraint that will be checked and evaluated if and only if minimum seat utilization is met.
14.5 Optimizer Advanced Settings
Advanced settings are used to define/modify additional constraints and weights for the optimizer. There are the following advanced settings:
The weights range from 0-10. A value of 0 indicates the preference should have no relevance on the output of the optimizer, and resultantly can be ignored. A value of 10 indicates a hard constraint, meaning that the optimizer has to satisfy that preference otherwise no room and/or time assignments will be made.
14.6 Running the Optimizer
On the top of the page will be a progress bar that contains the following elements:
Additionally, each page contains a “To Do” checklist, indicating what needs to be accomplished on each page before moving forward.
Once you have created an optimizer run, and defined the optimizer settings, you will be presented with two pages that are intended to help identify issues that may negatively impact optimizer performance and results: Section Conflicts and Room Bottlenecks.
Section Conflicts lists all conflicts in the current academic schedule that relate to optimization. The conflict types listed are:
A Section Conflict can be addressed by clicking into the section. This will open the Section Editor, where you can make the appropriate updates to resolve the issue. Once each section conflict has been resolved, you will need to refresh the page to clear the conflicts.
The second page lists all potential room bottlenecks that have been calculated in the current academic schedule. There are two types of room bottlenecks that will be detected:
Once all conflicts/bottlenecks have been resolved, you may proceed to the 'Run Optimizer' page. Click the 'Optimize!' button and the optimizer will start immediately. You will be shown a progress bar to check in on the progress of the run:
While the optimizer is finding the best solution, you can view initial results by clicking ‘Click here to view these temporary results.’ Once the run is completed, the progress bar will reach 100% and you will be redirected to the Optimizer Results dashboard.
Note, the optimizer creates a copy of the section data that can be found in the Section Editor. As a result, running the optimizer will not impact the existing schedule, and the optimizer can be run multiple times until the desired result is reached. Once you have completed an optimizer run with a satisfactory result, you can merge the results back into your existing schedule (see below for details on merging).
14.7 Optimizer Results Dashboard
The Optimizer results dashboard is used to view the result of optimizer assignments, reports, conflicts, and merge the results back into your current schedule.
The dashboard consists of the following pages:
The results tab lists all the sections contained in the optimizer run in a view similar to the 'Section Editor.' You can view the results by individual sections, or grouped together in courses. You can additionally filter between:
- All sections scheduled successfully by the optimizer
- All sections not scheduled by the optimizer
- All sections scheduled but have preference conflicts
- All sections excluded from the optimizer
Next to each section, there will be an icon indicating one of the following three statuses:
- Checkbox - Optimizer successfully made all time and/or room assignments (or this section was intended to be excluded from the optimizer)
- Warning - Optimizer made time and/or room assignments, however, those assignments violate some soft constraints due to preferences
- Not Scheduled - Optimizer was not able to assign times/rooms. The likely cause of this issue is if either 1) the input schedule contained a Double Booked Instructor or Double Booked Room Conflict, or 2) there was a room bottleneck issue that prevented the optimizer from assigning all sections to a room that would not violate the minimum seat utilization
14.8 Merging Results
Once the optimizer has completed, you can merge the results of the optimizer back into the main schedule when are you ready. This merge will take only the room & time assignments made by the optimizer, and push those changes into the schedule found in the Section Editor. No other fields associated with the section will be changed.
When you are merging results, you have two choices: Bulk Merge or Single Merge. Bulk Merge will merge results for all sections at once. Single Merge will merge results for a single section. A single merge can be performed by clicking on the 'Merge Section' button in the section row, on the left.
14.9 Exporting Results
If you would like to export your results, there are three options.
Option 1: Course Sections List Report. This report creates a CSV that is a direct copy of the Course Sections List in the Reporting Dashboard, however, all the data is populated from the optimizer. This will include all optimizer time and room assignments, but will also include many other section fields, and will include sections that the optimizer was not able to make assignments for.
Option 2: Room Bottleneck lists. This report lists all room bottlenecks that are still present in the optimizer output results.
Option 3: Optimizer Assignments. This report only lists sections that the optimizer made assignments to, and only includes information on Course Code, Section Number, Times, and Rooms.
Q: Can double booked rooms exist in the schedule before running the optimizer?
A: The optimizer will never double book a room. As a result, it is advised to not include in the optimizer input any double booked rooms. As a solution, please create linked section relationship between sections with double booked rooms. If you must run the optimizer with double booked rooms, but cannot create section relationships between them, please contact our team before running the optimizer.
Q: What happens if users make changes to the schedule while the optimizer is running?
A: If users make changes to the schedule while the optimizer is running, and then you decide to merge the optimizer results back into the schedule, changes those users made to the times/rooms of a section will be overwritten by the optimizer results.
Q: What happens if the optimizer fails?
A: If the optimizer fails, first check that your schedule has a max enrollment for every section and contains no double booked rooms. If that is the case, and it still fails, please contact Coursedog through our support channel.
Q: Back-to-Back Preferences - What does the the final settings field "Enrollment Difference" mean?
A: The default setting is 100%, which means that a difference of max enrollment up to 100% is considered can be allowed for back to back sections - which is the same as saying the difference in max enrollment is not a factor in considering back to back sections. If the enrollment difference is set to 50%, and then a section with max enrollment of 100 and a section of max enrollment 45 will not be considered back to back, as their difference in enrollment is greater than 50%.
Q: When we create a section rule exception in Scheduling, are those exceptions taken into account for room assignment via the Optimizer? For example: the Double Booked Room rule has an exception for spring break sections -- would the optimizer double book spring break sections, or will it still target to have no double bookings (based on meeting pattern Start Date, End Date, Start Time, End Time)?
A: Section Rule exceptions are not taken into account by the Optimizer. In the example above, the optimization would still target to have no double bookings.
Q: What does a Status of "Infeasible" mean?
A: The 'Infeasible' flag means that there is no possible solution given the constraints. We recommend relaxing as many constraints as possible when this arises. Please note that any time you set a constraint to "10," you risk getting an infeasible flag because you are creating a hard constraint.