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.
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.
Lastly, 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).
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.
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%.
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:
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.