9.3.2 – Define Objectives
The objective of your project is the final outcome you want to achieve. SimRunner measures your progress toward this goal using an objective function. An objective function is composed of response statistics, a min/max or target range, and a specific weight you wish to apply to each response statistic.
The response category is the type of statistic you wish to use to evaluate your model. Response categories include model elements such as locations, entities, resources, and variables.
By clicking on one of the Response Categories, you will see a list of Response Statistics. Simply put, response statistics are those values you wish to improve. Once you define your targeted improvements, you are ready to define how you want them to perform—the objective for the response statistic.
Objective for Response Statistic
The objective for the response statistic refers to the way in which you want to effect change for that item. If you are trying to increase the overall output of a system, you would maximize the response statistic. Likewise, you could minimize the statistic or target a specific range within which you want the result. Finally, enter the reward or weight for each response statistic—larger numbers signify greater rewards in situations that require more than one objective.
Max Check this option if you want to maximize the final value of this statistic.
Min Check this option if you want to minimize the final value of this statistic.
Maximized objective functions return positive values. Minimized objective functions return negative values.
Target Range Check this option to enter a specific target range within which you want the final result.
Statistic’s weight Weights serve as a means of load balancing for statistics that might bias the objective function. Since most simulation models produce a variety of large and small values, it is often necessary to weight these values to ensure that the objective function does not unintentionally favor any particular statistic. For example, suppose that a run of your model returns a throughput of .72 and an average WIP of 4.56. If you maximize throughput and minimize WIP by applying the same weight to
both ( W 1 = W 2 ), you will bias the objective function in favor of WIP:
Maximize [(W 1 )*(Throughput)] = .72
Minimize[(W 2 )*(WIP)] = 4.56
In this case, since you want to ensure that both statistics carry equal weight in the objective function, you will apply a weight of 6.33 ( W 1 =6.33) to throughput and 1.0 ( W 2 =1.0) to WIP to make them of equal weight in the objective function.
Maximize[(W 1 )*(Throughput)] = 4.56
Minimize[(W 2 )*(WIP)] = 4.56
In situations where it is necessary to favor one statistic over another, balancing the statistics first will make it easier to control the amount of bias you apply. For example, if you apply a weight of 12.67 ( W 1 =12.67) to throughput and 1.0 ( W 2 =1.0) to WIP, the objective function will consider throughput to be twice as important as WIP (adapted from Harrell, Ghosh, and Bowden 2000).
Typically, you will need to experiment with your model to identify the weight ratio necessary to balance statistics.
Response statistics selected for objective function
After you define the objective for the response statistic, you may click the Add button to include the statistic as part of the objective function. SimRunner combines the statistics into a linear combination and displays the updated objective function for the project.
The objective function is an expression used to quantitatively evaluate a simulation model’s performance. By measuring various performance characteristics and taking into consideration how you weigh them, SimRunner can measure how well your system operates. However, SimRunner knows only what you tell it via the objective function. For instance, if your objective function measures only one variable, Total_Throughput, SimRunner will attempt to optimize that variable. If you do not include an objective function term to tell it that you also want to minimize the total number of operators used, SimRunner will assume that you don’t care how many operators you use. Since the objective function can include multiple terms, be sure to include all of the response statistics about which you are concerned.
SimRunner’s capacity to include many different response statistics in an objective function gives it tremendous capability. For example, the objective function below signifies that you wish to maximize the total ovens and cooktops processed while minimizing the total resource cost. The numeric weighting factors indicate that maximizing Total Ovens Processed is the most important, followed by maximizing Total Cooktops Processed, then minimizing Total Resource Cost.
Z =Max:10 * (Total Ovens Processed) +
Max:5 * (Total Cooktops Processed) +
Min:2 * (Total Resource Cost)
Perhaps the best way to define your objective function is in terms of cost or profit. When possible, this allows you to use a simple, single response statistic like maximize profit without concern over assigning meaningful weights to multiple response statistics.
SimRunner’s objective function is calculated by multiplying the result of each objective by its weighting factor, and then adding each product together. Maximized and Target Range objectives are positive and minimized objectives are negative.
For example, if you maximize the number of entities processed, minimize their cost, and minimize the number of resources used, the formula would be as follows:
(entities processed * wt) + (-cost * wt) + (-resources used * wt)
So using the following data for a single experiment:
Entities processed = 100
Entity weight factor = 10
Cost = 25
Cost weight factor = 5
Resources = 8
Resource weight factor = 1
Your result would be:
objective function = (100 * 10) + (-25 * 5) + (8 * 1) = 867
Example: Maximize up to a target
The following example shows how to achieve a throughput target level. Suppose you want to target a production rate of 300 to 325 units per day. In the target range fields, assign a range of 300 to 325 and enter a weight of 1.
The target range in SimRunner is a means of applying bounds to the output values. SimRunner calculates the mean of the range you specify. The closer an entity is to that mean, the higher the value that element of the objective function returns.
If the value returned is below the mean of the objective function, the formula is:
Objective Function Element = Weight * (Value – Min)
If the value returned is above the mean of the objective function, the formula is:
Objective Function Element = Weight * (-1) * (Value – Max)
If the value returned is equal to the mean of the objective function, the formula is:
Objective Function Element = Take any of the above (above or below mean) calculated value
For example, suppose you want to assign a target range to the total number of bicycles processed. You want your objective function to return a value nearest to 400 and your acceptable target range is 300 to 500. Assume your weighting factor is 1. If the number of bikes processed was 380, SimRunner would calculate the value of that element of the objective function as 1 * (380 – 300) = 80. If the number of bikes processed was 420, the value of that element of the objective function would be 1 * (-1) * (420 – 500) = 80. If the number of bikes processed was 400, the value of that element of the objective function would be 1 * 400 = 400.
The key to using the target range is that it must be a RANGE of possible values. If you defined the target range as 400 to 400, the range of possible values would be 0. Therefore you would never get a value besides 0 out of that element of the objective function.
The objective function, in its entirety, is the sum of all elements of the objective function. It calculates the value of each element by multiplying the weight by the returned value. Then, if you are minimizing that element, it is multiplied by -1. All of those elements are added together to calculate the total objective function value.