Table of ContentsPreviousNext

Put your logo here!


CHAPTER 15
OptQuest for SIMPROCESS
In today's highly competitive global environment, people are faced with many difficult decisions, such as allocating financial resources, building facilities, managing inventories, determining product mix strategies, and more. Modeling a decision problem in SIMPROCESS discovers what performance measures can be expected using a certain strategy.
A strategy can be defined as a certain set of values for the model parameters. Other words for strategy include scenario and solution. Note that "solution" refers to the model parameter values (inputs to the simulation), not the resulting values of the performance measures.
Suppose the goal was to find the best strategy (without using OptQuest). Model parameter values for a strategy being considered would have to be entered into SIMPROCESS and the results analyzed. Then, this process would have to be repeated for every strategy under consideration. (Experiment Manager automates running models with various values for model parameters. See "Experiment Manager" on page 387.) Often, it would not be clear how to adjust the model parameters from one simulation to the next. This type of search is tedious and, in problems with thousands or millions of potential alternatives, impractical.
OptQuest enhances SIMPROCESS by automating the search for an optimal strategy.
Note that OptQuest for SIMPROCESS is licensed separately from SIMPROCESS.

Overview of OptQuest for SIMPROCESS

Since OptQuest is an optimization tool, it is attempting to minimize or maximize the value of a performance measure based on limits (constraints, upper bounds, and lower bounds). OptQuest automatically runs SIMPROCESS models varying the values for the model parameters searching for optimum results within the specified limits.
When the optimization runs:
OptQuest feeds a potential solution into SIMPROCESS model by setting the decision variable (model parameter) values.
SIMPROCESS runs one simulation (which may include multiple replications) to evaluate the solution.
OptQuest takes the resulting response values from SIMPROCESS.
OptQuest analyzes the results of the simulation and uses its intelligent search procedures to generate a new potential solution, which it then sends to SIMPROCESS.
OptQuest repeats this process. Its ultimate goal is to find the solution that optimizes (maximizes or minimizes) the value of the model's objective.

Elements of an OptQuest Optimization

Optimizations consist of an objective (minimize or maximize), decision variables, and constraints (constraints are optional).
Objective: An expression that represents the model's objective, such as minimizing queues or maximizing profits.
Decision Variables: Variables that can be meaningfully manipulated to affect the performance of a simulated system. The model parameters in SIMPROCESS are called decision variables in OptQuest.
Constraints: Relationships among decision variables and output variables. For example, a constraint might ensure that the total amount of money allocated among various investments cannot exceed a specified amount, or the processing time of a system cannot be greater than a certain value.
There can be bounds (upper and lower) on the decision variables and performance measure constraints (statistics).

Using OptQuest: An Overview

Follow these steps to use OptQuest.
Create a simulation model, or open a simulation model.
Prepare the model for optimization. This includes creating and assigning model parameters, establishing a performance measure to optimize, making sure the model is complete, verifying and validating the model, and making sure the model runs with no errors.
Set up the optimization, or select previous optimization settings (Tools/OptQuest menu). The following steps apply to creating a new optimization. Previously defined optimization settings can be modified or deleted.
a. Define the objective.
b. Select the decision variables.
c. Define constraints.
d. Set process alternatives.
e. Select optimization options.
Run the optimization. When Start is selected, the model is saved, and the OptQuest interface appears. From this interface the user can monitor the optimization, stop the optimization, and create reports once complete. Also, if selected, OptQuest will prompt for more iterations when approaching the maximum iteration.
Interpret the results.

Optimization Setup

Preparing for Optimization

In order to use OptQuest with a model, the model must have model parameters of type Integer and/or Real. Model parameters are user controlled values that typically set some of the initial conditions of a simulation. For instance, if Truck is a resource in the model, a model parameter could be used to set the number of the resource Truck available. In the Inventory demonstration model (see SIMPROCESS Getting Started Manual) reorder levels are controlled by model parameters. When a model is run that has model parameters, a dialog appears that allows values of the model parameters to be changed before the run begins. The image below shows the model parameter dialog from the Purchasing demonstration model. There are three model parameters: NumProdAPersonnel, NumProdBPersonnel, and NumProdCPersonnel. All three of these are Model Attributes and their Mode is Integer. These model parameters set the number of units of the resources ProductAPersonnel, ProductBPersonnel, and ProductCPersonnel.

Since OptQuest uses the Integer and Real model parameters as decision variables, when OptQuest runs the model as part of the optimization, it sets the values of the model parameters for each run.
Another requirement for optimization is an objective. Therefore there must be a performance measure in the model to maximize or minimize. This performance measure could be one of the standard statistics collected by SIMPROCESS or a specialized statistic, which could consist of a linear or non-linear combination of various standard statistics. Again, referring to the Purchasing demonstration model, the objective is to minimize the capacity cost of all the resources. Since capacity cost is collected automatically, this statistic does not have to be created. However, in the Inventory demonstration model, the objective is to minimize inventory and minimize the cycle time of an order. Since only one value can be optimized, these performance measures must be combined into one. In the Inventory demonstration model there is a linear combination of the two performance measures. This combination is in the End Simulation expression of the Model Expressions (Define/Model Expressions).
Model.OrderTime := GetEntityStatistic("Order", "tokendelay", "Avg", Replication);
Model.FinishedProduct := GetResourceStatistic("FinProduct", "resrcidle", "Avg", Replication);
Model.InventoryPlusOrderTime := Model.FinishedProduct + (5.0 * Model.OrderTime);
When combining performance measures the Expression language will be needed to retrieve statistics collected during the simulation. (See "Accessing Statistics During Simulation" on page 308.) The example above shows values being assigned to three Model Attributes: OrderTime, FinishedProduct, and InventoryPlusOrderTime. OrderTime is assigned the average cycle time for the entity Order. FinishedProduct is assigned the average number of units idle of the resource FinProduct. InventoryPlusOrderTime is a linear combination of the two, and statistics are collected for that attribute. Thus, the Model Attribute InventoryPlusOrderTime is the value to minimize. Note that the System Attribute Replication is used to get the value from the appropriate replication of the simulation.
Standard or specialized statistics can also be used as constraints in OptQuest. Therefore, if performance measures need to be used as constraints, make sure the appropriate statistics are being collected. For example, the values being assigned to OrderTime and FinishedProduct are also constraints in the Inventory demonstration model.
The final steps in preparing a model for optimization apply whether or not OptQuest is intended to be used. Make sure the model is complete. That is, all required fields in properties dialogs have been defined (especially if portions of the model have come from other models), and all activities and processes are connected. Run the model for several replications to ensure there are no errors. Determine the appropriate number of replications needed to achieve statistical significance. Finally, and most importantly, make sure the model accurately reflects the system being modeled.

Defining An Optimization

Optimizations can only be defined for the currently active model in SIMPROCESS. Thus, if the model to optimize is not loaded, load it; or if already loaded, make sure the model to optimize is the active model.
Select Tools/OptQuest. (If OptQuest is not enabled, contact the SIMPROCESS Sales Manager to purchase a license for OptQuest for SIMPROCESS.) This brings up the OptQuest for SIMPROCESS setup dialog.

If no optimizations have been created for the model, Select Optimization Settings will be empty. The first step in defining an optimization is to give it a name. Enter a name in Select Optimization Settings. If there are already other optimization settings defined, entering a new name creates a new setting. To switch between settings, simply select the desired setting from Select Optimization Settings.

Once a name has been entered, continue defining the optimization. There are five tabs on the dialog: Objective, Decision Variables, Constraints, Process Alternatives, and Run Options. The tabs can be edited in any order.

Objective

The Objective tab sets whether to Minimize or Maximize and the value to optimize. The buttons on the right are used to select the value to optimize. Entity, Resource, Activity, Connector, Time Stamp, or Model Attribute values can be optimized. For the Purchasing demonstration model, the objective is to minimize the capacity cost of all the resources. So Minimize was selected, then the Resource button was selected to choose the appropriate value to minimize.

On the left are all the resources defined in the model, plus an additional item named All Resources. When an item is selected on the left, the possible values are displayed on the right. In this example, All Resources is selected on the left and Capacity Cost on the right. When OK is selected, All Resources:Capacity Cost appears in Value to Optimize. (In the Inventory model, the Value to Optimize is Model.InventoryPlusOrderTime:Value.)

There are four options for the Value to Optimize: Avg (Average), StDev (Standard Deviation), Min (Minimum), and Max (Maximum). For this example, the average capacity cost for all the resources is needed. Since stochastic (random) simulation models should be run for more than one replication, the capacity cost of all resources for each replication is averaged.
Note about Min and Max: Min or Max should only be used when the constraints should bring convergence. For instance, if minimizing the maximum wait time was the goal, Max should be chosen for the Value to Optimize. Doing that, though, assumes there are constraints that would limit the maximum.

Decision Variables

The Decision Variables tab contains a table similar to the table on the Model Parameters dialog. This table lists all the model parameters in the model (no matter what Mode). However, only those model parameters whose Mode is Integer or Real are decision variables. The Starting Value is the value OptQuest will use on the first iteration. If new values are not entered, the Starting Value is the default value of the model parameter assigned at the time the attribute was defined. The last column of the table, Include, determines which decision variables OptQuest will modify during the optimization. The remaining columns, Lower Bound, Upper Bound, and Step Size apply only to model parameters whose Mode is Integer or Real. If the model parameter is not one of those modes, N/A will be entered in appropriate cell. Also, if the Mode is Real, N/A will be entered in the Step Size column of that row. If Lower Bound is left blank, negative infinity is assumed. Likewise, if Upper Bound is left blank, infinity is assumed. The Reset and Reset All buttons work as on the Model Parameters dialog. These buttons only apply to the Starting Value column.

Constraints

The Constraints tab is where constraints are defined. (Constraints are not required for an optimization, but are usually used in an optimization.) Two types of constraints can be defined. The first type is a constraint on a performance measure of the model. The Entity, Resource, Activity, Connector, Time Stamp, and Model Attributes buttons work as on the Objective tab. These buttons allow performance measures to be selected for constraint. Unlike the Objective, though, which can only be one performance measure, more than one performance measure constraints can be added to the optimization. Also, on performance measure constraints, there is an Upper Bound and/or a Lower Bound. (Note: If there are no bounds for a performance measure, do not include it as a constraint.) In the Purchasing model there is a Model Attribute named TotalWait. This attribute represents the total amount of time all entity types (Product A, Product B, and Product C) wait for resources. The code below is from the End Simulation expression of the Model Expressions (Define/Model Expressions).
aWait, bWait, cWait : REAL;
aWait := GetEntityStatistic("Product A", "tokenwaitdelay", "Avg", Replication);
bWait := GetEntityStatistic("Product B", "tokenwaitdelay", "Avg", Replication);
cWait := GetEntityStatistic("Product C", "tokenwaitdelay", "Avg", Replication);
Model.TotalWait := aWait + bWait + cWait;
The local variables aWait, bWait, and cWait contain the average wait time for Product A, Product B, and Product C respectively. The Model Attribute TotalWait contains the sum of all the waits. Selecting the Model Attributes button brings up the list of the Model Attributes in the Purchasing model. TotalWait was selected, then Value was selected.

Performance measure constraints appear as the objective except an Upper Bound field, a Lower Bound field, and a Delete Constraint button are added.

As with the decision variables, a blank Lower Bound assumes negative infinity, and a blank Upper Bound assumes infinity. Once a performance measure constraint has been added, only the Upper Bound, Lower Bound, and type of statistic can be edited. If the type of value chosen needs to be changed, the constraint must be deleted and recreated.
The second type of constraint is an expression constraint. An expression constraint defines mathematical relationships between decision variables. The Expression button is used to create expression constraints. This button displays a dialog that lists the decision variables on the left and the allowed mathematical operators and functions on the right. The example below shows the Purchasing model. Note that the decision variable names must be the fully qualified SIMPROCESS attribute name. That is, the type of the attribute (Model, Entity, etc.) must be included.

A name must be entered for the constraint in the Name field. Names for expression constraints within the same optimization setting must be unique. The expression can be typed directly into the Expression text area, or by clicking on the decision variable or mathematical operator or function. The syntax is the same as used in the SIMPROCESS Expression language. Some mathematical functions allowed by OptQuest are not allowed in the SIMPROCESS Expression language, therefore all of the functions allowed by OptQuest are listed in the following table along with descriptions.

Expression Constraint Functions

Function
Description
ABS(x)
Returns the absolute value of x.
ACOS(x)
Returns the arccosine of x in the range 0 to n radians. x is between -1 and 1.
ASIN(x)
Returns the arcsine of x in the range -n/2 to n/2 radians. x is between -1 and 1.
ATAN(x)
Returns the arctangent of x in the range of -p/2 to p/2 radians. If x is 0, atan returns 0.
ATAN2(x, y)
Returns the arctangent of y/x in the range -pi to pi radians. If both parameters of ATAN2 are 0, the function returns 0.
CEIL(x)
Returns the smallest whole number greater than or equal to x.
COS(x)
Returns the cosine of x, where x is an angle in radians.
COSH(x)
Returns the hyperbolic cosine of x, where x is an angle in radians.
DtoR(x)
Converts degrees to radians.
e
Mathematical constant e, approximately equal to 2.718.
EXP(x)
Returns e raised to the x power.
FLOOR(x)
Returns the largest whole number less than or equal to x.
FMOD(x, y)
Returns the remainder of x / y.
LN(x)
Returns the base e logarithm of x.
LOG10(x)
Returns the base 10 logarithm of x.
MAXOF(x, y)
Returns the larger of two numbers. (Note: Unlike the SIMPROCESS MAXOF, only two parameters are allowed.)
MINOF(x, y)
Returns the smaller of two numbers. (Note: Unlike the SIMPROCESS MINOF, only two parameters are allowed.)
PI
Mathematical constant pi, approximately equal to 3.14159.
POWER(x, y)
Returns x raised to the y power.
RAND
Returns a random number between 0 and 1 inclusive.
RtoD(x)
Converts radians to degrees.
SIN(x)
Returns the sine of x, where x is an angle in radians.
SINH(x)
Returns the hyperbolic sine of x, where x is an angle in radians.
SQRT(x)
Returns the square root of x.
TAN(x)
Returns the tangent of x, where x is an angle in radians.
TANH(x)
Returns the hyperbolic tangent of x, an angle in radians.

The optimization setup for the Purchasing model is highly constrained. This is because of the three expression constraints. The first constraint is named Resources = 10. This constraint requires that the sum of the decision variables (model parameters) must equal 10. Since these decision variables set the number of units of each resource type, the name Resources = 10 was assigned. The dialog has a Validate button. This button allows validation of the syntax of the expression constraint before selecting OK.

There are two other expression constraints in the Purchasing model, A <= B and B <= C. These constraints state that the number of units of the resource ProductAPersonnel must be less than or equal to the number of units of the resource ProductBPersonnel, and the number of units of the resource ProductBPersonnel must be less than or equal to the number of units of ProductCPersonnel. Scrolling down on the Constraints tab brings all three expression constraints into view.

Expression constraints can be modified from the Constraints tab by clicking in the text area and changing as necessary. However, expression constraint validation is not available. To use validation, the constraint must be deleted and recreated.

Process Alternatives

The Process Alternatives tab displays all processes in the model that have more than one alternative. When a process is selected on the left, the alternatives for that process are displayed on the right. This allows the alternative to be selected that will be active for the optimization. If no alternative is selected for a process, the alternative that was active the last time the model was saved will be active for the optimization. In the Purchasing model, the Purchasing process is the only process that has more than one alternative, thus, it is the only process listed on the left. The Purchasing process' three alternatives are listed on the right.

Run Options

The Run Options tab sets the number of replications for each simulation and the optimization stopping criteria. Unless the model is discrete, it is recommended that each simulation be run for more than one replication. The number of replications needed should be determined before setting up the optimization. If no value is entered, each simulation run will run with the number of replications last saved in the model. If a value is entered, that value will be reflected in the Number of Replications in the Run Settings of the model the next time the model is opened after the optimization. In the Purchasing model, the Number of Replications per Simulation is set to 2. This was set to a small number for demonstration purposes only. Only two replications and the tight constraints cause the Purchasing optimization to run quickly.
Apart from user intervention, the length of the optimization is controlled by two options: Maximum Iterations and Automatic Stop. At least one of the stopping criteria must be selected. Both options can be selected. If both are selected, the criteria that is satisfied first will stop the optimization. Maximum Iterations is the maximum number of iterations OptQuest will attempt before stopping the optimization. The value must be an integer greater than zero. When Automatic Stop is selected, the optimization stops when the value of the objective stops improving. Precision determines when two objective values are considered equal. The default is 0.0001.

Saving Optimization Settings

Selecting OK will close the dialog and add the defined optimization settings to the model. The model must be saved for the optimization settings to persist. Selecting Start will close the dialog, add the defined optimization settings to the model, and save the model. Thus, performing another save is not necessary. Cancel closes the dialog and discards any changes.

Running an Optimization

To run an optimization, if the optimization settings dialog is not already displayed, select OptQuest from the Tools menu. Once the optimization settings dialog has appeared, either define an optimization or select a previously defined optimization. Select the Start button. At that point a dialog will appear asking for confimation before saving the model and starting the optimization. If No is selected, the operation is canceled. If Yes is selected, the dialog closes, the model is saved and closed, and the optimization starts.

OptQuest for SIMPROCESS Interface

An OptQuest for SIMPROCESS optimization runs in a separate Java Virtual Machine (JVM) and uses a separate interface from SIMPROCESS. Therefore, once an optimization has started, SIMPROCESS can continue to be used without affecting the optimization. This means multiple optimizations can run simultaneously. However, that may not be practical, since running an optimization is very CPU intensive (since it is running a simulation, which monopolizes the CPU), and, depending on the size of the model, memory intensive. Also, it may not be practical to run a simulation with SIMPROCESS while an optimization is running for the same reasons. Running multiple optimizations and/or simulations will often perform better on non-Windows systems.
The OptQuest for SIMPROCESS interface primarily consists of text, tables, and a graph to monitor the optimization. There is a button to stop the optimization, and there are reporting options on the File menu once the optimization is complete.
When the interface appears, all status objects are empty except for the Optimization Status field, which displays Initializing. The tables show the status of the objective value, the decision variables, the performance measure constraints, and the expression constraints. The objective value table and the decision variables table will always appear. The performance measure constraints table and the expression constraints table will only appear if those types of constraints exist. The graph plots the best objective value based on whether or not the best is feasible. The example below is from the Purchasing model.

Status Text

The following status text is displayed:
· Model Name - name of the model being optimized
· Optimization Setting - the name of the optimization setting selected when the optimization was started
· Objective - Minimize or Maximize
· Objective Value - the performance measure selected for optimization
· Optimization Status - Initializing, Running Iteration n, Complete, Stopping Optimization, User Terminated, or Error
· Maximum Iterations - number of iterations or Off
· Automatic Stop - On or Off
Optimization Status descriptions:
· Initializing - Optimization is in setup stage
· Running Iteration n - Optimization is running the nth iteration
· Optimal Solution Found - Optimization completed normally with no errors
· Stopping Optimization - Optimization is in the process of stopping because user selected Stop button
· User Terminated - Optimization stopped by user
· Error - Optimization stopped due to error.

Status Tables

The objective value table lists the Best Value and the Current Value for the Iteration, whether the best and current values are Feasible, and the best and current Objective Value.

The decision variables table lists the decision variables (Parameters) included in the optimization. The Lower Bound, Best Value, Current Value, and Upper Bound are displayed.

The performance measure constraints table lists the performance measures identified as constraints for the optimization. The Lower Bound, Best Value, Current Value, and Upper Bound are displayed.

The expression constraint table lists the expression constraints defined for the optimization. The name, not the expression itself, is displayed in the Expression Constraint column. The other columns are Best LHS, Current LHS, Operator, Best RHS, and Current RHS. LHS stands for Left Hand Side, and RHS stands for Right Hand Side. These columns show the best and current values for both sides of each expression constraint. The Operator column shows the comparison operator between both sides of each expression constraint.

Objective Graph

The graph of the objective value plots the best objective value for each iteration. Infeasible values are plotted with dots in red, and feasible values are plotted in blue with Xs. In the example below from the Purchasing model, the first three values were infeasible and the remaining feasible. Remember, once the best value is feasible, the best value will not be infeasible again. To zoom in on a portion of the graph, click and drag over the portion of the graph to enlarge. The buttons above the graph do the following:
· Print the plot.
· Reset the X and Y ranges to their original (empty plot starting) values.
· Set the plot format.
· Rescale the plot to fit the data. Used after zooming to return to full view of plot.

Maximum Iterations Prompt

When a maximum number of iterations has been set for the optimization, the checkbox Prompt for more iterations is enabled. This checkbox defaults to selected. When selected, the optimization prompts for more iterations at the end of the next to the last iteration. For instance, if the maximum iterations is set to 100, at the end of iteration 99 the optimization will prompt for a new maximum for the iterations. A new maximum must be entered, not the number of additional iterations. So, for this example, the number entered must be 101 or larger (150 entered). If Prompt for more iterations remains selected, the optimization will prompt again when the iteration is one less than the maximum (149 in this example). Deselect this option to have the optimization complete without interruption.

Optimization Solution Options

The OptQuest for SIMPROCESS interface shows the current status of the optimization while it is running. Once the optimization is complete, the interface only shows the best values. The example below is from the Purchasing model.

The File menu contains other options for examining solutions, and it has an option for applying the best solution to the model. Help is also accessed from the File menu.

View Report

View Report brings up a dialog similar to the Standard Report dialog. With this dialog the report can be displayed in a text editor or in a spreadsheet.

The report lists the name of the model, the start date/time and end date/time of the optimization, the optimization settings, and the best values for the objective, decision variables, and constraints.

Create HTML Report

This option creates the same report as View Report. However, since it is an HTML file, the objective graph is included as well.

Print Graph

This option sends the objective graph to the selected printer.

Apply Best Values to Model

Apply Best Values to Model assigns the best values from the decision variables to the model parameters in the model. Thus, when the model is reopened in SIMPROCESS, and run is selected, the run values for the model parameters reflect the best values from the optimization. Also, if OptQuest is selected again, the starting values for the decision variables are the best values from the optimization.

Tips and Suggestions

Search Methodology

There are many factors that influence the performance of OptQuest. For example, consider two optimization methods, A and B, applied to a problem with the objective of maximizing expected returns. When evaluating the performance of each method, consider which method satisfies the following criteria:
· Finds a solution with a larger expected return
· Jumps to the range of high-quality solutions faster
Below is the Performance Graph for the two hypothetical methods.

The figure above shows that, although both methods find solutions with a similar expected profit after 10 minutes of searching, method A jumps to the range of high-quality solutions faster than B. For the criteria listed above, method A performs better than method B.
OptQuest will obtain performance profiles similar to method A. OptQuest's search methodology is very aggressive and attempts to immediately find high-quality solutions, causing large improvements, (with respect to the initial solution), early in the search. This is critical when OptQuest can perform only a limited number of simulations.
However, several factors affect OptQuest's performance, and the importance of these factors varies from one situation to another. This section reviews these factors and offers tips and suggestions on how to achieve maximum performance.

Factors that affect search performance

Any heuristic method for solving problems cannot guarantee that it will find the optimal solution. It might only find a solution that is close to the optimal solution, usually referred to as the best solution; this is why maximizing performance is critical.
The following is a list of relevant factors that directly affect search performance. Each factor is explained in sections after the list.
· Number of decision variables
· Initial values
· Decision variable bounds
· Complexity of the objective
· Constraints
· Feasibility
· Number of replications and simulations
· Simulation accuracy
· Simulation speed

Number of Decision Variables

The number of decision variables greatly affects OptQuest's performance. OptQuest has no physical limit on the number of decision variables that can be used in any given problem. However, the performance might deteriorate if more than 100 decision variables are used.
Also, as the number of decision variables increases, more simulations are needed to find high-quality solutions. General guidelines for the minimum number of simulations required for a given number of decision variables in a problem are:
Decision Variables
Minimum number of simulations
Less than 10
100
Between 10 and 20
500
Between 20 and 50
2,000
Between 50 and 100
5,000
For very large numbers of decision variables, try this procedure:
· Decrease the number of replication per simulation, at least initially
· Run the optimization to get an approximate solution
· Set the suggested values to the approximate solution
· Further restrict the bounds on the decision variables
· Increase the number of replications to increase accuracy
· Rerun the optimization
One option is to de-select certain decision variables and optimize the rest. If an optimization has already been run, there might be information available about which decision variables have the least effect on the objective function. When one or more decision variables is de-selected and the optimization is rerun, the search focuses on the remaining, more important, decision variables.

Initial Values

The initial values are the values listed as the Starting Values of the Decision Variables tab. Initial values are important because the closer they are to the optimal value, the faster OptQuest can find the optimal solution. If the initial values are constraint-infeasible, they are ignored.
For potentially large models with many decision variables, it might be helpful to first run a simplified version of the optimization to find initial values for the full-blown model. For example, expected values could be used for some of the random variables in the model.

Decision Variable Bounds

OptQuest's performance can be significantly improved by selecting meaningful bounds for the decision variables. Suppose, for example, that the bounds for three decision variables (X, Y, and Z) are:
0 <= X <= 100
0 <= Y <= 100
0 <= Z <= 100
And in addition to the bounds, there is the following constraint:
10*X + 12*Y + 20*Z <= 200
Although the optimization model is correct, the decision variables bounds are not meaningful. A better set of bounds for these decision variables would be:
0 <= X <= 20
0 <= Y <= 16.667
0 <= Z <= 10
These bounds take into consideration the values of the coefficients and the constraint limit to determine the maximum value for each decision variable. The new "tighter" bounds result in a more efficient search for the optimal values of the decision variables. However, this efficiency comes at the expense of missing the optimal solution if it lies outside the specified bounds.

Complexity of the Objective

A complex objective has a highly nonlinear surface with many local minimum and maximum points.
OptQuest is designed to find global solutions for all types of objectives, especially complex objectives. However, for more complex objectives, generally it is required to run more simulations to find high-quality global solutions.
Since only one value can be optimized, complex objectives must be defined within the model expressions. (See "Customizing a Model with Attributes and Expressions" on page 237.)

Constraints

Constraints can be used to restrict the values of decision variables (model parameters) by defining relationships among the decision variables; constraints can also restrict the value of output variables (performance measures).
If a constraint is defined using only decision variables, OptQuest can eliminate sets of decision variables values that are constraint-infeasible before it runs the simulation. Limiting the optimization by defining constraints on decision variables is extremely time-effective.
If a constraint contains a performance measure, a simulation must be run to determine whether the suggested solution satisfies the constraint.
The search process benefits from the use of constraints on decision variables and tight bounds on decision variables. However, performance generally suffers when performance measure constraints are included in the optimization model for two reasons:
· Performance measure constraints are very time-consuming to evaluate, since OptQuest must run an entire simulation before determining whether the results are constraint-infeasible.
· To avoid running constraint-infeasible simulations, OptQuest must identify the characteristics of solutions likely to be constraint-feasible; this makes the search more complex and requires more time.
Even though performance measure constraints can greatly decrease the number of feasible simulations performed during an optimization, performance measure constraints can focus the search to effectively rule out undesirable solutions.
If there are lots of performance measure constraints that OptQuest can't easily satisfy, consider combining the output constraints into one multi-objective function.

Feasibility

OptQuest makes finding a feasible solution its highest priority. Once it finds a feasible solution, it then concentrates on finding better solutions.
The fact that a particular solution may be infeasible does not imply that the problem itself is infeasible. However, infeasible problems do exist. For example, suppose that in a Job Shop problem a foreman insists on finding an optimal configuration with the following constraints:
drills + grinders <= 4
drills + grinders >= 5
Clearly, there is no combination that will satisfy both of these constraints.
Or, for this same example, suppose the bounds for a decision variable were:
3 <= saws <= 5
And a constraint was:
saws <= 2
This also results in an infeasible problem. OptQuest will display an error message and terminate infeasible optimizations.
Infeasible problems can be made feasible by fixing the inconsistencies of the relationships modeled by the constraints. OptQuest detects optimization models that are constraint-infeasible and reports them.
If a model is constraint-feasible, OptQuest will always find a feasible solution and search for the optimal solution (i.e., the best solution that satisfies all constraints).

Number of Replications and Simulations

When OptQuest runs an optimization, it runs a simulation to evaluate each set of decision variable (model parameter) values. Therefore, the quality of the optimization results depends on the number of simulations (iterations) and the number of replications per simulation.
For a set period of time, the number of replications per simulation is inversely related to the number of simulations; as one increases, the other decreases. Decreasing the number of replications can help increase the number of simulations.
The more simulations OptQuest can run, the more sets of values it can evaluate, and the more likely OptQuest is to find a solution close to the optimal solution.

Simulation Accuracy

There are two factors that affect simulation accuracy:
· Number of replications per simulation
· Noisiness of the objective

Number of replications per simulation

For sufficient accuracy, the number of replications per simulation must be set to the minimum number necessary to obtain a reliable estimate of the objective function being optimized; this minimum number is typically found with empirical testing.

Objective noisiness

Noisiness can also affect the accuracy of OptQuest results.

The objective on the left has significant amounts of noise caused by the probability distributions used to model the problem's uncertainty. For these types of objectives, OptQuest might have trouble discerning the minimum or maximum value. Noisy functions can be detected by watching for best solutions that seem to "bounce around" from one set of values to completely different sets of values. To help solve this problem, increase the number of replications per simulation. On the right, the objective appears smooth due to the relative certainty in the model assumptions. In these cases, OptQuest should quickly converge to the best solution.

Simulation Speed

Some suggestions for increasing speed include:
· Reduce the size of the model (or the time horizon of the simulation).
· Increase the system's RAM memory.
· Reduce the number of uncertain elements in the simulation.
· Close other applications.

OptQuest Demonstration Models

Two of the demonstration models that come with SIMPROCESS have been set up for optimization: the Purchasing model (Purchasing.spm) and the Inventory model (Inventory.spm).

Purchasing Model

This model was used throughout this chapter to describe how to set up and run an OptQuest optimization. Thus, an extended description will not be given here. The model is described in Chapter 5 of the SIMPROCESS Getting Started Manual. The optimization set up for this model should not be considered a true optimization scenario. The constraints are very tight, and the number of replications per simulation is only two. This was done so the example would run within a minute or two. The value of this model is in learning how to create decision variables and constraints.

Inventory Model

This model was developed for the purpose of finding optimal values. The model is described in Chapter 5 of the SIMPROCESS Getting Started Manual. Briefly, the Inventory model demonstrates an Inventory Pull and Manufacturing system. The process is characterized by the Reorder Points and Reorder Quantities defined for each resource in the supply chain. There are four steps in the supply chain: Warehouse, Assembly, Component1 Vendor and Component2 Vendor, and the Raw Material Vendors. Inventory is pulled only when it is needed (there is insufficient stock to fill the order or the Reorder Point has been reached). There are 10 Model Attributes in the model that have been designated as model parameters.
· Comp1ReOrderPt - Component Vendor 1 (Comp1 resource) Reorder Point
· Comp1ReOrderQty - Component Vendor 1 (Comp1 resource) Reorder Quantity