This article outlines everything you need to know about optimization objectives and presets on the Explore page.
- What are optimization objectives and presets?
- Tutorial: How to use optimization objectives
- Default optimization objectives and presets
- Customizing optimization objectives
- Technical documentation of objectives
What are optimization objectives and presets?
Every time that a scenario is run in ALICE, the scheduling algorithm evaluates millions of possible solutions. The explore page shows dots that represent the best schedules from all possible solutions. But, how is “best” defined?
Optimization objectives are the evaluation criteria that the ALICE algorithm uses to intelligently search for schedules from the multitude of possible schedules. The “best” schedules are defined as schedules that best satisfy these criteria.
Optimization presets are pre-set combinations of objectives designed for typical project goals, such as minimizing duration or increasing resource utilization. We recommend using presets because they produce more balanced schedules.
For advanced users, custom optimization objectives allow further control by re-ranking or adding specific priorities. Read the Customizing optimization objectives section to learn more.
Tutorial: How to use optimization objectives
- In the Create New Scenario window, click Optimization objectives to select a different preset from the ALICE default.
- On this page you can define a required end date, pick a different preset combination from the dropdown list or define a custom set of optimization objectives.
- If you choose custom, you can click the checkboxes to select desired objectives.
- Drag and drop to define the priority, with the top row representing the top priority.
- You can modify the run time for your solution, meaning how long ALICE’s scheduling algorithm will spend seeking optimal solutions.
- In most cases the default of 10 minutes is sufficient, but runs can be extended up to 60 minutes.
Default Optimization Objectives and Presets
The following presets are available to choose from when running a scenario:
ALICE Default Preset
Every schedule produced by ALICE uses the default optimization presets unless the user manually changes the settings.
Optimization objectives, in priority order:
- Minimize overall constraint tardiness (do not violate soft constraints)
- Minimize project duration
- Minimize number of crews
When to use this preset: This is the best choice for most schedules and users to balance honoring soft restrictions, reducing duration and using crews efficiently. As a reminder, ALICE honors all mandatory restrictions automatically, so this does not need to be specified as an objective.
Minimize Resource Idle Time Preset
This preset prioritizes reducing the idle time of resources while still keeping the project duration as short as possible.
Optimization objectives, in priority order:
- Minimize resource idle time
- Project duration
When to use this preset: If resource efficiency is your top priority, and you’re open to schedules that could have a higher duration as long as they are resource efficient.
Minimize Crew Usage Preset
This preset prioritizes using as few crews as possible while still keeping the project duration as short as possible.
Optimization objectives, in priority order:
- Project duration
- Minimize number of crews
When to use this preset: You want to minimize costs by using fewer crews, or you want to reduce the number of people on site for safety reasons.
Maximize Compactness Preset
This preset allows users to prioritize finishing one cluster of work before moving on to another cluster of work. Users can define a cluster of work using a custom UDF (user-defined field) such as zone, or prioritize based on crews.
Optimization objectives, in priority order:
- Project duration
- Maximize project compactness
When to use this preset: Your project has a large geographic footprint and it’s important to minimize unnecessary mobilization of crews or equipment.
Customizing optimization objectives
Users can select ‘custom’ under the preset menu and define their own set of objectives from the available options. It is important to understand the logic by which the scheduling algorithm will execute against multiple objectives.
When multiple objectives are selected, the algorithm first tries to optimize the first objective, then the second while the first objective value stays the same, then third while first and second objective value stay the same and so on.
If an objective is not selected, or is prioritized lower than others, the schedules generated will potentially perform poorly on that objective. For example, if “minimize project duration” is not selected, then the generated schedules may have a long duration, because the scheduler is prioritizing other factors, such as milestone completion or resource efficiency.
This feature is powerful but can require some advanced training and support for users to become confident. Reach out to your Customer Success Manager for advanced training and enablement.
Technical Documentation of Objectives
Minimize overall constraint tardiness
Constraint tardiness describes how well are the schedule task constraints respected. Lower tardiness means better constraint date times position with respect to the original ones.
The tardiness objective only applies to the following 4 primary constraints: Start on, Start on or before, Finish on, Finish on or before
Even without the tardiness objective, the release dates of the following constraints cannot be violated: Start on / or after, Finish on / or after, Mandatory start / finish
Minimize project duration
Minimizes total project duration by prioritizing the end date of the last task in the schedule to be as early as possible.
Minimize number of crews
This objective minimizes the number of crews used by tasks. The algorithm will identify the crew with the highest resource profile and seek to lower resource peaks by reducing the demand of that crew. When possible, the algorithm will spread tasks out to reduce the number of parallel tasks using the same crew. Project duration can be prolonged due to using less workers and reducing parallel work.
Prioritize precedence logic over resource logic
This objective minimizes the slack between pairs of tasks which are connected via a precedence and share some resource. This objective can help minimize instances where resources jump between unconnected tasks.
Suppose you have a simple construction project with 2 buildings. All the tasks only use a single resource and in the original schedule, you had 2 units of that resource so the 2 buildings were constructed in parallel.
After limiting the capacity of the resource to a single unit and using the default objectives, you can get a solution as below:
In this solution, the single resource unit moves between the buildings after finishing every task. When you use the Prioritize precedence logic over resource logic objective, this is going to be avoided and you will get a solution as below, where all the linked tasks in one building are completed before the tasks in the other building are initiated:
Prioritize end milestone
This objective lets you select one or more end milestones in your project and prioritize minimizing the time between the schedule’s start and the milestone’s completion. If multiple milestones are selected, the order does not matter and all will be equally prioritized. This objective is useful when some part of the project must be done sooner than others.
Minimize resource idle time
This objective minimizes the duration between the start of the first task and the finish of the last task using a selected resource identified by the user.
Suppose you have a simple project with 5 tasks, all of which require the same resource A. Additionally, 2 tasks (Task 2 and Task 4) require a second resource B. In the schedule below, resource B is idle throughout the duration of Task 3.
When using the reduce idle time objective, the duration between the start of Task 2 and the finish of Task 4 is minimized, thus getting a schedule without idle time as below.
Maximize compactness by custom property/area
Custom property definitions (UDFs) can be used to group tasks into clusters. Each custom property definition corresponds to a single cluster family and each property value defines a single cluster within that family. The goal of the objective is to minimize the duration between the start of the first task and the finish of the last task in a cluster thus making the clusters compact. It should be used as a secondary objective with Project duration being the primary objective.
The main purpose of this objective is to prevent unnecessary mobilization of crews or equipment. Suppose we have a construction project with 3 buildings where all tasks are using the same resources with a unit capacity. A custom property Building is used to distinguish which tasks represent work on which building . The property has 3 distinct values: A, B and C. The values of the property denote which tasks belong to which building. Ideally, we would like the buildings to be finished one after the other so the single resource unit won’t jump between the buildings like in the schedule below:
A1 and A2 are building A; B1 and B2 building B; C1 and C2 building C
The custom property “Building” defines the cluster family. The 3 property values define the 3 clusters of the family. The custom property “Building” can therefore be used in the objective. Using it should result in a schedule, where the buildings are built in a compact manner, one after the other.