Network Optimization constraint overview

Aggregate constraints are the set of network requirements and limitations that specify overall constraints on a grouping of factors, as opposed to individual element limitations. You can create both standard Network Optimization constraints and Count constraints. The "count" constraints allow you to limit the number of sites, work centers, flows, inventory and production locations to be used within a model structure. Results of constraint use are reported in Constraint output.

In addition, you can use Allocation constraints to seamlessly control the allocation of sourcing, transportation, production, and warehousing. You define the percentage relationship between two individual or sets of entities. The allocation constraint tables enable this functionality without having to define expressions for these more advanced situations.

Network Optimization may not be able to use some constraints that use groups or dynamic filters, based on their definition. See Considerations for grouped constraints for more information.

Constraint types

The following constraint types apply to flow constraint, inventory constraint, and production constraints.

  • Minimum. x >= minimum amount
    Example: The production amount (x) has to be greater than or equal to 100 units (minimum amount) a month. (Note: If other constraints prevent the production from being greater than 100 units the model will be infeasible).
  • Maximum. x <= maximum amount
    Example: The production amount (x) has to be less than or equal to 100 units (maximum amount) a month.
  • Fixed. x = fixed amount
    Example: The production amount (x) has to be exactly 100 units (fixed amount) a month.
  • Conditional Minimum. x >= minimum amount or x = 0
    Example: The production amount (x) has to be greater than or equal to 100 units (minimum amount) a month or the production will be 0 units.
  • Conditional Fixed. x = fixed amount or x = 0

    Example: The production amount (x) has to be equal to 100 units (fixed amount) a month or the production will be 0 units. This type is used in allocation constraints.

  • Define. When “Define” is set as the Constraint Type, Network Optimization does not use the Constraint Vaue to satisfy the constraint. Instead, the requirement value is specified in Expression Constraints.

Additionally, you can use flexible constraints to create more complex constraints that combine two or more constraints from the Flow Constraints, Inventory Constraints and Production Constraints tables. Flexible cost modeling lets you define costs that can be applied to any flow, inventory or production values:

  • Expression Constraints – enables you to model a constraint across one or two expressions. You can define an Expression Name in constraints tables such as the Flow Constraints, Flow Count Constraints and Production Constraints tables for use with Expression Constraints.
  • Expression Based Costs – lets you define a fixed cost, a variable cost or both and apply it to a named constraint or use it within the Expression Constraints table.
  • Open/Close Relations – enables you to construct constraints that control how many sites or work centers are open or closed based on the states of sites and work centers in the model. The table uses an If... Then structure to define this relationship.

Spend constraints enable you to combine various supply chain costs and apply budgetary constraints to these costs. You can use Spend Expressions to create relationships between Spend Accounts.

Constraint time period

The Constraint Period column is used to scale the requirement amount. Network Optimization applies the constraint to the defined period (in the Periods table) or horizon of the model. However, if the desired constraint is shorter than the period or horizon, the requirement period can be used to scale the constraint.

For example, if the period length is 31 days, and a constraint for a max of 10 units per day is placed (using the requirement period), the actual constraint placed will be 3100 units for the period. This is beneficial if the period length changes, as the constraints will scale automatically. The different types of period are as follows:

  • Day - Apply the specified constraint on a daily basis.
  • Week - Apply the specified constraint on a weekly basis.
  • Month - Apply the specified constraint on a monthly basis.
  • Quarter - Apply the specified constraint per every three months. (Jan-Mar, Apr-Jun, July-Sep, Oct-Dec)
  • Year - Apply the specified constraint on a yearly basis.
  • Period Length - Apply the specified constraint across a specific period denoted in the "Periods" table.

Constraint dimension basis

The constraint dimension basis is used to set the basis for the Constraint Value. There are three options: quantity, weight, and volume, and you can select a specific unit of measure for each. The option selected will determine how the constraint is interpreted. For instance, if the constraint amount is 10, setting the basis to "Quantity" with a default unit of measure of EA makes the constraint for 10 units.

Each versus All

Groups and filters can be applied in one of two ways:

  • Each – When “Each” is selected as the method to apply the group, each member defined in the group will be expanded while running the model. For example, you have a group of 100 DCs. When this group is used to define a Site Sourcing Policy, the same sourcing policy is applied to all 100 DCs when the model is run or expanded.
  • “Each” is the default method for applying groups.
  • All – When “All” is selected as the method to apply the group, all the group members are locked into one ‘node’. This group type is typically used when applying constraints in the constraints tables.

For example, assume you have 20 potential distribution centers and only 10 can be open and operating. You define a group with the 20 distribution centers as members. You then define a Site Constraint to open only 10 of the possible sites. Use the group of distribution centers you created and select “All” as the method to apply.

When creating Site Constraints, apply the group as “All”. If applied as “Each”, the constraint will not work.

In another example, in a Inventory Count Constraint, a Site Name group of 3 DCs is applied as “Each" group of 3 DCs. The Product group of all products is applied as “All”, and the constraint value of 2 is set as a Max. For each DC in the group, there can be at most 2 of all possible products within the site.

Aggregation

If a property of a constraint is "Aggregated" – typically using a column titled like "Aggregate Source" or "Aggregate Destination" – then differences in the property are essentially ignored in consideration of meeting the constraint.

That is, if a set of all destinations are in a constraint, and the column is aggregated, the constraint will not refer to destinations as a group, but apply the constraint no matter the destinations in question.

For example, in a Flow Count Constraint as shown below, a group or filter is populated for period, source, destination, product and mode. A value of "(All)" or "(Each)" is applied and will be used as described in Each versus All. The constraint is set to a maximum of two.

Period Source Destination Product Mode Constraint Type Constraint Value
(ALL_Periods) (All) AllDCs (All) AllDCs (Each) (ALL_Products) (All) (ALL_Modes) (All) Max 2
  • Aggregating against all five fields would mean that all would be ignored, and no constraint is applied. For example, when all fields are aggregated in a Flow Count Constraint, there is only one flow remaining. Not aggregating on any of the fields also means that no constraint is applied.
  • If the source is not aggregated but everything else is, then a maximum of two sources of all possible sources can be used for each individual destination no matter the mode, product, or period.
  • If the product is not aggregated but everything else is, then a maximum of two products of all possible products can be sent to each individual destination no matter the source, mode, or period.
  • If the source and product are not aggregated but everything else is, then a maximum of two source-product combinations of all possible source-product combinations can be sent to each individual destination no matter the mode, or period.

Considerations for grouped constraints

When creating constraints, many of the columns can use groups and dynamic filters. Depending on the way that constraints are constructed, some may not be usable in Network Optimization. Additionally, there may be cases where these constraints and associated costs could result in a failed or complex infeasible model. Supply Chain Guru X checks for specific conditions and ignores constraint rows that satisfy all of these conditions:

  • Record contains an Expression name.

  • Record has a group or filter applied to one or more columns that support groups, such as Source, Destination and Product. The condition applies if the group has "Each" or no method applied (no method assumes "Each"). If "All" is applied, the condition does not apply.

  • Record has a Constraint Type of "Define".

For example, consider the following Flow Constraint definition:

Expression Period Source Destination Product Mode Constraint Type
Flow_GroupedSource Period_001 EURMfrs DC_Spain Product_1 1 Define

The record has an Expression name, the record is grouped on the Source column using a group called "EURMfrs", and the Constraint Type is "Define".

If records meet all these conditions, information about the records is written to ErrorLog.txt in order to help diagnose the issue. In general, Coupa recommends that you avoid building constraints using nested expressions with groups.

Last modified: Friday May 12, 2023

Is this useful?