For Excel

© All Rights Reserved

210 visualizações

For Excel

© All Rights Reserved

- Algoritmo Dispatch for Open Pit
- Frontline Solvers User Guide
- Optimal Design of Cylindrical Shells
- Simultaneous Optimization and Heat Integration of Chemical Processes
- chap1-2.pptx
- PAPER265.PDF
- Tutorial Composite Optimization MG1
- (Lecture Notes in Computer Science 6466 _ Theoretical Computer Science and General Issues) Shi-Zheng Zhao (Auth.), Bijaya Ketan Panigrahi, Swagatam Das, Ponnuthurai Nagaratnam Suganthan, Subhransu Sek
- [S3-4]APAN_NRW2013
- Aplicatiile Analizei Valorii-4-Optimizarea Volantului Concasorului-Autori: Florin Chichernea & Alexandru Chichernea
- Certification in Ore Reserve Risk and Mine Planning Optimization
- 16.323 Optimal Control Problems Set 1
- Excel functions (by category) - Office Support.pdf
- Design for Structural and Energy Performance of Long Span Buildings Using Geometric Multi Objective Optimization_2016
- 17565
- Journal for Nonlinear Integer Programming
- Evolutionary Design of Optimum Distillation Column Sequence
- 915480.pdf
- An Experimental Study of Online Scheduling Algorithms
- Lect03_Optimising_20080312

Você está na página 1de 450

Optimization and

Simulation User Guide

Copyright

Software copyright 1991-2016 by Frontline Systems, Inc.

User Guide copyright 2016 by Frontline Systems, Inc.

GRG/LSGRG Solver: Portions copyright 1989 by Optimal Methods, Inc. SOCP Barrier Solver: Portions

copyright 2002 by Masakazu Muramatsu. LP/QP Solver: Portions copyright 2000-2010 by International

Business Machines Corp. and others. Neither the Software nor this User Guide may be copied, photocopied,

reproduced, translated, or reduced to any electronic medium or machine-readable form without the express

written consent of Frontline Systems, Inc., except as permitted by the Software License agreement below.

Trademarks

Frontline Solvers, XLMiner, Analytic Solver, Risk Solver, Premium Solver, Solver SDK and Rason

are trademarks of Frontline Systems, Inc. Windows and Excel are trademarks of Microsoft Corp. Gurobi is a

trademark of Gurobi Optimization, Inc. Knitro is a trademark of Artelys. MOSEK is a trademark of MOSEK

ApS. OptQuest is a trademark of OptTek Systems, Inc. XpressMP is a trademark of FICO, Inc.

Acknowledgements

Thanks to Dan Fylstra and the Frontline Systems development team for a 25-year cumulative effort to build the

best possible optimization and simulation software for Microsoft Excel. Thanks to Frontlines customers who

have built many thousands of successful applications, and have given us many suggestions for improvements.

Risk Solver Pro and Risk Solver Platform have benefited from reviews, critiques, and suggestions from several

risk analysis experts:

Sam Savage (Stanford Univ. and AnalyCorp Inc.) for Probability Management concepts including SIPs,

SLURPs, DISTs, and Certified Distributions.

Sam Sugiyama (EC Risk USA & Europe LLC) for evaluation of advanced distributions, correlations, and

alternate parameters for continuous distributions.

Savvakis C. Savvides for global bounds, censor bounds, base case values, the Normal Skewed distribution

and new risk measures.

How to Order

Contact Frontline Systems, Inc., P.O. Box 4288, Incline Village, NV 89450.

Tel (775) 831-0300 Fax (775) 831-0314 Email info@solver.com Web http://www.solver.com

Contents

Start Here: 2016-R2 Essentials 11

Getting the Most from This User Guide ........................................................................ 11

Installing the Software .................................................................................... 11

Upgrading from Earlier Versions..................................................................... 11

Getting Help Quickly ...................................................................................... 11

Using the Solver Parameters Dialog ................................................................ 11

Finding the Examples ...................................................................................... 12

Using Existing Models .................................................................................... 12

Using Existing VBA Macros ........................................................................... 12

Using Large-Scale Solver Engines .................................................................. 13

Getting Started with Tutorials ......................................................................... 13

Getting and Interpreting Results ...................................................................... 13

Automating Your Model with VBA ................................................................ 13

Mastering Optimization and Simulation Concepts ........................................... 13

Software License and Limited Warranty ....................................................................... 14

Analytic Solver Platform and Subset Products .............................................................. 18

Analytic Solver Platform ................................................................................. 19

Risk Solver Platform ....................................................................................... 19

Premium Solver Platform ................................................................................ 19

XLMiner Platform........................................................................................... 19

Risk/Premium Solver Pro ................................................................................ 20

Risk Solver Pro ............................................................................................... 20

Premium Solver Pro ........................................................................................ 20

XLMiner Pro................................................................................................... 20

Whats New in V2016-R2 ............................................................................................. 20

V2015 Release ................................................................................................ 21

V2015-R2 Release .......................................................................................... 21

V2016 Release ................................................................................................ 21

V2016-R2 Release .......................................................................................... 22

Optimization and Resource Allocation .......................................................................... 22

Simulation and Risk Analysis ....................................................................................... 23

Optimal Solutions for Models with Uncertainty ............................................................ 24

Automatic Model Transformation to RASON ............................................................... 24

Sensitivity Analysis and Model Parameters ................................................................... 25

Multiple Optimizations and Simulations ....................................................................... 25

Decision Trees on the Spreadsheet ................................................................................ 25

Bringing Big Data into Excel using Apache Spark ........................................................ 26

Forecasting and Data Mining ........................................................................................ 26

Large-Scale Solver Engines .......................................................................................... 27

Automatic Mode and Solution Time.............................................................................. 28

Help, Guided Mode and Proactive Support.................................................................... 28

What You Need ............................................................................................................ 30

Installing the Software .................................................................................................. 30

Uninstalling the Software .............................................................................................. 35

Activating and Deactivating the Software ..................................................................... 35

Excel 2016, Excel 2013, Excel 2010 and 2007 ................................................ 35

Using Solver Server to Solve Models ............................................................................ 36

Adding a Server .............................................................................................. 37

Solving Your Model on a Server ..................................................................... 41

If Something Goes Wrong ............................................................................................. 41

Introduction .................................................................................................................. 43

Working with Licenses in V2016-R2 ............................................................................ 43

Using the License File Solver.lic ..................................................................... 43

License Codes and Internet Activation ............................................................ 43

Running Subset Products in ASP 2016-R2 .................................................................... 44

Analytic Solver Platform ................................................................................. 45

Risk Solver Platform ....................................................................................... 45

Premium Solver Platform ................................................................................ 45

XLMiner Platform........................................................................................... 46

Analytic Solver Pro ......................................................................................... 46

Risk/Premium Solver Pro ................................................................................ 46

Premium Solver Pro ........................................................................................ 46

Risk Solver Pro ............................................................................................... 46

XLMiner Pro................................................................................................... 46

Using the Welcome Screen ........................................................................................... 47

Using Support Live Chat ............................................................................................... 47

Using Online Help ........................................................................................................ 49

Introduction .................................................................................................................. 51

A First Optimization Model .......................................................................................... 51

The Model in Algebraic and Spreadsheet Form ............................................... 52

Defining and Solving the Optimization Model ................................................ 53

Using the Classical Solver Parameters Dialog ................................................. 57

Using Buttons on the Task Pane ...................................................................... 59

Exporting Data to Microsoft's Power BI .......................................................... 60

Exporting Data to Tableau............................................................................... 63

Tablea Data Extract ......................................................................................... 64

Tableau Web Connector .................................................................................. 65

Introducing the Standard Example Models .................................................................... 68

Opening the Examples .................................................................................... 68

More Readable and Expandable Models .......................................................... 70

Models, Worksheets and Workbooks .............................................................. 70

Linear Programming Examples ..................................................................................... 71

Using the Output Tab and Creating Reports .................................................... 71

A Model with No Feasible Solution ................................................................ 74

An Accidentally Nonlinear Model ................................................................ 74

Nonlinear Optimization Examples................................................................................. 77

Portfolio Optimization: Quadratic Programming ............................................. 77

Charts of the Objective and Constraints ........................................................... 78

A Model with IF Functions ............................................................................. 81

A Model with Cone Constraints ...................................................................... 84

Solving an Optimization Model using Excel Online or Google Sheets ........................... 87

Examples: Simulation and Risk Analysis 96

Introduction .................................................................................................................. 96

A First Simulation Example .......................................................................................... 96

A Business Planning Example ......................................................................... 97

A What-If Spreadsheet Model ......................................................................... 98

Defining a Simulation Model .......................................................................... 98

Selecting Uncertain Functions ....................................................................... 104

Using Interactive Simulation ......................................................................... 105

Viewing the Full Range of Profit Outcomes .................................................. 110

Analyzing Factors Influencing Net Profit ...................................................... 113

Interactive Simulation with Charts and Graphs .............................................. 115

Charts and Graphs for Presentations .............................................................. 116

Exporting Data to Microsoft's Power BI ........................................................ 117

Exporting Data to Tableau............................................................................. 120

Tableau Web Connector ................................................................................ 122

An Airline Revenue Management Model .................................................................... 124

A Single Simulation ...................................................................................... 125

Multiple Parameterized Simulations .............................................................. 129

Simulation Optimization ............................................................................... 133

Using a Compound Distribution .................................................................................. 135

Discrete Distribution passed to 1st Argument ................................................. 137

Constant passed to 1st Argument.................................................................... 139

Publishing a Simulation Model to Excel Online or Google Sheets ............................... 141

Introduction ................................................................................................................ 154

A Project Selection Model .......................................................................................... 155

Solving with Simulation Optimization ........................................................... 156

Solving Automatically................................................................................... 157

A Model with Chance Constraints ............................................................................... 159

Solving with Robust Optimization................................................................. 161

A Model with Recourse Decisions .............................................................................. 165

Solving with Robust Optimization................................................................. 166

Introduction ................................................................................................................ 169

The Create App Icon ................................................................................................... 169

Solving a Model Using the RASON Desk IDE ............................................................ 171

Conversion Exceptions .................................................................................. 185

Problem Limits ............................................................................................. 185

Solving a Model Using the RASON Web IDE ............................................................ 186

Note on RASON Subscriptions ..................................................................... 186

Creating a Web Page ................................................................................................... 195

Introduction ................................................................................................................ 199

Parameters and Results ............................................................................................... 199

Viewing Parameters in the Task Pane ............................................................ 199

Defining a Parameter..................................................................................... 200

Automatic Parameter Identification ............................................................... 201

Defining Results............................................................................................ 204

Sensitivity Analysis Reports and Charts ...................................................................... 204

How Parameters are Varied ........................................................................... 204

Creating Sensitivity Reports .......................................................................... 205

Creating Sensitivity Charts ............................................................................ 206

Optimization and Simulation Reports and Charts ........................................................ 207

When Optimizations and Simulations are Run ............................................... 207

Introduction ................................................................................................................ 208

Creating Decision Trees .............................................................................................. 209

Creating and Editing Nodes........................................................................... 209

Creating and Editing Branches ...................................................................... 210

Highlighting a Decision Strategy................................................................................. 211

Decision Trees in the Task Pane .................................................................................. 212

Model Tab .................................................................................................... 213

Platform Tab ................................................................................................. 213

Multiple Discriminant Analysis ................................................................................... 215

Discriminant Analysis Example .................................................................................. 215

Introduction ................................................................................................................ 219

What Can Go Wrong, and What to Do About It .......................................................... 219

Review Messages in the Output Tab.............................................................. 220

Click the Solver Result Message for Help ..................................................... 222

Choose Available Optimization Reports ........................................................ 223

When Solving Takes a Long Time ................................................................ 224

When the Solution Seems Wrong .................................................................. 227

Problems with Poorly Scaled Models ............................................................ 227

The Integer Tolerance Option ........................................................................ 228

When Things Go Right: Getting Further Results ........................................................ 229

Dual Values .................................................................................................. 229

Multiple Solutions ......................................................................................... 230

Multiple Parameterized Optimizations........................................................... 232

Introduction ................................................................................................................ 237

What Can Go Wrong, and What to Do About It .......................................................... 237

Review Messages in the Output Tab.............................................................. 238

Click the Error Message for Help .................................................................. 238

Role of the Random Number Seed ................................................................ 238

When Simulation Takes a Long Time ........................................................... 239

When Simulation Results Seem Wrong ......................................................... 241

When Things Go Right: Getting Further Results ........................................................ 242

Using the Simulation Report ......................................................................... 242

Using the Uncertain Function Dialog ............................................................ 243

Fitting a Distribution to Simulation Results ................................................... 244

Charting Multiple Uncertain Functions.......................................................... 246

Multiple Parameterized Simulations .............................................................. 247

Time Series Simulation ................................................................................. 249

Excel 2016 Forecast Functions ...................................................................... 259

Introduction ................................................................................................................ 266

What Can Go Wrong, and What to Do About It .......................................................... 266

Review Messages in the Output Tab.............................................................. 267

Click the Solver Result Message for Help ..................................................... 270

Choose Available Optimization Reports ........................................................ 271

When Solving Takes a Long Time ................................................................ 272

When the Solution Seems Wrong .................................................................. 273

When Things Go Right: Getting Further Results ........................................................ 274

Introduction ................................................................................................................ 276

Dimensions and Cubes ................................................................................................ 277

An Example Dimensional Model ................................................................................ 278

Using Dimensional Modeling in Optimization ............................................................ 281

Defining a Dimension ................................................................................... 281

Defining a Cube ............................................................................................ 283

Cube Formulas: Operations and Dimensions ................................................ 286

Defining Outputs in Dimensional Models ...................................................... 288

Building the Model ....................................................................................... 288

Solving the Model ......................................................................................... 289

Additional Functions ................................................................................................... 290

Parametric Dimensions with Optimization .................................................................. 292

Using Dimensional Modeling in Simulation ................................................................ 302

Defining a Dimension ................................................................................... 302

Defining a Cube ............................................................................................ 302

Defining an Output........................................................................................ 303

Parametric Dimensions ................................................................................. 306

Using Dimensional Modeling with Pivot Tables ......................................................... 313

Using Sparse Cubes .................................................................................................... 318

Introduction ................................................................................................................ 323

Why Use the Object-Oriented API?............................................................... 323

Running Predefined Solver Models ............................................................... 324

Using the Macro Recorder............................................................................. 325

Adding a Reference in the VBA Editor ......................................................... 325

Analytic Solver Platform Object Model ...................................................................... 325

Using the VBA Object Browser .................................................................... 327

Programming the Object Model .................................................................................. 327

Example VBA Code Using the Object Model................................................ 328

Evaluators Called During the Solution Process .............................................. 328

Refinery.xls: Multiple Blocks of Variables and Functions ............................ 329

Adding New Variables and Constraints to a Model ....................................... 330

CuttingStock.xls: Multiple Problems and Dynamically Generated Variables 331

Introduction ................................................................................................................ 336

Adding a Reference in the VBA Editor ......................................................... 336

Activating Interactive Simulation ................................................................................ 336

Using VBA to Control Analytic Solver Platform ......................................................... 337

Analytic Solver Platform Object Model......................................................... 338

Using the VBA Object Browser .................................................................... 338

Using Analytic Solver Platform Objects ...................................................................... 339

Using Variable and Function Objects ............................................................ 340

Controlling Simulation Parameters in VBA ................................................... 341

Evaluators Called During the Simulation Process .......................................... 342

Working with Trials and Simulations in VBA ............................................................. 343

Displaying Normal or Error Trials ................................................................. 343

Using Multiple Simulations ........................................................................... 343

Creating Uncertain Variables and SLURPs in VBA .................................................... 344

Introduction ................................................................................................................ 346

Elements of Solver Models ......................................................................................... 346

Decision Variables and Parameters................................................................ 346

The Objective Function ................................................................................. 347

Constraints .................................................................................................... 347

Solutions: Feasible, Good and Optimal ..................................................... 348

More About Constraints .............................................................................................. 350

Functions of the Variables ........................................................................................... 353

Convex Functions ......................................................................................... 354

Linear Functions ........................................................................................... 355

Quadratic Functions ...................................................................................... 356

Nonlinear and Smooth Functions................................................................... 357

Discontinuous and Non-Smooth Functions .................................................... 358

Derivatives, Gradients, Jacobians, and Hessians ............................................ 359

Optimization Problems and Solution Methods ............................................................. 361

Linear Programming ..................................................................................... 361

Quadratic Programming ................................................................................ 362

Quadratically Constrained Programming ....................................................... 363

Second Order Cone Programming ................................................................. 363

Nonlinear Optimization ................................................................................. 364

Global Optimization ...................................................................................... 366

Non-Smooth Optimization ............................................................................ 367

Integer Programming .................................................................................................. 370

The Branch & Bound Method ....................................................................... 370

Cut Generation .............................................................................................. 371

The Alldifferent Constraint ........................................................................... 371

Looking Ahead to Models with Uncertainty ................................................................ 372

Introduction ................................................................................................................ 373

What Happens During Monte Carlo Simulation .......................................................... 373

Random Number Generation and Sampling ................................................... 374

The PSI Interpreter and Simulation ............................................................... 376

Uncertain Functions, Statistics, and Risk Measures ..................................................... 377

Measures of Central Tendency ...................................................................... 377

Measures of Variation ................................................................................... 377

Risk Measures ............................................................................................... 378

Quantile Measures......................................................................................... 378

Confidence Intervals ..................................................................................... 378

Uncertain Variables and Probability Distributions ....................................................... 378

Discrete Vs. Continuous Distributions ........................................................... 379

Bounded Vs. Unbounded Distributions ......................................................... 379

Analytic Vs. Custom Distributions ................................................................ 379

Creating your Own Distributions When Past Data is Available...................... 380

When Past Data is Not Available................................................................... 380

Using the Fit feature ...................................................................................... 381

More Hints and Warnings ............................................................................. 384

Dependence and Correlation ....................................................................................... 385

Measuring Observed Correlation ................................................................... 385

Inducing Correlation Among Uncertain Variables ......................................... 386

Modeling Correlation Using Copulas ............................................................ 388

Archimedean Copulas ................................................................................... 388

Elliptical Copulas .......................................................................................... 393

Using the Correlations Dialog ..................................................................................... 395

Creating a Correlation Matrix ........................................................................ 396

Managing Copulas ........................................................................................ 398

Removing a Correlation Matrix ..................................................................... 399

Editing a Correlation Matrix.......................................................................... 400

Making a Matrix Consistent .......................................................................... 400

Probability Management Concepts .............................................................................. 402

Analytic Distributions ................................................................................... 403

Certified Distributions and Stochastic Libraries ............................................. 403

Publishing and Using Certified Distributions ................................................. 404

Stochastic Libraries: SIPs and SLURPs ...................................................................... 404

Creating Stochastic Libraries ......................................................................... 405

Using the DIST Feature................................................................................. 407

Creating and Using Certified Distributions .................................................................. 409

Publishing Distributions with PsiCertify ........................................................ 410

Using Distributions with PsiCertified ............................................................ 410

Packaging Analytic Distributions .................................................................. 412

Introduction ................................................................................................................ 413

Certain and Uncertain Parameters ................................................................. 413

Decision-Dependent Uncertainties ................................................................ 414

Resolving Uncertainty and Recourse Decisions ............................................. 414

Uncertainty and Conventional Optimization .................................................. 415

Elements of Solver Models ......................................................................................... 415

Uncertain Variables ....................................................................................... 415

Decision Variables ........................................................................................ 416

Functions of the Variables and Uncertainties ................................................. 416

The Objective Function ................................................................................. 417

Constraints: Normal, Chance, Recourse........................................................ 418

Solutions: Feasible, Optimal, Well-Hedged .................................................. 419

More on Chance Constraints ......................................................................... 420

Diagnosing Your Models Use of Uncertainty ............................................... 423

Problems and Solution Methods .................................................................................. 423

Decision-Dependent Uncertainties ................................................................ 424

Resolving Uncertainty and Recourse Decisions ............................................. 424

Classes of Problems Involving Uncertainty ................................................................. 425

One-Stage Problems ...................................................................................... 425

Two-Stage Problems ..................................................................................... 426

Advanced Topics ........................................................................................................ 428

Bounds, Discretization, and Correlation ........................................................ 428

Uncertainty Sets and Norms .......................................................................... 428

Introduction ................................................................................................................ 432

Designing Large Solver Models .................................................................................. 432

Spreadsheet Modeling Hints .......................................................................... 433

Optimization Modeling Hints ........................................................................ 434

Using Multiple Worksheets and Data Sources ............................................... 434

Quick Steps Towards Better Performance ................................................................... 435

Improving the Formulation of Your Model ................................................................. 437

Techniques Using Linear and Quadratic Functions ........................................ 437

Techniques Using Linear Functions and Binary Integer Variables ................. 439

Using Piecewise-Linear Functions ................................................................ 441

Organizing Your Model for Fast Solution ................................................................... 442

Fast Problem Setup ....................................................................................... 442

Using Array Formulas ................................................................................... 444

Using the Add-in Functions ........................................................................... 445

Introduction ................................................................................................................ 448

Textbooks Using Analytic Solver Platform ................................................... 448

Textbooks Using Solver or Premium Solver .................................................. 449

Other Textbooks............................................................................................ 449

Academic References .................................................................................... 449

Start Here: 2016-R2 Essentials

Installing the Software

Run the SolverSetup program to install the software whether you are using

Analytic Solver Platform or any of its subsets: Risk Solver Platform, Premium

Solver Platform or XLMiner Platform, or Analytic Solver Pro, Premium Solver

Pro, Risk Solver Pro or XLMiner Pro. The chapter Installation and Add-Ins

covers installation step-by-step, and explains how to activate and deactivate the

Analytic Solver Platform Excel add-in.

If you have Frontline Solvers V12.0 or earlier installed, V2016-R2 will be

installed into a new folder, C:\Program Files\Frontline Systems\Analytic Solver

Platform (recommended). We recommend uninstalling any earlier versions of

Frontline Solvers. For more information and other options, see Installation and

Add-Ins.

Click underlined topics. In Analytic Solver Platform 2016-R2 you can get

quick online Help for each Solver result message and error message in the

Output pane, each Platform option and Solver Engine option, and each element

of your simulation model and optimization model. See the chapter Using Help,

Licensing and Product Subsets for details.

Click Premium Solver on the Add-Ins tab to display the classic Solver

Parameters dialog. You can go back and forth freely between the Solver

Parameters dialog and the new, modeless Task Pane and Ribbon. Within a few

minutes of use, most users find the Task Pane and Ribbon faster and easier to

use.

Use Help Examples on the Analytic Solver Platform tab or the XLMiner

Platform tab to open a workbook with a list of example optimization and

simulation models, and example data sets for XLMiner, that you can open by

clicking hyperlinks. See the chapter Help, Support, Licenses and Product

Subsets for details. Some of these examples are used and described in the

Examples chapters.

Open your existing workbook, developed in any previous version of Frontline

Solvers or the standard Excel Solver. Your model should appear in the Task

Pane; just click the Optimize or Simulate button. Read Automatic Mode and

Solution Time in Analytic Solver Platform Overview to understand how this

mode can impact solution time.

Macros that use the Standard Excel Solver functions (such as SolverOK and

SolverSolve) and Object-Oriented API (such as Problem.Solver.Optimize)

should work as-is, provided that you use Tools -- References in the VBA Editor

to set or change the reference to Analytic Solver Platform 2016-R2 Type

Library.

Using Large-Scale Solver Engines

Run the EngineSetup program to install any or all eight large-scale Solver

Engines V2016-R2. The new Solver Engine(s) will appear in the dropdown list

at the top of the Task Pane Engine tab. Use this dropdown to select an Engine

for solving, or to set its options. Use Help License Code to add a Solver

Engine license.

To quickly gain a good grasp of Analytic Solver Platforms optimization and

simulation capabilities, work through the Examples chapters in this Guide. For

Analytic Solver Platforms data mining capabilities, see the XLMiner User

Guide.

Learn how to interpret Analytic Solver Platforms result messages, error

messages, reports and charts, and how to run multiple parameterized

optimizations and simulations in the Getting Results chapters.

Use the code examples in the Automating Your Model with VBA chapters to

get started with creation of your own custom application that uses optimization

or simulation behind the scenes.

Concepts

Go from beginner to expert, and learn how to fully exploit the software by

reading the Mastering Concepts chapters, and the Frontline Solvers Reference

Guide.

Software License and Limited Warranty

This SOFTWARE LICENSE (the "License") constitutes a legally binding agreement between Frontline

Systems, Inc. ("Frontline") and the person or organization ("Licensee") acquiring the right to use certain

computer program products offered by Frontline (the "Software"), in exchange for Licensees payment to

Frontline (the "Fees"). Licensee may designate the individual(s) who will use the Software from time to time, in

accordance with the terms of this License. Unless replaced by a separate written agreement signed by an officer

of Frontline, this License shall govern Licensee's use of the Software. BY DOWNLOADING, ACCEPTING

DELIVERY OF, INSTALLING, OR USING THE SOFTWARE, LICENSEE AGREES TO BE BOUND BY

ALL TERMS AND CONDITIONS OF THIS LICENSE.

Grant of License: Subject to all the terms and conditions of this License, Frontline grants to Licensee a non-

exclusive, non-transferable except as provided below, right and license to Use the Software (as the term "Use"

is defined below) for the term as provided below, with the following restrictions:

Evaluation License: If and when offered by Frontline, on a one-time basis only, for a limited Term determined

by Frontline in its sole discretion, Licensee may Use the Software on one computer (the "PC"), and Frontline

will provide Licensee with a license code enabling such Use. The Software must be stored only on the PC. An

Evaluation License may not be transferred to a different PC.

Standalone License: Upon Frontlines receipt of payment from Licensee of the applicable Fee for a single-Use

license ("Standalone License"), Licensee may Use the Software for a limited Term specified as part of the

license, on one computer (the "PC"), and Frontline will provide Licensee with a license code enabling such Use.

The Software may be stored on one or more computers, servers or storage devices, but it may be Used only on

the PC. If, during the Term, the PC fails in a manner such that Use is no longer possible, Frontline will provide

Licensee with a new license code, enabling Use on a repaired or replaced PC for the remainder of the Term, at

no charge. A Standalone License may be transferred to a different PC while the first PC remains in operation

only if (i) Licensee has a current license subscription with Annual Support covering said Standalone License,

(ii) Licensee requests a new license code from Frontline, and (iii) Licensee certifies in writing that the Software

will no longer be Used on the first PC.

Flexible Use License: Upon Frontlines receipt of payment from Licensee of the applicable Fee for a multi-

Use license ("Flexible Use License"), Licensee may Use the Software for a limited Term on a group of several

computers as provided in this section, and Frontline will provide Licensee with a license code enabling such

Use. The Software may be stored on one or more computers, servers or storage devices interconnected by any

networking technology that supports the TCP/IP protocol (a "Network"), copied into the memory of, and Used

on, any of the computers on the Network, provided that only one Use occurs at any given time, for each

Flexible Use License purchased by Licensee. Frontline will provide to Licensee (under separate license) and

Licensee must install and run License Server software ("LSS") on one of the computers on the Network (the

"LS"); other computers will temporarily obtain the right to Use the Software from the LS. If, during the Term,

the LS fails in a manner such that the LSS cannot be run, Frontline will provide Licensee with a new license

code, enabling Use on a repaired or replaced LS for the remainder of the Term, at no charge. A Flexible Use

License may be transferred to a different LS while the first LS remains in operation only if (i) Licensee has a

current license subscription with Annual Support covering said Flexible Use License, (ii) Licensee requests a

new license code from Frontline, and (iii) Licensee certifies in writing that the LSS will no longer be run on the

first LS.

"Use" of the Software means the use of any of its functions to define, analyze, solve (using optimization,

simulation, data mining or other analytic methods) and/or obtain results for a single user-defined model. Use

with more than one model at the same time, whether on one computer or multiple computers, requires more

than one Standalone or Flexible Use License. Use occurs only during the time that the computers processor is

executing the Software; it does not include time when the Software is loaded into memory without being

executed. The minimum time period for Use on any one computer shall be ten (10) minutes, but may be longer

depending on the Software function used and the size and complexity of the model.

Other License Restrictions: The Software includes license control features that may store encoded

information about the license type and term to the PC or LS hard disk; Licensee agrees that it will not attempt to

alter or circumvent such license control features. This License does not grant to Licensee the right to make

copies of the Software or otherwise enable use of the Software in any manner other than as described above, by

any persons or on any computers except as described above, or by any entity other than Licensee. Licensee

acknowledges that the Software and its structure, organization, and source code constitute valuable Intellectual

Property of Frontline and/or its suppliers and Licensee agrees that it shall not, nor shall it permit, assist or

encourage any third party to: (a) copy, modify adapt, alter, translate or create derivative works from the

Software; (b) merge the Software into any other software or use the Software to develop any application or

program having the same primary function as the Software; (c) sublicense, distribute, sell, use for service

bureau use, lease, rent, loan, or otherwise transfer the Software; (d) "share" use of the Software with anyone

else; (e) make the Software available over the Internet, a company or institutional intranet, or any similar

networking technology, except as explicitly provided in the case of a Flexible Use License; (f) reverse compile,

reverse engineer, decompile, disassemble, or otherwise attempt to derive the source code for the Software; or

(g) otherwise exercise any rights in or to the Software, except as permitted in this Section.

U.S. Government: The Software is provided with RESTRICTED RIGHTS. Use, duplication, or disclosure by

the U.S. Government is subject to restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in Technical

Data and Computer Software clause at DFARS 252.227-7013 or subparagraphs (c)(1) and (2) of the

Commercial Computer Software - Restricted Rights at 48 CFR 52.227-19, as applicable.

Contractor/manufacturer is Frontline Systems, Inc., P.O. Box 4288, Incline Village, NV 89450.

2. ANNUAL SUPPORT.

Limited warranty: If Licensee has a current license subscription with Annual Support from Frontline, then

Frontline warrants, during the license subscription term, that the Software covered by the subscription will

perform substantially as described in the User Guide published by Frontline in connection with the Software, as

such may be amended from time to time, when it is properly used as described in the User Guide, provided,

however, that Frontline does not warrant that the Software will be error-free in all circumstances. During the

license subscription term, Frontline shall make reasonable commercial efforts to correct, or devise workarounds

for, any Software errors (failures to perform as so described) reported by Licensee, and to timely provide such

corrections or workarounds to Licensee.

SUBSCRIPTION, THE LIMITED WARRANTY IN THIS SECTION 2 SHALL CONSTITUTE

FRONTLINE'S ENTIRE LIABILITY IN CONTRACT, TORT AND OTHERWISE, AND LICENSEES

EXCLUSIVE REMEDY UNDER THIS LIMITED WARRANTY. IF THE SOFTWARE IS NOT COVERED

BY A CURRENT LICENSE SUBSCRIPTION, FOR EXAMPLE IF LICENSEE PERMITS THE SOFTWARE

LICENSE SUBSCRIPTION TO EXPIRE, THE LIMITED WARRANTY IN THIS SECTION 2 SHALL NOT

APPLY.

3. WARRANTY DISCLAIMER.

EXCEPT AS PROVIDED IN SECTION 2 ABOVE, THE SOFTWARE IS PROVIDED "AS IS" AND

"WHERE IS" WITHOUT WARRANTY OF ANY KIND; FRONTLINE AND, WITHOUT EXCEPTION, ITS

SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT

LIMITED TO ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,

MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, WITH RESPECT TO THE

SOFTWARE OR ANY WARRANTIES ARISING FROM COURSE OF DEALING OR COURSE OF

PERFORMANCE AND THE SAME ARE HEREBY EXPRESSLY DISCLAIMED TO THE MAXIMUM

EXTENT PERMITTED BY APPLICABLE LAW. WITHOUT LIMITING THE FOREGOING, FRONTLINE

DOES NOT REPRESENT, WARRANTY OR GUARANTEE THAT THE SOFTWARE WILL BE ERROR-

FREE, UNINTERRUPTED, SECURE, OR MEET LICENSEES EXPECTATIONS. FRONTLINE DOES

NOT MAKE ANY WARRANTY REGARDING THE SOFTWARE'S RESULTS OF USE OR THAT

FRONTLINE WILL CORRECT ALL ERRORS. THE LIMITED WARRANTY SET FORTH IN SECTION 2

IS EXCLUSIVE AND FRONTLINE MAKES NO OTHER EXPRESS OR IMPLIED WARRANTIES OR

CONDITIONS WITH RESPECT TO THE SOFTWARE, ANNUAL SUPPORT AND/OR OTHER SERVICES

PROVIDED IN CONNECTION WITH THIS LICENSE, INCLUDING, WITHOUT LIMITATION, ANY

IMPLIED WARRANTIES OR CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR

PURPOSE, TITLE AND NONINFRINGEMENT.

4. LIMITATION OF LIABILITY.

IN NO EVENT SHALL FRONTLINE OR ITS SUPPLIERS HAVE ANY LIABILITY FOR ANY DIRECT,

INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING

WITHOUT LIMITATION ANY LOST DATA, LOST PROFITS OR COSTS OF PROCUREMENT OF

SUBSTITUTE GOODS OR SERVICES), HOWEVER CAUSED AND UNDER ANY THEORY OF

LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE

OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE OR THE EXERCISE

OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH

DAMAGES. BECAUSE SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF

LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES, THE ABOVE LIMITATION MAY

NOT APPLY. NOTWITHSTANDING ANYTHING HEREIN TO THE CONTRARY, IN NO EVENT SHALL

FRONTLINES TOTAL CUMULATIVE LIABILITY IN CONNECTION WITH THIS LICENSE, THE

SOFTWARE, AND ANY SUPPORT CONTRACTS PROVIDED BY FRONTLINE TO LICENSEE

HEREUNDER, WHETHER IN CONTRACT OR TORT OR OTHERWISE EXCEED THE PRICE OF ONE

STANDALONE LICENSE. LICENSEE ACKNOWLEDGES THAT THIS ARRANGEMENT REFLECTS

THE ALLOCATION OF RISK SET FORTH IN THIS LICENSE AND THAT FRONTLINE WOULD NOT

ENTER INTO THIS LICENSE WITHOUT THESE LIMITATIONS ON ITS LIABILITY. LICENSEE

ACKNOWLEDGES THAT THESE LIMITATIONS SHALL APPLY NOTWITHSTANDING ANY

FAILURE OF ESSENTIAL PURPOSE OF ANY LIMITED REMEDY.

LICENSEE UNDERSTANDS AND AGREES THAT ANY RESULTS OBTAINED THROUGH LICENSEE'S

USE OF THE SOFTWARE ARE ENTIRELY DEPENDENT ON LICENSEES DESIGN AND

IMPLEMENTATION OF ITS OWN OPTIMIZATION, SIMULATION OR DATA MINING MODEL, FOR

WHICH LICENSEE IS ENTIRELY RESPONSIBLE, EVEN IF LICENSEE RECEIVED ADVICE, REVIEW,

OR ASSISTANCE ON MODELING FROM FRONTLINE.

Term: The License shall become effective when Licensee first downloads, accepts delivery, installs or

uses the Software with a license code, and shall continue for a limited term as specified in the license code,

unless earlier terminated for breach pursuant to this Section.

Termination: Frontline may terminate this License if Licensee breaches any material provision of this

License and does not cure such breach (provided that such breach is capable of cure) within 30 days after

Frontline provides Licensee with written notice thereof.

6. GENERAL PROVISIONS.

Proprietary Rights: The Software is licensed, not sold. The Software and all existing and future

worldwide copyrights, trademarks, service marks, trade secrets, patents, patent applications, moral rights,

contract rights, and other proprietary and intellectual property rights therein ("Intellectual Property"), are

the exclusive property of Frontline and/or its licensors. All rights in and to the Software and Frontlines

other Intellectual Property not expressly granted to Licensee in this License are reserved by Frontline. For

the Large-Scale LP/QP Solver only: Source code is available, as part of an open source project, for

portions of the Software; please contact Frontline for information if you want to obtain this source code.

Amendments: This License constitutes the complete and exclusive agreement between the parties relating

to the subject matter hereof. It supersedes all other proposals, understandings and all other agreements, oral

and written, between the parties relating to this subject matter, including any purchase order of Licensee,

any of its preprinted terms, or any terms and conditions attached to such purchase order.

Compliance with Laws: Licensee will not export or re-export the Software without all required United

States and foreign government licenses.

Assignment: This License may be assigned to any entity that succeeds by operation of law to Licensee or

that purchases all or substantially all of Licensees assets (the "Successor"), provided that Frontline is

notified of the transfer, and that Successor agrees to all terms and conditions of this License.

Governing Law: Any controversy, claim or dispute arising out of or relating to this License, shall be

governed by the laws of the State of Nevada, other than such laws, rules, regulations and case law that

would result in the application of the laws of a jurisdiction other than the State of Nevada.

Analytic Solver Platform

Overview

This Guide shows you how to create and solve conventional optimization,

Monte Carlo simulation, and stochastic optimization models using Analytic

Solver Platform Frontline Systems super-product for business analysts.

The companion XLMiner User Guide shows you how to create and evaluate

forecasting and data mining models using Analytic Solver Platform. Analytic

Solver Platform includes every feature described in this User Guide, the

XLMiner User Guide, and the Frontline Solvers Reference Guide.

Analytic Solver Platform combines and integrates the features of Frontlines

products for conventional optimization (Premium Solver Pro and Premium

Solver Platform), Monte Carlo simulation and stochastic optimization (Risk

Solver Pro and Risk Solver Platform), and forecasting and data mining

(XLMiner Pro and XLMiner Platform). All these products use one set of

program files, and share a common user interface; the product you experience

is determined by your license code. The diagram below illustrates the

relationships among these products.

In each area optimization, simulation, and data mining the Pro products

offer professional-level capacity and performance: They have all the power

needed to solve many common business problems, but they have maximum

limits on model size or data set size, and are priced in the same range as other

Excel-based products. The even more powerful Platform products match or

exceed the capacity and performance of the best software available anywhere

(inside or outside Excel); they can solve the same problems handled by much

more expensive software offered by other vendors, such as IBM and SAS.

This Guide uses the following icons with names that appear as tabs on the

Excel 2007, 2010, 2013 and 2016 Ribbon to indicate that certain features are

available in each subset product (if no icons appear, the feature being discussed

is in all product subsets):

Analytic Solver Platform and its subsets featuring optimization (Risk Solver

Platform, Premium Solver Platform, Analytic Solver Pro and Premium Solver

Pro) are fully compatible upgrades for the Solver bundled with Microsoft

Excel, which was developed by Frontline Systems for Microsoft. Your Excel

Solver models and macros will work without changes, and the classical Solver

Parameters dialog can be used whenever needed in Analytic Solver Platform.

Analytic Solver Platform combines the optimization and simulation capabilities

of Risk Solver Platform and the data mining capabilities of XLMiner Platform.

It includes the PSI Interpreter, five built-in Solvers (LP/Quadratic, SOCP

Barrier, LSGRG Nonlinear, Interval Global, and Evolutionary) and it accepts a

full range of plug-in large- scale Solver Engines. It supports optimization,

Monte Carlo simulation, simulation optimization, stochastic programming and

robust optimization, and it also includes the large-scale data mining and

forecasting capabilities of XLMiner Platform.

Risk Solver Platform combines the optimization capabilities of Premium Solver

Platform with the simulation and decision tree capabilities of Risk Solver Pro,

and adds powerful stochastic optimization capabilities (far beyond simulation

optimization) enabling you to create better plans for a risky future. It

includes the PSI Interpreter, five built-in Solvers (LP/Quadratic, SOCP Barrier,

LSGRG Nonlinear, Interval Global, and Evolutionary), and it supports plug-in

large-scale Solver Engines. It supports optimization, Monte Carlo simulation,

simulation optimization, stochastic programming and robust optimization.

Premium Solver Platform is Frontlines most powerful product for conventional

optimization. It includes the PSI Interpreter, five built-in Solvers (LP/Quadratic,

SOCP Barrier, LSGRG Nonlinear, Interval Global, and Evolutionary), and it

supports plug-in large-scale Solver Engines. It has no Monte Carlo simulation,

simulation optimization, stochastic programming or robust optimization.

XLMiner Platform

XLMiner Platform is Frontlines most powerful product for data mining,

forecasting and predictive analytics. It includes all the capabilities of XLMiner

Pro, with much higher limits or no limits (except memory) on dataset size;

ensembles of classification trees, regression trees, and neural networks for both

classification and prediction; and powerful text mining capabilities.

Analytic Solver Pro combines the optimization capabilities of Premium Solver

Pro, the simulation and decision tree capabilities of Risk Solver Pro, and the

forecasting and the data mining capabilities of XLMiner Pro. For optimization,

it includes a Simplex LP Solver, GRG Nonlinear Solver, Evolutionary Solver,

Branch & Bound method for integer and alldifferent constraints, the Multistart

method for global optimization. It includes Monte Carlo simulation and

simulation optimization, plus decision trees; however, it doesnt include

stochastic and robust optimization capabilities found in Risk Solver Platform

and Analytic Solver Platform. It also includes all the forecasting and data

mining capabilities of XLMiner Pro (which is very capable, but less powerful

than XLMiner Platform).

Risk/Premium Solver Pro combines the optimization capabilities of Premium

Solver Pro and simulation and decision tree capabilities of Risk Solver Pro. It is

the Frontline Solver product most comparable to other Excel-based tools such as

@RISK Industrial and Crystal Ball + Decision Optimizer, though its conven-

tional optimization capabilities are far more extensive than these other products.

It includes a Simplex LP Solver, GRG Nonlinear Solver, Evolutionary Solver,

Branch & Bound method for integer and alldifferent constraints, the Multistart

method for global optimization, decision trees, Monte Carlo simulation, and

simulation optimization using the GRG and Evolutionary Solvers.

Risk Solver Pro is Frontlines full-function product for Monte Carlo simulation

and simulation optimization. It includes all of the simulation and decision tree

capabilities of Analytic Solver Pro, including the PSI Interpreter which gives

you the fastest Monte Carlo simulations available in any Excel-based products,

unique interactive simulation capabilities, and great time savings when running

multiple parameterized simulations.

Premium Solver Pro is Frontlines professional upgrade for the basic Excel

Solver, for conventional optimization. It includes a Simplex LP Solver, GRG

Nonlinear Solver, Evolutionary Solver, Branch & Bound method for integer and

alldifferent constraints, and the Multistart method for global optimization.

XLMiner Pro

XLMiner Pro is Frontlines professional-level product for for data mining,

forecasting and predictive analytics. It includes data access and sampling, data

exploration and visualization, data transformation, and feature selection

capabilities; time series forecasting with ARIMA and exponential smoothing;

and a wide range of data mining methods for classification, prediction and

affinity analysis, from multiple regression to neural networks.

Frontline Solver products have been rapidly and continually enhanced for years.

In our V10.x (2010) releases, we included faster algorithms, 64-bit versions,

and new Windows HPC Server cluster computing capabilities.

In our V11.x (2011) releases, we introduced tabu and scatter search

methods in the Evolutionary Solver, Guided Mode in Premium Solver Pro,

and the Distribution Wizard and Constraint Wizard.

In our V12.0 (2012) release, we included Excel 2013 support, GPU support

in the Evolutionary Solver, new stochastic decomposition, and solving

online with Solver Server.

In V12.5 (2013) release, we introduced Analytic Solver Platform with data

mining capabilities, new data visualization features for both data mining

and Monte Carlo results, improved Guided Mode, and Support Live Chat

integrated into Excel.

In our V2014 release, we introduced a fundamental new capability in

Analytic Solver Platform, Risk Solver Platform and Premium Solver

Platform for building optimization and simulation models in Excel:

Dimensional Modeling. It introduces new concepts such as dimensions

and cubes, and provides all the tools you need to build and solve larger

scale, better structured, more maintainable models using these concepts.

In our V2014-R2 release, Analytic Solver Platform included a completely

re-engineered, far more powerful data mining and forecasting capability

named XLMiner Platform. New data mining algorithms are up to 100

times faster, constantly exploit multiple processor cores, and offer greater

accuracy and numeric stability. Results appear almost instantly as new

Excel worksheets. We believe XLMiner Platform is a serious competitor

for far more expensive enterprise data mining software.

V2015 Release

Our V2015 release introduced a wide range of new features, including powerful

text mining and ensemble methods for classification and prediction in

XLMiner Platform; feature selection, partitioning on-the-fly, ROC/RROC

curves, enhanced linear and logistic regression, and more in XLMiner Pro and

Platform; extensive chart enhancements, distribution fitting, and new Six Sigma

functions in Risk Solver Pro and Platform; and support for publishing

optimization and simulation models to Excel Online and Google Sheets. This

publishing feature was further extended to handle large-scale models in our

V2015-R2 release (see below).

V2015-R2 Release

Our V2015-R2 release makes it easy to share results in the cloud: You can

transfer optimization, simulation, or data mining results into your Microsoft

Power BI online account, visualize those results with just a few clicks, and

share them with others. Similarly, you can export optimization, simulation or

data mining results into Tableau Data Extract (*.tde) files that can be opened in

Tableau, the popular interactive data visualization software. V2015-R2 also

links your Excel workbook with Big Data: You can easily obtain sampled and

summarized results drawn from the largest datasets, stored across many hard

disks, in compute clusters running Apache Spark.

V2016 Release

Our V2016 release dramatically speeds the process of moving from an analytic

Excel model to a deployed application, available to others. With the new

Create App feature, which translates your Excel optimization or simulation

model into Frontlines new RASON modeling language, you can create an

application that can run in a web browser, or a mobile app for phones or tablets

with just two mouse clicks! Your app solves problems via our RASON server,

running 24x7 on Microsoft Azure, using its REST API. You can modify and

enhance your RASON model, using either the IDE (Interactive Development

Environment) included with our V2016 release, or our Web-based IDE at

https://rason.com access either one via the Create App menu.

Other enhancements in V2016 include a Task Pane navigator for data mining

in XLMiner Pro and Platform that matches our forthcoming XLMiner for the

Web, and a greatly enhanced Evolutionary Solver in Premium Pro and

Platform, and Risk Solver Pro and Platform. A completely new local search

algorithm called SQP-GS (Sequential Quadratic Programming with Gradient

Sampling), and new Feasibility Pump methods for both continuous and integer

variables help the Evolutionary Solver find better solutions, faster than ever.

V2016-R2 Release

Our V2016-R2 release includes significant enhancements in both optimization

and simulation/risk analysis. Now simulation models can use compound

distributions, with either a constant or a discrete distribution as the frequency

element, and correlation using copulas (Gaussian, Student and Archimedean

forms), as well as rank-order correlation, to generate samples for multiple

uncertain variables. Simulation users should also see the easy-to-use time series

simulation features using the Excel 2016 Forecast Functions, described under

Time Series Simulation in the chapter Getting Results: Simulation.

In optimization, the Evolutionary Solver is further enhanced with new GA

methods for integer variables, often yielding much better integer solutions than

previous releases in a given amount of time. And users of Dimensional

Modeling will see major improvements in speed and memory use, thanks to

new support for sparse cubes. Export of analytic model results to Tableau, the

popular data visualization software, is more convenient than ever in V2016-R2

with support for the Tableau Web Data Connector introduced in Tableau 9.1.

Analytic Solver Platform includes five bundled Solver Engines to find solutions

for the full spectrum of optimization problems, up to certain size limits:

The nonlinear GRG Solver in Analytic Solver Pro, Risk/Premium Solver Pro

and Premium Solver Pro handles smooth nonlinear (NLP) problems of up to 500

decision variables and 250 constraints, plus bounds on the variables, and

includes Multistart methods or clustering methods for global optimization.

The nonlinear LSGRG Solver in Analytic Solver Platform, Risk Solver

Platform and Premium Solver Platform handles large-scale smooth nonlinear

(NLP) problems of up to 1,000 decision variables and 1,000 constraints, plus

bounds on the variables, and includes Multistart or clustering methods for

global optimization that can utilize multiple processor cores.

The Simplex LP Solver, used in Analytic Solver Pro, Risk/Premium Solver Pro

and Premium Solver Pro, handles LP problems with up to 2,000 variables and

2,000 constraints. It is an enhanced version of the Simplex method in the

standard Excel Solver that uses both primal and dual Simplex, preprocessing and

probing, and basic cut generation methods to speed the solution of LP and

L/MIP problems.

The LP/Quadratic Solver in Analytic Solver Platform, Risk Solver Platform

and Premium Solver Platform handles both linear programming (LP) and

quadratic programming (QP) problems with up to 8,000 decision variables and

8,000 constraints four times the size of Premium Solver Pro, and 40 times the

size of Excel Solver. Advanced methods for LP/MIP problems yield solutions

as much as hundreds of times faster than the Excel Solver, and 5 to 20 times

faster than Premium Solver Pro.

The Evolutionary Solver (in all products with optimization capabilities) uses a

combination of genetic and evolutionary algorithms, tabu and scatter search

methods, and classical optimization methods. In Analytic Solver Pro and

Premium Solver Pro, it handles non-smooth (NSP) problems of up to 500

decision variables and 250 constraints, plus bounds on the variables. In Analytic

Solver Platform, Risk Solver Platform and Premium Solver Platform, an

enhanced version of this Solver handles up to 1,000 variables and 1,000

constraints, exploits multiple processor cores in many of its algorithms, and

exploits GPU processors in its local search.

The Interval Global Solver in Analytic Solver Platform, Risk Solver Platform,

and Premium Solver Platform uses state-of-the-art interval methods to find the

globally optimal solution to a nonlinear optimization problem, all real solutions

to a system of nonlinear equations, or an inner solution to a system of

nonlinear inequalities. It handles smooth nonlinear (NLP) problems of up to

500 decision variables and 250 constraints, plus bounds on the variables.

The SOCP Barrier Solver in the Platform products uses an interior point

method to solve linear (LP), quadratic (QP), quadratically constrained (QCP),

and second order cone programming (SOCP) problems the natural

generalization of linear and quadratic programming with up to 2,000 variables

and 8,000 constraints. In Analytic Solver Platform and Risk Solver Platform,

the SOCP Barrier Solver can be used to solve linear programming models with

uncertainty via robust optimization with the L2 norm.

Analytic Solver Platform, Risk Solver Platform, Analytic Solver Pro,

Risk/Premium Solver Pro and Risk Solver Pro include a full-featured Monte

Carlo simulation capability. Unlike other Excel-based simulation products, they

enable you to play what if with uncertain values as easily as you do with

ordinary numbers. Each time you change a number on the spreadsheet, a

simulation with thousands of trials is performed, and a full range of simulation

results and statistics may be displayed on the spreadsheet. It uses Frontlines

Polymorphic Spreadsheet Interpreter technology to achieve breakthrough

simulation speeds up to 100 times faster than normal Excel-based Monte

Carlo simulation thus making Interactive Simulation practical.

Analytic Solver Platform, Risk Solver Platform, Analytic Solver Pro,

Risk/Premium Solver Pro and Risk Solver Pro support over 50 analytic and

custom distributions (continuous and discrete), over 30 statistics and risk

measures, rank order correlation, distribution fitting, multiple random number

generators and sampling methods with variance reduction, and powerful

capabilities for multiple parameterized simulations.

In addition, their graphics help you assess uncertainty, including charts of

probability distributions, output frequency charts, sensitivity (Tornado) charts,

scatter plots, and Overlay, Trend, and Box-Whisker charts, in two or three

dimensions. You can customize chart colors, titles, legends, grid lines, and

markers, resize and rotate charts, and print charts or use them in PowerPoint

presentations.

Analytic Solver Platform supports several powerful methods for finding robust

solutions to optimization problems with uncertainty:

High-speed simulation optimization methods for more general (non-

linear, non-smooth or non-convex) problems, where uncertainties may

depend on the first-stage decisions. Normal and chance constraints

may be used, and a wide range of statistical aggregates can be used to

summarize uncertainty in the objective and constraints. A simulation is

performed on each major iteration of the optimization. This method is

very general, but computationally very expensive, and usually not

scalable to large size problems.

Robust optimization (RO) methods for linear programming problems

with uncertainties affecting the objective and constraints. Chance con-

straints specify a probability of satisfaction, which is converted to a

budget of uncertainty. Monte Carlo simulation is used to obtain

bound and shape information for the uncertainties. This information is

used to automatically create a robust counterpart problem, which is

then solved. This method is scalable to large size models.

Robust optimization methods and stochastic programming (SP)

methods for two-stage stochastic linear programming problems with

recourse (wait and see) decisions. Scenarios are automatically

created via built-in Monte Carlo simulation, or they may be drawn from

user-defined cell ranges of sample values on the spreadsheet. With the

benefit of second stage or recourse decisions, solutions are typically

well-hedged but not overly conservative. The RO and SP methods

are relatively scalable to large size. A state-of-the-art implementation

of stochastic decomposition, the most powerful and scalable method

known for solving two-stage stochastic linear programming problems,

is included in Analytic Solver Platform and Risk Solver Platform.

Analytic Solver Platform, Risk Solver Platform, Premium Solver Platform,

Analytic Solver Pro, Risk/Premium Solver Pro, Premium Solver Pro and Risk

Solver Pro include new facilities in V2016 for automatic transformation of an

existing model into the RASON modeling language.

RASON (which stands for Restful Analytic Solver Object Notation) is Frontline

Systems newly released modeling language embedded in JSON and a REST

API that makes it easy to create, test and deploy analytic models using

optimization, simulation, and data mining, in web and mobile applications.

Users of Frontline's Excel Solvers will find that converting an existing Solver

model in Excel to RASON is as easy as clicking a button. But we didn't stop

there, in V2016, the ability to create an entire custom web application in seconds

is literally at your fingertips! Months of development work have been reduced

to a single click of your mouse.

Web Application Developers who are familiar with AJAX and the use of REST

API's, can immediately see first-hand how exceptionally easy it is to embed

RASON models as JSON by viewing the automatically generated code. In just

a few seconds, you can see how to solve the models using Frontline's RASON

server, which exposes a simple REST API that's scalable to handle very large,

compute-intensive analytic models.

Analytic Solver Platform, Risk Solver Platform, Premium Solver Platform,

Analytic Solver Pro, Risk/Premium Solver Pro and Risk Solver Pro include new

facilities for sensitivity analysis of your Excel model, that can be used before

even starting an optimization or simulation model. It is especially easy to

identify the model parameters with the most impact on your computed results

you can simply select any formula cell, and choose Parameters Identify from

the Ribbon to quickly find the input cells with the greatest impact on this

formula, ranked and shown in a Tornado chart.

You can choose some of these input cells to serve as Sensitivity Parameters, and

then produce reports and charts that show the impact on computed results of

varying these parameters over a range you specify. You can also turn these

parameters into (or define other cells as) Simulation Parameters or Optimization

Parameters, and produce reports and charts of simulation and optimization

results as your parameters are automatically varied.

Analytic Solver Platform, Risk Solver Platform, Premium Solver Platform,

Risk/Premium Solver Pro, Premium Solver Pro, Risk Solver Pro and Analytic

Solver Pro have powerful capabilities to perform multiple optimizations or

simulations, automatically varying the values of parameters you specify, and

collecting both optimization and simulation results, which may be displayed on

the spreadsheet, or summarized in a variety of built-in reports and charts. Many

operations that would require a programming language in other systems, or

VBA in the Excel Solver, can be easily performed without programming.

The Dimensional Modeling capability available in the Platform products

greatly enriches the scope of multiple parameterized optimizations and

simulations. You can define multiple dimensions and multiple parameters

indexed over each dimension, run an optimization or simulation for various

combinations of these parameter values, and create tabular reports, Pivot Tables,

and charts of the results.

Analytic Solver Platform, Risk Solver Platform, Risk/Premium Solver Pro and

Analytic Solver Pro also include a facility to create decision trees on your Excel

spreadsheet. Using the Ribbon, you can easily create decision nodes and

branches, event nodes and branches, and terminal nodes. The tree is drawn in

graphic form on the spreadsheet; standard Excel worksheet formulas compute

rollback values at each node, and the best-choice value at the root node, based

on either expected value or utility function (certainty equivalent) criteria. With

a Ribbon choice, you can graphically highlight the optimal path through the tree.

Since all computations for decision trees are performed via standard Excel

worksheet formulas, you can use decision trees in your simulation and

optimization models. You must make discrete choices for decisions, and define

discrete alternatives for events, but you can, for example, define distributions for

event outcomes and/or costs incurred for decisions, and view the composite

distribution of outcomes at the root node.

Analytic Solver Platform includes the ability to compute summary measures

(sum, average, standard deviation, minimum or maximum) for variables in a

dataset with up to billions of rows, stored across many hard disks in an external

compute cluster running Apache Spark (https://spark.apache.org/), by clicking

the Get Data icon. The results, which can be obtained immediately upon

completion or at a later time, will include the number of variables included in

the dataset and their names along with data counts for categorical variables. This

kind of summary data is often what you need as input parameters to an

optimization or simulation model. See the XLMiner User Guide for more help

on this new feature.

Analytic Solver Platform and Analytic Solver Pro include powerful features for

data visualization, forecasting and data mining, based (respectively) on

XLMiner Platform and XLMiner Pro. You can explore these features during a

free trial just click the XLMiner Platform (or XLMiner Pro) tab on the Excel

Ribbon, and consult the XLMiner User Guide:

Click the Model button to display the Solver Task Pane. This new feature

(added in V2016) allows you to quickly navigate through datasets and

worksheets containing XLMiner results.

Click the Get Data button to draw a random sample of data, or summarize

data from a (i) an Excel worksheet, (ii) the PowerPivot spreadsheet data

model which can hold 10 to 100 million rows of data in Excel, (iii) an

external SQL database such as Oracle, DB2 or SQL Server, or (iv) a dataset

with up to billions of rows, stored across many hard disks in an external Big

Data compute cluster running Apache Spark (https://spark.apache.org/).

You can use the Data Analysis group of buttons to explore your data, both

visually and through methods like cluster analysis, transform your data with

methods like Principal Components, Missing Value imputation, Binning

continuous data, and Transforming categorical data, or use the Text Mining

feature to extract information from text documents.

Use the Time Series group of buttons for time series forecasting, using both

Exponential Smoothing (including Holt-Winters) and ARIMA (Auto-

Regressive Integrated Moving Average) models, the two most popular time

series forecasting methods from classical statistics. These methods forecast

a single data series forward in time.

The Data Mining group of buttons give you access to a broad range of

methods for prediction, classification and affinity analysis, from both

classical statistics and data mining. These methods use multiple input

variables to predict an outcome variable, or classify the outcome into one of

several categories. Introduced in V2015, XLMiner offers Ensemble

Methods for use with Classification Trees, Regression Trees, and Neural

Networks.

Use the Predict button to build prediction models using Multiple Linear

Regression (with variable subset selection and diagnostics), k-Nearest

Neighbors, Regression Trees, and Neural Networks. Use Ensemble

Methods with Regression Trees and Neural Networks to create more

accurate prediction models.

Use the Classify button to build classification models with Discriminant

Analysis, Logistic Regression, k-Nearest Neighbors, Classification Trees,

Nave Bayes, and Neural Networks. Use Ensemble Methods with

Classification Trees and Neural Networks to create more accurate

classification models.

Use the Associate button to perform affinity analysis (what goes with

what or market basket analysis) using Association Rules.

If forecasting and data mining are new for you, dont worry you can learn a lot

about them by consulting our extensive in-product Help. Click Help Help

Text on the XLMiner tab, or click Help Help Text Forecasting/Data

Mining on the Analytic Solver Platform tab (these open the same Help file).

If youd like to learn more and get started as a data scientist, consult the

excellent book Data Mining for Business Intelligence, which was written by the

XLMiner designers and early academic users. Youll be able to run all the

XLMiner examples and exercises in Analytic Solver Platform.

XLMiner can also be purchased as a stand-alone product. A stand-alone license

for XLMiner Platform or Pro includes all of the data analysis, time series data

capabilities, classification and prediction features available in Analytic Solver

Platform (subject to size limitations in XLMiner Pro) but does not support

optimization or simulation. See the XLMiner User Guide Data Specifications for

each product, XLMiner Platform and XLMiner Pro. Text mining and ensembles

of classification trees, regression trees, and neural networks for classification

and prediction are available only in XLMiner Platform.

Frontlines Platform products, Analytic Solver Platform, Risk Solver Platform,

Premium Solver Platform and Solver SDK Platform all support multiple

optional, plug-in Solver engines, in addition to their bundled Solver engines.

Such Solver engines are licensed as separate products; they provide additional

power and capacity to solve problems much larger and/or more difficult than the

problems handled by the bundled Solver engines. Unlike most other

optimization software, a license for one of Frontlines Solver engines enables

you to use that Solver in Excel as well C/C++, C#, Visual Basic, VB.NET, as

MATLAB, Java, PHP, JavaScript and other languages.

These Solver engines are seamlessly integrated to use one, you simply select

the Solver engine by name in the dropdown list that appears in the Task Pane

Engine tab. They produce reports as Excel worksheets, like the bundled Solver

engines; their options can be set in the Task Pane, or in Solver Options dialogs;

and they can be controlled by VBA code in your custom applications. The

Solver engines are also seamlessly integrated into the Solver Platform SDK.

Trial licenses for these Solver engines are available, allowing you to evaluate

how well they perform on a challenging Solver model that youve developed.

The large-scale Solver Engines are more valuable than ever in our Platform

products, where you can create large, structured models more easily with

Dimensional Modeling, and transform linear programming models with

uncertainty into larger, conventional linear programming or second order cone

programming models, using stochastic programming and robust optimization.

Analytic Solver Platform has many performance enhancements, ranging from

faster startup and faster switching among workbooks to faster Solver engines,

and a deeply parallelized design that exploits multi-core processors. But its

Automatic mode can sometimes increase solution time.

Automatic mode refers to the Automatic choice available for several Platform

options, which formerly required some thought and manual setting by the user.

Automatic is the default choice for these options in newly created models. The

options (found on the Task Pane Platform tab) include:

Optimization Model Interpreter Simulation Model Interpreter

Solve Uncertain Models Supply Engine With

Nonsmooth Model Transformation Automatically Select Engine

(on the Task Pane Engine tab)

Stochastic Transformation

Each Automatic choice means that the Platform can analyze your model and

automatically choose the best setting for these options. This normally results in

better solutions and faster times; however, the process of analyzing your model

and trying certain alternatives can take extra time, especially for large models.

To improve solution time when you re-run your model, you can inspect the

solution log in the Task Pane Output tab to see what choices were made

automatically, manually set the Platform options to these same choices, and

save your workbook. This will save time when you next run the model.

Analytic Solver Pro, Risk/Premium Solver Pro and Premium Solver Pro include

Automatic Mode for analyzing the model and selecting the best available

engine. However, these products do not include the ability to automatically

transform models. This feature is available in our Platform level products, to

Frontlines Solvers include User Guides, Reference Guides, Help text when you

click any hyperlinked element in the Task Pane or Help icon in the Ribbon, and

over a hundred example models but weve gone much further to provide help.

Our Wizards can help you with the hardest parts of defining a simulation model

(probability distributions) or an optimization model (constraints). Guided

Mode helps you step-by-step with optimization solutions, when youre first

getting started. Auto-Help Mode is something you can use all the time, since it

displays explanatory dialogs only when you encounter a problem!

Support Live Chat enables you to connect instantly to Frontlines technical

support personnel from inside Excel, send your last error message, model

diagnosis and other information , and get help from a live person, and Proactive

Support, which automatically creates a support ticket in our Help Desk when

youre struggling with repeated error messages or modeling problems.

Installation and Add-Ins

In order to install Analytic Solver Platform 2016 software, you must have first

installed Microsoft Excel 2016, Microsoft Excel 2013, Microsoft Excel 2010, or

Microsoft Excel 2007 on Windows 8, Windows 7, Windows Vista or Windows

Server 2016, Windows 2012 or Windows 2008. Its not essential to have the

standard Excel Solver installed.

To install Analytic Solver Platform to work with any 32-bit version of Microsoft

Excel, simply run the program SolverSetup.exe, which contains all of the

Solver program, Help, User Guide, and example files in compressed form. To

install Analytic Solver Platform to work with 64-bit Excel 2010, 2013 or 2016,

run SolverSetup64.exe. Note that your copy of the Setup program will usually

have a filename such as SolverSetup_12345.exe; the 12345 is your user

account number on Solver.com.

When you run the Setup program, depending on your Windows security

settings, you might be prompted with a message The publisher could not be

verified. Are you sure you want to run this software? You may safely click

Run in response to this message. Youll first see a dialog like the one below,

while the files are decompressed:

Next, youll briefly see the standard Windows Installer dialog. Then a dialog

box like the one shown below should appear:

Click Next to proceed.

You will then be prompted for an installation password, which Frontline

Systems will provide via email to your registered email address. Enter it into

the top field in dialog box. You can also enter a license activation code in the

bottom field. The Setup program looks for a license file that may already exist

on your system and checks your license status. If you enter an activation code

(you must have Internet access for this to succeed), the Setup program will

display a dialog reporting whether your license was successfully activated. But

you dont have to do this just click Next.

Next, the Setup program will ask if you accept Frontlines software license

agreement. You must click I accept and Next in order to be able to proceed.

The Setup program then displays a dialog box like the one shown below, where

you can select or confirm the folder to which files will be copied (normally

C:\Program Files\Frontline Systems\Analytic Solver Platform, or if youre

installing Analytic Solver Platform for 32-bit Excel on 64-bit Windows,

C:\Program Files (x86)\Frontline Systems\Analytic Solver Platform). Click

Next to proceed.

If you have an existing license, or youve just activated a license for full

Analytic Solver Platform, the Setup program will give you the option to run the

software as a subset product Risk Solver Platform, Premium Solver Platform,

XLMiner Platform, Analytic Solver Pro, Premium Solver Pro, Risk Solver Pro,

or XLMiner Pro instead of the full Analytic Solver Platform. The main reason

to do this is to confirm that the functionality you need is available in the subset

product.

Click Next to proceed. Youll see a dialog confirming that the preliminary steps

are complete, and the installation is ready to begin:

After you click Install, the Analytic Solver Platform files will be installed, and

the program file RSPAddin.xll will be registered as a COM add-in (which may

take some time). A progress dialog appears, as shown below; be patient, since

this process takes longer than it has in previous Analytic Solver Platform

releases.

When the installation is complete, youll see a dialog box like the one below.

Click Finish to exit the installation wizard.

version of our solvers, is now installed. Simply click Finish and Microsoft

Excel will launch with a Welcome workbook containing information to help you

get started quickly.

Uninstalling the Software

To uninstall Analytic Solver Platform, just run the SolverSetup program as

outlined above. Youll be asked to confirm that you want to remove the

software.

You can also uninstall by choosing Control Panel from the Start menu, and

double-clicking the Programs and Features or Add/Remove Programs applet.

In the list box below Currently installed programs, scroll down if necessary

until you reach the line, Frontline Excel Solvers 2016-R2, and click the

Uninstall/Change or Add/Remove button. Click OK in the confirming dialog

box to uninstall the software.

Analytic Solver Platforms main program file RSPAddin.xll is a COM add-in,

an XLL add-in, and a COM server. A reference to the add-in Solver.xla is

needed if you wish to use the traditional VBA functions to control Analytic

Solver Platform, instead of its new VBA Object-Oriented API.

In Excel 2016, 2013, 2010 and 2007, you can manage all types of add-ins from

one dialog, reached by clicking File - Addins in Excel 2016, 2013 or 2010. If

using Excel 2007 you can manage add-ins by clicking the upper left corner

button in Excel 2007, choosing Excel Options, then choosing Add-Ins in the

pane on the left.

You can manage add-ins by selecting the type of add-in from the dropdown list

at the bottom of this dialog. For example, if you select COM Add-ins from the

dropdown list and clock the Go button, the dialog shown below appears.

If you uncheck the box next to Analytic Solver Platform Addin and click OK,

you will deactivate the Analytic Solver Platform COM add-in, which will

remove the Analytic Solver Platform tab from the Ribbon, and also remove the

PSI functions for optimization from the Excel Function Wizard.

Frontline Systems introduced Solver Server as part of our V12.0 release. This

service gives you the option to solve your optimization model, or run your

simulation model on a corporate server or a cloud-based virtual server, with

results appearing in your spreadsheet, just as if you had solved the model

locally. Solver Server is shipped as part of our Solver SDK Platform product; a

client for Solver Server is built into each copy of Analytic Solver Platform (or

its subsets Risk Solver Platform, Premium Solver Platform, Analytic Solver Pro,

Premium Solver Pro and Risk Solver Pro), and each copy of Solver SDK

Platform or Pro. You can also create your own client programs, even on mobile

devices, using JavaScript and/or PHP. If you would like more information on

this service, please contact us at sales@solver.com.

Adding a Server

To set up a connection to Solver Server from a client machine running Analytic

Solver Platform, Risk Solver Platform, Premium Solver Platform, Analytic

Solver Pro, Premium Solver Pro or Risk Solver Pro, click the Options button on

the Solver Platform Ribbon, then click the General tab.

Enter information into this dialog as follows:

Name: Enter a convenient name for your server here. The name will appear as

the name of this server in the Options dialog General tab display.

Address: Enter an IP address such as 10.1.1.3 or a public domain name such as

SolverServer.cloud.net or a private domain or computer name such as Frontline-

PC\Machine1.

Port: The TCP/IP port entered here must match the port entered in the Solver

Server application (SAdmin.exe). Solver Server is listening on this port. The

default is 2050.

A pre-filledfield appears under the Register Certificate on the Server button.

This field holds the Solver Server Certificate. When connecting to Solver

Server, the certificate will be inspected and if the same certificate is found on

Solver Server, permission to solve the model will be granted.

Once youve filled in the Name, Address and Port fields, click Test Connection

to confirm a connection to the Server. If the connection is successful, click

Register Certificate on the Server to display the following dialog. (If the test

was not successful, please confirm that the Server Address and Port number are

correct and that both machines (the client and server) are online.)

If registration was successful, you will see the dialog below. Click OK to clear

this dialog and OK again to clear the Add Solver Server dialog.

You should now see the Server listed on the General tab with a check inside the

checkbox, as shown on the next page. To disable the server, simply uncheck the

checkbox. Click OK to close the Options dialog and return to your spreadsheet.

Note that if you are not the administrator, you should send the contents of your

Certificate field to the server administrator, who can manually add the certificate

on the server. This must be done within 24 hours or the certificate will expire.

Solver Server includes tools for a server administrator to manage certificates for

clients. But its also possible for the administrator to manage certificates by

logging in to the server from your Excel-based client software, using the

dialog shown below.

Administrator Name: Used by your server administrator.

Administrator Password: Used by your server administrator.

Solving Your Model on a Server

To solve a model on a server that youve set up previouskly as shown above,

simply open your workbook, click the down arrow under the Optimize icon, and

select Run on a SolverServer from the menu.

The Task Pane Output tab will display the Solver results, and the final variable

values will be placed in your variable cells.

Sending document to the server.

The document is in the server queue.

Automatic engine selection: LP/Quadratic

Parse time: 0.00 Seconds.

Engine: LP/Quadratic

Setup time: 0.00 Seconds.

Engine Solve time: 0.00 Seconds.

Server finished solving the document.

Downloading the results.

Finished!

Solver found a solution. All constraints and optimality conditions are satisfied.

For more information on Solver Server or if you are experiencing any problems

with this service, please contact us at support@solver.com.

In rare circumstances, Analytic Solver Platform users have reported the

following error message appearing upon opening of Excel.

This is a generic error from Microsoft Excel that can occur if you have been

running Excel for a long period of time without ever deleting Microsoft Excels

temp files. (Note: These temp files are not generated by Analytic Solver

Platform, XLMiner Platform or any of the Frontline Solvers subsets. These

temp files are generated through Microsoft Excel.) To resolve this error, click

OK on the error message, then using Windows Explorer browse to

C:\Users\<username>\AppData\Roaming\Microsoft\Excel and delete all files in

this folder. Restart Excel. The issue should be resolved.

Frontline Systems Technical Support team may be contacted via phone (888-

831-0333), email (support@solver.com) or Live Chat (Help Support Live

Chart on the Analytic Solver Platform ribbon).

Help, Support, Licenses and

Product Subsets

Introduction

This chapter explains how to work with licenses and license activation codes,

product subsets, the Welcome Screen, Support Live Chat, online Help and

example models in Analytic Solver Platform.

A license is a grant of rights, from Frontline Systems to you, to use our software

in specified ways. Information about a license for example, its temporary vs.

permanent status and its expiration date is encoded in a license code. The

same binary files are used for Analytic Solver Platform, Risk Solver Platform,

Premium Solver Platform, Analytic Solver Pro, Risk/Premium Solver Pro,

Premium Solver Pro, and Risk Solver Pro. The product features you see

depends on the license code you have.

Analytic Solver Platform 2016-R2 stores license codes in a text file named

Solver.lic. If youre upgrading from V2015, V2014, V12.x, or earlier, a new

V2016 license code will be required. Old license codes for V2014 and earlier

have no negative effect in 2016 or 2016-R2; they can appear in the Solver.lic

file and will be ignored. To obtain a new license code, please see below.

If you already have a Solver.lic file, SolverSetup adds license codes to this file.

If not, SolverSetup creates this file in a default location:

Excel 2016, 2013, 2010, 2007 or Vista: C:\ProgramData\Frontline Systems

XP: C:\Documents and Settings\All Users\Application Data\Frontline Systems

In V2016-R2, V2016, V2015, V2014, V12, V11.x and V10.x, the SolverSetup

program creates an environment variable FRONTLIC whose value is the path

to the Solver.lic file.

You can enter a new license code at any time while youre using Analytic Solver

Platform. To do this, choose Help License Code from the Analytic Solver

Platform Ribbon. A dialog like the one below will appear.

You have two options to obtain and activate a license, using this dialog:

1. If you contact Frontline Systems at (775) 831-0300 or info@solver.com,

and give us the Lock Code shown in the middle of the dialog (click the

Email Lock Code button to do this quickly), we can generate a license

code for your PC, and email this to you. You can then select and copy

(Ctrl+C) the license code, and paste it (Ctrl+V) into the lower edit box in

this dialog.

2. Even easier, and available 24x7 if you have Internet access on this PC: If

you have a license activation code (looks much like a credit card number)

from Frontline Systems, you can copy and paste it into the upper edit box

in this dialog. When you click OK, Analytic Solver Platform contacts

Frontlines license server over the Internet, sends the Lock Code and

receives your license code automatically. Youll see a message confirming

the license activation, or reporting any errors.

If you have questions, please contact Frontline Systems at (775) 831-0300 or

info@solver.com.

New users often wish to download and evaluate our products for Excel. To

accommodate this, we make available downloads of the SolverSetup program

with a 15-day trial license, which gives users access to all of the functionality

and capacity of Analytic Solver Platform. But some users will ultimately

choose to purchase a license for a product that is a subset of Analytic Solver

Platform: Risk Solver Platform, Premium Solver Platform, XLMiner Platform,

Analytic Solver Pro, Premium Solver Pro, Risk Solver Pro, or XLMiner Pro.

To help users confirm that a subset product will have the capabilities and

performance that they want, ASP 2016-R2 has the ability to quickly switch

Analytic Solver Platform to operate as a subset product, without the need to

install a new license code. To do this, choose Help Change Product on the

Analytic Solver Platform Ribbon. A dialog like the one below will appear.

In this dialog, you can select the subset product you want, and click OK. The

change to a new product takes effect immediately: Youll see the subset product

name instead of Analytic Solver Platform as a tab on the Ribbon, and a subset of

the Ribbon options.

Below is a brief summary of the different products you can choose. For a more

complete summary, see Analytic Solver Platform and Subset Products in the

earlier chapter Analytic Solver Platform Overview.

Analytic Solver Platform is a superset of all the other products you can choose.

It has all of the functionality of Risk Solver Platform, Premium Solver Platform,

XLMiner Platform and their Pro subsets.

Risk Solver Platform combines the optimization capabilities of Premium Solver

Platform with the simulation and decision tree capabilities of Risk Solver Pro,

and adds powerful stochastic optimization capabilities (far beyond simulation

optimization) enabling you to create better plans for a risky future.

Premium Solver Platform is Frontlines most powerful product for conventional

optimization. It includes the PSI Interpreter, five built-in Solver Engines that

handle much larger problems than Premium Solver Pro, and it supports plug-in

large-scale Solver Engines. It has no Monte Carlo simulation, simulation

optimization, stochastic programming or robust optimization.

XLMiner Platform

XLMiner Platform is Frontlines most powerful product for data mining,

forecasting and predictive analytics. It includes all the capabilities of XLMiner

Pro, with much higher limits or no limits (except memory) on dataset size;

ensembles of classification trees, regression trees, and neural networks for both

classification and prediction; and powerful text mining capabilities.

Analytic Solver Pro combines the optimization capabilities of Premium Solver

Pro, the simulation and decision tree capabilities of Risk Solver Pro, and the

forecasting and the data mining capabilities of XLMiner Pro.

Risk/Premium Solver Pro combines the optimization capabilities of Premium

Solver Pro and simulation and decision tree capabilities of Risk Solver Pro. It is

the Frontline Solver product most comparable to other Excel-based tools such as

@RISK Industrial and Crystal Ball + Decision Optimizer, though its conven-

tional optimization capabilities are far more extensive than these other products.

Premium Solver Pro is Frontlines professional upgrade for the basic Excel

Solver, for conventional optimization. It includes a Simplex LP Solver, GRG

Nonlinear Solver, Evolutionary Solver, Branch & Bound method for integer and

alldifferent constraints, and the Multistart method for global optimization.

Risk Solver Pro is Frontlines full-function product for Monte Carlo simulation

and simulation optimization. It includes all of the simulation and decision tree

capabilities of Analytic Solver Pro, including the PSI Interpreter which gives

you the fastest Monte Carlo simulations, unique interactive simulation, and great

time savings when running multiple parameterized simulations.

XLMiner Pro

XLMiner Pro is Frontlines professional-level product for data mining,

forecasting and predictive analytics. It includes data access and sampling, data

exploration and visualization, data transformation, and feature selection

capabilities; time series forecasting with ARIMA and exponential smoothing;

and a wide range of data mining methods for classification, prediction and

affinity analysis, from multiple regression to neural networks.

Using the Welcome Screen

This screen appears automatically only when you click the Analytic Solver

Platform tab on the Ribbon in Excel 2016, 2013, 2010 or 2007 and then only if

you are using a trial license. You can display the Welcome Screen manually by

choosing Help Welcome Screen from the Ribbon. You can control whether

the screen appears automatically by selecting or clearing the check box in the

lower left corner, Show this dialog on startup.

If you run into any issues when using the software, the best way to get help is to

choose Help Support Live Chat from the Help menu. This will start a Live

Chat during our business hours (or send us a message at other hours), just as if

you were to start a Live Chat on www.solver.com but it saves you and our

tech support rep a lot of time because the software reports your latest error

message, model diagnosis, license issue or other problem, without you having to

type anything or explain verbally whats happened. Youll see a dialog like this:

Since the software automatically sends diagnostic information to Tech Support,

we can usually identify and resolve the problem faster. (Note: No contents from

your actual spreadsheet model is sent, only information such as the number of

variables and constraints, last error message, and Excel and Windows version.)

Using Online Help

Analytic Solver Platform 2016-R2 has a significant amount of context-sensitive

Help. You can quickly access Help on any Solver Result message that appears

in the Task Pane Output tab, any option that appears on the Engine tab or

Platform tab, or any element of your model that appears on the Model tab.

Solver Result messages appear as underlined links you can simply click them.

For example, heres the Help that appears when you click the Solver Results

message for the Gas Company Chance example in StochasticExamples.xls:

To access Help on any Platform option, Engine option, or Model element, click

the underlined link in the brief explanation that appears at the bottom of the

Task Pane. For example, heres the Help that appears when you click the Type

field link for a chance constraint in your model:

Examples: Conventional

Optimization

Introduction

This chapter introduces conventional optimization (with no uncertainty) in

Analytic Solver Platform, Risk Solver Platform, Premium Solver Platform,

Analytic Solver Pro, Risk/Premium Solver Pro and Premium Solver Pro with a

series of examples. Except as noted in specific sections, all of these examples

can be used in any of the above product subsets.

A First Optimization Model takes you step-by-step through the process of

creating an optimization model from scratch. It illustrates use of the Ribbon

and Task Pane, and its relationship to the Excel Solver Parameters dialog.

Introducing the Standard Examples, Linear Programming Examples

and Nonlinear Optimization Examples takes you through the workbook

StandardExamples.xls, with seven examples that illustrate a number of

Analytic Solver Platform features.

This section is meant for you if youre familiar with optimization, but youve

never used the Excel Solver or Premium Solver Pro. It shows how you can

translate from the algebraic statement of an optimization problem to a spread-

sheet Solver model. If optimization is new to you, consult the chapter

Mastering Conventional Optimization Concepts.

Note: This first step-by-step example is a quick and dirty approach that can be

used to solve the example problem, but is not well documented or easy to

maintain. Microsoft Excel has many features that can help you organize and

display the structure of your model, through tools such as defined names,

formatting and outlining. The models in the StandardExamples.xls workbook

illustrate some of these features. This workbook is normally installed into

C:\Program Files\Frontline Systems\Analytic Solver Platform\Examples. As

models become larger, the problems of managing data for constraints,

coefficients, and so on become more significant, and a properly organized

spreadsheet model can help manage this complexity.

Setting Up a Model

To set up an optimization model as a Microsoft Excel spreadsheet, you will

follow these essential steps:

1. Reserve a cell to hold the value of each decision variable. Well use A1:A3

in the example below.

2. Pick a cell to represent the objective function, and enter a formula that

calculates the objective function value in this cell. Well use A4 in the

example below.

3. Pick other cells and use them to enter the formulas that calculate the left

hand sides of the constraints. Well use B1:B5 in the example below.

4. The constraint right hand sides can be entered as numbers in other cells, or

entered directly in the Solvers Add Constraint dialog. Well use C1:C5 for

this purpose in the example below.

Within this overall framework, you have a great deal of flexibility in choosing

cells to use, and calculating the objective and constraints. For example, the

objective function will ultimately depend on the decision variable cells, but you

dont have to calculate the entire function in one formula cell. You can use any

number of formula cells to compute intermediate results, and use these to

calculate the objective function or the constraints.

You can write a linear expression easily with Excels SUMPRODUCT function,

or you can use + and * operators, as shown below. You can use Excels array

formulas, and Excel functions that return vector and matrix results. And you

can use Excels rich facilities to access data in external text files, Web pages,

and relational and multidimensional databases to populate your model.

Consider the following problem. Our factory is building three products: TV

sets, stereos and speakers. Each product is assembled from parts in inventory,

and there are five types of parts: chassis, picture tubes, speaker cones, power

supplies and electronics units. Our goal is to produce the mix of products that

will maximize profits, given the inventory of parts on hand. This is a simple

linear programming problem, also used to illustrate other ideas later in Linear

Programming Examples.

The problem can be described in algebraic form as follows. The decision

variables are the number of products of each type to build: x for TV sets, x for

1 2

stereos and x for speakers. There is a fixed profit per unit for each product, so

3

Maximize 75 x + 50 x + 35 x (Profit)

1 2 3

Building each product requires a certain number of parts of each type. For

example, TV sets and stereos each require one chassis, but speakers dont use

one. The number of parts used depends on the mix of products built (the left

hand side of each constraint), and we have a limited number of parts of each

type on hand (the corresponding constraint right hand side):

Subject to 1x 1 +1x 2 +0x 3 <= 400 (Chassis)

1x 1 +0x 2 +0x 3 <= 200 (Picture tubes)

2x 1 +2x 2 +1x 3 <= 800 (Speaker cones)

1x 1 +1x 2 +0x 3 <= 400 (Power supplies)

2x 1 +1x 2 +1x 3 <= 600 (Electronics)

Since the number of products built must be nonnegative, we also have the

constraints x , x , x >= 0. Note that terms like 0 x are included purely to show

1 2 3 3

the structure of the model they can be either omitted or included when entering

formulas in Excel.

The fastest (though not necessarily the best) way to lay out this problem on the

spreadsheet is to pick (for example) cell A1 for x , cell A2 for x and cell A3 for

1 2

x . Then the objective can be entered in cell A4, much like the algebraic form

3

above:

A4: =75*A1+50*A2+35*A3

We can go on to enter a formula in (say) cell B1 for the first constraint left hand

side (Chassis) as =1*A1+1*A2+0*A3, or the simpler form:

B1: =A1+A2

Similarly, we can use cell B2 for the formula =A1 (Picture tubes), B3 for the

formula =2*A1+2*A2+A3 (Speaker cones), B4 for the formula =A1+A2 (Power

supplies), and B5 for the formula =2*A1+A2+A3 (Electronics):

B2: =A1

B3: =2*A1+2*A2+A3

B4: =A1+A2

B5: =2*A1+A2+A3

Finally, well enter the constraint right hand side values in cells C1:C5:

C1: 400

C2: 200

C3: 800

C4: 400

C5: 600

We now have a simple spreadsheet model that we can use to play what if. For

any values we enter for the decision variables in cells A1, A2 and A3, the

objective (Total Profit) and the corresponding values of the constraint left hand

sides (the numbers of parts used) will be calculated.

We want to turn this what if spreadsheet model into an optimization model,

where the Solver will automatically find optimal values for the cells A1:A3, so

that the objective function at A4 is maximized, and the constraints are satisfied.

To begin, click the Analytic Solver Platform tab on the Ribbon. If you have a

trial license, click the button Start Using Analytic Solver Platform in the

startup dialog. Your worksheet with an empty Task Pane (Solver Options and

Model Specifications) Model tab should appear, as shown on the next page.

To define the optimization problem, well use the Ribbon to point out to the

Solver (i) the cells that weve reserved for the decision variables, (ii) the cell

that calculates the value of the objective function, and (iii) the cells that

calculate the constraint left hand sides. Well also enter values for the constraint

right hand sides, and non-negativity constraints on the variables. We can

perform these steps in any order.

Defining Decision Variables

To define the decision variables, use your mouse to select the range A1:A3 on

the worksheet. Then click the Decisions button to open the dropdown gallery

(shown below), and click Normal to define A1:A3 as normal decision variables

or simply click the Decisions button to define A1:A3 as normal decision

variables.

Defining the Objective

To define the objective, use your mouse to select cell A4 on the worksheet.

Then click the Objective button. The Add Objective dialog opens. Click OK to

accept the defaults and to define A4 as a normal objective to be maximized.

(Alternatively, click the down arrow under Objective, then select Max and

Normal from the menu to define A4 as a normal objective to be maximized as

shown below.)

Defining Constraints

To define the constraints, use your mouse to select the range B1:B5 on the

worksheet. Then click the Constraints button. The Add Constraint dialog

appears

Alternatively you could also click the down arrow under Constaints, then click

Normal Constraint and <= to define B1:B5 as the left hand sides of five <=

constraints.

Analytic Solver Platform will display its Add Constraint dialog, where you can

enter the right hand side(s) as a constant number, a cell range, or a defined

name. Click in the Constraint edit box, or click the range selector icon to its

right, and use your mouse to select the cell range C1:C5 for the right hand sides:

Then click OK. This will define five constraints: B1 <= C1, B2 <= C2, B3 <=

C3, B4 <= C4, and B5 <= C5.

The Task Pane Model tab now shows all the elements of the optimization model

youve just defined in outline form.

You can solve the model immediately by clicking the Optimize button on the

Ribbon, or by clicking the green arrow at the top right of the Task Pane.

The optimal values of the decision variables at A1:A3, the objective at A4, and

the constraints at B1:B5 appear on the worksheet, and a Solver Result message

(Solver found a solution. All constraints and optimality conditions are

satisfied) appears in green at the bottom of the Task Pane.

You can view a log of solution messages on the Task Pane Output tab, and you

can produce optimization reports by selecting Reports Optimization from the

Ribbon. For more information about these features, keep reading!

You can also view and create or edit this model through the classical Solver

Parameters dialog (as used in the standard Excel Solver). To do so simply click

Premium Solver on the Add-Ins tab on the Ribbon to display the Solver

Parameters dialog:

Comparing the Task Pane and Solver Parameters Dialog

As you can see, the Task Pane Model tab and the Solver Parameters dialog

contain the same information. But where the Solver Parameters dialog is modal

(moving the mouse outside the dialog displays a wait cursor you must close

the dialog to do anything else), the Task Pane is modeless: You can move the

mouse outside the pane, edit formulas on the worksheet, or use other commands.

The Task Pane is initially docked to the right side of the Excel window, but you

can select its title bar with your mouse, drag it to another position, and resize it,

as shown on the next page. To re-dock the Task Pane, select its title bar with

the mouse, drag to a position just beyond the right edge of the Excel window,

then release the mouse.

Use the Model tab to view your model in outline form, and optionally edit

model elements in-place. Use the Platform tab to view or change Platform

options, such as the number of optimizations or simulations to run, or default

bounds on decision variables or uncertain variables. Use the Engine tab to

select a Solver Engine and view or change its options. Use the Output tab to

view a log of solution messages, or a chart of the objective values.

Using Buttons on the Task Pane

Use the buttons at the top of the Model tab to add or remove model elements

(you can also use the Ribbon options to do this, as shown earlier), refresh the

model outline when youve made unusual changes to the worksheet, analyze the

structure of your model, or solve (run) the optimization or simulation model:

Remove

element

Analyze

model

Add

eleme Solve

nt model

Refresh

model

Use the buttons at the top of the Output tab to pause or stop the Solver, restore

the original values of the decision variables, copy the solution message log to

the Windows Clipboard (so you can paste the text into another application),

erase the solution log, analyze/solve the model and upload your results to

Microsoft's Power BI or (see step by step instructions below).

Copy to Clipboard Erase Solution Log

Analyze

Model

Pause

Solver

Solve

Model

Restore Variables Export to Export to

Power BI Tableau

Exporting Data to Microsoft's Power BI

Microsoft's POWER BI, for use with Office 365, is a cloud-based service that

works with Excel to help you visualize your data using various charts and

reports. Analytic Solver Platform V2016-R2 introduces the ability to export a

fixed set of data from your optimization model, including final variable values,

final constraint values, final objective function values, variable shadow prices or

constraint reduced costs, etc., directly into a dataset in Power BI.

Once Solver has stopped with a final result message (even if a solution was not

found), click the icon on the Output tab to upload the model to the Power

BI dashboard. If this is the first time that the icon has been clicked within the

current Excel instance, you will be asked to log in to Power BI.

Once logged in, you will be asked to either update an existing dataset or create a

new dataset.

In the screenshot above, we have created a new dataset, ProductMix, which will

contain the objective, variable and constraint final values, shadow prices, dual

values, etc from our optimization model. Once the upload is complete, the

following message will appear.

will be listed under Datasets.

In the screenshot below we have created a pie chart displaying the final variable

Use the icon to pin this graph to the Dashboard.

Now, each time the model is solved, the results may be uploaded to your Power

BI dashboard. Click back to Excel and change the number of Speaker Cones in

inventory from 800 to 825, then resolve either by clicking the green arrow on

the Model tab in the Solver Task Pane or by clicking the Optimize icon on the

Analytic Solver Platform ribbon. Once Solver stops with the final result

message, "Solver found a solution. All constraints and optimality conditions are

satisfied.", click the icon on the Output tab to upload the most recent

results. (Note: We are not asked to log in to the Power BI site a second time

since we are using the same instance of Excel.) Click back to Power BI in your

browser and refresh, the chart will update automatically with the new final

variable values, as shown below.

Exporting Data to Tableau

Tableau is a popular interactive software package that allows you to visually

explore and analyze your data. Tableau can import data from a wide range of

sources, including Excel workbooks, and it is often used in conjunction with

Excel. Because Tableau is designed to import data in table form, it hasnt been

easy to import the results of an optimization model (such as final values of the

decision variables, constraints and objective) into Tableau, unless those model

elements occur in table form by themselves in your spreadsheet (which usually

isnt the case).

Analytic Solver Platform simplifies this process considerably. With a single

click, you can convert the results of your optimization model into a set of

Tableau Data Extract (.tde) files or HTML files using the Tableau Web

Connector, open them directly in Tableau, and visualize them with a few clicks.

Click the green arrow on the Output Tab to solve your optimization model.

Once Solver has stopped with a final result message, click the icon on the

Task Pane Output tab to save the values for the objective function, constraints

and variables to *.tde files or HTML files. You will be prompted to select a

folder where the Tableau files will be saved along with the type of Tableau

export desired: Tableau Data Extract or Tableau Web Connector.

Tablea Data Extract

If Tableau Data Extract is selected, static data is exported to three files:

Constraints.tde, Objective.tde and Variables.tde. (Although .tde files are

designed to hold multiple tables, currently Tableaus software allows only one

table per file.) When you import this data into Tableau, Variables.tde will have

one row for each decision variable, Constraints.tde will have one row for each

constraint and Objective.tde will have just one row for the objective.

Each row of Variables.tde will contain the Excel cell address, the

values of the variables at the time of extraction, the lower and upper

bound of each variable, the optimization index and sensitivity

information such as the reduced cost and allowable increase/decrease.

Each row of Constraints.tde will contain the Excel cell address where

the constraint is located, the value of each constraint at time of

extraction, the constraint lower and upper bounds, and information that

would appear on a sensitivity report such as the shadow price, slack

value, a 1 or 0 to indicate if the constraint was binding (1) or not (0),

and the allowable increase/decrease.

Objective.tde will contain the Excel cell address where the objective is

located, the value of the objective function at the time of extraction,

and the optimization index.

Once you select a folder, the *.tde files will be created, and the following

message will appear.

To open the files in Tableau, either double click each file (if using Desktop

Tableau) or click Other Files under Connect and open the desired file(s).

The Tableau Web Connector offers much more flexibility over Tableau Data

Extract by allowing you to refresh your data dynamically inside of Tableau.

which to save three *.html files (Constraints.html, Objective.html, and

Variables.html). The following message will appear.

To open the files in Tableau, open a new workbook in Tableau and click

Connect to Data.

On the connect menu, select More Servers Web Data Connector on the

Connect menu.

On the Web Data Connector dialog, enter the location displayed on the dialog

shown above (i.e., http://localhost:8080/) and press Enter.

Note: The error highlighted in red is a simple warning that the URL is not

pointing to a Tableau Web Data Connector file. If we had entered a file name,

such as http://localhost:8080/Constraints.html, the results would have

immediately been uploaded to Tableau.

To add more data, click Data New Data Source on the Tableau ribbon, then

repeat the actions described above.

If your Solver results have changed, you'll need to refresh the results within the

Tableau Web Connector HTML files. To do so:

1. In ASP, re-run your model

2. Click the Tableau icon on the Output tab in the Solver Task Pane.

3. Select Tableau Web Connector and the folder where the files should

be saved.

4. Click OK.

5. In Tableau, click Data Refresh All Extracts to update your data.

For more information on using Tableau, please refer to the Tableau

documentation found at http://www.tableau.com/.

The approach outlined above in From Algebra to Spreadsheets is a quick and

dirty way to translate from a model in algebraic form to an equivalent

spreadsheet model, ready for optimization. However, that approach will soon

prove to be short-sighted when you wish to change the data (for example unit

profits or parts on hand), expand the model to include more products or parts, or

show the model to someone unfamiliar with the problem or uncomfortable with

algebraic notation.

To see a better approach to defining this model, click Help Examples on the

Ribbon, which opens a workbook Frontline Example Models Overview.xls.

Click Optimization on the Overview tab.

Then click the link StandardExamples.xls to open the workbook, showing the

first worksheet EXAMPLE1.

An optimization model like the one we created from scratch in the previous

section is already defined on this worksheet, and appears in the Task Pane

Model tab, as shown below. We could immediately solve this model.

simply used the Ribbon (or the Solver Parameters dialog) to select the decision

variables, objective and constraints, and the Solver engine (and any options or

settings it requires). Then we saved the workbook, in the usual way, with

Excels Save command. Models created in the standard Excel Solver, or an

earlier version of Premium Solver Pro (formerly called Premium Solver)

Premium Solver Platform, or Risk Solver Platform, can also be saved this way,

and opened and immediately solved in Analytic Solver Platform.

More Readable and Expandable Models

Worksheet EXAMPLE1 models the same problem we described in the previous

section From Algebra to Spreadsheets, but the model is organized and laid out

for easier readability and expandability.

The decision variables (A1:A3 in the previous section) are in cells D9:F9, and

nearby labels show their meaning. The left hand sides of the constraints (B1:B5

in the previous section) are in cells C11:C15, and the right hand sides are in cells

B11:B15 since these constant values can be in any position on the worksheet.

Instead of using constants such as 75, 50 and 35 directly in the formula for the

objective as we did in the previous section weve put these numbers in cells

D17:F17. The formula for the objective is =SUMPRODUCT(D17:F17,D9:F9)

in cell D18. This makes it easier to change product selling prices, or to obtain

this data from an external data source, such as a database or accounting data file.

Similarly, weve placed the coefficients of the constraints in cells D11:F15.

These are exactly the constant values we saw in the algebraic statement of the

problem in the previous section:

Subject to 1x 1 +1x

2 +0x

3 <= 400 (Chassis)

1x 1 +0x

2 +0x

3 <= 200 (Picture tubes)

2x 1 +2x

2 +1x

3 <= 800 (Speaker cones)

1x 1 +1x

2 +0x

3 <= 400 (Power supplies)

2x 1 +1x

2 +1x

3 <= 600 (Electronics)

In EXAMPLE1, the formula at cell C11 the left hand side of the first

constraint is =SUMPRODUCT(D11:F11,$D$9:$F$9). The formulas at

C12:C15 were created by copying C11 downward.

To enhance readability, borders and labels have been used to draw attention to

the decision variables, the constraints, and the objective function. If you havent

used these Excel features before, select one or more cells, then choose the

Format tab in Excel 2007 to see how to do this.

EXAMPLE1 is also much easier to maintain and expand than a model

constructed with hardwired formulas, as in the previous section. You can add

products by inserting new columns, and add more parts by inserting rows, and

copying any one of the existing left hand side formulas to the new rows; Excel

will automatically adjust the formula cell references.

In the next section, well solve EXAMPLE1, and create and examine the

Answer Report and Sensitivity Report for this model.

There are several worksheets (EXAMPLE1, EXAMPLE2, etc.) in the

StandardExamples.xls workbook. As we proceed through this chapter, youll

see that we can simply click a worksheet tab to display a new and different

model in the Task Pane on that worksheet. Each of these models was created in

the same way, and all of them are saved when you save the Excel workbook.

In StandardExamples.xls, each model is entirely contained on one worksheet.

But this is not required one model can include cells from many different

worksheets in the same workbook, and it can refer to constant information in

other workbooks. By default, models have the same names as the worksheets on

which they are created, but you can give your own names to models, and create

as many of them as you like. This is described in the Frontline Solvers

Reference Guide.

Linear Programming Examples

This section takes you on a quick tour of Analytic Solver Platform features for

linear programming (LP) problems. We highly recommend that you follow

along by opening and actually solving the examples in this section.

The first three examples are variants of the Product Mix model introduced

earlier in this chapter. Our factory is building three products: TV sets, stereos

and speakers. Each product is assembled from parts in inventory, and there are

five types of parts: chassis, picture tubes, speaker cones, power supplies and

electronics units. Our goal is to produce the mix of products that will maximize

profits, given the inventory of parts on hand. Be sure to read Introducing the

Standard Example Models above.

Click the tab to display the EXAMPLE1 worksheet. To solve this linear

programming problem, click the Optimize button on the Ribbon, or click the

green arrow at the top right of the Task Pane.

Almost immediately, the solution values appear in the decision variable cells:

To maximize profit, we should make 200 TV sets, 200 stereos, and 0 speakers.

The Solver Results message Solver found a solution. All constraints and

optimality conditions are satisfied appears in green at the bottom of the Task

Pane. Dont ignore this message, because it provides critical information about

what happened during the solution process, and what you can and cannot

assume about the solution on the worksheet!

To learn more about the solution process, click the Output tab at the top of the

Task Pane. The solution log in the upper part of this pane reports what

happened during the solution process. If you are puzzled by the Solver Result

message, simply click the underlined message in the log to open online Help to

a full explanation of that message.

If solving takes more than a few seconds, the Output tab automatically appears,

and current best objective and other information, plus a running chart of the

objective value, appears in the bottom part of the Task Pane.

After solving, you can produce reports (such as the Answer Report and

Sensitivity Report in the standard Excel Solver) by selecting Reports

Optimization from the Ribbon. Unlike the standard Solver, you dont have to

choose reports immediately in the Solver Results dialog you can select them

later (until you perform another operation that creates new reports).

The Answer and Sensitivity Reports appear as new worksheets, inserted into the

workbook just to the left of the EXAMPLE worksheet, as shown on the next

page. The Sensitivity Report, which provides dual values (shadow prices and

reduced costs) and associated ranges, is described in Frontline Solvers

Reference Guide.

The Answer Report shows the message from the Task Pane Output tab, the

Solver engine used, and statistics about the solution process. It shows the

beginning and ending values of the objective function and the decision variables.

For the constraints, it shows the final cell value and formula, a status (whether

the constraint was binding satisfied with equality at the solution, and a

slack value for non-binding constraints.

You can ask for outlined reports by clicking the Reports are not outlined

choice on the Ribbon to change it to Reports are outlined, as shown above. In

this case, each block of decision variables and constraints appears in its own

outline group. Click the + symbol at the left edge of the report worksheet to

show or hide each group in the outline. Any comments that you enter when

defining decision variables or constraints appear for each group in the report.

These features help you quickly find the information you want in a report

created for a large model.

A Model with No Feasible Solution

What does it mean when the Solver can find no feasible solution no

combination of values for the decision variables that satisfies all the constraints?

It may be that the underlying business problem has no feasible solution if so,

youd like to focus on the hardest-to-satisfy constraints, to see if you can do

anything about them. Or you might have just made a mistake setting up the

model for example choosing <= when you meant to choose >=.

But in a large model, with thousands of constraints, how do you find your

mistake, or focus on the hardest-to-satisfy constraints? Analytic Solver

Platform can help, by producing a Feasibility Report.

Click the tab to display the EXAMPLE2 worksheet. This is the same Product

Mix model as in EXAMPLE1, but the supply of Chassis parts at B11 has been

changed from 450 to -1. Click the Optimize button. The message Solver

could not find a feasible solution appears in red at the bottom of the Task Pane.

Click Reports Optimization Feasibility on the Ribbon. A Feasibility

Report worksheet is inserted into the workbook, immediately to the left of

EXAMPLE2 with the contents shown on the next page.

Notice that the report highlights the constraint on Chassis parts used, and the

non-negativity constraints on products that are built from Chassis parts. To

satisfy the constraint C11 <= B11 where B11 is -1, wed have to build a negative

number of stereos (or TV sets). In a large model with thousands of constraints

with no feasible solution, this report can focus your attention on the trouble

spots the constraints that make the problem infeasible. The set of constraints

shown is called an IIS or Irreducibly Infeasible Subset of all the constraints. For

more information, please see the Frontline Solvers Reference Guide.

What if you intended to build a linear programming model, but you made a

mistake and introduced a nonlinear function into the model? Even if you

understand the requirements of linear functions (explained in the chapter

Mastering Conventional Optimization Concepts), in a large model with

thousands of variables and constraints, where each constraint is computed by a

chain of formulas, an accidentally introduced nonlinearity may be difficult to

find. Sometimes, a first-generation LP model is modified to make a previously

fixed parameter into a decision variable and this leads to an accidental

multiplication of two variables.

Click the tab to display the EXAMPLE3 worksheet. This is the same Product

Mix model as in EXAMPLE1, but the constraint left hand side formula for

Chassis parts at C11 has been changed to read

=SUMPRODUCT(D11:F11,D9:F9)^0.9. (The power function clearly makes the

constraint nonlinear.) Click the Optimize button. The message The linearity

conditions required by this Solver Engine are not satisfied appears in red at the

bottom of the Task Pane. (Note that were solving this model with the Standard

Simplex or LP/Quadratic Solver.)

Click Reports Optimization Linearity on the Ribbon. A Linearity Report

worksheet is inserted into the workbook, immediately to the left of EXAMPLE3

with the contents shown on the next page.

The report highlights the constraint at C11 as a nonlinear function, and variables

D9 and E9 that participate in calculation of this function. (F9 does not appear,

because its coefficient at F11 is zero.) In a large model, this report can help you

quickly find the source of an unintended nonlinearity.

The Linearity Report, which is available in all of the Analytic Solver Platform

subsets except Risk Solver, is very useful, but it does have two drawbacks: (i) It

highlights only a constraint that behaves nonlinearly but if this constraint is

calculated through a chain of formulas, it may not highlight the exact cell

formula where the nonlinearity first occurs. (ii) It is based on a numerical test

for linear or nonlinear behavior a test that can be fooled by a poorly scaled

model. (A poorly scaled model is one that computes values of the objective,

constraints, or intermediate results that differ by many orders of magnitude,

which can lead to inaccuracy in computer arithmetic.)

If you have Analytic Solver Platform, Risk Solver Platform or Premium Solver

Platform, you can use the Polymorphic Spreadsheet Interpreter to perform a

symbolic test for linearity that cannot be fooled by scaling problems. Click the

tab to display the EXAMPLE3 worksheet. On the Task Pane Platform tab, in

the Diagnosis group of options, and ensure that the Intended Model Type is set

to Linear:

Now click the Analyze button in the Task Pane, or select the dropdown choice

Analyze Original Problem below the Optimize button on the Ribbon. The

Model Diagnosis portion of the Task Pane will pop up, showing the Model Type

and related statistics, as shown on the next page.

Notice that the Model Type is NLP NonCvx. If youre not sure about the

meaning of any of the elements shown here, click the underlined link at the

bottom of the Task Pane to display Help on that model element.

Report is inserted into the workbook, just to the left of EXAMPLE3. This report

highlights the formula cells in your worksheet that violate the requirements of

your Intended Model Type (in this case Linear). In other words, this report

shows the formulas that make your model nonlinear.

For EXAMPLE3, this report again highlights the constraint at C11 and the two

variables D9 and E9 (E9 in columns I and J, not shown to save space). But

when a constraint or objective is calculated through a chain of formulas, this

report normally finds the formula cell that first introduces a nonlinear

relationship (such as a power operator, a function such as LOG, or

multiplication of two cells that both depend on decision variables).

EXAMPLE3!$C$11 in this report can be clicked to jump directly to that cell, so

you can quickly inspect its formula.

This section takes you on a quick tour of Analytic Solver Platform features for

nonlinear programming (NLP) and non-smooth optimization (NSP) problems,

using the SOCP Barrier Solver, LSGRG Nonlinear Solver, and Evolutionary

Solver. We highly recommend that you follow along by opening and actually

solving the examples in this section.

The simplest kind of nonlinear optimization model is a quadratic programming

(QP) model, with a quadratic objective and all linear constraints. Such a

problem can be solved with a quadratic extension to the linear programming

Simplex method as in the LP/Quadratic Solver in Analytic Solver Platform,

Risk Solver Platform and Premium Solver Platform or with the LSGRG

Nonlinear Solver included in our Platform products and the GRG solver

included in Analytic Solver Pro, Risk/Premium Solver Pro and Premium Solver

Pro.

A classic example of this kind of model, shown in EXAMPLE4 in

StandardExamples.xls, is a Markowitz-style portfolio optimization problem.

In this model, we want to choose the mix of stocks to form an efficient

portfolio with the lowest possible risk (measured by portfolio variance) for a

specified target rate of return. Click the EXAMPLE4 tab to display the model.

This model uses Excel defined names for certain cell ranges: The objective cell

I17 has the name Portfolio_Variance, which appears to the left of the formula

bar when I17 is selected. Cell I19 has the name Portfolio_Return. The decision

variables the percentage of funds to invest in each of five stocks are cells

B9:F9, and this cell range has the name Allocations. Cell H9 has the name

Total_Portfolio. These defined names appear in the Task Pane Model tab, as

shown on the next page.

We can see immediately that this model will find values for the stock allocations

that minimize portfolio variance, subject to constraints that (i) all funds are used

(the sum of the stock allocations is 100% or 1.0) and (ii) the portfolio return is at

least 9.5%.

Cell I17 computes the portfolio variance using a special function

QUADPRODUCT, which is defined by Analytic Solver Platform. This function

can be used to compute any quadratic form such as xTQx + cx. In

EXAMPLE4, the elements of the matrix Q are the covariances of returns of

pairs of stocks, and the elements of the vector c (at B11:F11) are all zero. You

could instead compute portfolio variance using a series of Excel formulas using

multiplication and addition, but its more convenient to use QUADPRODUCT.

Analytic Solver Platform can help you visualize the shape of your problem

functions (the objective and constraints). If you havent been sure of the

difference between a linear, quadratic, smooth nonlinear, and non-smooth

function, you can use Analytic Solver Platform to plot it.

As an example, select cell I19 (the Portfolio Return) on the worksheet, and

choose Decisions Plot from the Ribbon. This will plot I19 (whose formula is

=SUMPRODUCT(Allocations,Stock_Returns)) as a function of the decision

variables for Stock 1 through Stock 5, as shown on the next page.

The SUMPRODUCT function is a linear function, so unsurprisingly, Portfolio

Return plots as a straight. In contrast, select cell I17 (Portfolio Variance, the

QUADPRODUCT function), and choose Decisions Plot from the Ribbon.

This function plots as a parabola as expected for a quadratic function

showing only the positive values, since the decision variables are non-negative.

(Stock 1 through Stock 5) onto two dimensions, along a vector from Point A to

Point B, shown in the side panel. You have many choices for Points A and B.

To find an optimal allocation of funds to stocks, just click the Optimize button.

In an instant, the message Solver found a solution. All constraints and

optimality conditions are satisfied appears in green at the bottom of the Task

Pane, the Portfolio Variance is 0.85% and the Portfolio return is 9.5%, and the

decision variables contain:

Solving with the GRG Nonlinear Solver yields the same values (to two decimal

places) for the decision variables. If you have Analytic Solver Platform, Risk

Solver Platform or Premium Solver Platform, you can also use the Standard

SOCP Barrier Solver just select it from the dropdown list at the top of the Task

Pane Engine tab and click the Optimize button again. This yields nearly the

same values for the decision variables, Portfolio Return at I19, and Portfolio

Variance at I17.

We can also turn this problem around and seek to maximize Portfolio Return,

subject to a constraint that Portfolio Variance is (say) no more than 1%. To do

this, we can edit the optimization model directly in the Task Pane:

1. Select Portfolio_Variance (Min) under Objective in the outline.

2. In the Objective Properties area below the outline, click the Address

property and type or select cell I19 (or type Portfolio_Return).

Change the Sense dropdown choice from Minimize to Maximize.

4. In the Normal Constraint Properties area below the outline, click the

Address property and type or select cell I17 (or type

Portfolio_Variance), change the Relation dropdown choice to <=,

and type 0.01 as the Right Hand Side) value.

The Task Pane Model tab should now appear as shown on the next page. This

problem now has a linear objective and a quadratic constraint; it is called a

quadratically constrained or QCP problem. It can no longer be solved by the

methods used in the LP/Quadratic Solver (a quadratic extension of the Simplex

method), but it can be solved by the GRG Nonlinear Solver, or (more

efficiently) by the SOCP Barrier Solver.

Solving with the SOCP Barrier Solver yields a Portfolio Return of 10.2%, a

Portfolio Variance of 0.1% as expected, and the following values for the

decision variables:

Optimization, we return to EXAMPLE4 and show how to automatically vary

the Portfolio Return threshold, solve multiple instances of this portfolio

optimization model, and create a chart of the efficient frontier.

The original EXAMPLE4 QP model can be scaled up to portfolios of many

thousands of stocks, and solved quickly to optimality by the Large-Scale LP/QP

Solver, the XPRESS Solver and the MOSEK Solver. The modified QCP model

can also be scaled up to portfolios of thousands of stocks, and solved quickly to

optimality by the MOSEK Solver.

EXAMPLE5 in the StandardExamples.xls workbook was adapted from an

actual user model, and illustrates a common situation seen by Frontline Systems

in technical support. This model was meant to be a linear mixed-integer

(LP/MIP) model, but the user calculated the objective function based on several

IF functions. IF functions are certainly not linear functions in fact they arent

even smooth nonlinear functions!

One of the remarkable things about Analytic Solver Platform is that, in

Automatic mode, it will transform this model to a linear mixed-integer model,

and solve it to optimality in seconds, without any user intervention. But in this

Guide, well first see how Analytic Solver Platform behaves without Automatic

mode. Click the EXAMPLE5 tab to display the model.

The model has 9 decision variables, all constrained to be integer. The general

constraints are linear functions of the decision variables. But the objective

depends on I14, J14 and K14, each of which is a sum of three IF functions.

To turn off Automatic mode, in the Task Pane Platform tab Transformation

group of options, set the Nonsmooth Model Transformation option to Never.

If we now click the Optimize button with the LP/Quadratic Solver selected, the

message The linearity conditions required by this Solver engine are not

satisfied appears in red at the bottom of the Task Pane.

If we click the Analyze button in the Task Pane, or select the dropdown choice

Analyze Original Problem below the Optimize button on the Ribbon, Analytic

Solver Platform reports that the model is nonlinear (NLP), as shown on the next

page.

This type of model commonly arises, but is difficult to solve with the standard

Excel Solver, or with Analytic Solver Pro, Risk/Premium Solver Pro and

Premium Solver Pro. But Analytic Solver Platform, Risk Solver Platform and

Premium Solver Platform can transform the model to eliminate the IF functions,

replacing them with additional binary and continuous variables and linear

constraints that have the same effect on the model as the IF functions. The

additional variables and constraints dont appear on the worksheet, but they are

handled internally by the PSI Interpreter and the selected Solver engine. To do

this, we simply set the Nonsmooth Model Transformation option to

Automatic:

If we again Analyze the model with this option setting, we find that the

transformed model has 27 variables (18 of them integer) and 67 constraints, as

shown on the next page. But its now a linear programming (LP) model so it

can be solved by the LP/Quadratic Solver. By solving this transformed model,

we can find a solution to the original model on the EXAMPLE4 worksheet.

When we now click the Optimize button, the message Solver found a solution.

All constraints and optimality conditions are satisfied appears in green at the

bottom of the Task Pane, and the objective function value at cell B19 is 2400.

The message indicates that the Solver has found a proven optimal solution for

the original problem with IF functions.

The PSI Interpreter can automatically transform models containing IF, AND,

OR, NOT, ABS, MIN and MAX, and relations <, <=, >= and > into equivalent

models where these non-smooth functions are eliminated. When this

transformation is sufficient to make the overall model linear as it was in this

case you can use the LP/Quadratic Solver or a large-scale LP/MIP Solver

engine to solve the problem.

In the EXAMPLE6 and EXAMPLE7 worksheets, we wish to solve a model to

optimize the location of an airline hub. The hub will serve six cities, each of

which is located at some latitude and longitude (in these models, we use simple

X, Y coordinates). We want to choose a location (X, Y coordinate) for the

airline hub that will minimize the maximum distance from the hub to any of the

six cities. The distance from the hub (X, Y) to a city (Xc, Yc) is SQRT( (Xc -

X)2 + (Yc - Y)2 ). The model is pictured below. In EXAMPLE6, we model and

solve the problem using the GRG Nonlinear Solver. In EXAMPLE7, which

requires Analytic Solver Platform, Risk Solver Platform or Premium Solver

Platform, we model the problem using cone constraints, and solve it using the

SOCP Barrier Solver.

In EXAMPLE6, our decision variables are the (X, Y) coordinates of the airline

hub, at cells D12:E12, and a third decision variable at F19. Cell F19 also serves

as the objective function, to be minimized. We calculate the distance from the

hub to each of the six cities in cells F13:F18. We define a block of constraints

F13:F18 <= F19 this means that the distance from the hub to each city must be

less than or equal to the decision variable F19, which the Solver will minimize.

The effect of these constraints is to cause the Solver to find values for D12:E12

the (X, Y) coordinates of the hub that minimize the maximum distance to

any of the cities.

Click the EXAMPLE6 tab to display the model, and click the Analyze button.

We see that the model is diagnosed as smooth nonlinear (NLP), with 3 variables

and 7 functions. Notice that the Standard GRG Nonlinear Solver is selected.

Click the Optimize button. The message Solver found a solution appears in

green at the bottom of the Task Pane. The optimal location for the airline hub is

at X = 1.25, Y = 4.0, and the maximum distance from this location to any of the

six cities is 2.1360 units.

In EXAMPLE4, we solved the simplest kind of nonlinear optimization problem,

a portfolio optimization QP model with a quadratic objective and all linear

constraints, and a variation that was a QCP model, with a quadratic constraint .

We saw that we could solve the problem with the GRG Nonlinear Solver, but

we could also solve both variations of the problem with the SOCP Barrier

Solver and we learned that we could more easily scale up the SOCP problem

to large size, with thousands of stocks or more.

We can do the same thing with the airline hub problem. The model is a little

more complex, with more variables and constraints but this allows the Solver

to exploit the structure of the model, and solve it more quickly and reliably. To

do this, we will explicitly use cone constraints.

We have actually used a simple kind of cone constraint before in EXAMPLE1,

our first linear programming problem, at the beginning of this chapter. In that

model, we used an objective and constraints that were linear functions of the

decision variables, and non-negativity constraints on the variables. These

constraints specified that the variables must lie within a simple kind of cone,

called the non-negative orthant. This first order cone places a bound on the L1-

norm of the vector of decision variables:

that groups of variables must lie within a second order cone (also called a

Lorentz cone, or ice cream cone) a convex set that looks like this:

This cone places a bound on the L2-norm of the vector of decision variables. If

A1:A3 are variables that lie within this cone, then A1 >=

SQRT(SUMSQ(A2:A3)) must hold. A problem with a linear objective and

linear or second order cone (SOC) constraints is called a second order cone

programming (SOCP) problem; it is always a convex optimization problem.

Second order cone programming is the natural generalization of linear program-

ming. It offers the same advantages of convexity and scalability to large

problems offered by linear programming but for a broader class of models.

For history buffs, Premium Solver Platform V6.0 was the first commercial

software product to offer broad support for second order cone programming.

The EXAMPLE7 worksheet is shown below. In this model, we compute the

simple differences Xc X and Yc Y between the airline hub coordinates and

the coordinates of each city. We define new variables F21:F26, G21:G26, and

H21:H26. We use constraints to make G21:G26 equal to the Xc X

differences, and H21:H26 equal to the Yc Y differences.

Then we specify that each set of three variables (for example F21, G21, H21)

must belong to a second order cone hence F21 >= SQRT(SUMSQ(G21:H21))

and likewise for F22, G22, H22, etc. Finally, we use one more variable F27 as

the objective to be minimized, and we add a block of constraints F21:F26 <=

F27 much as we did in EXAMPLE6. The effect of these constraints is to

cause the Solver to find values for the (X, Y) coordinates of the hub now at

D14:D15 that minimize the maximum distance to any of the cities.

Click the EXAMPLE7 tab to display the model, and click the Analyze button.

We see that this formulation of the model is diagnosed as second order cone

programming problem (SOCP), with 21 variables and 19 functions. Notice that

the SOCP Barrier Solver is selected to solve the problem.

Click the Optimize button. After a moment, the same optimal solution as in

EXAMPLE6 is found. In this simple example, both the Standard GRG

Nonlinear Solver and the SOCP Barrier Solver solve the problem in sub-second

time. But if we were to scale up this model to large size say with 1,000 cities

the SOCP Barrier Solver would likely show a speed advantage.

Google Sheets

In late 2014, Frontline Systems released Solver App for use with Excel 2013 and

Solver Add-on for use with Google Sheets. With the Solver App you can define

and solve optimization problems in your Excel workbook, using Excel Online in

Office 365, the Excel Web App in SharePoint 2016 or 2013, or desktop Excel

2016 or 2013. With the Solver Add-on, you can define and solve optimization

problems in Google Sheets. You can create and solve models on tablets,

phones, or anywhere a Web browser can be used. Solver models that you may

already have created in old or new versions of Microsoft Excel, are

automatically recognized by the Solver App and , after the existing worksheet is

published, with the Solver Add-on.

In Analytic Solver Platform, the Freeze and Thaw buttons were combined into

a single Publish button, as shown in the screenshot below. (In Premium Solver

Pro/Platform where there was no Freeze/Thaw function, the Ribbon now

includes a Publish icon.)

Like the Freeze button, the Publish button can be used to prepare a workbook

for distribution to other users who dont have Analytic Solver Platform or its

subsets installed: All formulas containing Psi function calls (which would yield

#NAME? for other users) are replaced by their values, and the formulas are

saved, so they can be restored later by choosing Unpublish (equivalent to the

old Thaw).

But the major use of the Publish button in ASP and later, is to prepare a

workbook for use with our Solver/Risk Solver Apps for Excel Online and our

Solver/Risk Solver Add-on for Google Sheets (the online spreadsheets have

limited or no support for user-defined functions).

In ASP, when a model is published, the limits for Solver App (for Excel Online)

and Solver Add-on (for Google Sheets) will be auomatically adjusted to match

the problem limits of your license. For example, if you purchased a license for

Analytic Solver Platform, then you will be able to solve linear models using the

Solver App or Solver Add-on with up to 8,000 variables and constraints and

nonlinear or nonsmooth models with up to 1,000 variables and constraints, if

you publish your model first by clicking the Publish button on the Analytic

Solver Platform (or any ASP Subset) ribbon.

Lets go back to the model on the Example1 tab used in the section above, click

the Publish icon on the Ribbon to display the following dialog.

Select Google Sheets then Publish. (If you are a user of Excel Online, please

see the example below.) Make sure to save the workbook before uploading to

Google Drive.

Note: Only the Active Worksheet is published. To solve a model on a different

worksheet within the same Workbook (say Example2), youll need to publish

that worksheet separately. This is important when solving an optimization

model. If solving a simulation model, this does not apply. (For an example on

how to solve a simulation model with Excel Online or Google Sheets, please see

the next chapter.)

Log on to your Google Drive account and upload Standard Example.xls, then

open this file in Google Sheets.

Click the orange New button then select File Upload to upload the

StandardExamples.xls spreadsheet to Google Drive.

Systems\Analytic Solver Platform\Examples (if using 32 bit Excel with 64 bit

Windows) or C:\Program Files\Analytic Solver Platform\Examples (if using 64

bit Excel or 32 bit Excel with 32 bit Windows). StandardExamples.xls will

appear under My Drive.

Double click the file to open in Google Drive Preview Viewer (shown below).

Click Open Google Sheets.

To add the Solver Add-on, choose the menu option Add-ons - Get Add-ons...

In the Add-ons dialog, scroll until you see Solver. Click to select and install.

Once these steps are finished, Solver should now appear on the Add-ons

menu.

Choose Add-ons - Solver - Start. The Solver Task Pane (Google calls this a

Sidebar) will appear containing the Solver model: objective, variables, and

constraints.

Since this is a linear model, click the down arrow to the right of GRG Nonlinear

under Solving Method to select the LP/Quadratic engine.

Click Solve to run the Simplex LP engine to solve the linear model. The Solver

Add-on solves the model, inserting the final variable values of 200/200/0 in cells

D9:F9 and finding an objective equal to $25,000. Note: Reports, such as

Answer Report, Sensitivity Report, and/or Limits reports, are not supported in

the Solver Add-on.

The Solver Sidebar behaves much like the Excel Solver dialog. To change a

constraint, simply highlight the desired constraint and click Change. To delete a

constraint, highlight the desired constraint and click Delete. Click Reset All to

clear the objective, all variables and constraints, and all options settings. Select

Options to change an engine option such as Constraint Precision, Automatic

Scaling, Convergence, etc. For more information on each of these options,

please see the Engine Option chapter in Frontline Solvers Reference Guide.

Now lets Publish this same model to Excel Online. Lets go back to Excel and

StandardExamples.xls. Click Publish Unpublish.

Reopen the Publish dialog by clicking Publish. Confirm that Excel Online is

selected. Click Publish to publish the worksheet to Excel Online.

Note: Only the Active Worksheet is published. To solve a model on a different

worksheet within the same workbook (say Example2), youll need to publish

that worksheet separately. This is important when solving an optimization

model. If solving a simulation model, this does not apply. (For an example on

how to solve a simulation model with Excel Online or Google Sheets, please see

the next chapter.)

Now Save the file as StandardExamples.xlsx on your SharePoint or Office 365

site.

Note: In order to use the Solver App, your file must be saved on SharePoint or

Office 365 site. This app cannot solve models saved on your local hard drive.

Open the workbook using Excel Online, then click Edit Workbook Edit in

Excel Online.

Select the Store tab and search for Solver, then select (2nd app in the list) and

Install. Note: A Premium Solver app which solves linear models with more

than 200 variables and nonlinear models with more than 200 variables and 200

constraints is available for purchase. Please contact Frontline Systems for more

information at sales@solver.com.

Please see the next chapter for an example on the use of the Risk Solver App.

The Solver App task pane opens to the right on your screen.

Simplex LP has already been selected for Solving Method. Click Solve to run

this engine to solve this simple linear model. If running for the first time, you

will be asked to Trust the App.

Solver inserts the final variable values 200/200/0 into cells D9:F9 and adds the

final result message Solver found a solution. All Constraints and optimality

conditions are satisfied. to the bottom of the Solver pane.

Note: The Answer Report and Sensitivity Report are only supported when using

the Solver App within Excel 2016. You can create the reports after Solver has

found a solution by clicking the Create Report icon located in the title bar of the

Solver App. If using Excel 2013, Excel for iPad & iPhone or Excel Online, you

will not have the option to create reports.

This task pane behaves much like the Excel Solver. To Add a constraint, click

Constraints, then Add. To Change or Delete a constriant, select the desired

constraint and click Change or Delete. To change an engine option, click Engine

then Options. For more information on each of these options, please see the

Engine Option chapter in Frontline Solvers Reference Guide.

Frontline Solvers 2016-R2 User Guide Page 95

Examples: Simulation and Risk

Analysis

Introduction

This chapter introduces simulation and risk analysis in Analytic Solver Platform,

with a series of examples. Each of these examples with the exception of the last

one can be used in Risk Solver.

A First Simulation Example takes you step-by-step through the process of

building and analyzing a risk analysis model using Monte Carlo simulation.

Airline Revenue Management Example takes you through three versions

of an airline yield management problem, to illustrate a single simulation,

multiple parameterized simulations, and simulation optimization.

Building a simulation model in Analytic Solver Platform is straightforward:

You simply build a conventional spreadsheet model, designed for what-if

analysis. Next, you identify the inputs to your model that are uncertain, and use

PSI Distribution functions to describe the uncertainty. Then, you identify the

outputs of special interest (such as Net Profit), and use PSI Statistics functions

to examine or summarize how they behave in light of the uncertainty.

To open this example, click Help Examples on the Ribbon, which opens a

workbook Frontline Example Models Overview.xls. Click the Simulation link,

then click BusinessForecast.xls.

Well build the simulation model step-by-step in this section, but you can open

the completed model as BusinessForecastPsi.xls if you like.

Uncertain Variables

In any problem, there are factors or inputs that you can control for example,

the price you set for a product, and factors or inputs that you cannot control

for example, customer demand, interest rates, etc. Analytic Solver Platform

uses uncertain variables (random variables in mathematics) to represent inputs

that are uncertain and beyond your control. (It uses decision variables to

represent factors or inputs that you can control.)

Uncertain Functions

You will also have outputs or results of interest such as Net Profit that you

can compute, using formulas that depend on the factors influencing the problem

possibly both decision variables and uncertain variables. Well use the term

uncertain functions for quantities whose calculation depends on uncertain

variables (in mathematics these are called functions of random variables).

Well illustrate the process of building a simulation model step by step, using a

simple business planning example. Imagine you are the marketing manager for

a firm that is planning to introduce a new product. You need to estimate the first

year profit from this product, which will depend on:

Sales in units

Price per unit sold

Unit manufacturing cost

Fixed costs and overhead

Profit will be calculated as Profit = Sales * (Price - Unit cost) - Fixed costs.

Fixed costs are known to be $120,000. But the other factors all involve some

uncertainty. Sales in units can cover quite a range, and the selling price per unit

will depend on competitor actions. Unit manufacturing costs will also vary

depending on vendor prices and production experience.

Based on your market research, you believe that there are equal chances that the

market demand will be Slow, OK, or Hot for this product:

In the Slow market demand scenario, you expect to sell 50,000 units at an

average price of $11.00 per unit.

In the OK market scenario, you expect to sell 75,000 units, but you'll likely

realize a lower average selling price of $10.00 per unit.

In the Hot market scenario, you expect to sell 100,000 units, but this will

bring in competitors who will drive down the average selling price to $8.00

per unit.

Since the scenarios are equally likely, your average volume is 75,000 units, and

your average price per unit is $9.67. But think: How likely is this average case?

(Will it ever actually occur?)

Your firms production manager advises you that unit costs may be anywhere

from $5.50 to $7.50, with a most likely cost of $6.50. The most likely cost is

also the average cost.

Uncertain Function: Net Profit

Net Profit is calculated as Profit = Sales * (Price - Unit cost) -Fixed costs.

Sales, Price and Unit costs are all uncertain variables, so Net Profit is an

uncertain function.

At this point, you can summarize the problem in the Excel model pictured

below, which calculates Net Profit based on average sales, price, and unit cost.

This model is in your Examples folder, named BusinessForecast.xls.

based on average values for the uncertain factors, is quite misleading, as well

see in a moment. The true average Net Profit is closer to $93,000! In the spirit

of Prof. Sam Savages new book The Flaw of Averages, well refer to the model

above as the Flawed Average model.

To stress test this model, we need to replace the fixed Sales, Price and Unit

cost amounts with variable amounts that reflect their uncertainty.

Since there are equal chances that the market will be will be Slow, OK, or Hot,

we want to create an uncertain variable that selects among these three

possibilities, by drawing a random number say 1, 2 or 3 with equal

probability. We can do this easily in Analytic Solver Platform using an integer

uniform probability distribution. Well then base our Sales Volume and Selling

Price on this uncertain variable.

Well choose a currently empty cell, B9, to hold this distribution by clicking on

it, we then select Distributions - Discrete on the Ribbon. This displays a

gallery of discrete probability distributions, as shown on the next page (some of

the gallery choices, including IntUniform, are cut off from view on the right). A

sample drawn from a discrete distribution is always one of a set of discrete

values, such as integer numbers.

We click to choose IntUniform from the gallery (again off the right edge in the

picture above). Analytic Solver Platform displays the Uncertain Variable dialog

for a integer uniform distribution, initially with parameters lower 0 and upper

10:

We click in the Value column and change the parameters to read lower 1 and

upper 3. This means that on each trial, well draw a number 1, 2 or 3 from this

distribution. As we do, the chart of probability mass (density) is updated:

=PsiIntUniform(1,3) is written to B9. B9 is now an uncertain variable. If we

press F9 to recalculate the spreadsheet, a different value either 1, 2 or 3

appears each time in cell B9. When we run a Monte Carlo simulation of (say)

1,000 trials, 1,000 different values of 1, 2 or 3 will be sampled for this cells

value.

Now, we need to select one of the three sales scenarios in formulas for Sales

Volume and Selling Price. With cell B4 selected, we enter the formula:

=CHOOSE(B9,E5,E6,E7) for Sales Volume

This will cause B4 to return 100,000, 75,000, or 50,000, depending on the value

in B9. Next, with cell B5 selected, we enter the formula:

=CHOOSE(B9,F5,F6,F7) for Selling Price

This will cause B5 to return $8, $10 or $11, depending on the value in B9.

Notice that the values returned by B4 and B5 are related, or correlated: Higher

sales volume is accompanied by lower selling prices, and vice versa. If we had

scenarios with 100,000 units sold at $11 each, our model would be unrealistic.

Analytic Solver Platform has more versatile ways to specify correlation between

uncertain variables, but this approach is easy to understand in this example.

Next, well deal with Unit Cost. We have not just three, but many possible

values for this variable: It can be anywhere from $5.50 to $7.50, with a most

likely cost of $6.50. A crude but effective way to model this is to use a

triangular distribution. Analytic Solver Platform provides a function called

PsiTriangular() for this distribution.

With cell B6 selected, we select Distributions Common Triangular from

the Ribbons dropdown gallery, as shown on the next page.

can be any numeric value, such as 5.8 or 6.01, in a range.) Analytic Solver

Platform displays the Uncertain Variable dialog with a chart of the triangular

distribution, initially from 0 to 3, peaking at 1.

To see more of the features of this dialog, try clicking on the Parameters drop

down at the top of the right panel.

The minimum, most likely, and maximum values for Unit Cost are in cells E11,

E12 and E13. If we enter these cell references not just the numbers 5.50, 6.50

and 7.50 into our PsiTriangular() function call, well have a more flexible

model that we can use in Interactive Simulation, as described below. To start,

we simply click in the Value field for the min parameter.

Now we can either type in a number or cell reference, or we can click the

button at the right edge of the field: When we do this, a small dialog appears.

Type E11, then click OK.

Now E11 appears as the min (a) parameter. Since at this moment, the min (a)

value of 5.50 is greater than the max (b) value of 3, the error The distribution is

invalid with the current values of the parameters is displayed instead of the

chart. This is a hint that the parameters are inconsistent. The chart reappears

once we enter references to cell E12 for likely (c) and E13 for max (b). When

we click the Save icon, =PsiTriangular(E11,E12,E13) is inserted into cell B6.

Weve now defined the uncertain variables in our model. Anything calculated

from these uncertain variables is an uncertain function, but usually were

interested only in specific results such as Net Profit at cell B11. When we turn

on Interactive Simulation, B11 will effectively hold an array of values, each

one calculated from different values sampled for B4, B5, B6 and B7.

What would we like to know about the array of values for Net Profit at cell B11?

The simplest summary result is the average (or mean) Net Profit. Note that this

will be the true average of Net Profit across 1,000 or more scenarios or trials

not a single calculation from average values of the inputs.

With cell B11 selected, we select Results Statistics from the Ribbon. A

dropdown gallery shows us the available statistics functions, which we can drag

and drop into a worksheet cell.

When we click the Mean button, a small balloon like the one below appears

and follows the mouse pointer as we move to a worksheet cell, in this case B12.

When we click to drop, the formula =PsiMean(B11) appears in the cell.

When we define a summary statistic, such as =PsiMean(B11), weve implicitly

designated cell B11 as an uncertain function. Analytic Solver Platform will

keep track of the full range of trial values for B11 during a simulation, and will

display frequency and sensitivity charts, statistics and percentiles for it on

demand. As noted above, in principle anything calculated from the uncertain

variables is an uncertain function but to save time and memory, Analytic

Solver Platform keeps track of trial values only for the formula cells that we

designate as uncertain functions.

What if we want to designate cell B11 as an uncertain function without calculat-

ing any summary statistic for it on the worksheet? With cell B11 highlighted,

we can either select Results Output In Cell, as shown on the next page or

simply click the Results icon.

This will modify cell B11s formula =B4*(B5-B6)-B7 to read =B4*(B5-B6)-B7

+ PsiOutput(). If we dont want to modify this formula, we can instead choose

Results Output Referred Cell. Just as we saw with the Statistics gallery

choice, a small balloon like the one below appears and follows the mouse

pointer as we move to a worksheet cell.

If we click in cell B12 as shown above, this cell will contain =PsiOutput(B11).

Any one of these three actions defining a summary statistic such as PsiMean()

on B11, add PsiOutput() to the formula in cell B11, or placing =PsiOutput(B11)

in another cell is sufficient to designate cell B11 as an uncertain function.

Our model now looks like the one pictured below. Notice that the Task Pane

Model tab shows our simulation model in outline form, and cell B12, where we

placed the PsiMean() function, displays as #N/A because Analytic Solver

Platforms Interactive Simulation is not yet turned on.

With an old-fashioned simulation software package, youd press a button to start

a simulation, then perhaps get a cup of coffee. Because simulations ran slowly,

software packages were designed for batch operation: Youd spend time

getting everything set up just right, run a simulation and wait (sometimes quite a

while), then spend time analyzing the results. But with Analytic Solver

Platform, simulations run so fast that fully Interactive Simulation is practical.

To turn on Interactive Simulation, simply click the light bulb on the Ribbon.

It will light up, as shown below.

In the blink of an eye, your first Monte Carlo simulation is complete! Now

1,000 Monte Carlo simulation trials (the default number) will be executed each

time we change the spreadsheet. Since there is one uncertain function, and this

is the first time a simulation has been performed, the following dialog opens.

Subsequent simulations will not produce this report. However, it is possible to

reopen this frequency chart simply by double clicking cell B11. (See below for

more information on this chart.)

If your simulation model contains more than one output function, then a chart

containing frequency graphs of up to 9 output functions and uncertain variables

will appear. For example, if the uncertain variable in cell B6 was also selected

to be an output cell (B6 = PsiTriangular(0, 1, 3) + PsiOutput()) and interactive

simulation was turned on, the following graph would appear at the end of the

simulation.

Double clicking the $B$6 chart will open the Uncertain Variable dialog, as

shown below.

If you select Percentiles from the drop down menu on the top right, youll notice

that the the vertical red lines displayed on the chart denote the 5% and the 95%

percentiles values of 5.82 and 7.18, respectively.

Each of the 5 values at the top of the chart can be edited. For example, the red

lines can be moved to the left or right until the desired percentile is achieved, or

you can directly edit the percentile or the percentiles value by click the value to

be changed.

If you close the uncertain variable dialog for cell B6, (by clicking the red X in

the top right corner and and then clicking Discard) you will see that cell B12

displays the true average for Net Profit across these trials as shown below.

The result of shaking the ladder is striking: Our true average Net Profit for

these 1,000 trials is only $56,030 quite a bit less than the Flawed Average

Model figure of $117,750! And we also see that we can lose money the 996th

the 1,000 trials, which appears on the worksheet below, shows a loss of $-

35,440. (If you run this model yourself with no fixed random seed, you might

have to press F9 a few times to see a final Net Profit similar to this one.)

Try pressing F9 (the Excel recalculate key) on this model: Each time you do,

another 1,000 Monte Carlo trials are run, and a slightly different true average

Net Profit figure will be displayed but normally much less than $117,750.

Weve just seen that the mean or True Average Net Profit, over 1,000 different

simulated outcomes, is less than we expected from our nave Flawed Average

model. Weve also seen that in some outcomes, our Net Profit is actually a loss.

A quick look at the dropdown galleries for Results Statistic, Measure and

Range on the Ribbon suggests that we can easily compute and view many other

statistics about Net Profit. But wed really like to see the full range of outcomes

in this model. This is very easy to do in Analytic Solver Platform.

With Interactive Simulation turned on, simply move the mouse pointer to B11

and wait about 1 second. A miniature, live frequency distribution chart of the

simulation trial values for cell B11 appears automatically:

To see and do more, just double-click on B11, the output cell calculating Net

Profit, to display the same frequency chart that was automatically opened after

our first simulation run.

We see immediately that in some outcomes, we can lose of lot of money over

$60,000! We also see that we make a profit in most outcomes but how many

exactly? Analytic Solver Platform automatically sets a Lower-Cutoff of 0 in

the Frequency chart by displaying a vertical red bar. The probabilities are

automatically shown above the chart. In this case there is an 8.10% chance of a

loss and a 91.90% chance of a profit. The lower cutoff can be changed by

clicking the $0 at the top of the chart. The percentile values can be edited in the

same way.

Note: If you change the lower cutoff from 0 to 10, youll notice the red

vertical line denoting the lower cutoff of $0 has now moved to $10 and

the percentile values have also changed accordingly. Percentile values

can be edited in the same way or by simply moving the red vertical line

to the left or right.

Looking at the right panel you can see the Statistics view, which includes

summary statistics for the full range of Net Profit outcomes. We can see that the

worst case outcome (Minimum) of this simulation was -$65,342, and the best

case outcome (Maximum) was +$112,868. Value at Risk 95% shows that we

have a 95% chance of making $175,196 or less. The Conditional Value at Risk

95% value indicates that the average profit we will see (up to the 95%

percentile) is $87,172.

Another view of the full range of outcomes is shown on the Cumulative

Frequency tab.

Click on the Statistics drop down at the top of the right panel and choose

Percentiles from the list.

The Percentiles tab shows the same information as the Cumulative Frequency

tab, but in numeric form. Below, weve shown the 50th through 70th percentiles:

Note that you can close and open the right hand panel simply by clicking on the

two arrows on the vertical bar between the chart and the right hand panel.

Other tabs on the Uncertain Function dialog can help us understand how the

uncertain variables in our model influence our Net Profit.

Sensitivity Tab

The Sensitivity tab displays a Tornado chart that shows you how much Net

Profit changes with a change in the uncertain variables the Triangular

distribution for Unit Cost at cell B6, and the integer uniform distribution at cell

B9. In this model there are only two uncertain variables, but in a large model

with many such variables, its usually not obvious which ones have the greatest

impact on outcomes such as Net Profit. A Tornado chart highlights the key

variables: B6 has a negative correlation with Net Profit, whereas B9 has a

positive correlation.

The fact that Net Profit goes down as our Unit Cost at B6 goes up is expected.

But why does Net Profit go up as cell B9 goes up? Note that B9 = 1 corresponds

to the Hot market scenario, 2 corresponds to the OK market, and 3 corresponds

to the Slow market scenario. The fact that B9 is positively correlated with Net

Profit is telling us that we make higher profits when the market is slow, not

when its hot. Our typical Selling Price is lower when the market is hot, and the

increased Sales Volume doesnt make up for this.

The Scatter Plots tab, shown on the next page, gives us a different view of the

relationship of Net Profit to our uncertain variables: Unit Cost at cell B6, and the

integer uniform distribution at cell B9.

Notice that the scatter plot against Unit Cost has three downward-sloping lines:

Each line corresponds to a different market scenario (Hot, OK or Slow), and

shows that as Unit Cost rises, our Net Profit drops dropping fastest in the Hot

Market scenario, because our profit margin is so narrow.

The scatter plot against the integer uniform distribution shows three high-low

ranges for Net Profit, again corresponding to a different market scenario Hot,

OK, or Slow. We see again that the range of Net Profit is lowest in the Hot

Market scenario.

Interactive Simulation with Charts and Graphs

Interactive Simulation makes Analytic Solver Platform fundamentally different

from other Monte Carlo simulation tools for Excel. The kinds of charts weve

just seen can be produced by other tools, but only at the end of a simulation

run. In contrast, Analytic Solver Platform makes these charts live as you play

what-if with your model.

After seeing this model, your production manager might think of a way to

reduce the maximum Unit Cost to $7.00 instead of $7.50. What would be the

impact of this change on Net Profit, over the full range outcomes? With

Analytic Solver Platform, this is as easy as any other what-if question in Excel:

Click the Frequency tab to re-display the frequency chart of outcomes for cell

B11. Then simply change the number in cell E13 from 7.50 to 7. Immediately,

a thousand Monte Carlo trials are performed, and the chart is updated. The

effect is striking: We have a 97.7% chance of making a profit, and checking

the Percentiles tab we see that instead of a 1% chance of losing about $48,000,

we have a 1% chance of losing just $5,285!

But Analytic Solver Platform is even faster than this: Click the Options button

on the Ribbon, and change the number of Monte Carlo trials from 1,000 to

100,000 (or more). In a second or less on most modern PCs, one hundred

thousand Monte Carlo trials are performed, and the chart is updated!

The Flawed Average model presented a limited and misleading picture of this

business situation. In contrast, the Risk Solver model has illuminated the

situation considerably. We can see what can go right, and what can go wrong.

We can make an informed decision about whether the reward is worth the risk.

And most important we can interactively explore ways to improve the

reward and reduce the risk. This is risk analysis at work.

Often, you may be called up to present your results to others. With Risk Solver,

one great way to do this is in Excel itself, live! But at times you may need to

print a chart, or copy it into a Word document or PowerPoint presentation. This

is very easy to do in Analytic Solver Platform, with the toolbar buttons in the

title bar of the Uncertain Variable or Uncertain Function dialog:

Click the Clipboard icon to copy the currently displayed chart to the Windows

Clipboard. You can then choose Edit Paste in Word, Excel, PowerPoint and

many other applications to paste the chart image into your document. (Choosing

Edit Paste in Excel inserts a static, non-updating chart image in the worksheet.)

Click the Print icon to immediately print the currently displayed chart on your

default printer, or click the down arrow next to this icon to display the menu

choices shown above: Print Preview, Printer Settings and Page Settings. You

can choose a printer and set printer options, set page margins, and preview your

output using these menu choices.

Analytic Solver Platform also makes it easy to control the format of your charts.

Below, weve re-opened the right hand panel and clicked on the drop down

menu to choose Chart Type.

You can control the chart type, color, dimensionality and transparency, bin

density, titles and legends, axis labels and number formats, horizontal axis

scaling, and more. As you change chart options in the right pane, the chart is

immediately updated so you can see the results (unlike some other simulation

products for Excel). When youre satisfied with the chart format, you can save

and apply it to just this chart, to all charts on this worksheet, or to all charts in

the workbook when you click the Apply button at the bottom of the right pane.

Microsoft's POWER BI, for use with Office 365, is a cloud-based service that

works with Excel to help you visualize your data using various charts and

reports. Analytic Solver Platform includes the ability to export a fixed set of

data from your simulation model, including all trial values, output function

statistics, percentiles, etc., directly into a dataset in Power BI.

Once Solver has stopped with a final result message, click the icon on the

Output tab or on the Uncertain Function dialog to upload the model results to

the Power BI dashboard. If this is the first time that the icon has been clicked

within the current Excel instance, you will be asked to log in to Power BI.

Power BI Icon as shown on the Output tab on the Solver Task Pane.

Once logged in, you will be asked to either update an existing dataset or create a

new dataset.

will contain the uncertain variable and uncertain function trial values, statistics

and percentiles, etc from our optimization model. Once the upload is complete,

the following message will appear.

Logon to Power BI (http://powerbi.microsoft.com/). The newly created dataset

will be listed under Datasets.

graph. In this example, we have created a bar chart by clicking (to the

right of the graph) and selecting the Maximum, Mean, Minimum, and Mode

Output Statistics.

Now, each time the model is solved, the results may be uploaded to your Power

BI dashboard. Click back to Excel and change the Price of the Slow Market

from $11 to $15, then run a 2nd simulation either by clicking the green arrow on

the Model tab in the Solver Task Pane or by clicking the Simulate icon on the

Analytic Solver Platform ribbon. Once Solver stops, click the icon on

either the Output tab or the Uncertain function dialog to upload the most recent

results. Note: We are not asked to log in to the Power BI site a second time

since we are using the same instance of Excel. However, we are asked if we

would like to select an existing dataset to update. Select BusinessForecast and

then click OK. Click back to Power BI in your browser and refresh, the chart

will update automatically with the new final statistic values, as shown below.

Tableau is a popular interactive software package that allows you to visually

explore and analyze your data. Tableau can import data from a wide range of

sources, including Excel workbooks, and it is often used in conjunction with

Excel. Because Tableau is designed to import data in table form, it hasnt been

easy to import the results of a simulation model (such as final values of the

uncertain functions, uncertain variables, percentiles and statistic values) into

Tableau, unless those model elements occur in table form by themselves in your

spreadsheet (which usually isnt the case).

Analytic Solver Platform simplifies this process considerably. With a single

click, you can convert the results of your simulation model into a set of Tableau

Data Extract files (*.tde), open them directly in Tableau, and visualize them

with a few clicks.

Click the green arrow on the Output tab in the Solver Task Pane to run a

simulation. Once Solver has stopped with a final result message, click the

icon on the Task Pane Output tab or Uncertain Function dialog to save the

values for the uncertain functions, uncertain variables, percentiles and statistics

to *.tde files. You will be prompted to select a folder where the Tableau files

will be saved along with the type of Tableau export desired: Tableau Data

Extract or (new in V2016-R2) Tableau Web Connector.

If Tableau Data Extract is selected, static data is exported to files saved on your

hard drive.

Once you select a folder, the .tde files will be created, and the following

message will appear.

OutputStatistics.tde, OutputTrials.tde, and Percentiles.tde. (Although .tde files

are designed to hold multiple tables, currently Tableaus software allows only

one table per file.) When you import this data into Tableau, InputTrials.tde and

OutputTrials.tde will have one row for each trial, Percentiles.tde will have one

row for percentile and OutputStatistics.tde will have one row for each output

function.

Each row of InputTrials.tde will contain the trial value for each

uncertain variable and the simulation index. The number of rows will

equal the number of trials.

Each row of OutputTrials.tde will contain the trial value for each

uncertain function and the simulation index. The number of rows will

equal the number of trials.

Each row of Percentiles.tde will contain the percentile value for each

uncertain function and the simulation index. The number of rows will

equal 99.

Each row of OutputStatistics.tde will contain the Excel cell address

where the uncertain function is located along with 9 statistical functions

(mean, standard deviation, variance, kurtosis, skewness, mode,

minimum, maximum, and range) and the simulation index.

To open the files in Tableau, either double click each file (if using Desktop

Tableau) or click Other Files under Connect and open the desired file(s).

The Tableau Web Connector offers much more flexibility over Tableau Data

Extract by allowing you to refresh your data dynamically inside of Tableau.

which to save four *.html files (InputTrials.html, OutputTrials.html,

Percentiles.html and SimStats.html). The following message will appear.

Note: For a description of each file, see above. The file SimStats.html replaces

the file OutputStatistics.tde.

To open the files in Tableau, open a new workbook in Tableau and click

Connect to Data.

On the Web Data Connector dialog, enter the location displayed on the dialog

shown above, i.e. http://localhost:8080/, and press Enter.

When the following dialog appears, click Constraints.html.

Note: The error highlighted in red is a simple warning that the URL is not

pointing to a Tableau Web Data Connector file. If we had entered a file name,

such as http://localhost:8080/InputTrials.html, the results would have

immediately been uploaded to Tableau.

To add more data, click Data New Data Source on the Tableau ribbon, then

repeat the actions described above.

If your Solver results have changed, you'll need to refresh the results within the

Tableau Web Connector HTML files. To do so:

1. In ASP, re-run your model

2. Click the Tableau icon on the Output tab in the Solver Task Pane.

3. Select Tableau Web Connector and the folder where the files should

be saved.

4. Click OK.

5. In Tableau, click Data Refresh All Extracts to update your data.

For more information on using Tableau, please refer to the Tableau

documentation found at http://www.tableau.com/.

In this section, well explore a simple airline revenue management model, also

known as a yield management model. Well start with a simple simulation

model, like the one in the previous section. But in this section, well see we can

answer further questions by running multiple parameterized simulations and by

solving a simulation optimization model (not available in Risk Solver Pro).

To open this example, click Help Examples on the Ribbon, which opens a

workbook Frontline Example Models Overview.xls. Click Simulation on the

Overview tab to open the SimExamples.xls workbook.

YieldManagement1.xls (a simple simulation model), YieldManagement2.xls

(a model with multiple parameterized simulations), and YieldManagement3.xls

(a simulation optimization model).

A Single Simulation

The model YieldManagement1.xls is shown on the next page.

The model depicts a hypothetical airline flight from San Francisco to Seattle.

The flight has 100 seats, and tickets are $200 per seat. Some passengers who

purchase tickets are no-shows whose seats will be empty; in this example we

assume that such passengers receive a refund of 50% of their purchase price.

To utilize their perishable inventory of seats, the airline would like to sell more

than 100 tickets for each flight. But we assume that Federal regulations require

that any ticketed passenger who is unable to board the flight due to overbooking

is entitled to compensation of 125% of the ticket price.

The airline would like to know how much revenue it will generate from each

flight, less refunds for no-shows and compensation for bumped passengers.

As shown above, this net revenue amount is calculated at cell C15, for any

specific number of tickets sold (110 above) and number of no-shows (5 above).

The uncertain quantity in this model is the number of no-shows; hence we

should model this with an uncertain variable. We quickly realize that the

number of no-shows will depend on the number of tickets sold. After some

research, we decide that we can use a LogNormal distribution for the number of

no-shows: Cell C7 contains the formula =PsiLogNormal(0.1*C11,0.06*C11).

Cell C8 contains =ROUND(C7,0) to ensure that the number of no-shows is an

integer value and this is used to compute Net Revenue at cell C15.

Note that the bottom area of the Task Pane is showing the properties of cell C7:

for example, the mean of the distribution is 10% of the number of tickets sold.

See the chapter Mastering Simulation and Risk Analysis Concepts for advice

on choosing distributions for your uncertain variables.

As shown in the Task Pane, cell C15 is an uncertain function; it is defined as

such because cell C16 contains =PsiMean(C15) to compute the expected (or

average) revenue across all Monte Carlo trials.

To perform a single simulation (with 1,000 Monte Carlo trials), we select

Simulate Run Once from the Ribbon. At the end of the simulation the

following dialog appears displaying the distribution of outcomes in the

Uncertain Function dialog:

The right hand panel shows the statistics, or from cell C15, we see that the mean

or expected net revenue is about $20,000. From the Cumulative Frequency

tab over the chart or by clicking on the drop down menu in the right hand panel

(currently showing Statistics) and selecting Percentiles, we can see that the

10% percentile is $18,300 if we sell 110 tickets, well earn approximately as

much revenue as a full flight (100 seats * $200) 90% of the time. You can see

why airlines find that overbooking makes sense as a policy!

The Scatter Plots tab shows you quick scatter plot of this uncertain function

against one or more uncertain variables, or other uncertain functions. In this

example shown on the next page it shows a scatter plot of C15 (net revenue)

against C7 (number of no-shows).

We can explore the question of how many tickets to sell with Interactive

Simulation: We simply click the Simulate button to turn on the lights:

Now we can simply type a new number of Tickets Sold, such as 125, into cell

C11. Instantly, Analytic Solver Platform performs a new simulation of 1,000

Monte Carlo trials, and updates the Uncertain Function dialog and the worksheet

with the results as shown on the next page.

The new distribution of outcomes is quite different we have more high-

revenue data points but the mean or expected revenue is not so different --

$20,505. Selling 125 tickets does seem to be better than selling 110 tickets, but

were not yet sure that this is the best number of tickets to sell. (Well answer

that question in the next two sections.)

In the meantime, however, Interactive Simulation allows us to play what-if

with this model, changing the parameter that we can control (the number of

tickets sold), while properly modeling the behavior of the parameter we cannot

control (the number of no-shows). As Prof. Sam Savage says, Interactive

Simulation does for uncertainty what the spreadsheet did for numbers.

After playing what-if with Interactive Simulation, we can move to ask

Analytic Solver Platform to automate this process: Vary a parameter (the

number of tickets sold) over a range, performing a simulation for each different

number of tickets sold, and summarize the results.

You can see this by choosing Help Examples on the Ribbon, and clicking

Simulation on the Overview tab as described above. The workbook

SimExamples.xls will open. Click the link to YieldManagement2.xls in the list

of example workbooks. But you can create YieldManagement2.xls from

YieldManagement1.xls in just three steps:

1. Select cell C11, choose Parameters Simulation from the Ribbon,

and enter a lower limit of 100 and upper limit of 150 in the dialog.

This creates a formula =PsiSimParam(100,150) in cell C11.

2. In the Task Pane Platform tab Simulation group, set the Number of

Simulations to 51. Cell C11 will have a value 100 on the first

simulation, 101 on the second simulation, and so on, through 150 on

the 51st simulation.

3. Select cell C15, choose Results Statistic Mean, and select a range

of cells (C25:BA25 is used in YieldManagement2.xls). Analytic

Solver Platform will place =PsiMean(C15,1) in the first cell,

=PsiMean(C15,2) in the second cell, and so on for as many cells as you

specify.

YieldManagement2.xls does this slightly differently, with the same result.

Now, when you choose Simulate Run Once, Analytic Solver Platform will

perform 51 simulations, each with 1,000 Monte Carlo trials, and give you access

to all of the results. On the worksheet, youll see the expected revenue for 100,

101, , 150 tickets sold. And you can use the Uncertain Function dialog to

display the full distribution of outcomes for any of the 51 simulations.

To do this, double-click cell C15 to display the Uncertain Function dialog:

The dialog now includes a dropdown list that allows you to select a simulation

to display. You can examine the Frequency, Cumulative Frequency, Reverse

Cumulative Frequency, Sensitivity, or Scatter Plots tabs for any simulation.

The worksheet will initially display values for the last Monte Carlo trial of the

last simulation performed (except for the cells containing PSI Statistics function

calls such as PsiMean()). But you can display any trial from any simulation, by

changing the selections in the Sim # and Trial # controls on the Ribbon:

By examining this data, you can get a better idea of how many tickets to sell.

But Analytic Solver Platform can help your further.

Analytic Solver Platform has rich facilities for reports and charts across multiple

simulations. Well cover just two chart examples; see the Frontline Solvers

Reference Guide for further information.

First, select Charts Multiple Simulations Trend from the Ribbon.

Analytic Solver Platform displays a dialog where you can select one or more

simulations to include in the chart. Click the >> button to select all 51

simulations:

The number of tickets sold is on the horizontal axis. Analytic Solver Platform

shows the mean, 25th and 75th percentile, and 10th and 90th percentile values of

net revenue at C15 (this was the only choice in the dropdown list at the top left

of the Multiple Simulations dialog). We can see that the mean or expected net

revenue peaks at about 116 or 177 tickets sold.

For another view of this information, select Charts Multiple Simulations

Box-Whisker from the Ribbon, and again select all 51 simulations to be

included in the chart. Analytic Solver Platform draws the following chart:

This shows a Box-Whisker diagram for each of the 51 simulations, with the

mean, median, 25th and 75th percentiles, and the minimum and maximum value

for net revenue on each one. You can click the right edge of the Trend and Box-

Whisker charts to open a right panel with options for customizing these charts.

You can use the icons on the title toolbar to print the chart, or copy it to the

Clipboard, where it can be pasted into another application such as PowerPoint.

Simulation Optimization

Running multiple parameterized simulations, and examining the results on the

worksheet and in chart form, has given us a good deal of intuition about the

behavior of this simulation model. But Analytic Solver Platform, Risk Solver

Paltform, Analytic Solver Pro and Risk/Premium Solver Pro can directly answer

the question How many tickets should we sell to realize the maximum expected

net revenue?

You can see this by choosing Help Examples on the Ribbon, then clicking

Simulation on the Overtab. The workbook SimExamples.xls will open. Click

the link to YieldManagement3.xls in the list of example workbooks. But you

can create YieldManagement3.xls from YieldManagement1.xls in just three

steps:

1. Select cell C11, and click Decisions on the Ribbon. This makes the

number of tickets sold a decision variable for optimization.

Alternatively, click the down arrow under Decisions, then select

Normal to make the number of tickets sold a decision variable.

2. With C11 still selected, click the down arrow under Constraints, then

choose Variable Type/Bound Integer from the menu. This

specifies that C11 must have an integer value at the optimal solution.

Alternatively click Constraints to open the Add Constraint dialog, then

select int for the sense of the constraint and click OK.

3. Select cell C16, click the down arrow under Objective, then choose

Max Normal from the menu. The optimizer will maximize C16: =

PsiMean(C15), the expected value of net revenue. Alternatively, click

Objective, then OK to accept the defaults.

The model in Task Pane will now look like the one pictured below (we scrolled

down to show both the optimization and simulation model elements):

chosen the LSGRG Nonlinear Solver from the dropdown list on the Engine tab,

to solve the problem. (Other choices are possible, but this one is simplest for

this example problem.)

Now we can simply click the Optimize button on the Ribbon. In a fraction of a

second, the solution of 116 or 117 tickets sold appears in C11 (the exact number

depends on the simulation Random Seed), and the expected value of net revenue

for this number of tickets appears at C16 (about $20,500). Solver found a

solution. All constraints and optimality conditions are satisfied appears in

green in the Output tab of the Task Pane, as shown on the next page.

Note that this required less than a page to explain how you can get answers to

questions like How many tickets should we sell to realize the maximum

expected net revenue?

Using a Compound Distribution

Starting with V2016-R2, Analytic Solver Platform includes the ability to sum

multiple independent random variables using a compound distribution. A

compound distribution generates values for the sum of N independent identically

distributed uncertain variables.

across the board. For example, in the insurance industry, compound

distributions may be used to estimate the amount of claim payouts to customers

or a portfolio of policies over a period of time. In healthcare, compound

distributions can be utilized for many reasons including to estimate the total

amount of demand for a specific drug over a period of time, the number of days

a patient will spend in hospital or to estimate the total amount of exposure to a

certain toxin (i.e., radiation or radon) that a group of people might encounter in

their lifetime. In addition, compound distributions are used in the food industry

to estimate the total number of patients that will become sick due to a food-

borne illness.

primary cause of errors in a simulation model. In an effort to reduce these

errors, Frontline Systems has implemented compound distributions with the

introduction of a single property, PsiCompound(). This property supports any

existing Psi Distribution function except the Psi multi-variate functions

(PsiMVLogNormal, PsiMVNormal, PsiMVResample, and PsiMVShuffle),

PsiSip, and PsiSlurp. PsiCompound is amended to a Psi Distribution, i.e.,

PsiBeta(3,2, PsiCompound(100)) The signature of this property is:

"frequency" distribution. Assume the following compound distribution,

=PsiBeta(3, 2, PsiCompound(A2)), where A2 = PsiPoisson(100). PsiBeta(3,2)

is referred to as the "severity" distribution. The severity distribution is the

distribution to be added N times. PsiPoisson(100) is referred to as the

"frequency" distribution. The frequency distribution determines the size N of

the sum (i.e, how many PsiBeta to sum). N can be a constant but can also be

computed at each trial by drawing from a discrete distribution.

to be summed. Number_cell can be an integer, a cell containing an

integer, a formula evaluating to an integer, or a cell containing a

discrete distribution.

or a continuous distribution is passed to this argument, the result will

be rounded down to the nearest integer.

the frequency distribution must be formulated in such a way that the

trial values generated by the distribution must be greater than 1. If not,

trial values < 1 will be set equal to 1.

term of the compound sum which results in a shift of the compound

distribution by -N * deduction.

If a trial value is larger than a specified limit, then the trial value is

reset to the limit.

automatically selects from several different compounding methods.

example "=PsiExponential(par, PsiCompund(N))" can be

computed as PsiGamma(N, par). Analytic Solver Platform can

immediately sample from this "shortcut" distribution.

distribution analytically, but the frequency of the severity function

(N) is greater than the value for the CLT Threshold option, then

the distribution will be computed according to the Central Limit

Theorem as PsiNormal(m, s). The parameters m and s will be

computed analytically from the corresponding analytical moments

of the severity distribution. The maximum value allowed for the

CLT Threshold option is 1000 while the minimum value allowed is

1. The default setting is 100.

Otherwise, the compound distribution will be computed using

Monte Carlo simulation to sum up N independent variates of the

severity distribution.

The following examples illustrate how to use the PsiCompound() property when

a discrete distribution or a constant value is passed to the number_cell argument

Imagine an insurance policy has two basic classes of insured members, class A

and class B; there are 50 class A members and 10 class B members. The number

of claims from class A members follows a Negative Binomial distribution with

parameters (5, 0.25), and the number of claims from class B members follows a

geometric distribution with parameter 0.25. The size of a claim from class A

members follows an exponential distribution with mean $40,000, and the claim

size from class B members is distributed with a Pearson 5 distribution with

parameters (10, 2000000). In other words, if there are six Class A claims, the

size of the payout for each of the six claims will follow the

PsiExponential(40000) distribution. Calculate the expected claim payment for

both classes.

1. Let's start by formulating the compound distribution for the Class A

members. Recall that the number of Class A claims follows a Negative

Binomial distribution using a success parameter = 5 and probability

parameter = 0.25 while the size of a Class A claim follows an

exponential distribution with mean $40,000.

In this example, PsiExponential(40000) is the severity distribution.

This is the distribution that will be added together. If there are six

claims, then PsiExponential(40000) will be compounded six times.

The frequency distribution is the number of Class A claims,

=PsiNegBinomial(5, 0.25, PsiTruncate(0, 50)).

Note: Since there are 50 class A members, the PsiTruncate property is

used to ensure that sample values always lie within the range from 0 to

50.

If A1 = PsiNegBinomial(5, 0.25, PsiTruncate(0, 50), the full

compounding formula for the amount paid to Class A claims can be

entered into cell A2 as "=PsiExponential(40000, PsiCompound(A1))".

2. Now we can formulate the compound distribution to calculate the

payouts for the Class B members. The second compound distribution

may be formulated in the same manner. PsiPearson5(10, 2000000) is

the severity distribution while =PsiGeometric(0.25, PsiTruncate(0, 10))

is the frequency function. Since there are 10 class B members,

PsiTruncate is used to ensure that sample values lie within the range 0

to 10.

If B1 = PsiGeometric(0.25, PsiTruncate(0, 10), the full compounding

formula for the amount paid to Class B claims can be entered into cell

B2 as "= PsiPearson5(10,2000000, PsiCompound(B1))".

3. Enter =PsiMean(A1) and =PsiMean(A2) in cells A3 and B3,

respectively, to calculate the total expected payout to each class.

Run a simulation by clicking the green arrow on the Output tab on the

Solver Task Pane. Instantly, Analytic Solver Platform performs a new

simulation of 1,000 Monte Carlo trials, and updates the Uncertain Function

dialog and the worksheet with the results as shown on the next page.

Double click the distribution for $A$2(var) to open the uncertain function dialog

for cell A2.

distribution, you will see added fields on both the Parameter and Analytic

Moments menus. Curves displayed in the Uncertain Variable dialog and

statistics listed under the Parameters tab are related to the "severity" distribution.

On the Parameter tab, the Compound field will appear under Parameters. (If the

distribution is not a compound distribution, this field will be blank.) This field

holds the arguments passed to the PsiCompound property.

Click the down arrow next to Parameters and select Analytic Moments from the

menu.

On the Analytic Moments menu, four additional statistics relating to the

compound distribution appear under Compound Analytic Moments: Mean,

Variance, Standard Deviation and Skewness. Statistics listed under Analytic

Moments relate to the severity distribution.

Recall that it is also possible to pass an integer, a cell containing an integer or a

formula evaluating to an integer to the number_cell argument, the first argument

of PsiCompound().

Imagine a department store manager predicting demand for snowboards for the

coming winter season. From past analysis, she knows that the purchasing

behavior of customers that visit her store follow the PsiGamma distribution with

parameters of shape = 4 and scale = 1. She expects 1000 customers in the

month of October. Using a compound distribution, calculate the expected

number of snowboard purchases.

The severity distribution in this example is PsiGamma(4,1). Since N = 1000, a

constant, no frequency distribution exists. Therefore, the syntax for this

compound distribution would be =PsiGamma(4, 1, PsiCompound(1000).

Select the cell containing the compound distribution, then click Results

Output In Cell on the Analytic Solver Platform ribbon; "+ PsiOutput()" will

be amended to the existing formula.

Again, run a simulation by clicking the green arrow on the Output tab of the

Solver Task Pane. Instantly, Analytic Solver Platform performs a new

simulation of 1,000 Monte Carlo trials, and updates the Uncertain Function

dialog and the worksheet with the results. If the worksheet only contains this

one output function, the following dialog appears.

To view the compound distribution results, click the Show Input icon, circled

below.

The Uncertain Variable dialog opens. Again, we see the Compound field, but

this time, the constant 10 appears here.

Click the down arrow next to Parameters to view the Analytic Moments for both

the severity distribution (under Analytic Moments) and the compound

distribution (under Compound Analytic Moments).

Publishing a Simulation Model to Excel Online or

Google Sheets

In late 2014, Frontline Systems released Solver App for use with Excel 2013 and

Solver Add-on for use with Google Sheets. With the Solver App you can define

and solve simulation problems in your Excel workbook, using Excel Online in

Office 365, the Excel Web App in SharePoint 2016 or 2013, or desktop Excel

2016 or 2013. With the Solver Add-on, you can define and solve simulation

problems in Google Sheets. You can create and solve models on tablets,

phones, or anywhere a Web browser can be used. Solver models that you may

already have created in old or new versions of Microsoft Excel, are

automatically recognized by the Solver App and , after the existing worksheet is

published, with the Solver Add-on.

In Analytic Solver Platform, the Freeze and Thaw buttons have been combined

into a single Publish button, as shown in the screenshot below. (In Premium

Solver Pro/Platform where there was no Freeze/Thaw function, the Ribbon now

includes a Publish icon.)

Like the Freeze button, the Publish button can be used to prepare a workbook

for distribution to other users who dont have Analytic Solver Platform or its

subsets installed: All formulas containing Psi function calls (which would yield

#NAME? for other users) are replaced by their values, and the formulas are

saved, so they can be restored later by choosing Unpublish (equivalent to the

old Thaw).

But the major use of the Publish button is to prepare a workbook for use with

our Risk Solver App for Excel Online and our Risk Solver Add-on for Google

Sheets (the online spreadsheets have limited or no support for user-defined

functions).

In Analytic Solver Platform, when a model is published, the limits for Solver

App (for Excel Online) and Solver Add-on (for Google Sheets) will be

automatically adjusted to match the problem limits of your license. For

example, if you purchased a license for Analytic Solver Platform, then you will

be able to run simulation models with an unlimited number of uncertain

variables and functions, if you publish your model first by clicking the Publish

button on the Analytic Solver Platform (or any ASP Subset) ribbon.

Lets go back to the YieldManagement1.xls example used in the section above,

click the Publish icon on the Ribbon to display the following dialog.

Select Google Sheets then Publish. (If you are a user of Excel Online, please

see the example below.) If you inspect the worksheet, youll notice that all Psi

functions have been replaced with actual values. For example, cell C16 which

used to contain the PsiMean() function, now contains a value of $19,00.40.

Make sure to save the workbook before uploading to Google Drive.

open this file in Google Sheets.

Click the orange New button then select File Upload to upload the

YieldManagement1.xls spreadsheet to Google Drive.

Browse to the location of the file, typically C:\Program Files (x86)\Frontline

Systems\Analytic Solver Platform\Examples (if using 32 bit Excel with 64 bit

Windows) or C:\Program Files\Analytic Solver Platform\Examples (if using 64

bit Excel or 32 bit Excel with 32 bit Windows). The

YieldManagementModel1.xls will appear under My Drive.

Double click YieldManagementModel1.xls, the file opens in Google Drive

Preview Viewer (shown below). Click Open Google Sheets.

To add the Solver Add-on, choose the menu option Add-ons - Get Add-ons...

In the Add-ons dialog, scroll until you see Risk Solver. Click to select and

install.

Once these steps are finished, Risk Solver should now appear on the Add-ons

menu.

Choose Add-ons - Risk Solver - Start. The Risk Solver Task Pane (Google calls

this a Sidebar) will appear. The uncertain variable that appears in cell C7 is

displayed in this tab.

Click the distribution to change the distribution type and parameters or to view

the cell formula and address.

Click Cancel to leave everything as is or OK for Risk Solver to accept any

changes. For this example, well click the Cancel button to leave the

Distribution as PsiLogNormal.

Click the green arrow at the top of the sidebar to run a simulation. (Click the

Cancel button to stop the simulation before finishing.)

In the sidebar, the Output tab appears with a small frequency chart containing

the uncertain function in cell C15. Click the chart to enlarge it. Click the

Frequency tab to view statistics (mean, standard deviation, variance, skewness,

kurtosis, mode, minimum, maximum, and range) or Percentiles (1 100).

For more information on the statistics, please see the corresponding Psi function

(PsiMean, PsiMean, PsiStdDev (Standard Deviation), PsiVariance,

PsiSkewness, PsiKurtosis, PsiMode, PsiMin, PsiMax or PsiRange) in the Psi

Function Reference chapter in Frontline Solvers Reference Guide.

Click the Sensitivity tab to view a Tornado chart that shows you how much

Total Revenue changes with a change in the uncertain variable in cell C7. In

this model there is only one uncertain variable. This chart shows a negative

correlation between the Number of No-Shows and Total Revenue. For more

information on this tab, please see the section, A First Simulation Example

above.

Select the Correlations tab to view the same negative correlation between the

uncertain variable in cell C7 and the uncertain function in cell C15. For more

information on this tab, please see the section above.

Click the icon to go back to the Output tab or click the left

and right arrow icons to increment through each of the simulation trials. (The

default is 1000.) To change the number of trials per simulation or other option

settings, click the icon in the upper right corner of the Sidebar. For more

information on these options, please see the chapter Platform Solver Options in

the Frontline Solvers Reference Guide.

Now lets Publish this same model to Excel Online. Lets go back to Excel and

YieldManagement1.xls. Afterwards, click Publish Unpublish. Immediately,

all PsiFunctions are restored in cells C7 and C16.

Click Publish Publish again, but this time select Excel Online, then click

Publish.

SharePoint or Office 365 site.

Note: In order to use the Risk Solver App, your file must be saved on

SharePoint or Office 365 site. This app cannot solve models saved on your

local hard drive.

Open the workbook using Excel Online, then click Edit Workbook Edit in

Excel Online.

Click Insert Apps for Office.

Select the Store tab and search for Risk Solver, then select (1st app in the list)

and Install. Note: A Premium Solver app which solves linear models with more

than 200 variables and nonlinear models with more than 200 variables and 200

constraints is available for purchase. Please contact Frontline Systems for more

information at sales@solver.com.

The Risk Solver App task pane opens on the right of your screen.

The uncertain variable that appears in cell C7 is displayed in this tab. Click the

distribution to change the distribution type and parameters or to view the cell

formula and address as shown in the Google Sheets example above.

Note: In the Solver App red vertical lines have been drawn at the 5% and 95%

percentiles.

Click the green arrow at the top of the task pane to run a simulation. (Click the

Cancel button to stop the simulation before finishing.) If running for the first

time, you will be asked to Trust the app.

To cancel the simulation before completion, click Cancel.

In the sidebar, the Output tab appears with a small frequency chart containing

the uncertain function in cell C15. Click the chart to enlarge it. Click the

Frequency tab to view statistics (mean, standard deviation, variance, skewness,

kurtosis, mode, minimum, maximum, and range) or Percentiles (1 100). Click

the Sensitivity tab to view a Tornado chart which illustrates the negative

correlation between the Number of no-shows (uncertain variables) and Total

Revenue (uncertain function) and the Correlations tab to view the relationship

between the uncertain variable in cell C7 and the uncertain function in cell C15

as a scatter chart. For more information on either of these tabs, please see the

Google Sheets example above.

Click the icon to go back to the Output tab or click the left

and right arrow icons to increment through each of the simulation trials. (The

default is 1000.) To change the number of trials per simulation or other option

settings, click the icon in the upper right corner of the Task Pane. For more

information on these options, please see the chapter Platform Solver Options in

the Frontline Solvers Reference Guide.

Examples: Stochastic

Optimization

Introduction

This chapter introduces stochastic optimization in Analytic Solver Platform,

with a series of examples.

To open the examples, click Help Examples on the ribbon. Click the

Stochastic link on the Overview tab to open a workbook StochasticExamples.xls

which includes three worksheets.

open this example.

We use the term stochastic optimization to mean optimization of models that

include uncertainty, using any solution method. Analytic Solver Platform offers

an exceptional level of power to find robust optimal solutions to models with

uncertainty, using three different solution methods:

Simulation optimization

Stochastic programming

Robust optimization

The first method, simulation optimization, is also available in Risk Solver

Platform, Analytic Solver Pro and Risk/Premium Solver Pro, and is the only

method in other software products such as Crystal Ball Professional and @RISK

Industrial. It handles very general models, but it is not scalable to large models

(with thousands of variables and constraints), and it doesnt support the

important modeling concept of recourse decisions.

Stochastic programming and robust optimization can be applied only to

linear and quadratic programming models with uncertainty, but they are scalable

to large models. Either Analytic Solver Platform or Risk Solver Platform is

required to use these methods.

A Project Selection Model

Our first example may surprise you: It is a capital budgeting problem, where the

projects being considered for funding have uncertain future cash flows. Models

similar to Project Selection have been used with other software products for

many years to illustrate how simulation optimization can be used to optimize

models with uncertainty. Well show how to do this in Analytic Solver

Platform, Risk Solver Platform, Analytic Solver Pro or Risk/Premium Solver

Pro, using simulation optimization and the Evolutionary Solver with much

better performance. But when we use Analytic Solver Platform to analyze the

structure of this model, well see that this model doesnt require simulation

optimization at all. We can solve this model in a fraction of a second using

the LP/Quadratic Solver!

In Project Selection, eight different capital projects are proposed for funding.

Each one has a known initial investment. Each project has a 90% chance of

success, and if a project succeeds, it will have an uncertain (but positive) future

cash flow. Funding all eight projects would require a total initial investment of

$2.5 million, but our capital budget is only $1.5 million. Hence, we must

choose a subset of the projects to fund that will maximize our expected total

future cash flow, while ensuring that our total initial investment doesnt exceed

our $1.5 million budget.

Click the tab for the Projection Selection model, shown below.

To model the uncertainty in this problem, we use PSI functions that define

uncertain variables with certain probability distributions. We can create these

functions via the Distributions dropdown gallery and the Uncertain Variable

dialog, as shown in the last chapter, or we can just type in the formulas.

To model the Cash Flow if Successful in column C, we use the

PsiTriangular() function, specifying a minimum, most likely, and maximum

cash flow. For example, the formula in C4 is =PsiTriangular(400000, 500000,

900000).

To model the Chance of Success in column D, we use =PsiBinomial(1,D2)

where D2=.9. On each trial, this distribution returns 1 with probability 90% and

0 with probability 10%. In column E we multiply the Cash Flow if Successful

and the Chance of Success to obtain the Expected Cash Flow.

Column G computes the net cash flow the Expected Cash Flow in column E

minus the Initial Investment in column F. Column H holds our decision

variables, which are constrained to be binary integer (0 or 1 at the solution).

Cell F13 computes the total initial investment as the SUMPRODUCT of the

project initial investments (column F) and the 0-1 variables in column H. In the

model, F13 is constrained to be less than the $1.5 million budget in F14.

Cell F16 computes the total cash flow as the SUMPRODUCT of the project net

cash flows and the 0-1 variables in column H. Cell F17 unique to a model

with uncertainty contains =PsiMean(F16): It computes the mean (expected)

value of total net cash flow. This is the objective function we want to maximize.

Were asking Analytic Solver Platform to find the best combination of projects

by finding 0 or 1 values for the selection variables at H4:H11 to maximize cell

F17, the expected value of total net cash flow, subject to the constraint that the

total initial investment doesnt exceed our $1.5 million budget.

Well first solve this problem using simulation optimization. To do this, go to

the Task Pane Platform tab, and change the Solve Uncertain Models option to

Simulation Optimization. (Well see later what happens when we allow

Analytic Solver Platform to choose the solution method automatically.)

On the Engine tab, select the Evolutionary Solver from the dropdown list.

Why do we choose these settings? In the case of other software products, its

because simulation optimization is the only technology they have and if your

only tool is a hammer, every problem looks like a nail. Simulation

optimization is also a very general approach that can handle nonlinear and non-

smooth functions, and its comparatively easy to understand.

The idea behind simulation optimization is straightforward: For each set of

values for the decision variables considered by the optimizer, we perform one

simulation, a compute user-specified summary measures such as

=PsiMean(F16) in the Project Selection model for the constraints and/or

objective that depend on uncertainty. The optimizer uses these summary

measures to decide what set of values it should try next for the decision variables

and the process is repeated.

The great strength of simulation optimization is its generality but this is also

its weakness: It requires a new simulation at each step of the optimization, and

because the method assumes no structure in the model, in general the number of

steps can grow exponentially with the number of variables and constraints.

Now click the Optimize button on the Ribbon, or the green arrow in the Task

Pane. After a second or two (much faster than other software products), you can

press ESC to stop the Evolutionary Solver and display the best solution found so

far as shown on the next page.

Weve decided to fund projects #1, 3, 4, 5, and 7 for an expected total net cash

flow of $1,389,477. Thats a great result. But how much work did we do to

solve this model, and did we need to do that much work? It might not matter for

a small model like this one but for a scaled-up model that might involve

hundreds or thousands of projects, the solution might have taken far more time.

Solving Automatically

Lets allow Analytic Solver Platform (or Risk Solver Platform) to choose the

solution method and the Solver Engine automatically. To do this, go to the Task

Pane Platform tab, and change the Solve Uncertain Models option to

Automatic.

On the Engine tab, check the box to automatically select a Solver Engine.

Now click the Optimize button on the Ribbon, or the green arrow in the Task

Pane. To resolve value in F17, simply double click cell F16 and click "Yes" to

run a simulation. The results are shown on the next page.

$1,389,477 and the same projects selected, with the message Solver found a

solution. All constraints and optimality conditions are satisfied. This means

that Analytic Solver Platform found a proven globally optimal solution

whereas with simulation optimization, we never know whether the solution we

found is optimal. How did this happen?

If you examine the solution log, youll see these messages:

Using: Full Reparse.

Parsing started...

Diagnosis started...

Warning: Canceled diagnostics *0 at 'Project Selection'!F16; 6 Canceled diagnostics found.

Uncertain input cells detected.

Attempting Stochastic Transformations...

Using: Full Reparse.

Parsing started...

Diagnosis started...

Convexity testing started...

Warning: Canceled diagnostics *0 at 'Project Selection'!F16; 22 Canceled diagnostics found.

Stochastic Transformation succeeded using Deterministic Equivalent.

Transformed model is "LP/MIP".

Automatic engine selection: Standard LP/Quadratic

Model: [StochasticExamples.xls]Project Selection

Using: Psi Interpreter

Parse time: 0.28 Seconds.

Engine: Standard LP/Quadratic

Model defined on the spreadsheet doesn't allow using PSI Interpreter with multiple threads.

Switching to one thread.

Setup time: 0.01 Seconds.

Solver found a solution. All constraints and optimality conditions are satisfied.

Solve time: 0.45 Seconds.

Model: StochasticExamples.xls

Successful Trials: 1000

Error Trials: 0

Total Trials: 1000

Analytic Solver Platform analyzed the model and diagnosed it as a Stochastic

LP (linear programming) problem, with 8 variables, 2 functions (objective and

budget constraint), and 16 uncertainties (the PsiTriangular() and PsiBinomial()

functions) that affect the objective. As youll see in the chapter Mastering

Simulation and Risk Analysis Topics, Analytic Solver Platform and Risk

Solver Platform can solve a Stochastic LP using two other methods besides

simulation optimization stochastic programming and robust optimization. For

this model, it chose a transformation to Stochastic Programming Deterministic

Equivalent form.

But this model is so simple that Analytic Solver Platform determined that no

transformations were needed to solve the problem. Despite the presence of

uncertainty, this model doesnt require simulation optimization at all. There

was no need to run hundreds of Monte Carlo simulations (or many more, with

some alternative software products). It was sufficient to run one Monte Carlo

simulation at the beginning, to compute the constant linear coefficients of the

objective function. Project Selection is simply an LP/MIP (linear mixed-integer

programming) model!

In this small model, we found the same solution within seconds using both

methods. But in a scaled-up model in a large company, with hundreds or even

thousands of projects, Analytic Solver Platforms ability to analyze the structure

of the model could make all the difference between a solution of unknown

quality, found after a long wait using the wrong approach and a proven

optimal solution, found within seconds using the right approach.

The worksheets Gas Company Chance and Gas Company Recourse in

StochasticExamples.xls are related they both describe the same problem, but

with different assumptions about when a certain decision must be made. With

Gas Company Chance, well show how a problem with uncertainty can be

formulated with a chance constraint, and solved using robust optimization

methods. With Gas Company Recourse, well show how to use a wait and see

or recourse decision a capability not available at all with simulation

optimization to obtain a better optimal solution.

We hope these examples will motivate you to read the chapter Mastering

Simulation and Risk Analysis Topics, which will give you a unified view of the

crucial characteristics of models with uncertainty, and the options of solving

them with simulation optimization, stochastic programming, and robust

optimization methods.

Click the Gas Company Chance tab to display the model, which is pictured on

the next page.

In this model, a gas company purchases natural gas from suppliers and resells it

to consumers in its service area. Consumer demand is known to be 100 units

this year (cell C7), but is uncertain for next year (cell C8); the company must

meet this demand with high probability, or it will encounter public relations and

regulatory problems. The price of gas is known to be $5.00/unit this year (cell

C4), but is uncertain for next year (cell C5): If the weather is very cold, demand

may reach 180 units, and the price may reach $7.50/unit, but if the weather is

warm, demand may remain at 100 units, and the price may remain at $5.00/unit.

The companys goal is to minimize its total cost of purchased and stored gas

(cell C25). It decisions are:

How much gas to purchase and resell to consumers this year (cell D14)

How much gas to purchase this year and store (cell D15) , at a cost of $1

per unit, for use next year

How much to purchase and resell to consumers next year (cell D18)

In Gas Company Chance, we assume that the gas company must commit to all

of its gas purchases this year, before next years demand is known: All three

decision variables D14, D15 and D18 are normal or here and now decisions.

(In the next section, well consider Gas Company Recourse, where we assume

that next years gas purchases can be determined on a wait and see basis.)

Gas Company Chance has a constraint that the company must have enough gas

to meet next years uncertain demand with high probability. Well model this

in Analytic Solver Platform with a chance constraint. Our objective function

total cost, to be minimized depends in part on next years uncertain gas price.

We will therefore seek to minimize the expected value of total cost.

The objective appears as Expected($C$25) (Min) in Gas Company Chance,

we used the Ribbon to define the objective interactively, rather than a PsiMean()

function on the worksheet, as we did earlier in Project Selection. The decision

variables are cells D14, D15 and D18, as explained earlier; each of these is

constrained to be non-negative, as shown in the Bound section of the outline.

At C22 we calculate =D14-C7 (this years gas purchases minus this years

demand), and at C23 we calculate =D15+D18-C8 (gas purchased and stored this

year, plus gas purchased next year, minus next years uncertain demand).

The normal constraint $C$22 = 0 specifies that we must meet this years

consumer demand exactly (forcing D14 to 100). The chance constraint

VaR0.95($C$23) >= 0 requires that the 95th percentile of C23, over all

realizations of the uncertainty, must be non-negative in other words, we must

meet demand with 95% probability.

We could express this chance constraint by placing =PsiPercentile(D15+D18-

C8,0.95) in cell C23, and using the Ribbon to define a normal constraint C23 >=

0. But while PsiPercentile and other PSI Statistics functions are acceptable for

simulation optimization, the transformation for robust optimization requires that

we express the chance property directly in the constraint itself, not in a formula.

We could solve this model using simulation optimization, as we did for Project

Selection in the previous section. But here, we want to show how Analytic

Solver Platform (or Risk Solver Platform) can automatically transform this

stochastic linear programming problem with its expected value objective and

chance constraint into a larger conventional optimization model, using the

methods of robust optimization.

The idea behind robust optimization is to transform an optimization problem

with known structure such as a stochastic linear programming problem into

a larger, conventional robust counterpart problem that accounts for the impact

of bounded uncertainty on the constraints and objective. Analytic Solver

Platform performs one simulation at the outset, to assess the impact of

uncertainty and construct the robust counterpart problem. Solving the robust

counterpart a single LP or SOCP problem gives us an approximate solution

to the original stochastic problem.

The strength of robust optimization is its scalability to very large problems

since only one simulation and one optimization of an LP or SOCP problem is

required. But robust optimization cannot solve more general nonlinear, non-

convex problems.

As saved, the model is ready to be solved using robust optimization. But to see

the difference between the original model a stochastic linear programming

model and the robust counterpart model that is the result of the transformation,

well first set the Solve Uncertain Models option to Simulation Optimization:

and then click the Analyze button to analyze the structure of the model. The

Model Diagnosis section of the Task Pane Model tab pops up to show the

results, as shown below.

uncertainty (the Beta distribution at cell D5, which models the weather). Now,

well set the Solve Uncertain Models option to Automatic:

and click the Analyze button again this will analyze the structure of the

transformed robust counterpart model.

The transformed model has 9 variables and 8 functions (instead of 3 and 3), but

it has 0 uncertainties its a conventional linear programming model. Solving

this robust counterpart model will give us an approximate (and somewhat

conservative) solution to the original stochastic LP problem.

Technical note, explained in the chapter Mastering Simulation and Risk

Analysis Topics: The robust counterpart model is an LP because the Platform

tab Chance Constraints Use option is set to D Norm. If it had been set to L2

Norm, the robust counterpart model would have been an SOCP.

Now click the Optimize button, or the green arrow on the Task Pane. In a

fraction of a second, the solution appears, with the message Solver found a

conservative solution to the robust chance constrained problem. All constraints

are satisfied. You can click this message to display Help with a more

complete explanation of what this means. To resolve the formula in cell C26

double click cell C25 and click "Yes" to run a simulation. The results are shown

below.

We run one simulation to see the expected value of the objective, which is about $1,509,

lower than the initial value of $1,693. But our chance constraint is not only satisfied but

over-satisfied we meet consumer demand about 99% of the time, when we asked for

only 95%. This solution is more conservative than necessary.

But Analytic Solver Platform can automatically improve this solution, by adjusting the

size of the uncertainty set for the chance constraint. To do this, click the special

button to Auto Adjust Chance Constraints that appears at the top of the Task Pane.

After a moment, a new solution appears with the message Solver has converged to the

current solution of the robust chance constrained problem. All constraints are satisfied.

To resolve cell C26, double click cell C25 and click "Yes" to run a simulation. The

results are shown on the next page.

We run one simulation to see the expected value of the objective, which is about

$1,447. As noted earlier, this very simple model could have been solved via

simulation optimization; but with robust optimization, we can scale up a model

like this one to large size, and solve it efficiently using the LP/Quadratic Solver,

or any of several large-scale Solver Engines.

We now have a good solution to the Gas Company problem, found with either

simulation optimization or robust optimization. But we can do better than this

we can reduce our expected total cost to $1,276, a significant improvement.

We can do this provided that the business situation permits us to make the

decision of how much gas to purchase next year on a wait and see basis, after

the uncertainty of the weather is resolved a so-called recourse decision. In

this example, our gas supplier must accept our purchase order next year, and not

require us to commit to a specific amount of gas this year for delivery next year.

One of the most important messages we can convey is this: If the business

situation permits you to make some decisions on a wait and see basis, its

crucial to include this in your optimization model. If you dont do this, you

may find an optimal solution to the wrong model for the actual business

problem.

We emphasize this because so many people have built models that dont include

wait and see decisions, because (i) they havent learned this concept and (ii)

their software hasnt allowed them to create models with recourse decisions.

Simulation optimization is very popular, but as described in the technical

literature and implemented in software, it has no concept of recourse decisions.

In the next example, Gas Company Recourse, well assume that our decision of

how much gas to purchase next year can be made on a wait and see basis, after

the uncertainty of the weather has been resolved. Click the Gas Company

Recourse tab to display the model, which is pictured on the next page.

This model has the same objective (C25), the same decision variables (D14, D15

and D18), and the same constraints (C22 and C23) as in EXAMPLE2. It differs

in just two ways: (i) Cell D18 the amount of gas to purchase next year

appears as a recourse decision variable. (ii) Cell C23 is no longer a chance

constraint it is a normal constraint, and in fact its = rather than >= we

expect to satisfy next years consumer demand exactly. The recourse decision

variable allows us to do this in each possible future scenario, once the weather

uncertainty is resolved and consumer demand is known, we will purchase just

the amount of gas we need to meet demand.

We cannot solve Gas Company Recourse with simulation optimization,

since this method has no concept of recourse decisions. But we can use robust

optimization methods to transform and solve Gas Company Recourse, much as

we did with Gas Company Chance. We can proceed in much the same way. If

we analyze the structure of the original model (by clicking the Analyze button

with the Solve Uncertain Models option set to Simulation Optimization), we

find that it is a stochastic LP:

Again the model has 3 variables, 3 functions, and 1 uncertainty but now 1 of

the 3 variables is a recourse decision variable. Note that the recourse variable

plays a role in 2 functions the objective, and the constraint that requires us to

meet next years consumer demand. Our recourse decision variable will have

many possible values at the optimal solution one for each realization of the

uncertain demand. With default settings in Analytic Solver Platform (1,000

Monte Carlo trials in a simulation), the Solver will find 1,000 different values

for D18.

If we analyze the structure of the robust counterpart model (by clicking the

Analyze button with the Solve Uncertain Models option set to Automatic or

Stochastic Transformation, and the Stochastic Transformation option set to

Robust Counterpart), the result is:

The robust counterpart has 9 variables and 8 functions, but the uncertainty and

the recourse decision have been eliminated, yielding a conventional linear

programming model. As with Gas Company Chance, solving this robust

counterpart model will give us an approximate solution to the original problem.

Now click the Optimize button, or the green arrow on the Task Pane. In a

fraction of a second, the solution appears, with the message Solver found a

solution. All constraints and optimality conditions are satisfied. As shown on

the next page, the expected value of the objective is now about $1,365 a

considerable improvement over the minimum cost of about $1,434 in Gas

Company Chance.

As noted above, our recourse decision variable will have many possible values

at the optimal solution one for each realization of the uncertain demand. We

can see these different realizations (there are 1,000 different values) by clicking

the left and right arrows on the Ribbon, which display different Monte Carlo

trials from the last simulation. Starting in V2015, it's also possible to enter the

number of trials directly into the Trials field.

If you examine the trials, youll see the pattern: The optimal solution is to not

store any gas in Year 1 for use in Year 2, but instead to buy just enough gas to

meet the uncertain demand in Year 2. (With higher gas costs or lower storage

costs, the optimal solution might change.) Double click cell C25 and click

"Yes" to run a simulation and resolve the contents of cell C26.

This solution offers a lower expected cost (the average cost over all future

scenarios) because of the flexibility introduced by use of a recourse decision.

And we were able to do this because we created the right kind of model for the

business situation.

The moral of this story is that Analytic Solver Platform gives you the power to

solve such problems, using three different technologies simulation

optimization, stochastic programming, and robust optimization. But its up to

you to take advantage of the concept of recourse decisions when they can be

used and create the right kind of model for your companys business situation.

Creating Your Own Application

Introduction

If using Analytic Solver Platform V2016-R2 you have the ability to not only

create, design and solve your optimization, simulation and stochastic

optimization models in Microsoft Excel, but you now also have the ability to

embed your model into your own application and solve it on the Web by calling

our RASON Server.

RASON (which stands for Restful Analytic Solver Object Notation) is Frontline

Systems' newly released modeling language embedded in JSON and a REST

API that makes it easy to create, test and deploy analytic models using

optimization, simulation and data mining, in web and mobile applications.

Users of Frontline's Excel Solvers will find that it's easy to translate Excel

models into RASON models, that your knowledge of Excel formulas and

functions is immediately usable, but that RASON models can be more flexibly

"bound" to data from a variety of sources.

When you click the newly added Create App icon located on the Analytic Solver

Platform ribbon, your existing Excel model will be automatically converted to a

mobile application written in JavaScript. Web App Developers will be able to

immediately find how exceptionally easy it is to embed RASON models as

JSON and solve them using Frontline's RASON server, which exposes a simple

REST API that's scalable to handle very large, compute-intensive analytic

models. Months of work, that would have previously been required, have been

reduced to a single command button click!

When you click the Create App icon on the Analytic Solver Platform ribbon, a

drop down menu appears with three items:

RASON IDE

RASON.com

Web Page

Clicking the first two menu items, RASON IDE and RASON.com, will

automatically open either the RASON Desk IDE or the RASON Web IDE

(located on www.solver.com) containing your existing Excel model converted

into the RASON modeling language. From here, you simply need to click the

appropriate button to solve the optimization model or run a simulation. When

solving with the RASON IDE, the Solver SDK Platform (installed along with

Analytic Solver Platform) will be called to solve the model. When using

RASON.com, the RASON Server will be called to solve the model. See the

labeled screenshots below. Each contain the Product Mix model, discussed in

the earlier Conventional Optimization chapter, written in the RASON modeling

language.

RASON Desk IDE

RASON Web IDE

Clicking the third menu item, Web Page, will result in the creation of a web

application written in JavaScript that solves your existing Excel model.

Follow the steps below to convert an optimization and simulation model into a

RASON model solved in both the Desk IDE and the Web IDE and publish a

Web App, in seconds.

Open the Product Mix.xlsx model that was previously discussed in the

Conventional Optimization chapter by clicking Help Examples on the ribbon,

clicking Optimization Examples and then the Product Mix link. Recall this

example model determines the optimal mix of products that a company should

produce in order to maximize profits.

The optimization model is included in the Model tab in the Solver Task Pane.

This model written in algebraic form is below.

Maximize: Total Profit = $75x1 + $50x2 + $35x3

Subject To:

Chassis: 1x1 + 1x2 + 0x3 <= 450

LCD Screen: 1x1 + 0x2 + 0x3 <= 250

Speaker: 2x1 + 2x2 + 1x3

Power Supply: 1x1 + 1x2 + 0x3

Electronics: 2x2 + 1x2 + 1x3

x1, x2, x3 > 0

Click Create App on the ribbon, then select RASON IDE. Note: There is no

need to solve the model first.

Immediately, the RASON Desk IDE is opened and the product mix model is

inserted into the model window.

A RASON model begins with an opening { and closes with a closing }. Within

the two braces, our model is made up of various "sections" there are a total of

nine: "variables", "uncertain variables", "data", "dataSources",

"engineSettings", "formulas", "modelSettings", "objective", "constraints",

"indexSets" and "objective". Some optimization models will consist of just 3

sections: variables (where the decision variables will be defined), constraints

(where the constraints will be defined) and objective (where the objective will be

defined)) where other larger and more complex models might contain several

additional segments such as: engineSettings (where the engine is chosen and an

engine options are specified), data (where any arrays used in the calculation

of the constraints or objective are defined), formula (where any intermediate

calculations are performed) and/or dataSources (where any data is imported

from an outside source such as a CSV file).

Our example is rather simple and only includes four: variables, constraints,

data, and objective. Let's compare our Excel model with our newly generated

RASON model section by section, starting with variables.

If we click back to the Excel example, we can see the model in the Model tab in

the Solver Task Pane.

Under Variables, in the Model tab of the Solver Task Pane, we see the cell

range: C14:E14. Now click back to your RASON model.

Within the variables section, we see the same cell range, "C14:E14". In our

RASON model, C14:E14 is a vertical array with three elements: C14, D14, and

E14. (To refer to an individual element, use: "C14", "D14", or "E14".) The

initial value specified for the value property in the RASON model equals the

values contained in the Excel cell range C14:E14 at the time the model was

converted (0 for all three cells). The lower property in the RASON model exists

because a constraint specifying the variable lower bounds is present in the Excel

model (C14:E14 >= 0). If an upper bound was present, the upper property

would be inserted into the RASON model too. Upper and lower bounds may be

present in the Excel model using explicit constraints, such as we have here, or

they may be entered into the Platform tab of the Solver Task Pane for Decision

Vars Lower and Upper.

variables: {

"c14:e14": { value: 0, lower: 0 }

}

Let's move on to the data section.

The data is contained in the Excel model within the cell range: C18:E22

(constraint coefficients) and also C24:E24 (objective function coefficients).

The exact same values have been inserted into 6 vertical arrays containing three

elements each: C18:E18, C19:E19, C20:E20, C21:E21, C22:E22, and C24:E24.

Again, to refer to individual elements of, say, the c18:e18 array, use: c18, d18,

or e18.

data: {

"c18:e18": { value: [[1, 1, 0]] },

"c19:e19": { value: [[1, 0, 0]] },

"c20:e20": { value: [[2, 2, 1]] },

"c21:e21": { value: [[1, 1, 0]] },

"c22:e22": { value: [[2, 1, 1]] },

"c24:e24": { value: [[75, 50, 35]] }

},

Click back to the Excel model. Under Constraints in the Model tab of the Solver

Task pane, we see the entry: G18:G22 <= H18:H22. If we inspect the first cell

in the range, G18, we find the formula: =SUMPRODUCT(C18:E18,

$C$14:$E$14) while H18=450. The other four cells, G19:G22, hold similar

formulas.

In the constraint section of the RASON model, we see five arrays, containing

one element each, corresponding to the five constraints in our Excel model. The

value for each upper bound is taken from cells H18:H22.

constraints: {

"g18": { formula:

"SUMPRODUCT(C18:E18,$C$14:$E$14)", upper: 450 },

"g19": { formula:

"SUMPRODUCT(C19:E19,$C$14:$E$14)", upper: 250 },

"g20": { formula:

"SUMPRODUCT(C20:E20,$C$14:$E$14)", upper: 800 },

"g21": { formula:

"SUMPRODUCT(C21:E21,$C$14:$E$14)", upper: 450 },

"g22": { formula:

"SUMPRODUCT(C22:E22,$C$14:$E$14)", upper: 600 }

},

The objective function being maximized in the Excel model is located in cell

G24 and contains the formula, =SUMPRODUCT(C24:E24,$C$14:$E$14).

Looking back to the RASON model, we see the same formula for the G24 array.

The type property is set to "max" to maximize the objective.

objective: {

"g24": { formula:

"SUMPRODUCT(C24:E24,$C$14:$E$14)", type: "max" }

}

At the end of this section, a closing } ends the RASON model.

Click the Solve icon, at the top of the IDE, to solve the optimization model and

display the results in the right of the IDE.

The Solver Desk IDE uses the Solver SDK Platform DLL (SolverSDK.dll) to

solve the RASON model. The Solver SDK Platform DLL was installed along

with the Analytic Solver Platform software, during installation.

The Solver SDK Platform DLL was able to find a solution to the model with an

objective equal to $25,000.

Now let's solve a simulation model. Click back to Help Examples on the

ribbon, click Simulation Examples and then the Business Forecast link. Click

the Forecast with Uncertainty tab. Recall this example model from the

Simulation & Risk Analysis chapter which finds the True Average of a sales

forecast.

Click Create App RASON IDE. The RASON Desk IDE opens displaying the

code for the converted simulation model.

Again, the RASON model opens with an opening {. Most simulation models

will be comprised of two components: uncertainVariables (where the uncertain

variables are defined) and uncertainFunctions (where the uncertain functions

are defined). However, a simulation model could also contain additional

segments such as: modelSettings (where options such as the number of

simulations maybe be specified), engineSettings (where options related to the

Engine may be specified), data (where constant values used in a constraint or

the objective may be defined), and formula (where intermediate results may be

calculated then used in the calculation of a constraint or the objective).

Our example includes four: uncertainVariables, data, formulas and

uncertainVariables. Let's compare our Excel model with our newly generated

RASON model section by section, starting with uncertainVariables.

If we click back to the Excel example, we can see the model in the Model tab in

the Solver Task Pane.

Under Uncertain Variables, in the Model tab of the Solver Task Pane, we see

two cells, E17 & I22. Each cell contains a PSI Distribution function.

uncertainVariables: {

"e17": { formula: "PsiTriangular(H20,I20,J20)" },

"i22": { formula: "PsiIntUniform(1,3)" }

},

Within the uncertainVariables section, we see the same cell ranges, E17 and

I22. In our RASON model, e17 and i22 are arrays containing one element each.

The formula property contains the PSI Distribution function as contained in the

Excel cells.

variables: {

"c14:e14": { value: 0, lower: 0 }

}

Let's move on to the data section.

The data is contained in the Excel model within the cell ranges: H16:J17 and

also H20:J20.

The exact same values have been inserted into 10 single element arrays: h20,

i20, j20, h17, i17, j17, h16, i16, j16, and d18.

data: {

"h20": { value: 4.5 },

"i20": { value: 6.5 },

"j20": { value: 8.5 },

"h17": { value: 11 },

"i17": { value: 10 },

"j17": { value: 8 },

"h16": { value: 50000 },

"i16": { value: 75000 },

"j16": { value: 100000 },

"d18": { value: 120000 }

},

Within the RASON model, intermediate results contained in cells e16, d15, d16,

and d17 are calculated in the formulas section.

If you compare the cell formulas in Excel to the formula property in RASON,

you will find they match.

formulas: {

"e16": { formula: "IF($I$22=1,H17,IF($I$22=2,

I17, IF($I$22 = 3,J17)))" },

"d15": { formula: "IF($I$22=1,$H$16,IF($I$22=2,

$I$16, IF($I$22 = 3,$J$16 )))" },

"d16": { formula: "E16*D15" },

"d17": { formula: "E17*D15" }

},

Excel, the formula in cell D20 makes cell D19 an uncertain function using the

formula, =PSIMeanD19. In the previous chapter, Examples: Simulation & Risk

Analysis, we learned that whenever a PSI Statistic function (such as PsiMean,

PsiStdDev, etc.) is applied to a formula containing uncertainty, that cell will

become an uncertain function. Therefore, in the RASON model, the definition

for the uncertain function d19 contains the statistic property mean:[]. This

property will be returned in the solution.

uncertainFunctions: {

}

At the end of this section, a closing } ends the RASON model.

Click the Simulate icon, at the top of the IDE, to run a simulation and display

the results in the right of the IDE.

Solver SDK Platform was able to run a simulation and return the mean of the

uncertain function, d19.

Now let's quickly run through one more example using a simulation

optimization model. Click back to Help Examples on the ribbon, click

Simulation Optimization Examples and then the Yield Management Model 3

link to open YieldManagementModel3.xlsx. In this example, we will maximize

the expected revenue of a proposed flight. This model contains 1 integer

decision variable (number of tickets sold) and one uncertain variable. The

uncertain variable models the uncertainty of the number of no-shows.

Click Create App RASON IDE. The RASON Desk IDE opens displaying the

code for the converted simulation model.

Again, the RASON model opens with an opening {. Simulation optimization

models will contain at the very least, the following sections: variables (where

the decision variables will be defined), uncertainVariables (where the

uncertainty will be defined) and objective. Our simulation optimization

example includes three more: modelSettings, formulas and data. This

simulation model is unconstrained, meaning there are no constraints in the

model, only variable bounds. However, most simulation optimization models

will have at least one constraint. Let's compare our Excel model with our newly

generated RASON model section by section, starting with modelSettings.

Click back to the Excel model and then click the Platform tab on the Model

Task pane.

Within this pane, we see that Solve Uncertain Models is set to Simulation

Optimization, Simulations to Run equals 1 and Trials Per Simulation equals

1000. These settings will cause Solver to solve the model with the Evolutionary

Engine and simulation optimization using 1000 trials per simulation.

After the opening {, the first section of the RASON model is modelSettings. In

this section, options relevant to the solve, such as the number of optimizations or

simulations to run, the number of trials to perform in a simulation model, if

simulation optimization is to be used, etc., are specified. In this example, the

simulationOptimization property is set to "true", the Number of Trails to be

performed within the simulation is set to 1000 (numtrials: 1000) and the random

seed is set to 1 (randomSeed: 1). The random seed option is used so that our

results will be reproducible. Any option that is set on the Platform tab on the

Solver Task Pane will be recorded in this section. See the Frontline Solvers

Reference Guide for a complete description of each option that may be specified

in modelSettings.

modelSettings : { simulationOptimization: true,

numTrials: 1000, randomSeed: 1 },

If we click back to the Excel example, we can see the model in the Model tab in

the Solver Task Pane.

Under Normal Variables, in the Model tab of the Solver Task Pane, we see the

Excel range, G30. Lower down, the same Excel range is listed as "integer"

under Integers. A little further up under Bound, we see the upper and lower

bound for this cell as 200 and 0, respectively. This means that the values in this

cell must be an integer greater than or equal to 0 and less than or equal to 200.

In the variables section of the RASON model, you'll see the following line of

code.

variables: {

"g30": { value: 117, type: "int", lower: 0,

upper: 200, comment: "solver_adj" }

},

In these three lines of code, the single element array g30 is created and given an

initial value of 117 using the value property. (This is because cell G30 in the

Excel model contained that same value at the time of conversion.) The type

property indicates that the variable must be an "int" or "integer". The lower

property holds the lower bound of 0 and the upper property holds the upper

bound of 200.

Click back to Excel. Under Uncertain Variables, we see the Excel cell address,

H25. If you inspect this cell, you will see that it contains the Psi Distribution

function PsiLogNormal. These function simulates the number of people who

will not show up or miss their flight.

Within the uncertainVariables section, the single element array h25 is created

with the same formula that is contained in the Excel worksheet cell H25,

=PsiLogNormal(0.1 * G30, 0.06*G30).

uncertainVariables: {

"h25": { formula:

"PsiLogNormal(0.1*G30,0.06*G30)" }

},

Let's move on to the data section where we will define the data used in the

model.

In the Excel model, the data is contained in cells: G23 (Ticket Price), G24

(Flight Capacity), G27 (% Refund to No-shows) and G28 (Overbooking

Compensation).

The exact same values have been inserted into 4 single element arrays within the

data section of the RASON model.

data: {

"g23": { value: 200 },

"g27": { value: 0.5 },

"g28": { value: 1.25 },

"g24": { value: 100 }

},

The formulas section, within the RASON model, holds the intermediate

formulas contained in the Excel worksheet cells G25, G31, G32 and G34.

Notice the formula properties for each of the four single element arrays matches

the formula in the matching Excel cell.

formulas: {

"g25": { formula: "ROUND(H25,0)" },

"g31": { formula: "G30-G25" },

"g32": { formula: "MAX(0,G31-G24)" },

"g34": { formula: "(G30*G23)-(G27*G23*G25) -

(G28*G23*G32)" }

},

If you click back to the Excel worksheet, the objective is listed at the top of the

Model pane. "Max" which appears to the immediate right of the cell address

G36 indicates that the model is a maximization. The formula contained in cell

G36 = PsiMean(G34). This formula will return the mean value for the uncertain

function in cell G34. (See the screenshot above.)

In the RASON model, the single element array g36 holds the objective function

definition. As in the Excel model, the objective function will be maximized as

indicated by the type property (type: "max").

objective: {

"g36": { formula: "PsiMean(G34)", type: "max" }

}

At the end, a closing } ends the RASON model.

Click the Solve icon, at the top of the IDE, to run an optimization simulation and

display the results in the right of the IDE.

Solver SDK Platform solves the simulation optimization model and returns the

mean of the objective function.

For more information on designing and writing a model in the RASON

Modeling Language, please see the RASON User Guide and/or RASON

Reference Guide.

Conversion Exceptions

There are several types of models that Frontline Excel Solvers are not able to

convert to RASON models. For example, it is not possible to convert NLP/NSP

models with conic constraints, Excel models containing errors such as #NUM,

#VALUE, etc., or Excel models distributed across multiple worksheets (this

does not include models that utilize different worksheets, within the same

workbook, to hold constant data). For all unsupported features, the conversion

generator returns an appropriate message.

Problem Limits

Your Frontline Excel Solver license determines the size and type of model that

can be solved with the RASON Desk IDE. If you have a license for Analytic

Solver Platform, then the same problem limits will apply when solving a

RASON model using the RASON Desk IDE, i.e. linear models with up to 8,000

variables (2,000 integers) and 8,000 constraints; smooth, nonlinear models with

up to 1,000 variables and 1,000 constraints; nonsmooth models with up to 1,000

variables and 1,000 constraints and SOCP models with up to 2,000 variables and

8,000 constraints.

Now let's solve the same three models using the RASON Web IDE. Click back

to the Product Mix example, then click Create App RASON.com

In a matter of seconds, a browser opens and navigates to the Web IDE on the

Try It page at www.RASON.com. The Product Mix model, now written in the

RASON modeling language, is displayed in the Model Editor.

If you have already registered for an account on www.RASON.com,

you will be automatically logged in using your existing credentials. If

you are a subscriber to a premium plan, you will be subject to the

problem limits of the purchased plan.

If you have not registered for an account on www.RASON.com, you

will be automatically registered for a free account and logged in using

information obtained from your registration on the Frontline Systems

website, www.Solver.com. Your User Name to log in to

www.RASON.com will be the same as your User Name for

www.solver.com and your default password will be: {your email

address} + !A123. You will be subject to the size limits of the free

Basic subscription, unless or until you subscribe to a higher level plan.

Currently, there are three subscription plans to choose from, one free

Basic plan and two higher level plans (Pro and Platform).

The free basic subscription allows the following problem limits.

Solve linear models with up to 200 variables

Solve nonlinear models with up to 100 variables

Run Monte Carlo simulations with up to 10,000 trials

Includes 240 minutes (4 hours) of compute time per month

If you find yourself pushing the limits of the Basic plan, then you

can upgrade either to the Platform or Pro plan. (See

www.RASON.com for information related to plan pricing.)

Pro Plan

Solve linear models with up to 2,000 variables

Solve nonlinear models with up to 500 variables

Run Monte Carlo simulations with up to 100,000 trials

Includes 720 minutes (12 hours) of compute time per month;

additional time charged according to a per minute rate as explained

on www.RASON.com.

Platform Plan

Solve linear models with up to 8,000 variables

Solve nonlinear models with up to 1,000 variables

Run Monte Carlo simulations with up to 1,000,000 trials

Includes 2,400 minutes (40 hours) of compute time per month;

additional time charged according to a per minute rate as explained

on www.RASON.com.

Models entered into the Rason Model Editor in the Web IDE may be solved or

analyzed using either a 'Quick Solve' REST API endpoint or a standard REST

API endpoint. Note: The endpoints displayed on these command buttons are

the actual REST API endpoints that will be called when you click create your

own webpage in the next section. For more information on these endpoints, see

the RASON User Guide.

The first three REST API calls are the 'Quick Solve' endpoints. 'Quick Solve'

endpoints are synchronous and should only be used with models that solve very

quickly, i.e. within a few seconds. There is a time limit of 30 seconds on all

'Quick Solve' calls which means that if your model takes longer than 30 seconds

to solve, the RASON Server will return the result: "status" : { "code"

: 10, "codeText" : "Stop chosen when the maximum time

limit was reached." }. In addition, these endpoints do not create a

"model resource" which means that a model optimized, simulated or diagnosed

with a 'Quick Solve' endpoint cannot be saved, edited, retrieved or solved at a

later time.

Submits a model to be optimized

to the queue and returns the

results when completed. No

Submits a simulation model model resource ID will be saved.

to the queue and returns the

results when completed. No

model resource ID will be

saved.

results when completed. No model resource ID will be saved.

Click the topmost button under Quick runs of small models: POST

rason.net/api/optimize.

The model is submitted to the RASON Server which solves the model and

returns the result in the Result window, shown above.

For all but the smallest / most quickly solved models, you'll need to use the

second set of REST API calls. You'll first need to make a call to the REST API

endpoint POST rason.net/api/model which will create a "model resource". Then

you'll need to start an optimization via the REST API endpoint GET

rason.net/api/model/id/optimize. You can check on its progress at any time with

the REST API endpoint GET rason.net/api/model/id/status, and obtain results

when finished with the REST API endpoint GET rason.net/api/model/id/result.

Click the down arrow to load a

previously saved RASON

model.

Returns all available model resource

ids.

Saves the model and creates a

model resource ID that may be

retrieved at a later time.

Updates a previously saved model.

with the model ID.

Submits an optimization model

into the queue.

Submits a simulation model into

the queue.

Returns the status of the

optimization, simulation, or

simulation optimization.

Returns the result of a completed

optimization, simulation, or

Returns the contents of the simulation optimization.

writeable data source.

Stops the execution of a

previously submitted model.

Deletes a previously saved model

rason.net/api/model to post the model to the RASON Server. In return you will

receive a similar result.

Model submitted to location:

https://rason.net/api/model/2590+2015-05-15-20-33-31-

034142

Calling this endpoint creates the Model Resource, 2590+2015-05-15-20-33-31-

034142. We can now easily retrieve this model by clicking the down arrow next

to "Please select a model ID" and selecting this value from the menu.

Click to call the REST API endpoint GET

rason.net/api/model/id/optimize to optimize (or solve) the model . Since we did

not specify a specific engine, and we are solving a linear model, the

LP/Quadratic engine will be selected automatically.

Rason.net/api/model/id/status to obtain the status of the solve.

{"status": "Complete" }

Status: Complete means that the optimization has been completed. If the

optimization was still in progress we would have received an incomplete status

with intermediate results, for example: {"status": "Incomplete",

"Milliseconds" : -2147483648,"Iterations" : 0,

"Subproblems" : 287, "LocalSolutions" : 8,

"Objective" : 3849 }

rason.net/api/model/id/result to obtain the result of the optimization.

{

"status" : { "code" : 0, "codeText" : "Solver found a

solution. All constraints and optimality conditions

are satisfied." },

"objective" : {

"total" : { "finalValue" : 25000 }

}

}

The result "Solver found a solution. All constraints and optimality conditions

are satisfied" means that no other solution exists that is better than the solution

found. (For more information on this and all possible Solver Result messages,

please see the RASON Reference Guide.) To maximize profit, we should make

200 TV sets, 200 stereos, and 0 speakers. The final objective value of 25,000 is

the maximum profit that we can attain.

Now let's solve the simulation model from the previous section. Click back to

Business Forecast example, then click Create App RASON.com

In a matter of seconds, a browser opens and navigates to the Web IDE on the

Try It page at www.RASON.com. The Business Forecast model, now written in

the RASON modeling language, is displayed in the Model Editor.

We can fist solve this model using either the Quick Solve method, by using the

Quick Solver endpoint POST rason.net/api/simulate, or by calling the REST API

endpoints, POST rason.net/api/model which will create a "model resource".

Then we can run a simulation via the REST API endpoint GET

rason.net/api/model/id/simulate. We can check the progress of the simulationat

any time with the REST API endpoint GET rason.net/api/model/id/status, and

obtain results when finished with the REST API endpoint GET

rason.net/api/model/id/result.

First, we will solve via the Quick Solve method. Simply click POST

rason.net/aip/simulate under Quick runs of small models.

The model is submitted to the RASON Server and the results are returned in the

Output window.

to call the REST API endpoint POST

rason.net/api/model to post the model to the RASON Server. In return you will

receive a similar result in the output window.

Model submitted to location:

https://rason.net/api/model/2590+2015-05-26-22-10-22-

697698

Calling this endpoint creates the Model Resource, 2590+2015-05-26-22-10-22-

697698. We can now easily retrieve this model by clicking the down arrow next

to "Please select a model ID" and selecting this value from the menu.

rason.net/api/model/id/simulate to run a simulation.

Rason.net/api/model/id/status to obtain the status of the simulation.

{"status": "Complete" }

Status: Complete means that the simulation has been completed. If the

optimization was still in progress we would have received an incomplete status

with intermediate results, for example: {"status": "Incomplete",

"trials" : 90192 }

rason.net/api/model/id/result to obtain the results from the simulation.

{

"status" : { "code" : 0, "codeText" : "Solver has

completed the simulation." },

"uncertainFunctions" : {

"netprofit" : { "mean" : 92619.4 }

}

}

The result "code": 0 means that the simulation completed successfully. Our

true average Net Profit for these 1,000 trials is 92,619.4. Let's ask for the

percentile values, as well as the mean, for our uncertain function. It's easy to do.

Simply add percentiles: [] to the end of our netProfit uncertain

function definition

uncertainFunctions: {

"d19": {

formula: "D16-D17-D18",

mean: [],

percentiles: []

}

}

and update the model by calling PUT rason.net/api/model/id,

. Rather than posting a new model with a new

resource ID, this endpoint updates the existing model. Then call the simulate,

status, and result endpoints: GET rason.net/api/model/id/simulate, GET

rason.net/api/model/id/status, and GET rason.net/api/model/id/result,

respectively. The response from the call to GET rason.net/API/Model/id/result

is below.

{

"status" : { "code" : 0, "codeText" : "Solver has

completed the simulation." },

"uncertainFunctions" : {

"d19" : { "mean" : 92466.1, "percentiles" : [-118840,

-100391, -81334.3, -70724.2, -56747.6, -47834.3, -

40197.9, -32682, -24831.7, -18744.9, -11788.1, -

4115.7, 3307.15, 8315.06, 12122.9, 16532.8, 20759.9,

26048.7, 30466.5, 32783.8, 36265.2, 39119.5, 41986.6,

44494.7, 46610.2, 48617.1, 51235.5, 53433.6, 55426.9,

58206.9, 59982.7, 63790.1, 65192.6, 68161.3, 70423.9,

73774.1, 76082.1, 78690.2, 81592.3, 83482.2, 85839.8,

87874.8, 89193.1, 91678.2, 92688.5, 94500.3, 95305.2,

97737.5, 99549.8, 100662, 102015, 103733, 105426,

107313, 109452, 110920, 111992, 113645, 114718,

117848, 119716, 121420, 123089, 124623, 127574,

129610, 130882, 132028, 133942, 136053, 137770,

139250, 141293, 142686, 144987, 147803, 148731,

150397, 154362, 157480, 159889, 162513, 164131,

166126, 169100, 171524, 173488, 176816, 179111,

183990, 187680, 194224, 200666, 205383, 211525,

222330, 233473, 243391, 257954, 284032] }

}

}

Using the results from percentiles: []we see that we can lose money

12% of the time. See the 1st through 12th negative percentile values.

Finally, let's solve our last example, the simulation optimization model, Yield

Management 3. Click back to the example, then click Create App

RASON.com. A browser opens and displays the model, converted to the

RASON Modeling language, in the RASON Web IDE Model window.

This time, let's diagnose the model first using the Diagnose Quick Solve Endpoint: POST

rason.net/api/diagnose.

The model is diagnosed as a "simulation" model containing 1 integer variable, 1 function,

and 2 variable bounds, an upper and a lower.

Now, let's use the Quick Solve Optimize Endpoint to solve this model. Click the

optimize Quick Solver endpoint POST rason.net/api/optimize.

The simulation optimization was terminated after the 30 second solving limit

elapsed. The result shown in the Output window displays the result code, "Stop

chosen when the maximum time limit was reached" along with the intermediate

objective result of 20,620.2.

Now let's solve using the RASON Rest API Endpoints. Click

to call the REST API endpoint POST

rason.net/api/model to post the model to the RASON Server. In return you will

receive a similar result in the output window.

https://rason.net/api/model/2590+2015-10-14-19-27-12-

984092

Calling this endpoint creates the Model Resource, 2590+2015-10-14-19-27-12-

984092. We can now easily retrieve this model by clicking the down arrow next

to "Please select a model ID" and selecting this value from the menu.

rason.net/api/model/id/simulate to start the simulation optimization.

Rason.net/api/model/id/status to obtain the status of the simulation optimization.

31203,"Iterations" : 0, "Subproblems" : 22658,

"LocalSolutions" : 22656, "Objective" : 20620.15 }

Status: Complete means that the simulation optimization has been completed.

If it was still in progress we would have received an incomplete status with

intermediate results like we saw with the Quick Solve endpoint.

rason.net/api/model/id/result to obtain the results from the simulation

optimization.

{

"status" : { "code" : 2, "codeText" : "Solver cannot

improve the current solution. All constraints are

satisfied." },

"objective" : {

"g36" : { "finalValue" : 20620.2 }

}

}

Analytic Solver Platform V2016-R2 includes the ability to bypass months of

development work by creating a web application that solves the optimization,

simulation, and/or simulation optimization model in Excel. Click back to Excel,

and the Product Mix example, then click Create App Web Page.

See Note on RASON Subscriptions in the section above for log in and

subscription information pertaining to solving models via the RASON Server.

Click Optimize.

Automatically, the model is submitted to the RASON Server using the RASON

Rest API Endpoint POST rason.net/api/model, an optimization is started with

the Endpoint GET rason.net/api/model/id/optimize, the status is checked using

the Endpoint GET rason.net/api/odel/id/status and the results are obtained via

the Endpoint GET rason.net/api/model/id/result. All this, at the click of a

button.

Clicking the Quick Optimize command button will call the Quick Solve

Optimize endpoint. Try it for yourself the results from the Quick Solve will be

appended in the Result window.

Click Stop Optimize to stop an already executing optimization and Clear

Messages to clear the output window.

Click back to the Business Forecast example and click Create App Web Page.

A new browser open displaying a new Web Application. This Web App solves

the Business Forecast simulation model.

Click Simulate. Automatically, the model is submitted to the RASON Server

using the RASON Rest API Endpoint POST rason.net/api/model, a simulation is

started with the Endpoint GET rason.net/api/model/id/simulate, the status is

checked using the Endpoint GET rason.net/api/odel/id/status and the results are

obtained via the Endpoint GET rason.net/api/model/id/result. All this, at the

click of a button.

Clicking the Quick Simulate command button will call the Quick Solve

Simulate endpoint.

To view the code used in the Web Application, right click and select View Page

Source (if using Mozilla Firefox) or View Source (if using Internet Explorer).

A browser will open displaying the code for the Web Application. This code

gives examples of how to call all RASON REST API Endpoints. Please see the

RASON User Guide for a description of each along with complete information

about the RASON Rest API.

Frontline Solvers 2016-R2 User Guide Page 198

Examples: Parameters and

Sensitivity Analysis

Introduction

This chapter introduces the use of parameters, and functions for sensitivity

analysis in Analytic Solver Platform, with examples. In Version 11, the role of

parameters for optimization, simulation, and sensitivity analysis was

enhanced, and the sensitivity analysis functions were introduced.

Sensitivity analysis is designed to help you explore a conventional Excel

spreadsheet model, often before you define an optimization or simulation model.

The goal of sensitivity analysis is to identify the key input parameters that have

the greatest impact on results of interest in your model (such as Net Profit), and

to see the effect of varying these key input parameters over a range, in reports

and graphs. Analytic Solver Platform helps you automatically identify

sensitivity parameters, and automatically vary them to produce reports and

graphs.

Analytic Solver Platform, Risk Solver Platform, Analytic Solver Pro and

Risk/Premium Solver Pro support three kinds of parameters:

A sensitivity parameter (PsiSenParam) is automatically varied when

you perform a sensitivity analysis. You do this by selecting Sensitivity

from the Reports or Charts galleries on the Ribbon.

An optimization parameter (PsiOptParam) is automatically varied

when you perform multiple optimizations. You do this by clicking the

Optimize button on the Ribbon, or the green arrow in the Task Pane,

with the Number of Optimizations set to a value greater than 1.

A simulation parameter (PsiSimParam) is automatically varied when

you perform multiple simulations. You do this by clicking the

Simulate button on the Ribbon, or the green arrow in the Task Pane,

with the Number of Simulations set to a value greater than 1.

Premium Solver Pro supports sensitivity and optimization parameters and Risk

Solver Pro supports sensitivity and simulation parameters.

All three types of parameters appear in the Task Pane Model outline. In the

example on the next page, two sensitivity parameters at G11 and H17 have been

defined by the user. Parameter G11 is selected, and its properties are shown in

the lower part of the Task Pane. It is possible to change the type of a

parameter, by simply selecting from the dropdown list in the lower part of the

Task Pane as shown: For example, to use G11 in a simulation model,

automatically varied across multiple simulations, you would select Simulation

from the dropdown list.

Defining a Parameter

You can manually define an input cell as a parameter by simply selecting the

cell, choosing Parameters and Sensitivity, Optimization or Simulation from

the Ribbon, and entering a lower and upper limit on values for the parameter, or

a list of explicit values for the parameter. In the example on the next page, we

are defining a sensitivity parameter.

You can also simply type a formula such as =PsiSenParam(1,9) in a cell, which

has the same effect as the above steps. In both cases, the parameter appears in

the Task Pane Model outline.

If you specify a lower and upper limit, the step size for successive values is

determined when you perform a parameterized sensitivity analysis, or multiple

parameterized optimizations or simulations. Analytic Solver Platform will

subdivide the range from the lower to the upper limit into equal-size intervals.

For example, for the above sensitivity parameter, you would select Reports or

Charts Sensitivity Parameter Analysis and specify the number of points

on the major axis. If you specified 18 points, the step size would be 0.5.

Analytic Solver Platform can automatically find the input cells with the greatest

impact on any selected formula cell. You can then choose one or more of these

input cells to serve as sensitivity (or optimization or simulation) parameters.

To do this, select any formula cell in an Excel model, and choose Parameters

Identify from the Ribbon.

Analytic Solver Platform traces through all precedent formulas to find input

cells (leaves of the formula tree) on which the selected formula cell depends. It

then varies each input cell independently, computing its impact on the selected

formula cell. The input cells are ranked in descending order by (absolute)

impact, and the highest-impact cells are displayed in the Tornado chart.

In the example below, weve clicked Help Examples on the ribbon and

clicked Optimization on the Overview tab to open the workbook

OptExamples.xls workbook.

worksheet. Weve set cells B17:G17 to 1 (if these cells are all 0, then no

projects are selected and the Total NPV is always 0). To see which cells have

the greatest impact Total NPV, we simply select that cell (I28) and choose

Parameters Identify from the Ribbon. After a moment, a Tornado chart like

the one below appears.

The chart shows us, at a glance, that Total NPV is most sensitive to cell E13

which is a large positive cash flow in Year 6 for Opportunity 4. It is next most

sensitive (in the opposite direction, decreasing when the parameter increases) to

the interest rate in cell F4.

The right panel of the chart shows the lower value and upper value that were

used for each input cell when computing the formula value. An ordinary cell

containing a number is set to its current value n% and its current value + n%,

where n% (initially 10%) is specified in the edit box in the lower right corner of

the chart. If any input cell is already defined as a parameter, the lower and

upper limit arguments of its PsiXxxParam() call are used instead.

By choosing the radio button corresponding to Show Current Parameters,

Show Candidate Cells, or Show both at the top of the right panel, you can

show either one or both types of input cells in the Tornado chart. By checking

the box on the same row as the cell, you can define a candidate cell as a

sensitivity parameter (or, if you change the selection in the dropdown list in

the lower right corner of the chart, an optimization or simulation parameter).

These definitions take effect when you click the Save icon at the upper left

corner of the chart. For this example, well check the boxes on the same rows as

cells E13 and F4; well also set F4s Lower value to 0.01 (1%) and the Upper

Value to 0.10 (10%).

The simplest way to remove a parameter is to select the parameter cell on the

worksheet and press the DEL key which erases its cell formula or type a

number value that will overwrite the formula in the cell. The parameter will

then disappear from the Task Pane.

Defining Results

When you perform a sensitivity analysis (which will automatically vary

sensitivity parameters), or multiple optimizations or simulations (which will

vary optimization or simulation parameters), Analytic Solver Platform will keep

track of one or more result cell values, corresponding to each parameter value.

For optimizations, Analytic Solver Platform tracks the final objective

and decision variable values found by the Solver; you can also track a

constraint value by setting its Monitor property in the Task Pane.

For simulations, Analytic Solver Platform tracks the values of all

uncertain functions (simulation outputs, referenced in PsiOutput() or

PSI Statistics function calls).

For sensitivity analysis, Analytic Solver Platform tracks results from

the cell currently selected at the time you perform the analysis, and any

other results you define.

To define a sensitivity result cell, select the cell (such as A3 below always a

formula cell) on the worksheet, and choose Parameters Monitor Value from

the Ribbon. A small balloon will appear, containing a function call such as

=PsiSenValue(A3). You can move the mouse to drag and drop this formula

into an empty cell. When you do this, cell A3 is defined as a sensitivity result

cell, and appears in the Task Pane Model outline under Sensitivity Results.

The Parameters Identify step just described performs a simple kind of

sensitivity analysis; in some situations, this may be all that you need. But it is

often useful to document the sensitivity of some computed result to systematic

variations in the values of one or more parameters. Analytic Solver Platform

can produce both reports and charts to document these results.

In reports and charts, Analytic Solver Platform can automatically vary your

parameters values in two ways:

1. Varying all parameters simultaneously, from their respective lower to

upper limits, for the number of steps that you specify.

2. Varying two parameters independently, from their lower to upper

limits, computing a result for all combinations of the two parameters.

You select the second choice by checking the box Vary Parameters

Independently at the bottom of the dialog shown on the next page. If you do

this, you must select exactly one result cell, and exactly two parameter cells in

the dialog below. A report will appear as a two dimensional table, and a chart

will appear in 3-D with the two parameters on the axes.

If you dont check this box meaning that all parameters will be varied

simultaneously you can select one or more parameter cells, and one or more

result cells in the dialog below. A report will contain a column for each

parameter and each result, and a chart will contain a plot of each result cell.

To create a sensitivity analysis report, select a formula cell on the worksheet

(whose value should be computed in the report), and choose Reports

Sensitivity Parameter Analysis from the Ribbon. A dialog like the one

shown below will appear.

Use the arrow buttons in the top section to select one or more result cells

(exactly one if you check the box Vary Parameters Independently). Use the

arrow buttons in the bottom section to select one or more sensitivity parameter

cells (exactly two if you check the box Vary Parameters Independently).

Then click OK to produce the report, as a new worksheet in into your Excel

workbook, just to the left of the active worksheet. An example is shown below.

Creating Sensitivity Charts

To create a sensitivity analysis chart, select a formula cell on the worksheet

(whose value should be computed in the chart), and choose Charts Sensitivity

Parameter Analysis from the Ribbon. A dialog like the one on the previous

page will appear. Follow the same steps as for sensitivity analysis reports, and

click OK. A chart like the one below will appear:

You can use icons on the toolbar at the top of the chart to resize and rotate the

chart, print the chart, or copy it to the Windows Clipboard (where you can paste

it into other applications).

Optimization and Simulation Reports and Charts

Reports and charts for multiple parameterized optimizations and simulations

work in much the same way as the reports and charts for sensitivity analysis

shown in the previous section. But where for sensitivity analysis, Analytic

Solver Platform simply performs a worksheet recalculation, for these reports

and charts, Analytic Solver Platform performs a complete optimization or

simulation for each set of parameter values.

To produce these reports and charts, select Reports or Charts Multiple

Optimizations from the Ribbon. For multiple parameterized simulations, select

Reports or Charts Multiple Simulations from the Ribbon.

As shown in the earlier Examples chapters, optimizations are run when you

click the Optimize button on the Ribbon, or the green arrow in the Task Pane,

and simulations are run when you click the Simulate button on the Ribbon, or

(assuming theres no optimization model) when you click the green arrow in the

Task Pane. When you select Reports and Charts of Multiple Optimizations or

Multiple Simulations other than Parameter Analysis, the results cached in

memory from the last optimization or simulation run are used to create the

reports or charts.

However, when you select Reports and Charts of Multiple Optimizations or

Multiple Simulations with Parameter Analysis, which gives you greater control

over how parameters are varied, Analytic Solver Platform cannot use the results

cached in memory. Instead, a new set of optimizations or simulations is run,

varying the values of the parameters as youve specified; you can for example

vary two parameters independently, yielding all combinations of these parameter

values. The number of optimizations or simulations to run is independent of the

settings you use for Number of Optimizations or Number of Simulations in the

Task Pane Platform tab; it is the product of the number of Major Axis Points

and Minor Axis Points you select in the Reports or Charts selection dialog.

With the default value of 10 points each, 100 optimizations or simulations are

required. This can take some time, especially for optimizations; a progress

dialog is displayed during this process.

Examples: Decision Trees and

Discriminant Analysis

Introduction

This chapter introduces decision trees in Analytic Solver Platform. Such trees

are a useful graphical and computational aid for problems that involve

sequential decisions and events, where there are a small number of decision

alternatives at each step, and a small number of alternative outcomes for each

event.

In the example below, weve clicked Help Examples on the ribbon, clicked

Decision Tree Examples on the Overview Tab, and clicked on

TreeExample.xls, which is based on an example by Prof. Mike Middleton.

In this example, a firm must decide (1) whether to prepare a proposal for a

contract, and (2) if the contract is awarded, what method to use to satisfy the

contract. The first number shown below each branch (horizontal line) is the

amount the firm pays out (if negative) or receives (if positive) when it follows

that branch. For example, in the path that end at the terminal node at cell S18,

the firm (1) pays $50,000 to prepare the proposal, (2) receives $250,000 up front

when awarded the contract, (3) spends $50,000 to try the electronic method, and

since that method fails, (4) spends $120,000 on the mechanical method. The net

result is a positive cash flow of $30,000 shown at cell T18.

A decision tree is solved by Excel fomulas calculating each of the numbers

you see on the worksheet. Terminal values such as T18 sum all the partial cash

flows along the path leading to that terminal node. The tree is then rolled back

by computing expected values (or certainty equivalents) at event nodes, and by

maximizing (or minimizing) the alternative values at decision nodes. The

rollback values appear below and just to the left of each node, showing the value

of the subtree rooted at that node. The numbers inside the boxes at decision

nodes show which alternative is optimal for that decision. In the example, the

1 in the decision node at C31 indicates that it is optimal to prepare the proposal,

and the 2 in the decision node at K16 indicates the firm should try the electronic

method because that alternative leads to a higher expected value ($90,000) than

the mechanical method ($80,000).

Since all the computations are performed with Excel worksheet formulas, a

decision tree is a regular Excel worksheet model, where you can ask what-if,

perform sensitivity analysis, or create simulation or optimization models if

desired. For example, the formula at cell F25, for the event where we are or are

not awarded the contract, is =SUM(I14*J17,I31*J34) an expected value

calculation and the formula at B32, for the decision whether to prepare a

proposal, is simply =MAX(F25,F39), since we are maximizing EV.

The Task Pane Platform tab includes a Decision Tree group of options, where

you can choose to maximize or minimize values at decision nodes, and to

compute expected values (which are risk neutral) or certainty equivalents (which

reflect risk aversion) at each node. If you choose certainty equivalents, you can

specify the parameters of an exponential utility function.

You create and edit a decision tree with the Decision Tree choice on the Ribbon:

You can also create and edit a decision tree in the Task Pane Model tab, using

the Add (+) and Remove (X) icons and the properties area at the bottom of the

Task Pane; but you can highlight the best or worst decision strategy (see below)

only from the Ribbon.

A decision tree consists of nodes and branches. Nodes may be either decision

nodes, event nodes, or terminal nodes; branches represent alternative choices

at decision nodes, and alternative outcomes at event nodes.

Selecting Node in the dropdown presents choices for working with nodes:

The Add Node and Change Node options display the dialog shown on the next

page. To change a node, you must first select it on the Excel worksheet you

may select either the node graphic or one of the immediately adjacent cells.

The Copy Node and Paste Node choices can be used to copy a subtree (rooted

at the selected node) and paste the copy at another position in the decision tree;

this is very useful when there are identical choices at later stages in the tree.

Selecting Branch in the dropdown presents choices for working with branches:

The Add Branch and Change Branch options display the Decision Tree dialog

shown below. To change a branch, you must first select it on the Excel

worksheet you may select either the branch graphic or one of the immediately

adjacent cells. Note that Add/Change Node and Add/Change Branch options

display the same Decision Tree dialog: Branches are associated with the node to

their left, and you can edit properties of the node and its branches in this dialog.

In this dialog, you can change the type of the node, the name of the node, and

you can add, edit, reorder, or remove branches for this node. Each branch for a

decision node has a value (the cost or payoff of taking that decision); each

branch for an event node has a value and a probability (the cost or payoff, and

the probability of occurrence, of that outcome).

A decision strategy is a complete sequence of decisions that you can make

through the decision tree. You can highlight the best or worst decision strategy

by selecting Highlight in the Decision Tree dropdown list, as shown on the next

page. If you are maximizing, the best strategy maximizes EV or CE, and the

worst strategy minimizes EV or CE. If you are minimizing, the opposite applies.

The next page shows the example decision tree shown earlier, with Excel

worksheet gridlines turned off, and the best decision strategy highlighted.

Decision Trees in the Task Pane

Decision trees may also be viewed and edited directly in the Task Pane Model

tab, and choices for tree evaluation (see Platform tab below) can only be made

in the Task Pane. When a node or branch is selected in the Task Pane outline,

properties of that node or branch may be viewed and edited in the lower portion

of the Task Pane, as shown on the next page. You can also double-click a node

in the Model outline to display the same Decision Tree dialog that appears when

you add or change a node from the Ribbon.

Model Tab

In this example, weve selected the decision node named Method, represented

by the graphic symbol at cell K16 on the worksheet. The optimal choice at this

node (given that were maximizing expected value or EV) is branch #2, and the

rollback value of the subtree rooted at this node is 90,000.

Note the small Copy icon in the upper right corner of the Decision Tree Node

properties pane: You can click this icon to copy a subtree rooted at this node.

When youve selected a Terminal node in the Model outline, youll notice a

small Paste icon in this same area: You can click this icon to paste a subtree at

the position of the Terminal node.

Platform Tab

By default, rollback values for a decision tree are computed assuming that you

want to Maximize Expected Value or EV. You can change this by setting

options in the Decision Tree section of the Task Pane Platform tab, as shown on

the next page.

You can select Maximize or Minimize in the dropdown list for the Decision

Node EV/CE option. For the Certainty Equivalents option, you can choose

either Expected Value or Exponential Utility Function. The remaining three

options come into play only when you choose Exponential Utility Function

they set parameters of this function.

For the Maximize option with exponential utility, the rollback formulas are U =

AB*EXP(X/RT) and CE = -LN((A-EU)/B)*RT, where X and EU are cell

references. For the Minimize option with exponential utility, the formulas are U

= A-B*EXP(X/RT) and CE = LN((A-EU)/B)*RT. RT is the value you specify

for the Risk Tolerance option on the Platform tab, and A and B are the values

of the Scalar A and Scalar B options on the Platform tab.

When you use an Exponential Utility Function, the utility (U =) and certainty

equivalent (CE =) formulas are computed in extra cells on the worksheet, as

shown on the next page. For example, B33 computes the utility of the decision

at B32; B32 contains =MAX(F25,F39) as before, to choose the decision with the

maximum certainty equivalent value; F25 contains =-LN((A-$F$26)/B)*RT.

Multiple Discriminant Analysis

Discriminant analysis is a statistical technique for analyzing a data set,

consisting of cases or observations of one or more variables, and classifying the

cases into different groups. MDA is sometimes called discriminant factor

analysis or canonical discriminant analysis. It has many applications in financial

services and consumer marketing, among other fields.

Analytic Solver Platform and Analytic Solver Pro include a powerful version of

multiple discriminant analysis on the XLMiner tab on the Ribbon, through the

menu option Classify Discriminant Analysis, and described in depth in the

XLMiner User Guide.

But since a discriminant analysis facility historically was included with Risk

Solver Platform, before Frontline acquired and integrated the XLMiner

software, this facility is still available on the Analytic Solver Platform and Risk

Solver Platform tab, through the menu option Reports Discriminant Analysis

Discriminant Analysis, and is documented here.

In the example described below, a winery maintains a dataset which includes 13

variables describing various properties of three different types of wines

produced at their vineyard. The three different types of wines produced are

classified as Type1, Type 2 and Type 3. The characteristics of each wine type

include Alcohol content, Malic Acid content, Ash content, Ash Alkalinity

content, Magnesium content, Total Phenols, Flavonoid content, etc. There are

59 observations for Type 1, 71 observations for Type 2, and 48 observations for

Type 3. The vineyard wants to develop a classification rule to help them screen

new wine varieties into the three different wine types.

In the picture on the next page, weve selected Reports Discriminant

Analysis Discriminant Analysis to display the Discriminant Analysis dialog.

For the Grouping Variable Range, weve selected cells B13:B190 which contain

the categorical variables (1, 2 or 3) representing the three different types of wine

and cells C13:O190 containing the remaining corresponding variable values for

the Predictor Variable Range. For the Classification Sample, weve selected

cells C204:O209 on the same worksheet, containing the values for the 13

different characteristic variables for six new varieties of wine. We are using the

default choices for the Classification Method (Mahalanobis Distance), Prior

Probabilities (Empirical), and Covariance Matrices (Unpooled Estimates).

Clicking OK in this dialog causes a new Discriminant Analysis report to be

inserted into the workbook, as shown on the next page. The report shows how

MDA determines centroids for each of the three groups in the space of the

predictor variables, and computes Mahalanobis distances for each example of

test scores from the group centroids.

At the top of the report, under Group Centroids, the centroids for the three

groups have been calculated for each variable. X1 corresponds to the Alcohol

variable, X2 corresponds to the Malic_Acid variable, X3 corresponds to the Ash

variable, and so on.

Just down from Group Centroids is the Group Frequency table. This table lists

the relative frequency of each wine by type (1, 2, or 3). The relative frequency

is found by dividing the number of observations of each wine type by the total

number of wines. For example, the Relative Frequency of Group 1 is 33.15% or

the number of observations of type (50) divided by the total number of

observations (178).

The values listed in the Training Sample Classification Table for Group 1,

Group 2, and Group 3 are the distance calculations from the individual

observations to the group centroid or "center". The minimum value of the three

groups determines the group assignment.

The Test Sample Classification at the bottom of the report shows the

predictions obtained by MDA for how the six new wine varieties will be typed.

All have been assigned to Type 2.

Just above the Test Sample Classification is a table, often called a confusion

matrix, that evaluates how well the classification rule would have handled the

178 historical cases. (The types of these 178 cases are all known.)

The matrix shows that all 59 of the Group 1 observations would have been

assigned to Group 1 correctly. All 71 of the Group 2 observations would have

been assigned to Group 2 and all 48 of the Group three assignments would have

been assigned to Group 3. The Totals in row 211 show that 178 out of 178, or

100% of the cases w correctly classified.

Frontline Solvers 2016-R2 User Guide Page 218

Getting Results: Optimization

Introduction

This chapter explains how to obtain and interpret results from optimization in

Analytic Solver Platform and its subset optimization products: Risk Solver

Platform, Premium Solver Platform, Analytic Solver Pro and Premium Solver

Pro. Well also discuss what can go wrong, and what to do about it, and also

how to get more than a single optimal solution from your model.

Analytic Solver Platform has many powerful optimization algorithms, and will

fully exploit the power of your PC. But the model that you create may be

relatively easy to optimize (if you use linear functions like SUM) or extremely

difficult to optimize (if you use non-convex and non-smooth functions like

LOOKUP). The results you get depend on the model you create.

In the following sections, well focus on immediate actions you can take when

you get an unexpected result but if you read the chapter Mastering

Conventional Optimization Concepts, youll learn more about optimization

models and solution methods, and better understand why the unexpected result

appeared, and how to design your model to get the solutions you want.

When you click the Optimize button on the Ribbon, or the green arrow on the

Task Pane to solve, youll normally get one of these outcomes:

1. A solution that makes sense to you. This is normally accompanied by a

Solver Result message in green at the bottom of the Task Pane. You

can proceed to When Things Go Right: Getting Further Results.

2. A Solver Result error message that you understand and can correct, in

red at the bottom of the Task Pane. You can take corrective action.

3. A Solver Result error message that you dont understand, in red at the

bottom of the Task Pane. You should read the solution log in the

Output tab, click the error message and read Help about the message.

4. A solution that you dont understand, or that seems wrong. Again

before doing anything else, you should read the solution log in the

Output tab, click the error message to display Help, run available

reports as described below, and read the section below When the

Solution Seems Wrong.

5. Solving runs for a very long time, and you dont get a solution or a

Solver Result message until you press ESC or click Pause/Stop. You

should read the section below When Solving Takes a Long Time.

In rare cases, you might find Excel shutting down or locking up (so nothing

happens when you press and hold the ESC key for several seconds). In this case

please contact Frontline Systems Technical Support at (775) 831-0300 x4 or

support@solver.com. Some Solver Result error messages ask you to contact

Technical Support. If you can send us your model, this will be very helpful.

But experience shows that 99% of all technical support cases involve pilot

error by the user, and that 90% of all such cases could be easily resolved by

reading online Help or the User Guide. So we hope youll keep reading, and

that youll take these steps before calling technical support!

Your first step should be to review the messages in the solution log in the Task

Pane Output tab. Below is an example of the Output tab at the solution of

EXAMPLE5 in StandardExamples.xls (described more fully in the chapter

Examples: Conventional Optimization):

If you click the Copy icon, the contents of the solution log will be copied to

the Windows Clipboard, where you can paste it into Microsoft Word, NotePad,

or an email message to Frontline Systems Technical Support. Below is the

complete solution log from the above example:

---- Start Solve ----

Using: Full Reparse.

Parsing started...

No uncertain input cells.

Diagnosis started...

Model diagnosed as "NSP".

Attempting Transformation.

Using: Full Reparse.

Parsing started...

Diagnosis started...

Model transformed into an LP. Transformation will be used.

User engine selection: Standard LP/Quadratic

Model: [OptimizationExamples.xls]EXAMPLE5

Using: Psi Interpreter

Parse time: 0.22 Seconds.

Setup time: 0.00 Seconds.

Solver found a solution. All constraints and optimality conditions are satisfied.

Solve time: 0.62 Seconds.

This was a successful solution but in cases where you have a Solver Result

error message that you dont understand, or a solution that you dont under-

stand, the solution log can be quite helpful.

You can obtain more detailed output in the solution log by setting the Task Pane

Platform tab General group Log Level option to Verbose before you solve:

Below is a portion of the solution log (from the LP/Quadratic Solver) for the

EXAMPLE5 model:

Integer solution of 3100 found by Feasibility Pump after 0 iterations and 0 nodes (0.01

seconds)

After 0 nodes, 1 on tree, 3100 best solution, best possible 2355.01 (0.18 seconds)

After 1 nodes, 2 on tree, 3100 best solution, best possible 2355.01 (0.18 seconds)

Integer solution of 2630 found by Unknown after 285 iterations and 2 nodes (0.19 seconds)

After 2 nodes, 2 on tree, 2630 best solution, best possible 2361.69 (0.19 seconds)

Integer solution of 2400 found after 294 iterations and 3 nodes (0.20 seconds)

After 3 nodes, 1 on tree, 2400 best solution, best possible 2361.69 (0.20 seconds)

Engine Solve time: 0.20 Seconds.

If you are having problems finding the solution you want or expect, this detailed

log can sometimes be helpful.

Click the Solver Result Message for Help

The Solver Result message is always underlined it is a hyperlink to Help. If

you arent sure that you fully understand it, click the link to open online Help to

a detailed discussion of the message.

Below is an example of Help that appears when you solve EXAMPLE3 in

StandardExamples.xls, and click on the Solver Result error message in red,

The linearity conditions required by this Solver engine are not satisfied.

Notice the two hyperlinks in the Help text, to Functions of the Variables and the

Linearity Report. If you click the latter link, the Help text below appears.

Given our experience that 90% of technical support cases could be easily

resolved by reading online Help or the User Guide, you can save yourself, as

well as Frontline Systems, time if you do read online Help first.

The Help above suggests that we select the Linearity Report when we receive

this Solver Result error message. As a general rule, its good idea to examine

the available reports and produce the reports that may help you understand

whats wrong with your model. Just select Reports Optimization Reports on

the Ribbon the reports in the gallery are updated each time you solve.

The Linearity Report and (in Analytic Solver Platform, Risk Solver

Platform and Premium Solver Platform) the Structure Report can help

when you encounter The linearity conditions required by this Solver

engine are not satisfied.

The Feasibility Report and Feasibility-Bounds Report can help when you

encounter Solver could not find a feasible solution.

The Scaling Report can help when you encounter either of these messages,

or other unexpected messages or solution values. See the section below

Problems with Poorly Scaled Models.

See the section An Accidentally Nonlinear Model in the chapter Examples:

Conventional Optimization to see how the Linearity Report, and (in Analytic

Solver Platform, Premium Solver Platform and full Solver Platform) the

Structure Report produced by the PSI Interpreter can help us pinpoint the

nonlinear formulas in this model.

When your model takes a long time to solve, the Task Pane Output tab can be

helpful during the solution process at a minimum, to reassure you that the

Solver is still making progress, and has not hung up. If it is not already visible

when you first start solving, the Output tab will appear automatically after a

few seconds of solution time, as long as the Task Pane itself is visible.

The Output tab shows the objective of the best solution found so far, and for

problems with integer constraints, the Best Integer Objective (incumbent), the

Best Possible Objective (best bound), and the Integer Gap or percentage

difference between these two objectives.

The bottom part of the Output tab shows a running chart of the objective of the

best solution found so far. On the next page is an example of the Output tab on

a problem called SPACE2.xls that takes about 2 minutes to solve, with the

V2016-R2 Evolutionary Solver, on a modern 8 - core PC:

Interrupting the Solution Process

You can interrupt the solution process at any time, by pressing the ESC key, or

by clicking the button in the Task Pane Output tab. If your model is very

large, you might have to hold down the ESC key for a second or two. Since the

input focus may not be on the Task Pane when you click with the mouse, you

might have to click the button twice. A dialog like the one below will appear:

Click Continue if you want to continue solving; click Stop to cause the Solver

to stop the solution process (this may take a few seconds) and display the

message Solver stopped at users request. Clicking Restart may be useful

with the Evolutionary Solver see the Frontline Solvers Reference Guide.

Reasons Why Solving Takes a Long Time

There are several reasons why solving might take a long time:

1. Most often, youve used Excel formulas or functions that make your

model non-smooth or non-convex, and much more difficult to solve.

You might gain a lot from consulting assistance, or by reading the

chapter Mastering Conventional Optimization Concepts.

2. If model diagnosis or problem setup is slow (see timing messages in

the Task Pane Output tab), you might be using array formulas,

LOOKUP functions with large ranges as arguments, or long chains of

formulas where each formula depends on an earlier formula.

3. You might be using a Solver Engine, or Engine option settings, that

arent appropriate for your problem. You can check the box

Automatically Select Engine on the Task Pane Engine tab. Click

Engine options to display Help on each option. You can gain further

insight by reading Optimization Problems and Solution Methods in

the chapter Mastering Conventional Optimization Concepts.

4. Your model might be well formulated, but very large, or it might

require non-smooth functions, or many integer variables. A more

powerful plug-in Solver Engine may help considerably, and a faster

processor, multi-core processor, or more memory can often help.

Be sure to read Automatic Mode and Solution Time in the chapter Analytic

Solver Platform Overview. If youre using the Automatic setting (the default

for new models) for any of the seven options described in this section, you can

save time by pre-setting these options to the same values chosen automatically.

Paying attention to your Excel worksheet layout and design, and avoiding

certain practices, will help you get the most from the PSI Interpreter. Below is a

brief list of Dos and Donts that will help you realize the best possible speed:

Do build worksheets starting from the upper left corner. Dont place

cells or formulas at extreme row and column addresses all over the

worksheet.

Do build the model on a small number of worksheets. Dont include

references on these worksheets to other worksheets that arent required for

the simulation model.

Do use numeric and logical formulas and functions. Dont create string

results in the middle of numeric calculations (see example below).

Do use built-in Excel functions (including Analysis ToolPak functions)

freely. Dont use third-party or user-written functions unless truly needed.

Such functions must not have side-effects other than the value returned.

Do use operators like + - * / ^ and functions like SUM, AVERAGE, MAX,

MIN, AND, OR, NOT, IF, CHOOSE. Dont use INDIRECT, OFFSET, or

TEXT, SEARCH, REPLACE, FIXED, DOLLAR, or ROMAN.

If possible, Dont use array formulas, LOOKUP functions with large ranges

as arguments, or long chains of formulas where each formula depends on

an earlier formula (and hence on all earlier formulas). Each of these things

can slow down analysis of your model considerably (by 10x in some cases).

A common practice that slows down the PSI Interpreter, and is easy to avoid, is

illustrated by the following:

A1: =IF(B1>100,"Yes","No") and later A10: =IF(A1="Yes",A2,50)

You dont need "Yes" and "No" when Excel provides built-in values TRUE and

FALSE. You could write =IF(B1>100,TRUE,FALSE), but this is simpler:

A1: =B1>100 and later A10: =IF(A1,A2,50)

The formula =B1>100 evaluates to either TRUE or FALSE. A1 holds this value

and you can test it later in another formula.

When the solution on the worksheet seems wrong, before doing anything else,

you should read the solution log in the Output tab, click the error message to

display Help, and run available reports as described above. We emphasize

this, because very often when we are contacted in technical support, the user has

not taken these basic steps.

Although software bugs are always possible, consider carefully the possibility

that the solution found by the Solver is correct for the model youve defined,

and that your expectation is wrong. This may mean that what your model

actually says is different from what you intended. In the majority of cases we

see in technical support, the user has an error in a formula or in the expression of

a constraint that leads to the unexpected solution.

Many unexpected Solver Result messages are due to a poorly scaled model.

A poorly scaled model is one that computes values of the objective, constraints,

or intermediate results that differ by several orders of magnitude. A classic

example is a financial model that computes a dollar amount in millions or

billions and a return or risk measure in fractions of a percent. Because of the

finite precision of computer arithmetic, when these values of very different

magnitudes (or others derived from them) are added, subtracted, or compared

in the users model or in the Solvers own calculations the result will be

accurate to only a few significant digits. After many such steps, the Solver may

detect or suffer from numerical instability.

The effects of poor scaling in a large, complex optimization model can be

among the most difficult problems to identify and resolve. It can cause Solver

engines to return messages such as Solver could not find a feasible solution,

Solver could not improve the current solution, or even The linearity

conditions required by this Solver engine are not satisfied, with results that are

suboptimal or otherwise very different from your expectations. The effects may

not be apparent to you, given the initial values of the variables, but when the

Solver explores Trial Solutions with very large or small values for the variables,

the effects will be greatly magnified.

Most Solver engines include a Use Automatic Scaling option on the Task Pane

Engine tab. When this option is set to True, the Solver rescales the values of the

objective and constraint functions internally in order to minimize the effects of

poor scaling. But this can only help with the Solvers own calculations it cant

help with poorly scaled results that arise in the middle of your Excel formulas.

The best way to avoid scaling problems is to carefully choose the units

implicitly used in your model so that all computed results are within a few

orders of magnitude of each other. For example, if you express dollar amounts

in units of (say) millions, the actual numbers computed on your worksheet may

range from perhaps 1 to 1,000.

If youre using Analytic Solver Platform, Risk Solver Platform or Premium

Solver Platform, and youre experiencing results that may be due to poor

scaling, you can check your model for scaling problems that arise in the middle

of your Excel formulas by selecting the Scaling Report after solving your model.

If youre using Analytic Solver Pro or Premium Solver Pro, youll have to go

through each of your formulas and play what-if manually to identify such

problems.

Users who solve problems with integer constraints using the standard Excel

Solver occasionally report that Solver claims it found an optimal solution, but I

manually found an even better solution. What happens in such cases is that the

Solver stops with the message Solver found a solution because it found a

solution within the range of the true integer optimal solution allowed by the

Tolerance option in the standard Solvers Options dialog. In similar cases,

Analytic Solver Platform displays a message Solver found an integer solution

within tolerance, to avoid confusion.

When you solve a problem with integer constraints, the solution process in

almost all Solver engines is governed by the Integer Tolerance option on the

Task Pane Engine tab. When this option value is non-zero say 0.05, as in the

standard Excel Solver the Solver engine stops when it has found a solution

satisfying the integer constraints whose objective is within 5% of the true integer

optimal solution. Therefore, you may know of or be able to discover an integer

solution that is better than the one found by the Solver.

To avoid this common problem, the default Integer Tolerance value in Analytic

Solver Platform V9.0 and beyond is 0 or 0.001 (depending on the engine used)

rather than 0.05. But this has an important consequence for solution time: The

solution process for integer problems often finds a near-optimal solution

(sometimes the optimal solution) relatively quickly, and then spends far more

time exhaustively checking other possibilities to find (or verify that it has found)

the very best integer solution.

To avoid this extra time, you can either set the Integer Tolerance to a non-zero

value say 0.025 or 0.05 or you can watch the Task Pane Output tab during

the solution process, which displays the current Integer Gap the value against

which the Integer Tolerance is compared. Heres an example from the solution

of the EXAMPLE5 model shown earlier, where the Integer Gap was 1.6% just

before the Solver proved optimality and reported the solution:

You can make a real-time decision that the current solution is good enough,

and press ESC or click the Pause/Stop button, then click the Stop button in the

Show Trial Solution dialog, to stop the Solver with the current solution.

When you do receive a solution that makes sense to you, and you have a Solver

Result message in green at the bottom of the Task Pane, there are several ways

you can get further results. Well cover three possibilities:

1. Obtaining dual values from a linear or smooth nonlinear optimization

problem.

2. Obtaining multiple solutions from an integer programming problem,

or a global optimization problem.

3. Performing multiple parameterized optimizations, and capturing all

the solutions in reports and charts.

Dual Values

When you formulate and solve a linear programming problem, or a smooth

nonlinear optimization problem, the solution process also yields numbers, called

dual values, for the decision variables and constraints that are pressed to the

limit at the optimal solution. A dual value can tell you, for example, how much

you could pay to acquire more units of a scarce resource that is fully utilized in

the solution; it is sometimes called a shadow price or marginal value.

The dual value for a decision variable is nonzero only when the variables

value is equal to its upper or lower bound at the optimal solution. This is

called a nonbasic variable, and its value was driven to the bound during the

optimization process. Moving the variables value away from the bound

will worsen the objective functions value; conversely, loosening the

bound will improve the objective. The dual value measures the change in

the objective functions value per unit change in the variables value.

The dual value for a constraint is nonzero only when the constraint is

equal to its bound. This is called a binding constraint, and its value was

driven to the bound during the optimization process. Moving the constraint

left hand sides value away from the bound will worsen the objective

functions value; conversely, loosening the bound will improve the

objective. The dual value measures the change in the objective functions

value per unit change in the constraints bound.

In nonlinear optimization problems, the dual values are valid only at the single

point of the optimal solution if there is any curvature involved, the dual values

begin to change as soon as you move away from the optimal solution. In linear

programming problems, the dual values remain constant over a range of

increases and decreases in the variables objective coefficients and the

constraints right hand sides, respectively.

To obtain dual values in report form, simply select Reports Optimization

Sensitivity from the Ribbon. An example Sensitivity Report appears below.

You can also obtain dual values via the Analytic Solver Platform Object-

Oriented API, with simple references such as myProb.VarDecision.DualValue(i)

or myProb.FcnConstraint.DualValue(i) in your VBA code. This is described in

greater depth in the chapter Automating Optimization in VBA.

On the next page is a Sensitivity Report for EXAMPLE1, the Product Mix

model which is the first example in the chapter Examples: Conventional

Optimization. (Note: Number formatting has been expanded in cells E15 and

E22 to show decimal values.) At the optimal solution, we use all 800 Speaker

Cones and 600 Electronics units, but not all of the other components. We dont

produce any Speakers cell F9 is driven to its lower bound of 0. What do the

dual values tell us about the two binding constraints, and the one nonbasic

decision variable?

The dual value of 12.5 for Speaker Cones tells us that we could increase Total

Profits by $12.50 for every additional Speaker Cone we can acquire, up to 100

more. Similarly, the dual value of 25 for Electronics units tells us we could use

up to 50 more units and increase Total Profits by $25.00 for each extra unit.

The dual value of -2.5 for F9 tells us that, if we were forced to produce some

Speakers, we would reduce Total Profits by $2.50 for each Speaker we made

(because wed give up production of another product that is more profitable).

Multiple Solutions

When you solve an integer programming problem or a global optimization

problem, the final solution you see on the Excel worksheet is typically the best

of several candidate solutions that were found during the solution process. You

can obtain and examine these other solutions; this can be useful, especially if

you have other criteria, not captured in the formulation of the optimization

model, for preferring one solution over another. For each candidate solution,

you can examine the final values of the decision variables and the objective.

To obtain multiple solutions in report form, select Reports Optimization

Solutions from the Ribbon.

For integer programming problems, the report shows each incumbent or

feasible integer solution found by the Branch & Bound method during the

solution process.

For global optimization problems, the report shows each locally optimal

solution found by the Multistart method.

For non-smooth optimization problems solved with the Evolutionary

Solver, the report shows key members of the final population of solutions.

For all types of problems, if only one candidate solution was found, the

Solutions choice will not appear in the Reports Optimization gallery. For

example, advanced Solvers for integer programming problems may find optimal

solutions at the root node of the Branch & Bound tree, without considering any

other incumbent solutions. For integer programming problems solved with the

LP/Quadratic or Large-Scale LP/QP Solver, the Engine tab Integer group

PreProcessing option must be set to None in order to create a Solutions Report.

On the next page is an example of a Solutions Report created when the GRG

Nonlinear Solver with Multistart was used to solve a model called SPACE2, a

global optimization problem with many locally optimal solutions. (Given more

time, the Solver would find an even better solution than the ones shown.)

You can also obtain multiple solutions via the Analytic Solver Platform Object-

Oriented API, by accessing a property such as myProb.Solver.NumSolutions,

setting the property myProb.Solver.SolutionIndex to choose a solution, then

accessing the solution in the usual manner.

Multiple Parameterized Optimizations

Once you have a model where youre getting an optimal solution that makes

sense for one set of inputs or parameters, its often useful to vary one or more

parameters across a range of values, and find the optimal solution for each

individual parameter value. With Analytic Solver Platform, you can easily

define optimization parameters, run multiple optimizations and save the

solutions to each optimization, and summarize the results in reports and charts.

The earlier chapter Examples: Parameters and Sensitivity Analysis gives an

overview of the role of parameters for optimization, simulation, and sensitivity

analysis, and the Frontline Solvers Reference Guide fully documents the

features available for multiple parameterized optimization.

In this chapter, well illustrate what you can do with EXAMPLE4, the Marko-

witz portfolio optimization model in StandardExamples.xls described in the

chapter Examples: Conventional Optimization under Nonlinear Program-

ming Examples. The model is pictured on the next page.

allocation of funds to stocks that minimizes portfolio variance (a risk measure)

while earning a portfolio rate of return of at least 9.5%, as shown in the Task

Pane Model tab. This solution is a single point on the efficient frontier; we

can find other points on this frontier by solving the problem for different levels

of the required portfolio return.

This is easy to do in Analytic Solver Platform: Well define a single

optimization parameter, use it in the portfolio return constraint right hand side,

and then run multiple (say 10) optimizations where the parameter is

automatically varied from (say) 8% to 14%. Lets do this step by step.

To define an optimization parameter, select an empty cell say I20, and choose

Parameters Optimization from the Ribbon, as shown below.

Analytic Solver Platform displays a dialog where you can enter a lower and

upper limit for the parameter value, or alternatively a list of values or a cell

range:

When you click OK, the formula =PsiOptParam(0.08,0.14) appears in cell I20.

Next, well use this parameter in the portfolio return constraint. To do this, we

select the constraint Portfolio Return >= 0.095 in the Task Pane Model tab,

and edit its properties in the lower part of the Task Pane:

We click the cell selector icon to the right of the field containing 0.095, and then

point and click to select cell I20. The properties of the constraint are updated to

use cell I20 for the right hand side, as shown on the next page.

Just one more step is required: We must specify how many optimizations we

want to perform. On the Task Pane Platform tab, we set the very first option

Optimizations to Run to 10, as shown on the next page.

Now we simply click the Optimize button on the Ribbon, or the green right

arrow on the Task Pane, to run all 10 optimizations. By default, Analytic Solver

Platform saves the optimal objective and decision variable values from all 10

optimizations; you can save other results, such as constraint values, by setting

their Monitor property in the Task Pane to True.

Just after solving, Analytic Solver Platform displays the results of the last

optimization on the worksheet. But you can display the results of any of the

other 9 optimizations by selecting from the Opt # dropdown list on the Ribbon:

Analytic Solver Platform has built-in facilities to create charts of multiple

parameterized optimizations. Just select Charts Multiple Optimizations

Monitored Cells from the Ribbon, as shown on the next page.

Select the optimization result you would like to chart: In this example, we want

to plot the optimal objective (Portfolio Variance) across the 10 optimizations,

where the Portfolio Return threshold is varied on each optimization.

When you click OK, Analytic Solver Platform draws the chart, as shown below.

Thats a lot more useful results than a single optimal solution!

Frontline Solvers 2016-R2 User Guide Page 236

Getting Results: Simulation

Introduction

This chapter explains how to obtain and interpret results from simulation in

Analytic Solver Platform and its subset product Risk Solver Pro. Well discuss

what can go wrong, and what to do about it, and also how to get maximum

insight from the results of a simulation.

Simulation is simpler than optimization in the sense that it requires only (i)

sampling of input values, (ii) calculation of your Excel model with these values,

and (iii) collection of the results; no search for a best solution is involved. A

simulation can be performed on almost any model, using any Excel functions.

But the way you build your model does affect the speed of simulation, or the

time required to get results. And the structure of your model will become even

more important in the next chapter, when we consider optimization and models

that include uncertainty.

In the following sections, well focus on immediate actions you can take when

you get an unexpected result but if you read the chapter Mastering Simulation

and Risk Analysis Concepts, youll learn more about the Monte Carlo

simulation process, and better understand how to design your model to get the

best results in the least time.

When you click the Simulate button on the Ribbon, or the green arrow on the

Task Pane to run a simulation, youll normally get one of these outcomes:

1. Results on the worksheet, and the message Simulation finished

successfully in green at the bottom of the Task Pane. You can

proceed to When Things Go Right: Getting Further Results.

2. An error message that you understand and can correct, in red at the

bottom of the Task Pane. You can take corrective action.

3. An error message that you dont understand, in red at the bottom of the

Task Pane. You should read the solution log in the Output tab, click

the error message and read Help about the message.

4. Results on the worksheet that you dont understand. Again before

doing anything else, you should read the solution log in the Output

tab, click the error message to display Help, and read the section

below When Simulation Results Seem Wrong.

5. Simulation runs for a very long time, and you dont get results or a

message in the Task Pane until you press ESC or click Pause/Stop.

You should read the section When Simulation Takes a Long Time.

In rare cases, you might find Excel shutting down or locking up (so nothing

happens when you press and hold the ESC key for several seconds). In this case

please contact Frontline Systems Technical Support at (775) 831-0300 x4 or

support@solver.com. Some error messages ask you to contact Technical

Support. If you can send us your model, this will be very helpful.

But experience shows that 99% of all technical support cases involve pilot

error by the user, and that 90% of all such cases could be easily resolved by

reading online Help or the User Guide. So we hope youll keep reading, and

that youll take these steps before calling technical support!

Your first step should be to review the messages in the solution log in the Task

Pane Output tab. Below is an example of the most common simulation error

message, and Help that appears when you click the message:

Most simulation error messages are underlined they are hyperlinks to online

Help. If you arent sure that you fully understand it, click the link to open Help

to a detailed discussion of the message.

As the Help text explains in the example above, if your model doesnt define

any simulation outputs, either via a PsiOutput() function that is added to the

formula in an output cell or that refers to the output cell, or via a PSI Statistics

function that refers to the output cell, there will be no results when you run a

simulation. As corrective action, you simply need to define the formula cells for

which you want results as simulation outputs.

The seed, or initial value, of the random number generator used in the

simulation process determines whether your results are exactly reproducible

when you re-run a simulation, or whether your results are similar but not

identical because a different random sample was drawn.

By default, the seed for each simulation is set from the value of the system

clock, which is different each time you run a simulation. If you set a seed value

as explained below, the same seed value is used on each simulation, which

means that the entire stream of random numbers drawn, and hence your

simulation results, will be exactly reproducible on each simulation run.

To set the seed, use the Task Pane Engine tab. From the dropdown list at the

top of the tab, select Risk Solver Engine, the software engine that actually

performs a simulation. The options for Risk Solver Engine will be displayed:

Enter a positive number for the option Sim. Random Seed. A value of 0 here

means use the value of the system clock as the seed on each simulation.

When a simulation takes a long time, or if you are running multiple parame-

terized simulations, the Task Pane Output tab shows you a progress indicator. If

it is not already visible when you first start solving, the Output tab will appear

automatically after a few seconds, as long as the Task Pane itself is visible.

If you have the Task Pane Platform tab Simulation group Interpreter option set

to Excel Interpreter, the progress indicator will be updated during the Monte

Carlo trials of a single simulation, as shown in the example below.

If you have the Interpreter option set to Psi Interpreter, the progress indicator

usually wont be updated during the trials of a single simulation, because all of

these trials are being executed in parallel. If you are running a multiple

parameterized simulation, the progress indicator will be updated for each new

simulation, as shown in the example below.

Interrupting the Simulation Process

You can interrupt the simulation process at any time, by pressing the ESC key,

or by clicking the button in the Task Pane Output tab. If your model is very

large, you might have to hold down the ESC key for a second or two. Since the

input focus may not be on the Task Pane when you click with the mouse, you

might have to click the button twice. A dialog like the one below will appear:

Analytic Solver Platform is by far the fastest Monte Carlo simulation software

for Excel on the market, and it takes full advantage of multi-core processors for

even faster simulations. But its still possible to create a model where a

simulation takes a long time. There are several reasons for this:

1. If you have the Platform tab Simulation group Interpreter option set to

Excel Interpreter, Excel is used to recalculate the worksheet on each

Monte Carlo trial. This is usually an order of magnitude slower than

the PSI Interpreter, though it requires significantly less memory.

2. If you have Platform tab Simulation group Interpreter option set to Psi

Interpreter, and the simulation is slow, you may be using certain

Excel functions in ways that slow down the PSI Interpreter. See below

for Dos and Donts to get the most from the PSI Interpreter.

3. Your model may simply be very large, with many complex formulas,

references to other worksheets or workbooks, etc. that take a long time

to evaluate. If your workbook includes sizable elements that arent

essential to the simulation model and its results, these extra elements

may be slowing down the simulation process.

The PSI Interpreter is designed to take maximum advantage of available

memory, and trade off memory against time. When Excel interprets

=A1+A2*(A3-4), it uses memory for only four numbers the values of A1, A2,

A3 and the constant 4. But when PSI interprets this formula, it uses memory for

3,001 numbers 1,000 each for A1, A2 and A3. If your PC has plenty of

memory, PSI will help you take advantage of it. But if you are tight on memory,

you may find that simulations slow down, because Windows will use virtual

memory and swap your data between main memory and your hard disk. The

best solution is to get more memory DRAM chips for PCs and notebooks are

an amazing value today!

Paying attention to your Excel worksheet layout and design, and avoiding

certain practices, will help you get the most from the PSI Interpreter. Below is a

brief list of Dos and Donts that will help you realize the best possible speed:

Do build worksheets starting from the upper left corner. Dont place

cells or formulas at extreme row and column addresses all over the

worksheet.

Do build the model on a small number of worksheets. Dont include

references on these worksheets to other worksheets that arent required for

the simulation model.

Do use numeric and logical formulas and functions. Dont create string

results in the middle of numeric calculations (see example below).

Do use built-in Excel functions (including Analysis ToolPak functions)

freely. Dont use third-party or user-written functions unless truly needed.

Such functions must not have side-effects other than the value returned.

Do use operators like + - * / ^ and functions like SUM, AVERAGE, MAX,

MIN, AND, OR, NOT, IF, CHOOSE. Dont use INDIRECT, OFFSET, or

TEXT, SEARCH, REPLACE, FIXED, DOLLAR, or ROMAN.

If possible, Dont use array formulas, LOOKUP functions with large ranges

as arguments, or long chains of formulas where each formula depends on

an earlier formula (and hence on all earlier formulas). Each of these things

can slow down analysis of your model considerably (by 10x in some cases).

A common practice that slows down the PSI Interpreter, and is easy to avoid, is

illustrated by the following:

A1: =IF(B1>100,"Yes","No") and later A10: =IF(A1="Yes",A2,50)

You dont need "Yes" and "No" when Excel provides built-in values TRUE and

FALSE. You could write =IF(B1>100,TRUE,FALSE), but this is simpler:

A1: =B1>100 and later A10: =IF(A1,A2,50)

The formula =B1>100 evaluates to either TRUE or FALSE. A1 holds this value

and you can test it later in another formula.

When the simulation results seem wrong, before doing anything else, you should

read any messages in the Output tab, and click the message to display Help as

described above. We emphasize this, because very often when we are contacted

in technical support, the user has not taken these basic steps. As next steps:

1. Make sure you understand how your formulas behave in an ordinary Excel

recalculation. If youve raced ahead with a simulation model before

doing this, you can use the Publish button on the Ribbon to turn your

simulation model back into a what-if model (by moving all PSI function

calls into cell comments), and later click Publish -- Unpublish to restore

the PSI functions that make up your simulation model.

2. Bear in mind that an uncertain function cell normally displays the calculated

value for the last Monte Carlo trial of the last simulation run. Its usually

more meaningful to look at the results returned by PSI Statistics functions,

such as PsiMean() or PsiPercentile(), across all the trials of the simulation.

3. It can be very helpful to cycle through the Monte Carlo trials of a

simulation, and examine the values of uncertain function cells, as well as

intermediate formula cells on which they depend. Just use the left and

right arrows on the Ribbon to change the trial index. You may find that

your model calculates a result you did not expect for some values of the

uncertain variables.

4. If you are using multiple simulations, check that the Sim # index on the

Ribbon, or the Sim # dropdown in the Uncertain Function dialog title bar,

are selecting the simulation you want, and that parameters (PsiSimParam()

functions) are returning the values you expect for that simulation.

5. If you havent already done so, double-click uncertain function cells and

examine the Frequency tab chart and Percentiles tab numbers to see how

the values of this function were distributed across Monte Carlo trials in the

simulation. This will help explain the values of PSI Statistics functions.

Although software bugs are always possible, consider carefully the possibility

that the simulation results are correct for the model youve defined, and that

your expectation is wrong. We sometimes find in technical support that what

your model actually says is different from what you intended.

When you have simulation results on the worksheet that make sense to you, and

you have the message Simulation finished successfully in green at the bottom

of the Task Pane, there are several ways you can get further results. Well cover

five possibilities:

1. Documenting your results in a Simulation Report.

2. Using all the features of the Uncertain Function dialog.

3. Fitting an analytic distribution to uncertain function results.

4. Charting multiple uncertain functions, typically over time.

5. Performing multiple parameterized simulations, and capturing the

results on the worksheet or in charts.

One quick step you can take, when you have simulation results that you want to

recall later, is to select Reports Simulation Simulation to produce a report

worksheet, inserted into your workbook, like the one for the example model

BusinessForecastPsi.xls, shown on the next page.

The Simulation Report documents the option settings used to perform the

simulation, and provides summary information about the uncertain variables and

uncertain functions in your simulation model. You are much more likely to use

simulation charts, or snapshots of your own worksheet layout when you are

presenting reports to others, but this report can be quite useful when you want to

refer later to the assumptions behind a simulation analysis.

The Uncertain Function dialog has many features, described in the Frontline

Solvers Reference Guide, that you can use to get enhanced results from your

simulation. For an introduction to these features, refer back to A First

Simulation Example in the chapter Simulation and Risk Analysis, especially

the sections starting with Viewing the Full Range of Profit Outcomes. Here,

well just reiterate the results available at your fingertips in the Uncertain

Function dialog:

Dialog Tabs

The Frequency, Cumulative Frequency, and Reverse Cumulative

Frequency tabs provide three different views of the full range of outcomes

for an uncertain function. You can click to display crosshairs with

numerical values on these charts, or add Lower and Upper bounds to see the

estimated probability of a profit or loss, for example.

The Tornado chart on the Sensitivity tab quickly shows you which

uncertain variables have the greatest impact on this uncertain function,

across the full range of Monte Carlo trials. The Scatter Plots tab often

reveals further insights about the behavior of this uncertain function versus

each uncertain variable, or versus other uncertain functions.

Panels and Toolbars

Using the right panel of the dialog, you can access a drop down menu

including Statistics, Percentiles, Chart Type, Chart Options, Axis

Options, and Markers. From the Options dialog (accessible from the

Options button on the Ribbon), on the Charts and Markers tabs, you can

set default chart and marker settings for all of your charts.

Using the title toolbar icons, you can save your settings, print the charts or

numbers from any of the dialog tabs, or copy the charts or numbers to the

Windows Clipboard, where they can be pasted into other applications. You

can also fit a distribution (as shown below) to the simulation results or

upload the simulation results to Microsoft's Power BI application or

Tableau. (See the previous chapter, Examples: Simulation and Risk

Analysis, for instructions on exporting model results to Power BI and

Tableau.)

Click the rightmost icon on the title toolbar to display the 3-D toolbar that

lets you with a single click shift between 2-D and 3-D, shrink or

magnify the chart, or move or rotate the chart to a different perspective.

One way to analyze your simulation results is to see whether the distribution of

outcomes is similar to a well-known analytic distribution. Analytic Solver

Platform, Risk Solver Platform, Analytic Solver Pro, Risk/Premium Solver Pro

and Risk Solver Pro support a wide range of analytic distributions, and can fit a

distribution and its parameters to sample data. To fit your sample simulation

results, click the icon on the Uncertain Function dialog title toolbar.

When we click the title toolbar icon to fit a distribution to simulation results for

Net Profit (cell B8) in the example BusinessForecastPsi.xls, a Fit Options

dialog appears.

If we accept the default settings and click the Fit button, in a few seconds,

Analytic Solver Platform fits a wide range of distributions to the sample data,

ranks them in order of the selected goodness-of-fit criterion (AIC/BIC statistics

by default, for more information see the Frontline Solvers Reference Guide),

and displays the best-fitting distribution.

If you select the checkboxes adjacent to the additional distributions in the left

panel, they will be superimposed on the frequency chart in the middle of the

dialog. Other tabs of this dialog give you a visual picture of the fit, in the form

of P-P and Q-Q charts, and a chart of CDF Differences, shown below.

The P-P tab displays the Probability-Probability chart. This graph is used to

determine how well a specific distribution fits the observed data. This chart will

be approximately linear (or lie on the y = x line) if the specified distribution is

the correct choice.

Click the Q-Q tab to see the Quantile Quantile chart. Again, if the two

distributions being compared are a good fit, the plot will lie approximately on

the y = x line.

The Cumulative Distribution Function Differences chart quantifies the

difference between the empirical distribution function and the cumulative

distribution function of the distribution.

You can also fit an analytic distribution to data that you obtain from another

source, such as historical observations of the process you want to model. If you

have this sample data on your Excel worksheet, you can simply select the cell

range containing the data, and click the Fit icon on the Ribbon. Using this tool,

you can easily create an uncertain variable whose distribution models this data.

In some simulation models, you will have a series of uncertain functions that

represent the evolution of some process over time. The individual cells might

represent sales or inventory levels, interest rates or exchange rates, or some

other uncertain factor. You want to understand how this uncertain function

changes over time, taking into account its uncertainty.

Analytic Solver Platform has a general facility for creating charts of multiple

simulation results, including Overlay, Trend, and Box-Whisker charts. Below,

weve used this facility to visualize the evolution of a stock price over time,

using the example model GBMSimpleModel.xls, which simulates stock prices

using a Geometric Brownian Motion model. When we perform a simulation,

select Charts Multiple Simulation Results Trend, and select the first 24

uncertain functions (out of 292 total) for inclusion in the chart, we get a Trend

Chart like the one below:

Here we can see a slow upward drift of the mean value of the stock price, and

also its volatility around the mean, depicted here with the 25 th and 75th, and the

10th and 90th percentiles.

Once you have results from a single simulation, you normally want to explore

what if scenarios, where you change some parameter that is under your

control, and run simulations to observe the effects of the uncertain variables that

are not under your control.

Analytic Solver Platform offers a powerful facility to do this through Interactive

Simulation: You can simply click the Simulate button on the Ribbon to enter

Interactive mode, then change a number on your worksheet and instantly see

new simulation results. This is illustrated in A First Simulation Example in

the earlier chapter Simulation and Risk Analysis. Analytic Solver Platform is

fast enough to make this sort of what-if analysis practical.

But after exploring the model and its results through Interactive Simulation,

youll likely want to automate the what-if process, and more systematically

evaluate the effects of changing some parameter or parameters under your

control on the simulation results. Analytic Solver Platform makes this easy,

with multiple parameterized simulations. This is illustrated in An Airline

Revenue Management Model in the chapter Simulation and Risk Analysis.

Two simple steps are required to set up a multiple parameterized simulation:

1. Define one or more simulation parameters, and use them in your model.

2. Set the number of simulations option to a value greater than 1, and run the

simulation.

To define a simulation parameter, simply select Parameters Simulation from

the Ribbon:

Analytic Solver Platform displays a dialog box, where you can enter a lower

limit and upper limit for the parameter value, or a specific list of values that you

would like the parameter to take on successive simulations. If you specify a

lower and upper limit, then when you set the number of simulations, the

parameter will take on equally-spaced values from the lower to the upper limit.

To set the number of simulations, simply edit the option in the Task Pane

Platform tab Simulation group option Simulations to Run:

When you next click the green arrow in the Task Pane, or choose Simulate

Run Once from the Ribbon, all 51 (in this example) simulations will be run,

automatically varying each simulation parameter over its range or list of values,

and all the results will be collected and stored. (If you click the Simulate icon to

activate Interactive Simulation, all 51 simulations will be run each time you

make a change on the worksheet.)

After running multiple parameterized simulations, you can view the results on

the worksheet, or in the Uncertain Function dialog, by selecting the simulation

of interest from the Sim # dropdown. You can create reports and charts of

results that span all or some of the simulations. We highly recommend that you

read An Airline Revenue Management Model in the earlier chapter

Simulation and Risk Analysis, which illustrates how this is done creating a

Trend Chart and a Box-Whisker Chart across all 51 simulations in this model.

Once you become familiar with multiple parameterized simulations, youll

likely want to use them in nearly every simulation analysis you do. Theyre a

natural way to get further results from the effort youve put into a simulation

model, and communicate those results to colleagues or clients.

If your license enables Monte Carlo simulation for example if Analytic Solver

Platform or Analytic Solver Pro is available, your license includes the ability to

perform a time series simulation, where future points in a time series are forecast

on each Monte Carlo trial, using a model created via ARIMA or one of our

smoothing methods (Exponential, Double Exponential, Moving Average, or

Holt Winters). (A time series simulation model, created with XLMiner, can be

distributed to users of Risk Solver Platform or Risk Solver Pro, and used by

them without the need for an additional XLMiner license.)

A PsiForecastXxx() function takes as arguments (i) a table of parameters from a

previously-fitted model, and (ii) starting values for a new time series where it is

believed that the fitted model is a good match for that new time series. When

array-entered, PsiForecastXxx() returns a forecast of future values for the new

time series, for as many periods as there are cells in the array-entry. If the input

argument values change, the forecast will be recomputed; but if the input

argument values stay the same, and the third argument is FALSE or omitted, the

Psi function will always return the same forecast values.

Open the Airpass.xlsx example dataset by clicking Help Examples on the

Analytic Solver Platform ribbon, then clicking Forecasting/Data Mining

Examples. This example dataset includes International Airline Passenger

Information by month for years 1949 1960. Since the number of airline

passengers increases during certain times of the year, for example Spring,

Summer, and in the month of December, we can say that this dataset includes

seasonality.

First, we will partition this dataset into two datasets: a training dataset and a

validation dataset. Well use the training dataset to create the ARIMA model

and then well apply the model to the validation dataset to forecast six future

data points, or one half year of data.

Click Partition in the Time Series section of the XLMiner ribbon to open the

Time Series Partition Data dialog. Select Passengers for the Variables in the

Partition Data and Month for the Time Variable.

Click OK to accept the defaults for Specify Partitioning Options and Specify

Percentages for Partitioning. Recall that when a time series dataset is

partitioned, the dataset is partitioned sequentially. Therefore, 60% or the first 86

records, will be assigned to the training dataset and the remaining 40%, or 58

records, will be assigned to the validation dataset. (For more information on

partitioning a time series dataset, see the XLMiner User Guide chapter

Exploring a Time Series Dataset.)

The Data_PartitionTS worksheet will be inserted to the left of the Data

worksheet. Recall the steps needed to produce the forecast. Click ARIMA --

ARIMA to open the ARIMA dialog. Month has been pre selected as the Time

variable. Select Passengers as the Selected variable.

This example will use a SARIMA model, or Seasonal Autoregressive Integrated

Moving Average model, to predict the next six datapoints in the dataset. (For

more information on this type of time series model, please see the earlier

chapter, Exploring a Time Series Dataset.) A seasonal ARIMA model

requires 7 parameters, 3 nonseasonal (autoregressive (p), integrated (d), and

moving average (q)), 3 seasonal (autoregressive (P), integrated (D), and moving

average (Q)), and period. Each parameter must be a non-negative integer.

Selecting appropriate values for p, d, q, P, D, Q and period is beyond the scope

of this User Guide. Consequently, this example will use a well documented

SARIMA model with parameters p = 0, d = 1, q = 1, P = 0, D = 1, Q = 2 and

period (P) = 12. Please refer to the classic time series analysis text Time Series

Analysis: Forecasting and Control written by George Box and Gwilym

Jenkins for more information on parameter selection.

Click ARIMA ARIMA on the ribbon to open the Time Series ARIMA

dialog. Select Fit seasonal model and enter 12 for Period since it takes a full 12

months for the seasonal pattern to repeat. Set the Non-seasonal Parameters as

Autoregressive (p) = 0, Difference (d) = 1, Moving Average (q) = 1 and the

Seasonal Parameters as Autoregressive (P) = 0, Difference (D) = 1, and Moving

Average (Q) = 1.

The ARIMA_Output worksheet will be inserted to the left of the Data worksheet

and will contain the Training Error Measures and Fitted Model Statistics. (For

more information on this report, please see the XLMiner User Guide chapter,

Exploring a Time Series Dataset.) The ARIMA_Stored worksheet will also

be inserted to the left of the Data worksheet and will contain the stored model

parameters.

Now well use this ARIMA model to predict new data points in the validation

dataset using the PsiForecastARIMA() function. When array-entered into six

different Excel cells, this function will forecast six different future points in the

dataset. (Note: The first forecasted point will be more accurate than the

second, the second forecasted point more accurate than the third and so on.)

The PsiForecast() function will be interactive in the sense that if any of the input

values (values passed in the 2nd argument) change, the forecast will be

recomputed.

The PsiForecastARIMA function takes three arguments: Params, Start_val, and

Simulate. Select the Data worksheet and highlight cells B146:B151, then enter

=PsiForecastARIMA(.

The first argument, Params, is the range of cells used by XLMiner to store the

ARIMA model on the ARIMA_Stored worksheet. This data range will change

as the forecast method changes. When entering this first argument be sure to

always start with cell B3 and end with the last populated lowest, right most cell.

(There should be no other populated cells to the right or below the last cell in the

range.) Select or enter ARIMA_Stored!B3:I18, for this argument.

The second argument, Start_val, is the range containing the initial starting points

from the validation data set. The minimum number of initial points that should

be specified for a seasonal ARIMA model is the larger of p + d + s * (P + D)

and q + s * Q. In this example, p + d + s * (P + D) is equal to 13 (0 + 1 + 12 *

(0 + 1) and q + s * Q is equal to 13 (1 + 12 * 1), therefore the minimum number

of initial starting points required is 13 (MAX (13, 13)). If you provide fewer

than the minimum required number of starting points, PsiForecasetARIMA()

will return #VALUE. (See the table below for the minimum number of initial

starting points required by each PsiFunctionXxx().) The maximum number of

starting points is the number of points in the validation dataset. All points

supplied in the second argument will be used in the forecast. Select or enter

Data!B133:B145, for this argument.

Pass True or False for the third argument. Passing False will result in a static

forecast that will only update if a cell passed in the 2nd argument is changed. If

True is passed for this argument, a random error will be included in the

forecasted points. See the Time Series Simulation example below for more

information on passing True for this argument. In this case, Pass False for this

argument.

=PsiForecastARIMA(ARIMA_Stored!B3:I18,Data!B133:B145, False).

Press CTRL + SHIFT + ENTER to enter this formula as an array in all six

cells (B146:B151).

Its also possible to enter this formula using the Insert Function dialog by

clicking Formulas Insert Function, select PSI Data Mining for Category, then

PsiForecastARIMA.

The results from this function are displayed below.

Data!B133:B145, the forecast will be recomputed; but if the input argument

values stay the same, the PsiForecastARIMA() function will always return the

same forecast values. As mentioned above, the first forecasted value in cell

B146 is the most accurate predicted point. Accuracy declines as the number of

forecasted points increases.

To run a time series simulation, we must pass True as the third argument to

PsiForecastXxx(). When the third argument is set to True, XLMiner will add a

random (positive or negative) epsilon value to each forecasted point. Each

time a simulation is run, 1000 trial epsilon values are generated using the

PsiNormal distribution with parameters mean and standard deviation computed

by the PsiForecastXxx() function. You can view the output of this simulation in

the same way as you would view normal simulation results in Analytic Solver

Platform, Risk Solver Platform, Analytic Solver Pro and Risk Solver Pro, simply

by creating a PsiOutput() function and then double clicking the Output cell to

view the Simulation Results dialog.

Select cells Data!B146:B151, then click Formulas Insert Function to display

the Function Argument dialog.

As discussed previously, the first argument, ARIMA_Stored!B3:I18, is the

range of cells used by XLMiner to store the ARIMA model on the

ARIMA_Stored worksheet. This data range will change as the forecast method

changes. When entering this first argument, be sure to always start with cell B3

and end with the last populated lowest, right most cell. (There should be no

other populated cells to the right or below the last cell in the range.)

For the second argument the range containing the initial points in the series must

be greater than the minimum number of initial points for a static forecast. For a

seasonal ARIMA model when Simulate = True, the minimum number of intial

points must be greater than Max((p + d + s * (P + D), (q + s * Q). In this

example, p + d + s * (P + D) is equal to 13 (0 + 1 + 12 * (0 + 1) and q + s * Q is

equal to 13 (1 + 12 * 1), therefore the minimum number of initial starting points

required is 14 (Minimum #Initial Points > MAX (13, 13)). However, when

PsiForecastARIMA() is called with Simulate = True, it is recommended to add

an additional number of datapoints, equal to the #Periods, to the minimum

number required. In this instance the number of initial points will be 25: 13

(minimum # of points) + 12 (# of points for Period in the Time Series - ARIMA

dialog). If you provide fewer than the minimum required number of starting

points (13 in this example) PsiForecasetARIMA() will return #VALUE. (See

the table below for the minimum number of initial starting points required by

each PsiFunctionXxx().) All points supplied in the second argument will be

used in the forecast. Select or enter Data!B132:B145, for this argument.

Passing TRUE for the third argument indicates to XLMiner that you plan to use

this function call in a Monte Carlo simulation, so it should add a random epsilon

value (different on each Monte Carlo trial) to each forecasted point.

To view the results of the simulation including frequency and sensitivity charts,

statistics, and percentiles for the full range of trial values, we must first create an

output cell. Select cell B146, then click Analytic Solver Platform Results

Referred Cell. Select cell C146 (or any blank cell on the spreadsheet) to enter

the PsiOutput formula. Copy this formula from cell C146 down to cell C151.

Therefore C146 = PsiOutput(B146), C147 = PsiOutput(B147), and so on.

Click the down arrow on the Simulate icon and select Run Once. Instantly,

Analytic Solver Platform will perform a simulation with 1,000 Monte Carlo

simulation trials (the default number). Since this is the first time a simulation

has been performed, the following dialog opens. Subsequent simulations will

not produce this report. However, it is possible to reopen the individual

frequency charts by double clicking each of the output cells (B146:B151).

Important Note: For Users who are familiar with simulation models in Analytic

Solver Platform, youll notice that the time series simulation model that we just

created now includes 6 uncertain functions, B146:B151, which are the cells

containing our PsiForecastARIMA() functions.

This dialog displays frequency charts for each of the six cells containing the

forecasted data points. Double click the chart for cell B146 (top left) to open the

Simulation Results dialog for the PsiForecastARIMA() function in cell B146.

From here you can view frequency and sensitivity charts, statistics and

percentiles for each forecasted point.

The frequency chart displays the distribution of all 1000 trial values for cell

B146 wih and observed mean 448.79 and standard deviation of 18.92 shown in

the Chart Statistics. Select Simulate Run Once a few more times (or click the

green play button on the Solver Pane Model tab). Each time you do, another

1,000 Monte Carlo trials are run, and a slightly different mean will be displayed.

Enter 444 for the Lower Cutoff by clicking the value at the top of the red

vertical bar on the left. This bar denotes the frequency with which the

forecasted value is greater than this value during a simulation. You can use this

as an estimate of the probability that the actual value will be less than the

forecasted value.

In this case there is a 32.40% chance that the number of international airline

passengers would be less than 444,000 in January 1961 and a 62.60% chance

that the number of passengers would be greater than 444,000.

Looking to the right, youll find the Statistics pane, which includes

summary statistics for the full range of forecasted outcomes. We can see that the

minimum forecasted value during this simulation was 440.48, and the maximum

forecasted value was 448.47. Value at Risk 95% shows that 95% of the time, the

number of international airline passengers was 446.74 or less in January 1961, in

this simulation. The Conditional Value at Risk 95% value indicates

that the average number of passengers we would have seen (up to the 95%

percentile) was 444.47. For more information on Analytic Solver Platforms

full range of features, see the chapter, Examples: Simulation and Risk

Analysis.

Select cells E146:N146 and then enter the formala, =PsiData(B146), then press

CTRL + SHIFT + ENTER to array enter the formula into all 10 cells. Repeat

the same steps to array enter =PsiData(B147) in cells E147:N147,

=PsiData(B148) in cells E148:N148, =PsiData(B149) in cells E149:N149,

PsiData(B150) in cells E150:N150, and =PsiData(B151) in cells

E151:N151. Then click Simulate Run Once to run a simulation.

The ten Excel cells in these columns will update with trial values for each of the

PsiForecastARIMA() functions in column B. For example, cells E146:N146

will contain the first 10 trial values for the PsiForecastARIMA() function in cell

B146, Cells E147:N147 will contain the first 10 trial values for cell B147 and so

on. (For more information on the PsiData() function, please see the Excel

Solvers Reference Guide chapter, Psi Function Reference.)

If we create an Excel chart of these values, youll see a chart similar to the one

below where each of Series1 through Series 6 represents a different Monte Carlo

trial. The random epsilon value added to each forecast value accounts for (all

of) the variation among the lines. If the third argument were FALSE or omitted,

all of the lines would overlap, assuming that the table or parameters and the

starting values were not changing.

The remaining Forecasting methods can be used in the same way using

information from their respective Stored Model sheets. For more information

on thee PsiForecastXxx() functions, please see the Frontline Solvers Reference

Guide chapter, Psi Function Reference.

Initial Points when Initial Points when

Simulate = False Simulate = True

Non- Seasonal ARIMA PsiForecastARIMA() ARIMA_Stored Max(p + d, q) Max(p + d, q)

Seasonal ARIMA PsiForecastARIMA() ARIMA_Stored Max((p + d + s *(P > Max((p + d + s

+ D), (q + s * Q) *(P + D), (q + s *

Q)**

Exponential Smoothing PsiForecastExp() Exponential_Stored 1 1

Double Exponential PsiForecastDoubleExp() DoubleExponential_Stored 1 1

Smoothing

Moving Average PsiForecastMovingAvg() MovingAverage_Stored # of Intervals # of Intervals

Smoothing

Holt Winters PsiForecastHoltWinters() HoltWinters_Stored 2 * #Periods 2 * #Periods

Smoothing

**Adding a number of data points equal to the Number of Periods (as shown on the Time Series ARIMA dialog)

to the Minimum # of Initial Points when Simulate = True is recommended when calling PsiForecastARIMA() with

Simulate = True.

Users of Analytic Solver Platform/Pro and Risk Solver Platform/ProV2016-R2

will notice two new Psi Forecast functions: PsiForecastLinear() and

PsiForecastETS(). These two functions were introduced to coincide with the

new Excel 2016 Forecast functions: Forecast.Linear and Forecast.ETS.

PsiForecastLinear predicts future values for a time series data set (containing

known or historical data) using linear regression. PsiForecastETS uses

exponential smoothing to predict future values in a time series dataset with the

option to either automatically detect seasonality in the data set or pass a

seasonality period. Passing False as the last argument to either function will

result in a static forecast. If True is passed for this argument, a random error

will be included in the forecasted points.

Note: When comparing the results of the Psi functions with the Excel functions,

you may see slightly different calculated forecast values depending on whether

the Psi Interpreter or Excel Interpreter is selected on the Task Pane Platform tab.

When the Psi Interpreter is used, a slightly different (but arguably better)

methodology is used to compute these forecast functions. When the Excel

Interpreter is selected, Microsoft Excel is used to calculate the worksheet, and

thus Excel's methodology will be used.

To illustrate an example of how to use these two functions, we'll reuse the

Airpass time series dataset. Click back to the Data tab within Airpass.xlsx.

Recall that the Airpass time series dataset contains international airline

passenger data from January 1949 to December 1960. Using this historical data,

we will forecast the number of passengers in 1961.

PsiForecastLinear() performs linear regression of known_y values with

known_x time variables to forecast the value at time, X. This function takes the

following arguments.

PsiForecastLinear(X, known_ys, known_xs[, simulate])

X: The target date. A data point for which you want the predicted value. A

data point may be date/time or numeric.

known_ys: An Excel range containing the independent variables in the

given dataset.

known_xs: An Excel range containing the time variables in the given

dataset.

simulate: (Optional) Pass True or False for the third argument. Passing

False (the default) will result in a static forecast that will only update if a

cell passed in the known_ys argument is changed. If True is passed for this

argument, a random error will be included in the forecasted points.

On the Excel ribbon, click Formulas Insert Function to display the Function

Argument dialog.

Select PsiData Mining form the Category drop-down menu, then scroll down to

PsiForcastLinear and click OK. The Function Arguments dialog opens.

X: Select cell Data!E3 for the target argument.

Known_ys: Select or enter B3:B146. These are the independent y

values. Be sure to anchor this range of cells (as shown in the

screenshot below) so that we can easily copy the formula.

Known_ys: Select or type A3:A146 for the third argument,

known_xs. Again, anchoring this Excel range now allows easy

copying and pasting later.

Simulate: Pass False for this argument. See the Time Series

Simulation example below for more information on passing True for

this argument.

Click OK to enter the formula into the Excel cell, then copy and paste this

formula into cells E4:E14.

If any values change in the ranges Data!A3:A146 or Data!B3:B146, the forecast

will be recomputed; however, if the input argument values remain the same,

PsiForecastLinear() will always return the same forecast values. As mentioned

above, the first forecasted value in cell E3 is the most accurate predicted point.

Accuracy declines as the number of forecasted points increases.

We can create a similar forecast using PsiForecastETS(). PsiForecastETS()

performs Exponential Triple Smoothing on known values to forecast future

values at time, target. The fourth argument, seasonality, is optional. If not

given, seasonality is automatically detected from the the data. If given,

automatic seasonality detection is turned off, and the given seasonality period is

enforced. This function takes the following arguments.

PsiForecastETS(target_date, values, timeline[,

seasonality][, data_completion][, simulate])

target_date: A data point for which you want the predicted value. A

data point may be date/time or numeric. If a target date is given that appears

before the start of the timeline in the dataset, PsiForecastETS will return

#NUM (i.e., if 1940 is passed for X).

values: An Excel range containing the historical values in the given data

set.

timeline: An Excel range containing the time variables in the given

data set. Both functions require the historical data to be structured using a

constant interval between data points. Since the Airpass data set presents

monthly passenger data, the forecast must also predict the number of

passengers by month.

seasonality: (Optional) This argument indicates the length of the

seasonal pattern. The following values are accepted as valid inputs. All

other values will return a #NUM error.

0: Signifies no seasonality exists in the data. The result is a linear

prediction.

1: (Default Value) Triggers Solver to automatically detect seasonality

within the data.

1 < N < 8,760: Positive integer values greater than 1 but less than 8,760,

will can be entered as the seasonality period.

data_completion: (Optional) This argument specifies how to handle

missing values. The default value of 1 replaces missing values by

interpolation. If 0 is passed, missing values will be replaced with 0's.

aggregation: (Optional) PsiForecastETS can aggregate multiple points

with the same time stamp. Pass an integer value from 0 to 6 to indicate

which method should be used.

0: (Default) Average

1: SUM

2: COUNT

3: COUNTA

4: MIN

5: MAX

6: MEDIAN

simulate: (Optional) Pass True or False for the third argument. Passing

False (the default) will result is a static forecast that will only update if a

cell passed in the second argument is changed. If True is passed for this

argument, a random error will be added to each forecasted point.

On the Excel ribbon, click Formulas Insert Function to display the Function

Argument dialog.

Select PsiData Mining form the Category drop-down menu, then scroll down to

PsiForcastETS and click OK.

Target_date: Select cell Data!E3.

Values: Select or enter B3:B146. These are the independent y

values. Anchoring the cell range (as shown in the screenshot below)

will allow us to easily cut and paste the formula later.

Timeline: Enter the dates January 1961 December 1961 in cells

D3:D11 for timeline. These are our target dates or the dates that we

want to predict. These are our time variables. Anchoring the cell

range, as shown in the screenshot below, will allow us to easily cut and

paste the formula.

Seasonality: Enter 1 for this argument to automatically detect the

seasonality within the data.

data_completion: Enter 0 for this argument to substitue any

empty value with 0.

aggregation: Enter 0 for this argument to aggregate multiple points

with the same date using AVERAGE.

Simulate: Passing TRUE for the third argument indicates to

XLMiner that you plan to use this function call in a Monte Carlo

simulation. Therefore, a random epsilon value (different on each

Monte Carlo trial) will be added to each forecasted point.

Click OK to enter the formula into the Excel cell. This formula can easily be

copied to cells E4:E14.

As with the PsiForecast Data Mining functions, to view the results of the

simulation, including frequency and sensitivity charts, statistics, and percentiles

for the full range of trial values, we must first create an output cell. Select cell

F3, then click Analytic Solver Platform Results Referred Cell on the

Excel ribbon. Select cell F17 (or any blank cell on the spreadsheet) to enter the

PsiOutput formula. Copy this formula from cell F17 down to cell F28.

Therefore F17 = PsiOutput(F3), F18 = PsiOutput(F4), and so on.

Click the down arrow on the Simulate icon on the Analytic Solver Platform

ribbon and select Run Once. Instantly, Analytic Solver Platform performs a

simulation with 1,000 Monte Carlo simulation trials (the default number). Since

this is the first time a simulation has been performed, the following dialog

opens. Subsequent simulations will not produce this report. However, it is

possible to reopen the individual frequency charts by double-clicking each of the

output cells (F17:F28).

Important Note: For users who are familiar with simulation models in Analytic

Solver Platform, you will notice that the time series simulation model that we

just created now includes 12 uncertain functions (F17:F28) which are the cells

containing our PsiForecastETS() functions.

The dialog above displays frequency charts for the first nine, of the total 12,

uncertain function cells containing the forecasted data points. Double-click the

chart for cell F3 (top-left) to open the Simulation Results dialog displaying

PsiForecastETS() function in cell F3. From here, you can view frequency and

sensitivity charts, statistics and percentiles for each forecasted point.

The frequency chart displays the distribution of all 1000 trial values for cell F3

with an observed mean 455.825 and standard deviation of 38.23 shown in the

Chart Statistics.

On the right of the dialog, youll find the Statistics pane, which includes

summary statistics for the full range of forecasted outcomes. We can see that the

minimum forecasted value during this simulation was 290.98, and the maximum

forecasted value was 579.84. In this simulation, Value at Risk 95% shows that

95% of the time, the number of international airline passengers was 519.65 or

less in January 1961. The Conditional Value at Risk 95% value indicates that the

average number of passengers we would have seen (up to the 95% percentile)

was 451.69. For more information on Analytic Solver Platforms full range of

features, see the chapter, Examples: Simulation and Risk Analysis.

As in the previous section, we will graph the first few trial values (out of a total

of 1000) for each forecasted point. Select cells G17:G28, then enter the

formula, =PsiData(F17), then press CTRL + SHIFT + ENTER to array enter the

formula into all 12 cells. Repeat the same steps to array enter =PsiData(F18)

in cells H17:H28, =PsiData(F19) in cells I17:I28, and so one. On the Analytic

Solver Platform ribbon, click Simulate Run Once to run a simulation.

The 12 Excel cells in these columns will update with trial values for each of the

PsiForecastETS() functions in cells F3:F14. Cells G17:G28 will contain the first

12 trial values for the PsiForecastETS() function in cell F3, cells G17:G28 will

contain the first 12 trial values for cell F4, and so on. (For more information on

the PsiData() function, please see the Excel Solvers Reference Guide chapter,

Psi Function Reference.)

If we create an Excel chart of these values, you will see a chart similar to the one

below where each of Series 1 through Series 12 represents a different Monte

Carlo trial. The random epsilon value added to each forecast value accounts

for (all of) the variation among the lines. If the third argument were FALSE or

omitted, all of the lines would overlap, assuming that the table or parameters and

the starting values were not changing.

Getting Results: Stochastic

Optimization

Introduction

This chapter explains how to obtain and interpret results from stochastic

optimization (optimization of models with uncertainty) in Analytic Solver

Platform. Well discuss what can go wrong, and what to do about it, and also

how to get more than a single optimal solution from your model.

Analytic Solver Platform has powerful algorithms for automatically

transforming and solving optimization models with uncertainty. But since a

stochastic optimization model includes decision variables, uncertain

variables, and constraints and an objective that may depend on both, there are

more things that can go wrong. Indeed, everything youve read in the

previous two chapters, Getting Results: Optimization and Getting Results:

Simulation will apply to stochastic optimization plus there are a variety of

special result messages and error messages that apply only to stochastic

optimization models.

The good news is that everything youve learned so far about conventional

optimization and Monte Carlo simulation does apply to stochastic optimization

in Analytic Solver Platform. Unlike most other software packages, Analytic

Solver Platform has one consistent user interface, set of terms, and model

elements for all types of simulation and optimization models.

In the following sections, well focus on immediate actions you can take when

you get an unexpected result but if you read the chapter Mastering Stochastic

Optimization Concepts, youll learn far more about stochastic optimization

models and solution methods, and better understand why the unexpected result

appeared, and how to design your model to get the solutions you want.

When you click the Optimize button on the Ribbon, or the green arrow on the

Task Pane to solve, youll normally get one of these outcomes:

1. A solution that makes sense to you. This is normally accompanied by a

Solver Result message in green at the bottom of the Task Pane. You

can proceed to When Things Go Right: Getting Further Results.

2. A Solver Result error message that you understand and can correct, in

red at the bottom of the Task Pane. You can take corrective action.

3. A Solver Result error message that you dont understand, in red at the

bottom of the Task Pane. You should read the solution log in the

Output tab, click the error message and read Help about the message.

4. A solution that you dont understand, or that seems wrong. Again

before doing anything else, you should read the solution log in the

Output tab, click the error message to display Help, run available

reports as described below, and read the section below When the

Solution Seems Wrong.

5. Solving runs for a very long time, and you dont get a solution or a

Solver Result message until you press ESC or click Pause/Stop. You

should read the section below When Solving Takes a Long Time.

In rare cases, you might find Excel shutting down or locking up (so nothing

happens when you press and hold the ESC key for several seconds). In this case

please contact Frontline Systems Technical Support at (775) 831-0300 x4 or

support@solver.com. Some Solver Result error messages ask you to contact

Technical Support. If you can send us your model, this will be very helpful.

But experience shows that 99% of all technical support cases involve pilot

error by the user, and that 90% of all such cases could be easily resolved by

reading online Help or the User Guide. So we hope youll keep reading, and

that youll take these steps before calling technical support!

Your first step should be to review the messages in the solution log in the Task

Pane Output tab. This is especially important when youre solving a stochastic

optimization model, to ensure that you understand the solution method that

Analytic Solver Platform used, and how your model was transformed and

solved.

On the next page is an example of the Output tab at the solution of the example

model YieldManagementModel3.xls (described more fully in the chapter

Examples: Simulation and Risk Analysis).

If you click the Copy icon, the contents of the solution log will be copied to

the Windows Clipboard, where you can paste it into Microsoft Word, NotePad,

or an email message to Frontline Systems Technical Support. Also on the

next page is the complete solution log from the Gas Company Chance model

(before clicking the button to automatically improve the solution).

Note what happened during the solution process: Analytic Solver Platform

found that a Stochastic Transformation could not be applied to this model,

because it has a decision-dependent uncertainty (the number of no-shows at cell

C7 depends on the number of tickets sold, our decision variable, at C11). See

the chapter Mastering Stochastic Optimization Concepts for more information

on this important property of your model.

Analytic Solver Platform diagnosed the model as SIM NonCvx, and solved it

using simulation optimization the most general, but least scalable stochastic

optimization method in Analytic Solver Platform. It used the GRG Nonlinear

Solver Engine (selected by the user) for optimization, and on every trial solution

explored by the GRG Solver, it automatically performed a simulation.

---- Start Solve ----

Using: Full Reparse.

Parsing started...

Diagnosis started...

Warning: Non-smooth operation PSILOGNORM at 'Yield Management 3'!H25; 5 Non-

smooth operations found.

User selected "Simulation Optimization".

Diagnosis started...

Warning: Non-smooth operation PSILOGNORM at 'Yield Management 3'!H25; 10 Non-

smooth operations found.

Model diagnosed as "SIM NonCvx".

User engine selection: Standard LSGRG Nonlinear

Model: [YieldManagementModel3(SimOpt).xls]Yield Management 3

Using: Psi Interpreter

Parse time: 0.30 Seconds.

Setup time: 0.00 Seconds.

Solver found a solution. All constraints and optimality conditions are satisfied.

Solve time: 0.76 Seconds.

Lets contrast what happened above with another example, where there are no

decision-dependent uncertainties, and the underlying optimization model is a

linear programming problem, but there is a chance constraint.

A Model Solved with Robust Optimization

Below is an example of the Output tab at the solution of the Gas Company

Chance model in StochasticExamples.xls (described more fully in the chapter

Examples: Stochastic Optimization).

Again, if you click the Copy icon, the contents of the solution log will be

copied to the Windows Clipboard, where you can paste it into Microsoft Word,

NotePad, or an email message to Frontline Systems Technical Support.

Below is the solution log from the Gas Company Chance model (before clicking

the button to automatically improve the solution).

---- Start Solve ----

Using: Full Reparse.

Parsing started...

Uncertain input cells detected.

User requested Robust Counterpart.

Diagnosis started...

Convexity testing started...

Stochastic Transformation succeeded using Robust Counterpart with D Norm.

Transformed model is "LP Convex".

Model: [StochasticExamples.xls]Gas Company Chance

Using: Psi Interpreter

Parse time: 1.19 Seconds.

Engine: Standard LP/Quadratic

Setup time: 0.02 Seconds.

Engine Solve time: 0.00 Seconds.

Solver found a conservative solution to the robust chance constrained problem. All constraints

are satisfied.

Solve time: 1.36 Seconds.

Click the Solver Result Message for Help

The Solver Result message is always underlined it is a hyperlink to Help. If

you arent sure that you fully understand it, click the link to open online Help to

a detailed discussion of the message.

Below is an example of Help that appears when you solve the Gas Company

Chance model, and click on the Solver Result error message in green, Solver

found a conservative solution to the robust chance constrained problem. All

constraints are satisfied.

Notice that the Help topic points out the option to Auto Adjust Chance

Constraints. This is one key to better solutions when robust optimization is

used, as in this example. Clicking the icon at the top of the Task Pane yields

an improved solution, and the following solution log:

---- Start Solve ----

Model: [StochasticExamples.xls]Gas Company Chance

Using: Psi Interpreter

Using: Full Reparse.

Parsing started...

Diagnosis started...

Parse time: 0.19 Seconds.

Engine: Standard LP/Quadratic

Setup time: 0.00 Seconds.

Engine Solve time: 0.00 Seconds.

(above lines appear 7 times)

Solver has converged to the current solution of the robust chance constrained problem. All

constraints are satisfied.

Solve time: 0.39 Seconds.

This was a successful solution but in cases where you have a Solver Result

error message that you dont understand, or a solution that you dont under-

stand, the solution log can be even more helpful.

Choose Available Optimization Reports

As for conventional optimization, the available reports can help you understand

the properties of a solution found by Analytic Solver Platform. Just select

Reports Optimization Reports on the Ribbon the available reports in the

gallery are updated each time you solve.

Below is an Answer Report obtained for the Gas Company Chance model when

we first received the Solver Result message Solver found a conservative

solution to the robust chance constrained problem. All constraints are satisfied:

Note especially row 26, which reports the status of the chance constraint

VaR0.95($C$23) >=0: We asked for satisfaction of this constraint 95% of the

time, but at this solution the constraint is being satisfied 99.5% of the time.

This is a strong hint that the solution is conservative, and can be improved.

The Uncertainty Report for this model shows us the subset of the constraints and

objective that depend on uncertainty. (Note: Since this model is automatically

transformed to its robust counterpart, which has no uncertainty, you must set the

Task Pane Platform tab Optimization Model group Solve Uncertain Models

option to Simulation Optimization, then choose Analyze Original Problem to

produce this report.)

When your model takes a long time to solve, the Task Pane Output tab can be

helpful during the solution process at a minimum, to reassure you that the

Solver is still making progress, and has not hung up. If it is not already visible

when you first start solving, the Output tab will appear automatically after a

few seconds of solution time, as long as the Task Pane itself is visible.

The bottom part of the Output tab shows a running chart of the objective of the

best solution found so far. This is most often useful for simulation optimization

models, which may take some time to solve. Below is an example (staffing for a

call center, not included among the installed example files):

You can interrupt the solution process at any time, by pressing the ESC key, or

by clicking the button in the Task Pane Output tab. If your model is very

large, you might have to hold down the ESC key for a second or two. Since the

input focus may not be on the Task Pane when you click with the mouse, you

might have to click the button twice. A dialog like the one on the next page

will appear.

Click Continue if you want to continue solving; click Stop to cause the Solver

to stop the solution process (this may take a few seconds) and display the

message Solver stopped at users request. Clicking Restart may be useful

with the Evolutionary Solver see the Frontline Solvers Reference Guide.

There are several reasons why solving a stochastic optimization model might

take a long time. To better understand why, read the chapter Mastering

Stochastic Optimization Concepts.

1. If your model doesnt meet the requirements for the stochastic

programming or robust optimization solution methods, then the slowest

method simulation optimization must be used. Since this requires

an optimizer (such as the Evolutionary Solver) that will explore many

Trial Solutions, and a new simulation must be performed for every Trial

Solution, this method can take a lot of computing time.

2. If you have the Platform tab Simulation group Interpreter option set to

Excel Interpreter, Excel is used to recalculate the worksheet on each

Monte Carlo trial. This is usually an order of magnitude slower than

the PSI Interpreter, though it requires significantly less memory.

3. If model diagnosis or problem setup is slow (see timing messages in

the Task Pane Output tab), you might be using array formulas,

LOOKUP functions with large ranges as arguments, or long chains of

formulas where each formula depends on an earlier formula, which can

slow down the PSI Interpreter. See the analysis in the chapter

Getting Results: Optimization.

4. Your model might be well formulated, but very large, or it might

require non-smooth functions, or many integer variables. A faster

processor, multi-core processor, or more memory may help.

When your optimization results seem wrong, before doing anything else, you

should read any messages in the Output tab, and click the message to display

Help as described above. We emphasize this, because very often when we are

contacted in technical support, the user has not taken these basic steps.

Bear in mind that the uncertain function cells in your optimization model

normally display the calculated value for the last Monte Carlo trial of the last

simulation run. (All of Analytic Solver Platforms solution methods stochastic

programming, robust optimization, and simulation optimization perform at

least one simulation). It can be very helpful to cycle through the Monte Carlo

trials, and examine the values of uncertain function cells, as well as interme-

diate formula cells on which they depend. Just use the left and right arrows on

the Ribbon to change the trial index. You may find that your model calculates a

result you did not expect for some values of the uncertain variables.

Although software bugs are always possible, consider carefully the possibility

that the simulation results are correct for the model youve defined, and that

your expectation is wrong. We sometimes find in technical support that what

your model actually says is different from what you intended.

When you do receive a solution that makes sense to you, and you have a Solver

Result message in green at the bottom of the Task Pane for your stochastic

optimization model, you have available all the optimization and simulation

reports and charts that apply to your model and solution. Since a simulation is

performed for every stochastic optimization model, you can double-click the

uncertain function cells in your model to display the Uncertain Function dialog,

and obtain many different views of the uncertainty in your model:

Dialog Tabs

The Frequency, Cumulative Frequency, and Reverse Cumulative

Frequency tabs provide three different views of the full range of outcomes

for an uncertain function. You can click to display crosshairs with

numerical values on these charts, or add Lower and Upper bounds to see the

estimated probability of a profit or loss, for example.

The Tornado chart on the Sensitivity tab quickly shows you which

uncertain variables have the greatest impact on this uncertain function,

across the full range of Monte Carlo trials. The Scatter Plots tab often

reveals further insights about the behavior of this uncertain function versus

each uncertain variable, or versus other uncertain functions.

The Statistics and Percentiles tabs give you a full range of numerical

results for this uncertain function, across the full range of Monte Carlo

trials. Using PSI Statistics functions, you can place any of these values into

a worksheet cell.

Using the right panel of the dialog, you can change the chart type and

color, add titles, legends and gridlines, or add chart markers. From the

Options dialog (accessible from the Options button on the Ribbon), on the

Charts and Markers tabs, you can set default chart and marker settings for

all of your charts.

Using the title toolbar icons, you can save your settings, print the charts or

numbers from any of the dialog tabs, or copy the charts or numbers to the

Windows Clipboard, where they can be pasted into other applications. You

can also fit a distribution to the simulation results or export your results to

either Power BI or Tableau.

Click the leftmost icon on the second row to display the 3-D toolbar that

lets you with a single click shift between 2-D and 3-D, shrink or

magnify the chart, or move or rotate the chart to a different perspective.

Frontline Solvers 2016-R2 User Guide Page 275

Dimensional Modeling

Introduction

Dimensional Modeling is a fundamental new capability in Analytic Solver

Platform, Risk Solver Platform and Premium Solver Platform. It introduces new

concepts such as dimensions and cubes, and provides all the tools you need to

build and solve models using these concepts. If youre used to spreadsheet

modeling, Dimensional Modeling will require some learning and practice. But

when you want to construct larger models for common business situations

where there are multiple products, projects or investments, multiple customer

types, geographic regions, or time periods, multiple sources and destinations,

dimensional modeling can turn a very complex, hard-to-maintain spreadsheet

problem into a simple, well-structured, easily maintained and expandable model.

If youve used Pivot Tables or PowerPivot in Excel, or if youve used a

multidimensional database, data warehouse or business intelligence tool, the

concepts behind Dimensional Modeling will probably be familiar. But these

tools primarily deal with multidimensional data, generally reflecting the past.

Dimensional Modeling makes it easy to construct multidimensional models,

mostly composed of formulas, that you can use in planning for the future.

Unlike other tools, in Analytic Solver Platform you can use everything you

know about Excel formulas in Dimensional Modeling. For example, if cell A1

contains a number and cells B2 and C3 contains =PsiCube() functions, a formula

like =A1+B2*C3 in a cell will yield a cube result, multiplying and adding the

appropriate values along several dimensions. You can also define B2 and C3

based on Pivot Tables containing input data, and easily obtain a Pivot Table that

displays the results of like =A1+B2*C3.

Very often, a successful model is expanded to include more products, regions,

time periods, etc. This is much easier to do with a Dimensional Model than

with a traditional spreadsheet model. Formulas like =A1+B2*C3 need not

change at all when you add elements (more cell or database values) to the

existing dimensions. You can even add new dimensions to B2 and C3, or turn

A1 from a single cell to a cube, and =A1+B2*C3 will automatically calculate

results across the additional dimensions.

Dimensional Modeling can be used to create multidimensional what if models

a very powerful capability by itself. But you can also use it to create better

structured, more compact and easily readable optimization and simulation

models. For example, blocks of constraints that once required large ranges of

repetitive formulas can now be entered in one or a few cells, drastically reducing

the number of formulas. Similarly, in a simulation model, blocks of uncertain

functions that once required large numbers of repetitive formula cells can be

reduced to one or a few cells. You can define as many structural dimensions

as you like, and use up to 8 of them at one time, in any PsiCube() function or

calculated cube intermediate result in a formula.

Dimensional Modeling and Parametric Analysis

Dimensional Modeling also offers a powerful extension of Analytic Solver

Platforms capabilities for multiple parameterized optimization and simulation

(described in the earlier chapters Examples: Parameters and Sensitivity

Analysis, Getting Results: Optimization and Getting Results: Simulation).

It enables you to perform sensitivity analysis, or run many optimizations or

simulations, varying parameters across multiple dimensions on each run, and

capture all the results optionally in Pivot Tables and Pivot Charts.

Without Dimensional Modeling, you define parameters for sensitivity analysis,

optimization and simulation, using PsiSenParam(), PsiOptParam() and

PsiSimParam() functions, respectively. These parameters function like simple

cubes defined over just one dimension the run index 1, 2, 3, etc. You run

multiple calculations, optimizations or simulations, where all the parameters of a

given type move together through their arrays of values.

With Dimensional Modeling, you can define as many parametric dimensions

as you like, and create cubes of parameter values that are defined over one or

more dimensions. You can then perform sensitivity analysis or run multiple

optimizations or simulations, where any subset of your parametric dimensions

are active (the others are locked), and get results for all combinations of the

parameter values youve defined.

Just as you can expand a model by adding a structural dimension and generalize

one or more cubes over the new dimension, without changing your formulas,

you can add a parametric dimension, use it in one or more cubes, and expand

your sensitivity analysis, optimization or simulation runs to include more

scenarios, without changing any formulas.

As mentioned earlier, you can define cubes based on Pivot Tables containing

input data, and easily create new Pivot Tables that displays results of formulas

like =A1+B2*C3. But creating a Pivot Table does require several steps, as well

as real estate on your spreadsheet. If you want to inspect the results of

intermediate calculations, you might need a separate table area for each cube

formula cell in your model.

Analytic Solver Platform makes this much easier. Just double-click on any cube

formula to see a pop-up window that behaves like an instant Pivot Table,

allowing you to drag and drop both structural and parametric dimensions

across the columns and rows, and reorganize and display the data or calculated

results. Youll see a number of examples of these pop-up windows in this

chapter. For final results and reporting, you can use Pivot Tables and Charts.

Lets define the concepts in Dimensional Modeling more formally. You can

define two types of dimensions, Structural and Parametric, and use them in

calculation/sensitivity analysis, optimization and simulation models. You give a

name (such as Region) for the dimension, and you provide names/labels or

numbers for the elements of the dimension for example North, South,

East and West. Note that a dimension doesnt define the data itself it

defines a structure, relevant for your business situation, for the data.

Cubes are multi-dimensional arrays that hold the data. Other names used in data

warehouse and business intelligence systems, are measures and/or fact tables.

A cube has an element (data value) for each combination of elements of the

dimensions you specify when defining the cube. For example, you might create

a cube named Sales, defined over the Regions dimension, with four numeric

values representing sales in the North, South, East and West regions. The

structure of a cube is very much like a Pivot Table, and you can create a cube by

placing a PsiPivotCube() function in a cell, referencing an existing Pivot Table.

A single cube holds a single measure or type of value. For example, a person

has many attributes such as height, weight, hair color, and eye color. You might

define a dimension Person with elements such as John, Mary and

Susan. But since a cube holds a single attribute or measure, youd need four

different cubes, each defined over the Person dimension, to hold the values of

height, weight, hair color, and eye color.

There are three main steps involved in creating a Dimensional Model. Step 1 is

to define at least one dimension, either parametric or structural. Step 2 is to

define at least one (usually several) cubes. Step 3 is to define at least one

output cell for example, the objective cell in an optimization model with a

formula that depends on a cube. Often, youll have outputs that are cubes and

contain many even thousands of result values.

This chapter will use the Product Mix example, introduced at the beginning of

the chapter Examples: Conventional Optimization, to illustrate Dimensional

Modeling concepts, and the menu choices and Psi functions you can use to build

a Dimensional Model step by step. The example is very simple, with just two

structural dimensions Products and Parts. This will make it easier to fully

grasp the concepts and step-by-step operations, but since you can usually lay

out two-dimensional data in regular spreadsheet columns and rows, Dimen-

sional Modeling might seem like overkill for this simple example. The

advantages of Dimensional Modeling will be apparent when you are modeling a

more realistic business situation with many dimensions.

Click Help -- Examples on the Analytic Solver Platform ribbon, to open the

Frontline Example Models Overview workbook. Click the Optimization

Examples button, or select the Optimization tab, and scroll down to find and

click Structural Dimensions from the list. When this workbook opens, click

the Product Mix Original tab, which displays a conventional version of the

Product Mix model.

This example solves the problem of how many TVs, Stereos, and Speakers a

company should manufacture. It has three decision variables (C14:E14) that

correspond to the number of TVs, Stereos, and Speakers that the company will

manufacture. The profit margins for each product are known. The gross margin

(cell C24) for a TV is $75. The gross margin for stereos (cell D24) is $50 and

the gross margin for speakers (cell E24) is $35.

Five different parts are used in the manufacturing process of these three

products. The parts needed to build a TV are: 1 chassis, 1 picture tube, 2

speaker cones, 1 power supply, and 2 electronic kits. To build a stereo requires

1 chassis, 2 speaker cones, 1 power supply, and 1 electronic kit. Finally,

speakers require 1 speaker cone and 1 electronic kit.

The constraints are simply that the number of parts used to build each product

(calculated in cells G18:G22) cannot exceed the inventory (found in cells

H18:H22). A non-negativity bound has also been added to the variables

(C14:E14 >= 0) as it would be impossible to manufacture a negative amount of

products. Since the company wants to maximize profit, we ask ASP to

maximize the value of the objective (cell G24), the total gross profit.

You can view the complete model in the Task Pane Model tab. Solve the model

by clicking the green arrow in the Model tab. ASP will run an optimization to

find a solution of 200 TVs (cell C14), 200 Stereo (cell E14) and 0 speakers (cell

E14). This solution gives a final objective of $25,000 in cell G24.

Now let's inspect a model of this same problem setup using Dimensional

Modeling: Click the Dimensional Modeling tab.

Cells K13 and L13 define the Products and Parts dimensions. Cells K16:L17

define four cubes, using the PsiCube() function. Cells K20 and L20 contain

cube formulas that calculate the constraints and objective, using the PsiReduce()

function. Cells K25:K29 contain an Excel array formula{ =PsiCubeData(K20)}

to display the values of the left hand sides of the constraints on the spreadsheet;

but if you simply double-click cell K20, youll see the same values in a pop-up

window that functions like an instant Pivot Table.

Notice that the Task Pane Model tab outline (not pictured here) lists the

Dimensions and Cubes in the model, as well as the Variables, Constraints,

Objective and other model elements. To keep things simple for users who arent

using Dimensional Modeling, these outline elements appear only when you have

functions such as PsiDim() and PsiCube() in cells on your worksheet.

The decision variables are still in cells C14:E14. Try changing one of these

cells to a new value such as 100. Youll see that the worksheet recalculates just

like a normal Excel model, even though it is composed of dimensions and cubes.

decision variable whereas they might have thousands of constraints in a single

cell. Keeping decision variables in individual cells makes it easy to capture final

solution values, save them in your workbook, and use Excel to recalculate the

spreadsheet later. Cube formulas appear to Excel as ordinary formulas (with

single values) using user-defined functions such as PsiCube() and PsiReduce();

the actual multidimensional calculations are performed behind the scenes by

the PSI Interpreter.

Solve the model by clicking the green arrow in the Model tab, just as you did on

the Original sheet. Youll see the same optimal solution appear in cells C14:E14.

The following sections will take you step by step through the process of building

a Dimensional Model like the one above. You can use the Analytic Solver

Platform menu choices, grouped under the Model button, to define dimensions,

cubes and results, or you can type functions such as PsiCube() and PsiReduce()

directly into cells, without using the GUI at all.

Keep in mind the following three steps when using Dimensional Modeling:

1. Define a Dimension.

2. Define a Cube.

Defining a Dimension

Two dimensions have been created in cells K13 and L13, Products and Parts,

respectively. The Products dimension (cell K13) contains three items or

elements: TVs, Stereos, and Speakers. The Parts dimension (cell L13) contains

five items or elements: Chassis, LCD Screens, Speakers, Power Supply, and

Electronics.

To create a dimension, you may either type the PsiDim() function call directly

into a cell, or use the Model menu, shown below, to insert the PsiDim() formula

into the active (selected) cell.

To use the Model menu, click Model Dimension From Cell Range. The

Add Dimension dialog appears.

Enter a name of your choice for the Name field. In this case, we have used

Products. Select Range and enter the Excel cell range that contains the product

names. One could also enter an integer here, say 11, which would result in the

creation of a dimension with 11 elements. Select Bounds to enter a lower and

upper bound. These bounds can be entered directly into the lower and upper

bound fields or cell addresses can be used. For example, if bounds of 1 and 10

are entered directly or cell addresses of cells containing 1 and 10 are entered into

the Lower and Upper fields, a dimension with 10 (upper - lower + 1) elements

will be created. (In this case, there will be no names associated with the

elements other than indices from 1 to n.)

Enter the range address of C13:E13 which hold the product names: TVs,

Stereos, and Speakers. Specify the cell address or defined cell name for

Location, this example uses K13. Finally, select Structural to create a

Structural dimension. (See below for instructions on how to create a Parametric

Dimension.) Click OK to add the formula =PsiDim("Products",C13:E13) to

cell K13, Repeat these steps in cell L13 using the Name Parts and Range

B18:B22.

For more information on the PsiDim() function, please see the Frontline Solvers

Reference Guide.

Lets take a look at the Model tab on the Solver Task Pane. You should now

have two dimensions listed under the Sheet1 worksheet, Products and Parts. The

Products dimension has three elements: TVs, Stereos, and Speakers. The Parts

dimension has five elements: Chassis, Screen, Speaker, Power Supply and

Electronics.

Several options will appear at the bottom of the task pane under Dimension (as

shown in the screenshot above). Here you can view the cell where the

dimension is located (cell K13), the formula, the name of the dimension and the

type of dimension (structural or parametric). These fields are all read-only.

Current Value, however, controls the values displayed in the cell containing the

cube. For example, select Speakers for Current Value. Values in cells K16,

K17, L16, and L17 will change to reflect values for Speakers. For example,

K13 will change to Products[3] to indicate that the third element of the Products

dimension has been selected. K16 will change to 0 (the value of cell C13), K17

will change to 450 (the value of cell H18), L16 will change to 35 (the value of

cell E24), and cell L17 will change to 0 to reflect that 0 chassis are used in the

production of speakers.

Defining a Cube

Four Cubes have been created in cells K16 (which holds the variable cells), L16

(which holds the Profit values for each product), K17 (which holds the

constraint right hand sides), and L17 (which holds the amount of parts used per

product). To create a cube, you may either type the PsiCube() formula into a

cell or use the Model menu, shown below, to insert the formula into the selected

cell.

To use the Model menu, click Model Cube From Cell Range. The Add

Cube dialog appears.

Enter an Excel cell range for Range, in this instance, select cells C14:E14, the

variable values. Select Products from the Dimension drop down menu. To add

more than one dimension to the cube, click + button. Select a blank cell for

Location this example uses cell K16. Click OK to create the cube. The

following formula will be entered into cell K16,

=PsiCube($C$14:$E$14,"Products"). (This formula may also be entered

directly.)

The first argument of any cube is the cell address of the data. In the cube

located in cell K16, the first argument is C14:E14 (the variable cells). The

second thru ninth arguments are the dimensions for which the data will be

calculated. (At least one dimension is required.) This 1-dimensional cube,

calculated over the Products dimension, holds the data in cells C14:E14 which

are the number of products to build - the decision variables. The data for the

cube located in cell L16 can be found in cells C24:E24. This 1 dimensional

cube contains the profit values for each of the products. This cube is also

calculated over the Products dimension. In the 1 dimensional cube located in

cell K17 (the cube holding the constraint right hand sides), the data is contained

in cells H18:H22. In cell L17, a 2-dimensional cube has been created using the

Products and Parts dimensions. This cube holds the fact table containing the

parts required per product (cells C18:E22).

Note: When calculating a cube over multiple dimensions, the most

rapidly changing dimension must be first, while the most slowly

changing dimension must appear last. Take the example table below.

Starting from cell B2 (the start of the fact table) and reading from left

to right, the 1st element of the cube will be 1 (Chassis & LCD TV), the

2nd element of the cube will be 1 (Chassis & Stereo), the 3rd element of

the cube will be 0 (Chassis & Speakers). The 4th element of the cube

will be 1 (Screen & LCD TV), the 5th element of the cube will be 0

(Screen & Stereo) and the 6th element of the cube will be 0 (Screen &

Speakers). Between Products and Parts, which dimension is changing

more frequently as we read from left to right? Correct! Products is

changing more frequently which means this dimension should come

first in the AddCube dialog or PSICube() function.

Double click cell L17 to open the fact table for the cube located in this cell. The

following window appears. The data contained in this fact table is the same data

contained in cells C18:E22. Click the arrows on the right side of the dialog to

open an additional pane. Here you can control the display formatting of the

cube by selecting Cube Rows or Cube Columns from the drop down menu or

by simply dragging Parts to Products and vice versa.

Click the Refresh Cube Data icon when changes have been made to the

contents of the cube on the spreadsheet. Click the Export Pivot Table icon to

export the contents of the cube to an Excel Pivot Table. Click the Copy icon

(or click the down arrow to the right of the icon) to copy the grid to the

spreadsheet, to Outlook, Word, etc. Click the Autosize Pivot Table icon to

autosize the columns in the grid. Click the Print icon (or click the down arrow

to the right of the icon) to send the grid to the printer, see a print preview, or

to change printer or page settings.

When executing an operation over cubes, if all participating cubes have the

same dimensions, then the result cube will have the same dimensions too. For

example, if a cube with 4 dimensions is multiplied (or added, subtracted,

divided, etc.) with another cube also containing the same 4 dimensions, the

result cube will contain the same 4 dimensions.

Otherwise, the result cube will be a union of the participating dimension sets.

For example, if a cube B2 with two dimensions is multiplied by a cube C3 with

one dimension that also appears in the first cube, the result B2*C3 will be two-

dimensional. If C3 is defined over a dimension different from either of the two

dimensions in B2, the result cube will be three-dimensional.

You can use almost any Excel arithmetic or intrinsic operations, as well as

almost all Excel built-in functions in cube formulas. There are a few Excel

functions that are not supported by the PSI Interpreter and are thus not supported

in Dimensional Modeling. These functions include: CubeX(), Call(), Cell(),

EuroConvert(), GetPivotData(), Info(), Hyperlink(), Indirect(), RegisterID() and

SQLRequest().

Now lets calculate the constraints. In the original model, the constraints are the

number of parts used (cells G18:G22) must be less than the inventory (found in

cells H18:H22).

To calculate the constraint in this example using Dimensional Modeling, we

must use the PsiReduce() function. This function reduces or aggregates a multi-

dimensional cube along one dimension. A cube may be aggregated using the

following supported functions: average, sum, max, min, stdev, or var. (For

example, if PsiReduce() is used to aggregate a 3 dimensional cube, the

resultant cube would contain 2 dimensions.) A cube reduced along all its

dimensions is called a Degenerated Cube and will be a single value, or scalar.

Select cell K20, then click Model Reduction. The Add Reduction dialog

appears.

Select Other Cell from the Cube drop down menu, then enter L17*K16 into the

empty field. Since we want to reduce the cube along the Products dimension,

select Products from the Dimension drop down menu. Next select Sum from

the Reduce By drop down menu. This is how the cube will be aggregated.

Confirm that Location is cell K20, then click OK. The formula,

=PsiReduce($L$17*$K$16, "sum","Products"), is entered into cell K20. In

general, the equation for this cube is: , for each i= 1 to 5,

where X equals the products (TVs, stereos, and speakers), Y equals the parts

(chassis, screen, speaker, power supply, & electronics) and R is a 1-dimensional

vector containing 5 elements.

The multiplication of the two cubes in cells L17 and K16 in the first argument of

PsiReduce will result in a third cube containing the product of the number of

parts per product and the variable values in cells C14:E14. The cube in cell

L17 contains 15 elements and is calculated along two dimensions, Products and

Parts. The cube in cell K16 has 3 elements and holds the fact table for only 1

dimension, Products. Remember, when multiplying two cubes with different

dimension sets, the resultant cube will be structured along the Union of both

dimension sets. In this case, the resultant cube will be structured along both the

Products and Parts dimensions and will also contain 15 elements. PsiReduce()

reduces or eliminates the specified dimension in the third argument, in this case

the Products dimension. The cube multiplication and reduction occurring in

this single cell (cell K20) perform the same operations as cells G18:G22 in the

original problem! Since Cubes are single cells, they can display only the first

element of their cube result. In order to see all cube elements, simply double

click cell K20. A popup window appears containing the following fact table.

Its also possible to check the contents of a cube on the worksheet using the

PsiCubeData() function. Please see the Frontline Solvers Reference Guide for

more information on this function.

objective, we must multiply the cube containing the decision variables (cell

K16) by the cube containing the Profit values (cell L16). Select cell L20 and

click Model Reduction. The Add Reduction dialog appears.

Select Other Cell from the Cube drop down menu and enter K16*L16 in the

blank field. Since we are looking to sum over the Products dimension (sum the

products of Products * Profits), select Products from the Dimension menu and

Sum from the Reduce By menu. Confirm the Location is cell L20 and then click

OK. The formula, =PsiReduce($K$16*$L$16, "sum","Products"), is entered

into cell L20. The result of this cube is a scalar or a single value.

Its also possible to use an output function such as PsiOptData() to observe the

contents of a fact table on the spreadsheet, rather than in a pop up fact table.

Lets designate cells K25:K29 as output cells to observe the final values of all

five constraints calculated in cell K20. To do so highlight cells K25:K29, then

enter =PsiOptData(K20), then CTRL + ALT + ENTER on the keyboard to

enter this formula as an array. Once Solver finds a solution, these cells will be

populated with the left hand side of each constraint. For example, cell K25 will

display the left hand side of the first constraint, cell K26 will display the left

hand side of the 2nd constraint, cell K27 will display the left hand side of the 3 rd

constraint, and so on.

without ever having to run an optimization (or simulation) using a 2nd type of

output function, PsiCubeOutput(). For more information, please see below

under Additional Functions.

Now lets create our Solver model by adding the variables and constraints to the

Analytic Solver Platform Task Pane.

At this point we can now start building our model in the Analytic Solver

Platform Task Pane.

1. Add the Variables: Select cells C14:E14, then click Decisions on the

Ribbon. (Alternatively, click Decisions Normal on the Ribbon.) If

you inspect the Task Pane, you will find that cells C14:E14 now appear

under the Normal Variables section.

2. Add the Constraints: Select cell K20, then click Constraints on the

Ribbon. The Add Constraint dialog will appear. (Alternatively, click

the down arrow under Constraints, then select Normal -- <= from the

menu.) Enter cell K20 as the left hand side of the constraint and cell

K17 as the right hand side of the constraint, then click OK. If you

inspect the Task Pane, you will find K20 <= K17 now appears under

Normal Constraints.

3. Add the Objective: Select cell L20, then click Objective, then OK.

(Alternatively click the down arrow under Objective, then select Max

Normal from the menu.) If you inspect the Task Pane, you will find

that cell L20 now appears under Objective with (Max) appearing to

the right.

negative amount of products, we must add a non-negativity bound. To

do so, select cells C14:E14, then click Constraints. (Alternatively,

click the down arrow under Constraints, and select Variable

Type/Bound -- >= from the menu.) The Add Constraint dialog will

open. Select >= for the sense of the constraint (drop down menu in

the middle). Enter 0 as the constraint left hand side, then click OK.

If you inspect the Task Pane, you will find C14:E14 >= 0 now appears

under Bound.

Enter 0s into cells C14:E14 then solve the model by clicking the green arrow on

the Model Task Pane.

Solver will solve the model and display the final variable values in cells

C14:E14: 200, 200, and 0, respectively. The status bar (found beneath the Task

Pane) will display the message Solver found a solution with a green background.

Analytic Solver Platform will populate the objective formula located in L20

when the optimization finishes successfully. Note: All Solver engines except

Interval Global Solver support Dimensional Modeling.

Double click cell K20 to open a grid displaying the right hand sides of the

constraints or the number of parts used to manufacture the three products.

As you can see by the comparison of these two models, using a cube to model a

problem will result in a more compact and easier to read model. Continue

reading the next section to learn about the 2nd goal of dimensional modeling, the

parametric dimension.

Now close this example, and continue reading to discover how to use a

parametric dimension within an optimization model.

Additional Functions

Using Dimensional Modeling, its possible to create what if scenarios without

ever having to run an optimization (or simulation). The function PsiCubeData()

will list the contents of any cube on the spreadsheet much like PsiOptData()

listed the left hand sides of the constraints in the example above. The difference

between these two functions is that PsiOptData() will only be populated after an

optimization is run, while PsiCubeData can be populated at any time. Let use

PsiCubeData() to list the contents of the Cube located in cell K17. (This cube

holds the constraint right hand sides.) First, highlight 5 blank cells, say

K31:K35, enter =PsiCubeData(K17), then press CTRL + SHIFT + ENTER to

enter the formula as an array in all five cells. Next, click Model Cube Result

Calculate to calculate the cube without performing an optimization.

Afterwards, Cell K31 will display 450, cell K32 will display 250, cell K33 will

display 800, cell K34 will display 450, and cell K35 will display 600. These

values correspond to the values in cells H18:H22.

Youll notice that after you performed a manual cube calculation (by clicking

Model Cube Result Calculate), the objective function cell (cell L20) now

displays #NA. To calculate and display the value of a degenerated cube (a cube

that has been reduced to a scalar value), click Model Cube Result Output

to append +PsiCubeOutput() to the existing formula to designate this cell as a

cube output. Afterwards, click Model Cube Result Calculate to recalculate

all cubes on the worksheet. Note: PsiCubeOutput is not required in cell L20

when running an optimization as Solver will calculate and display the contents

of the objective function after a solution is found.

Now lets use PsiCubeData() to display the multidimensional cube in cell L17.

First, we need to determine whether the result in L17 is a cube and which

dimensions constitute that cube. Since no more than two dimensions (Parts and

Products) are defined in the worksheet, well highlight two blank cells and enter

PsiCubeData() as an array formula in these cells. (Note: If you arent sure how

many dimensions are contained in a cube, select a few extra columns and rows

for the array formula. The excess cells will simply display #N/A.) Lets pretend

that we arent sure of the number of dimensions contained in this cube, we know

there are at least two, so lets highlight three cells, K32:M32. With all three

cells highlighted, enter the following formula: =PsiCubeData(L17, dims).

When dims is passed for the struc_format argument (2nd argument), the name

and size of each dimension will be returned. Afterwards, press SHIFT + CTRL

+ ENTER to enter this formula as an array in cells K32:M32. Afterwards, K32

will display Parts[5] indicating that there are 5 elements in the Parts

dimension. L32 will display Products[3] indicating that there are 3 elements

in the Products dimension. M32 will display #N/A indicating that a third

dimension does not exist in the cube. Now that we know the number of

elements (or size) of the dimensions, we can display the fact table again by

entering PsiCubeData() as an array, but this time well use vals for the

struc_format argument.

array, will display the data as a relational table. Since there are 3 elements in the

Products table and 5 elements in the Parts table, the fact table for this cube will

contain 15 (3 x 5) elements. Therefore, we will need to highlight 1 column for

the first dimension (Parts), a 2nd column for the 2nd dimension (Products), a 3rd

column for the actual values and 15 rows to hold all 15 values in the fact table.

In this example, well use the blank cells K33:M47. (This area encompasses

three columns and 15 rows.) Select these cells, enter =PsiCubeData(L17,

vals), then press SHIFT + CTRL + ENTER to enter this formula as an array

formula. The following table will be displayed.

Cube Result Calculate is selected, these formulas will not be populated

during the optimization unless Dimensional Calculation is set to Automatic on

the Platform tab in the Task Pane. If Dimensional Calculation is set to Manual,

PsiOptData() can be used in place of PsiCubeData() but only with cubes holding

an optimization model component, such as a cube holding decision variables

(K16) or calculating constraints (K20). PsiOptData() will be populated after an

optimization even when Dimensional Calculation is set to Manual. However,

PsiOptData() will not be populated when Model Cube Result Calculate is

selected on the Ribbon. Please see PsiOptData() in the Frontline Solvers

Reference Guide for more information on this function.

If you wanted to display only the values in the fact table, then you would need to

highlight 15 blank cells, in say the M column (well use cells M33:M47), then

enter PsiCubeData() without the 2nd argument or =PsiCubeData(L17) then

press SHIFT + CTRL + ENTER to enter the formula as an array formula in cells

M33:M47. Afterwards, these cells would display only the values of the fact

table as shown in cells M33:M47 in the above screenshot.

PsiCubeData() can also be used to display a slice or even a single element of the

fact table. For example, to display the cube data only for Part: Screen and

Product: TV, select three cells, say N36:P36 and enter the following formula:

=PsiCubeData(L17, [Parts].[Screen], [Products].[TV]). Then press SHIFT +

CTRL + ENTER to enter as an array formula. Afterwards, the following table

will be displayed.

You can define and use a Parametric Dimension to run multiple optimizations,

simulations, and/or calculations. Analytic Solver Platform treats all data

included in a parametric cube as parameter values, such as ones defined by

PsiOptParam(), PsiSimParam() and PsiSenParam(). Recall that these parameters

are automatically varied by ASP in order to create a type of what-if analysis.

Please see the chapter Examples: Parameters and Sensitivity Analysis in this

Guide for more information on the PsiOptParam(), PsiSimParam() and

PsiSenParam() functions. If a model only includes Parametric Dimensions,

each value in the Output cube will be associated with a different simulation or

optimization parameter, rather than a set of model functions.

Open the example, Parametric Dimensions.xlsx by clicking Help -- Examples

on the Analytic Solver Platform ribbon. The Frontline Example Models

Overview.xls file will open. Select the Optimization tab and choose the

ParametricDimensions workbook from the list.

an additional element to the model. Imagine that you have a choice to purchase

two different types of TV screens, plasma or LCD, from three different

suppliers, Sony, Vizio, and Phillips, for about the same price. Each supplier can

deliver a specific number of screens depending on the type of screen chosen.

For example, Sony can only deliver 150 LCD screens, but 210 Plasma screens

while Vizio can deliver 250 LCD screens but only 175 Plasma. Your job is to

now not only decide how many TVs, stereos, and speakers to make, but also to

decide what type of screen will go into the TVs: plasma or LCD.

Select cell B30 on the worksheet and click Model Dimension From Cell

Range to open the Add Dimension dialog. Enter Screens for Name, Select the

Range radio button, select or enter cells B28:B29 in the Range field, confirm

cell B30 is selected for Location, then select Parametric. Then click OK.

B28:B29). As you can see, the arguments for PsiParamDim() are identical to

PsiDim(). The first argument is the name of the dimension and the 2nd argument

is an Excel range. Its also possible to enter upper and lower bounds for the 2nd

argument (select Bounds on the Add Dimension dialog) or to simply enter an

integer n which will create a parametric dimension with n elements. (In this

case, there will be no names associated with the elements other than indices

from 1 to n.) Repeat the steps above to create a second Parametric Dimension

in cell B27 using the name Suppliers and the Excel range C27:E27.

Now select cell H19 and click Model Cube From Cell Range to bring up

the Add Cube dialog. This cube will contain the values from cells C28:E29.

Therefore, select cells C28:E29 for Range. Select Suppliers for Dimensions,

then click the + command button to add a 2nd dimension, Screens. Note: As

mentioned above, when calculating over multiple dimensions, the columns

dimension, or the dimension that is most often changing, must always come

first. Confirm that H19 is listed for Location and click OK.

The formula =PsiCube($C$28:$E$29,"Suppliers","Screens") will be entered

into cell H19.

If you inspect the Model tab on the Task Pane, youll see that two more

dimensions (Suppliers and Screens) and one more cube ($H$19) appear under

the appropriate headings.

Now click the green arrow on the Model tab to run Solver. Solver will run six

different optimizations each time using a different value from the cell range

C28:E29 for cell H19. For example, for the first optimization, Solver will use

150 for the value of H19, for the 2nd optimization, Solver will use 210 for the

value in cell H19, for the 3rd optimization, Solver will use 250 for the value in

cell H19, etc.

To easily. view the results of the six different optimizations, simply double click

cell L20 to display the grid shown below.

Instantly six different what if scenarios are displayed organized by supplier

and screen. (Click the icon to autofit the columns to display all values/text.)

As you can easily see there are four different options that result in the largest

profit. Purchasing LCD screens from either Vizio or Phillips or Plasma screens

from Sony or Phillips will result in a Gross Profit of $25,000. Purchasing

Plasma screens from Vizio will result in a decreased profit of $24,875 and

purchasing LCD screens from Sony results in an even smaller profit of $24,750.

To view the products across the top and the manufacturers down the left of the

grid, simply drag Screens above Suppliers.

Double click cell K20 to view the number of parts required in the construction

of the TVs for each of the six different screen options. (Click the icon to

autofit the columns to display all values/text.)

Note: The organization of the grid can be easily changed to meet your needs by

simply dragging the dimensions Parts, Suppliers, and Screens into the

formulation of your choice. Or click the double arrows on the right side of the

dialog to open the options window. Check the dimensions to be listed by row

and by column.

If you wanted to view the final objective value when Sony Plasmas as used in

the construction of the TVs, first select Screens on the Model tab, then select

Plasma for Current Value.

Now select Suppliers on the Model tab, then select Sony for Current Value.

Cell H19 will change to 210 to reflect the value in cell C29 which is the number

of Plasma screens Sony can supply. In addition, the final variable values in cells

C14:E14 will change to 200, 200, 0, the objective shown in cell L20 will change

to $25,000, the parametric dimensions in cells B27 and B30 will change to

Suppliers[1] (to reflect that the first element of the Suppliers dimension is

selected as the current value) and Screens[2] (to reflect that the 2 nd element of

the Screens dimension is selected as the current value).

As with PsiParamDim(), several options will appear at the bottom of the task

pane under Dimension (as shown in the screenshot above). Here you can view

the cell where the dimension is located (B27), the formula, the name of the

dimension (Suppliers) and the type of dimension (structural or parametric).

These fields are all read-only. However, Current Value, Locked, Active in

Optimization, Active in Simulation, and Active in Sensitivity Analysis can all be

edited. Current Value controls the values displayed in the cube cells. For

example, select Vizio for Current Value. The value in cell H19 will change to

reflect the Vizio value for the Current Value of the Screens dimension (210).

Setting Locked to True, will result in the dimension being locked or frozen

to the Current Value element during optimization. For example, if Current

Value is set to Sony for the Suppliers Parametric Dimension and Locked is set to

True only two optimizations will be ran when the green arrow is clicked, one

optimization for the value 150 (cell C28) and one optimization for the value 210

(cell C29). Double click the objective cell (L20) to display the results for the

two different screens supplied by Sony.

You can also reduce the dimensions displayed in the grid by performing a

Parametric Analysis. Click Reports Optimization Parameter Analysis to

open the Cube Optimization Report dialog.

All seven cubes appear under Cubes and Selection, select cells L20 and K20 and

click > to select. Both dimensions (Suppliers and Screens) appear under

Parametric Dimensions, select one dimension, say Suppliers, then click > to

select. Afterwards, click OK. The following grid appears.

Here the slices of the structural dimensions can be viewed. Click the two

arrows on the right of the dialog to open the options pane.

This grid displays the number of chassis parts required when Screens are

purchased from each Supplier. For example, if the screens are purchased from

Sony, only 350 chassis will be needed. If screens are purchased from Vizio or

Phillips, 400 chassis will be required. Note: When a dimension is deactivated, it

is essentially locked to its first element. In this case, the Screens dimension is

locked to the LCD values of 150, 250, and 200. Click the down arrow under

Parts to see how many of each part will be required when screens are purchased

from each supplier.

Currently both the Screens and Suppliers Parametric Dimensions are active in

all three types of analyses: optimization, simulation and sensitivity. As stated

earlier, this means that if you wanted to use these dimensions for a parameter

analysis, you could do so as an optimization parameter, sensitivity parameter,

and/or simulation parameter. To remove this Parametric dimension from any of

these analyses, simply change True to False. If Active in Optimization is set to

False, this dimension will be ignored in the next optimization. Likewise, if

Active in Simulation or Active in Sensitivity Analysis is set to False, then this

dimension will be ignored in the next simulation or sensitivity analysis.

For example, select Screens in the Model Task Pane, select Plasma for Current

Value, then change Active in Optimization to False.

Now run an optimization either by clicking the green arrow on the Task Pane or

Optimize Solve Complete Problem on the ribbon.

Solver will run three optimizations one each for values 150, 250, and 200 or

the number of LCD screens (the first element in the Screens dimension) that can

be supplied by Sony, Vizio and Phillips, respectively (cells C28:E28). To view

the results of each value, simply select Suppliers on the Model Task Pane and

select Sony, Vizio, or Phillips or double click any of the cubes to display the

values for these three optimizations. For example, click cell L20 and K20 to

display the following grids. Both grids only reveal the optimization results for

the three suppliers calculated using the first element from the Screens

dimension.

Its also possible to view all Parametric Dimensions included in the workbook

by clicking Parameters Dimension on the Ribbon to bring up the Parametric

Dimension Participation dialog. From here you can select which dimensions are

active for Optimization, Sensitivity Analysis and Simulation, all on one screen.

For example, to remove the Suppliers Parametric Dimension from Simulation,

select Suppliers and click <. To remove all Parametric Dimensions from

Simulation, click <<.

Monitored Cells to open the Optimizations Chart dialog.

Expand Variables (by clicking the +), then expand C14:E14. Select C14, then

click > to add the decision variable to the chart. Repeat this step for cells D14

and E14, then click OK to create the chart below, which tracks the decision

variable values for each of the three optimizations.

Using Dimensional Modeling in Simulation

Dimensional modeling can also be used with simulation models as well as with

simulation optimization models. (Note: Dimensional Modeling is not available

with Stochastic Transformation.) Open the example, CityCube.xlsx by clicking

Help -- Examples on the Analytic Solver Platform ribbon. The Frontline

Example Models Overview.xls file will open. Select the Simulation tab and

choose CityCube.xlsx from the list.

Defining a Dimension

In this simple example, a dimension, City, has been created in cell F6 which is

comprised of the names of major cities in California (cells B6:B9). Cells C6:C9

contain the gross income per city. Each Gross Income is uncertain. The Gross

Income for San Francisco follows the Gamma distribution, Gross Income for

San Diego follows a Triangular distribution, San Jose follows a Normal

distribution and Los Angeles follows a Uniform distribution.

Defining a Cube

One key benefit of this model is that it defines a simulation output in one cell

which would require four cells without dimensional modeling. In cell F7, a

cube has been created along the City dimension which is comprised of each

citys gross income in $Millions. Double click this cell to display the grid.

(Click the icon to autofit the columns to display all values/text.)

In cell F8, a 2nd cube has been created by using the cube in cell F7 in the

formula, =F7*(1-C3), which multiplies the elements of the cube in cell F7 by the

after tax rate or 91% (1-.09). If dimensional modeling is not used, four output

cells would be required to capture the simulation statistics, percentiles, etc, for

the after-tax income of each city. However, in this example, the cube in cell F8

captures all relevant information.

Notice that calc follows the cell address in the dialog title. This means that a

trial value is being displayed.

Defining an Output

Cell F9 contains the PsiMean() function which creates both a simulation output

as well as a dimensional modeling output. To view the statistics and percentiles

for each citys Gross Income, simply set the Current Value of the City

dimension to the desired city. For example, to view the simulation results for

San Diego, select City under Dimensions in the Model tab of the Task Pane,

then set Current Value to San Jose.

Now click the green arrow on the Output tab to run a simulation. The

Simulation results window that appears contains simulation results for San

Joses after-tax income.

To view the mean results for each city, double click cell F9 to display the

following grid. Notice that (sim-mean) now follows the cell address ($F$9) in

the dialog title. This title signifies that these results are the mean from a

simulation.

Note: PsiMean() can be substituted with any PsiXxx statistic function except

PsiCorrelation and PsiFrequency.

Currently, this grid displays the mean results from the simulation. Click the

down arrow next to Mean and select Trials.

All 1000 trial values for each city are listed. Drag City above All Trials to

list the trials vertically.

To see mini histograms for each uncertain function, click the down arrow next to

Trials and select Chart.

formula. The results of this function are similar to the results of PsiCubeData()

and PsiOptData() (for objective and constraint cubes only) in that when entered

as an array, the function will display the fact table for the desired cube.

etc.) is entered as an array formula and used with a simulation model using

Dimensional Modeling, the statistic function will display all elements of the

cube fact table formatted according to the optional 3rd argument, struc_format.

To begin, well need to determine the size of our array. Since the cube in cell

F8 is comprised of one dimension (Cities), well need to select one cell and

enter =PsiMean(F8, 1, dims) in this cell. (When dims is passed for the

struc_format argument (3rd argument), the size of each dimension contained in

the cube in cell F8 will be returned.) Afterwards, this cell will display City[4]

indicating that there are 4 elements in the City dimension. Now that we know

the number of elements (or size) of the dimensions, we can display the entire

fact table by entering PsiMean() as an array, but this time well use vals for

the struc_format argument. When passing vals for this argument, PsiMean(),

when entered as an array, will display the data as a relational table. Since there

are 4 elements in the City dimension, the fact table for this cube will contain 4

elements. Therefore, we will need to highlight 1 column for the first dimension

(City) and a 2nd column for the actual values and 4 rows to hold all 4 values in

the fact table. In this example, well use the blank cells H6:I9. (This area

encompasses 2 columns and 4 rows.) Select these cells, enter =PsiMean(F8, 1,

vals), then press SHIFT + CTRL + ENTER to enter this formula as an array

formula. The following table will be displayed. Note: PsiMean() can be

substituted with any PsiXxx statistic function except PsiCorrelation and

PsiFrequency.

Now well use a different statistic, PsiStdDev() but this time well list only the

values in the fact table To do so, select cells K6:K9, then enter

=PsiStdDev(F8), then press SHIFT + CTRL + ENTER to enter the formula as

an array. Notice we are only supplying the first argument. Afterwards, these

cells will display only the values of the fact table as shown in cells K6:K9 in the

screenshot below. Repeat the same steps in cell L6:L9 but this time using the

statistic, PsiVariance() (=PsiVariance(F8)).

A statistics function can also be used to display a slice or even a single element

of the fact table. For example, to display the mean gross margin for the City of

San Diego, select two blank cells, say H11:I11, and enter the following

formula: =PsiMean(F8,1, [City].[SanDiego]). Then press SHIFT + CTRL +

ENTER to enter as an array formula. Afterwards, the following table will be

displayed.

Now lets close this example and continue on to the next section to learn about

using a parametric dimension in a simulation model.

Parametric Dimensions

Now lets see how Parametric Dimensions can be used with simulation. Open

the example, ParametricCube_SimExample.xlsx by clicking Help -- Examples

on the Analytic Solver Platform ribbon. The Frontline Example Models

Overview.xls file will open. Select the Simulation tab and choose Parametric

Cube Simulation Example. ParametricCube_SimExample.xls opens.

This example models the Estimated Technology costs for two years in the future

(year 1 and year 2) for JoeBen Gaming based on which computer manufacturer

the company selects. This model includes a structural dimension and a

parametric dimension. The structural dimension is held in cell H3. This

dimension contains the type of technology that JoeBen gaming will purchase for

their employees: Tablets, Desktops, and Laptops. The parametric dimension is

contained in cell H4. This dimension contains the manufacturers of the

technology: Apple, Sony, Samsung, HP, and Dell.

Cells L9 and L10 contain the projected number of machines needed for years 1

and 2, respectively, based on the projected growth distributions in cells K4 and

L4. The ratio of tablets, desktops, and laptops, to the total number of machines

will remain constant. Therefore, the percentage of tablets will remain at 33%,

the percentage of desktops will remain at 46.7%, and the percentage of laptops

will remain at 20% for the next two years. As a result, the values in cells

I9:K10 are calculated by multiplying the number of machines (cells L9 and L10)

by the percentages in cells I8:K8.

Three cubes are located in cells I14:K14. These cubes contain the data for the

Manufacturer dimension. The values in these cells will determine the total

technology costs for each year. Cell I14 contains pricing data for each tablet by

manufacturer, cell J14 contains pricing data for each desktop by manufacturer,

and cell K14 contains pricing data for each laptop by manufacturer. Double

click each of these cells to display their data values. For example, double

clicking cell I14 brings up the following dialog which displays tablet pricing for

each manufacturer.

Once the green arrow has been clicked in the Model tab of the Solver task pane,

or Simulate Run Once is clicked on the ASP Ribbon, five different simulations

will be run simultaneously in less than one second one simulation for each

manufacturer.

Double click cell L15 to display a grid revealing the total technology costs for

Year 1 for each manufacturer. (Click the icon to expand the columns to

display the full text in the first column.) With Dimensional Modeling, you can

perform a What If analysis with the double click of one button!

Click the down arrow next to Mean and select Trials from the drop-down menu.

1000 trial values are displayed for each manufacturer. (Click the icon to

expand the columns to display the full text in the first column.) 1000 what-if

scenarios are again available at the double click of a button!

To view the trial values vertically (rather than horizontally), simply drag

Manufacturer above All Trials in the grid or simply click the double arrows on

the right of the dialog and select Manufacturer on the Cube Columns menu.

Lets view the results for Dell only. First, select the Manufacturer parametric

dimension in the Model tab of the Solver task pane. Then select Dell for

Current Value.

The values in cells I14:K14 display $525, $980 and $1,270, respectively, which

equals the value for Dell in cells F7:F9.

The PsiMean() functions in cells M15 and M16 display the projected mean

technology costs for years 1 and 2, respectively, when computers manufactured

by Dell are purchased.

Note: Double clicking the cubes in cells I15:K16 will display the tablet,

desktop, or laptop values by Manufacturer. For example, double click cell I15

to open the following grid which displays the tablet costs for Year 1 for each

manufacturer.

Double click L15 in the Model tab of the Solver Task Pane to display the

simulation results for technology costs for Year 1.

Then double click cell L16 to display the simulation results for Year 2.

Note: To obtain simulation results for a different manufacturer, select the

Manufacturer dimension in the Model tab of the Solver task pane, select the

desired manufacturer for the Current Value field, then double click L15 or L16

on the Model tab of the Solver task pane. The uncertain function dialog will

update to display the current element of the Manufacturer dimension.

To view the results of cells L15 and L16 at the same time, click Reports

Simulation Parameter Analysis. The Cube Simulation Report dialog opens

displaying the two uncertain function cells L15 and L16 under Results and the

two dimensions (Manufacturer and Computer Type) under Parametric

Dimensions.

Click >> under Outputs to select both L15 and L16. Highlight the Manufacturer

dimension, then click > to select. Afterwards, click OK. The following dialog

opens.

Within this dialog, you can toggle between the results for cells L15 (which

contains the total technology cost for year 1 by Manufacturer) and L16 (which

contains the total technology cost for year 2 by Manufacturer).

As you can easily see, purchasing machines from HP will yield the least amount

of technology costs for both Years 1 and 2.

All charts under Multiple Simulations now also support Dimensional Modeling.

(Locked or non-active dimensions will not appear in the charts.) Click

Charts Multiple Simulations Box-Whisker to open the Multiple

Simulations Chart dialog. Click >> to select Simulation 1 and click OK.

Analytic Solver Platform draws the following chart.

This shows a Box-Whisker diagram for each of the 15 simulations, with the

mean, median, 25th and 75th percentiles, and the minimum and maximum value

for net revenue on each one. You can click the right edge of the Trend and Box-

Whisker charts to open a right panel with options for customizing these charts.

You can use the icons on the title toolbar to print the chart, or copy it to the

Clipboard, where it can be pasted into another application such as PowerPoint.

Perform the same steps for each of the remaining charts: Trend, Overlay, and

Statistics. For more information on these charts, please see the Frontline Solvers

Reference Guide.

In addition, the three reports under Charts Multiple Simulation Results are also

supported in Dimensional Modeling. Click Charts Multiple Simulation

Results to open the Multiple Simulation Results dialog.

Click >> to select both output cells L15 and L16, then click OK. A trend chart

of both uncertain functions is produced.

Here we can see a steep upward climb of the mean value of the total technology

costs, and also the volatility around the mean, depicted here with the 25th and

75th percentiles.

Repeat the same steps to produce the remaining charts: Overlay and Box-

Whisker. For an explanation of these reports, please see the Frontline Solvers

Reference Guide.

Now close this example and continue onto the next section to learn how to use a

pivot table with Dimensional Modeling.

In general, cubes are defined as multi-dimensional, not just two dimensional as

shown in the examples above. Unfortunately, a normal Excel worksheet is not

the easiest medium for working with multidimensional cubes. An Excel pivot

table, however, lends itself to this very practice. An Excel Pivot Table is a tool

within Excel that can be used to summarize data located in an Excel worksheet.

Once data is inserted into a pivot table, it can easily be sorted, counted, totaled,

etc. by dragging and dropping the fields into the desired layout.

Click Help -- Examples on the Analytic Solver Platform ribbon. The Frontline

Example Models Overview.xls file will open. Select the Simulation tab and

choose Pivot Table Simulation Example from the list. (This example uses

parametric dimensions but structural dimensions are also supported.)

An Excel Pivot table is located in the first five columns of the worksheet. This

table is comprised of the Product Line for the Marks Breakfast Delights. This

company has two product lines: Waffle Mix and Pancake Mix. Each of these

product lines contain two flavors: blueberry and plain. The Sales team is

comprised of 4 individuals who are responsible for a specific region of the Las

Vegas area where the company is based: Henderson, Summerlin, North Las

Vegas, and Fremont Street. Sales figures for each product and region are

located in the Sales column. Note: Since values in a pivot table cannot be

evaluated, pivot table values must be constants.

Highlight cells A1:E17, then click Insert Pivot Table Pivot Table on the

Excel ribbon. The Create PivotTable dialog opens. Select a table or range is

prefilled, leave this selection as is. Select New Worksheet, then select a

blank cell, say H18, for Location. Then click OK.

The pivot table will be inserted into a new worksheet. Click the PivotTable

outline to bring up the PivotTable Field List. Drag Region and Product to

Row Labels and Product_Line to Column Labels. Then drag Sales to

Values. Click the down arrow next to Count of Sales, then select Value Field

Settings from the menu. On the Value Field Settings dialog that appears,

select Sum, then click OK. Click Design Report Layout Show in

Tabular Form.

Next, well create three dimensions, one each for Product, Product_Line, and

Region. Select a blank cell, in this case cell H5 was used, then click Model

Dimension From Pivot Table to open the Add Dimension dialog. Select the

name of the pivot table, in this case PTableSales, select Product for

Dimensions, select Parametric for Type and cell H5 for Location. Then click

OK. The formula =PsiPivotDim($A$3:$E$17,"Product", TRUE) will be

inserted into cell H5. Repeat these steps in cells H6 and H7 to create

parametric dimensions for Product_Line and Region, respectively.

Alternatively, this formula could also be typed directly into the cell.

Now we will create a cube from the pivot table. Select a blank cell, in this

example cell H9, then click Model Cube From Pivot Table to open the Add

Pivot Table Cube dialog.

Leave PTableSales and Location at their defaults, and click OK. The following

formula will be inserted into cell H9 =PsiPivotCube($A$3:$E$17).

Alternatively, this formula could have been entered into the cell directly.

From here we can create a simulation or optimization model. In this example,

weve created a simulation model. Cell H10 holds an uncertain variable which

calculates a selling price using a triangular distribution with a minimum

parameter of 100, a maximum parameter of 200, and a likely parameter of 160.

This sales price is multiplied by the cube result in cell H5.

To simulate gross sales for the Western region, select the Product Dimension

on the Model tab in the Task Pane, then change Current Value to Blueberry.

Afterwards, perform the same steps for the remaining dimensions (Product_Line

and Region) changing the current value of the Product_Line dimension to

Pancake Mix and the current value of the Region dimension to Blueberry.

Cell H9 will display the value in cell D14, 18. Now click the green arrow on the

Model tab to run a simulation. The simulation runs using the value of 18 as the

number of products sold. The simulation results for the uncertain function in

cell H13 are below.

Important Note: Pivot tables cannot be evaluated by the PSI Interpreter. This

means that decision variables, uncertain variables, uncertain functions, and

constraint or objective functions must not be used within an Excel Pivot Table.

All values inside of a pivot table must be constant, or computed from constants.

Double click the cubes in cell H12 to display a grid containing the Gross Sales

by product and region.

Click the down arrow next to Mean and select Trials to display the 1000 trial

values used in the simulation.

Double click cell H12 to open the grid containing the Mean Gross Sales by

product and region.

Its also possible to list the trial values in cells in the spreadsheet. Cells

H15:H29 contain the function PsiData(H13) entered as an array function. These

cells display the first 15, of 1000, trial values for cell H13, or Gross Sales.

Using Sparse Cubes

Analytic Solver Platform, Risk Solver Platform, and Premium Solver Platform

V2016-R2 provide the option to calculate cubes defined by PsiCube() or

PsiTableCube() when the Optimization or Simulation Interpreter option is set to

Psi Interpreter.

Most large cubes are sparse in nature. While they may contain thousands of

elements, in practice, not all combinations of dimension elements are possible;

therefore, not all will define a model function during the Psi Interpreter's

evaluation of the problem. This means that most cubes will provoke output

results as sparse cubes (with missing constraints). Such sparsity in a cube (also

known as structural sparsity) can be exploited to save memory and gain speed.

A sparse cube is defined by missing values in cells for PsiCube() and by missing

records for PsiTableCube(). If this option is equal to False, and you have

defined a cube using PsiCube() or PsiTableCube(), elements missing from the

cube will be considered equal to 0. If you set this option to True, you have

defined a cube using PsiCube() with missing values or PsiTableCube() with

missing records, and the percentage of elements missing or empty is more than

30% of the total possible cube elements, those missing elements or records will

not be included in the model.

To illustrate this new feature, we will use the newly added example,

Sparse_Cubes.xlsx. To open, click Help Examples on the Platform ribbon,

click the Simulation tab, then the link to Sparse_Cubes.xlsx.

Two dimensions have been created in cells A14 and A15, dim_vehicle and

dim_model, respectively. The dim_vehicle dimension (cell A14) contains three

items or elements: car, suv, and truck. The dim_model dimension (cell A15)

contains five items or elements: Toyota, Honda, Nissan, Mazda, and

Mitsubishi. Both dimensions together specify the number of cars, SUVs and

trucks available on a car lot, organized by manufacturer.

One cube is defined using PsiCube() in cell A17 = PsiCube(B18:F20,

"dim_model", "dim_vehicle"). The first argument is the cell address of the data,

"B18:F20". The second and third arguments are the dimensions for which the

data will be calculated. To display the contents of the cube, double-click cell

A14.

Cell A24 contains the PsiNormal distribution with mean equal to 0, and standard

deviation equal to 1. This is a simple error term that will be added to each cube

element.

The formula in cell A22 (A22 = A17 + A24 + PsiOutput() ) adds the error term

(that follows the PsiNormal distribution) to each element in the cube in cell A17

(i.e., the first element of the cube = 1 + PsiNormal(0,1), the second element of

the cube = 2 + PsiNormal(0, 1) and so on). PsiOutput is used to designate cell

A22 as an output function. For details on the PsiOuput() function see the

previous chapter, "Examples: Stochastic Optimization."

PsiMean() has been array entered into cells C22:C36. After a simulation has

been run, these cells will display the PsiMean() value as calculated for each of

the 15 elements of the cube (i.e., cell C22 will contain the mean for the first

cube element, C21 will contain the mean for the second cube element, and so

on).

The formula, = PsiMean(A22, 1, "[dim_vehicle].[suv], [dim_model].[maz]"),

has been array entered into cells D24:F24 to illustrate how to display just one

element of the cube (i.e., the number of Toyota SUVs available).

Run a simulation by clicking the down arrow beneath Simulate and selecting

Run Once. Instantly, Analytic Solver Platform performs a new simulation of

1,000 Monte Carlo trials, and updates each of the 15 cube elements and the

worksheet with the results. The mean of each element can be found in cells

C22:C36 or by double clicking cell A22, as shown in the screenshot below.

Notice that the value of the first cube element (Toyota/Car) corresponds to the

value in cell C22, the value of the second cube element (Honda/Car)

corresponds to the value in cell C23, and so on. In addition, the value for the

number of available Toyota SUVs in cell F24 corresponds to the number of

Toyota SUVs in the cube display.

Next, let's move to the right of the spreadsheet. Cell N15 contains

PsiTableCube(). PsiTableCube() defines a sparse table. The first argument

passes the dimension elements, while the second argument passes the values.

(For more information on PsiTableCube, see PsiTableCube() in the Frontline

Solvers Reference Guide.)

Notice that only 6 out of a possible 15 elements are used in the table. When Use

Sparse Cubes is set to False (the default), the missing 9 elements will be set to

0 during the Psi Interpreter's evaluation of the problem. To display the

following cube, double-click cell N15.

PsiMean has been array entered into cells L22:L36. Cell J22 contains the

formula "= A24 + N15 + PsiOutput()", which adds an error term to each element

in the cube table. (This formula re-uses the PsiNormal() distribution in cell

A24 as the error term).

With Use Sparse Cubes = False on the Platform tab on the Solver Task Pane,

run a simulation by clicking the down arrow beneath Simulate and selecting Run

Once.

Carlo trials, and updates each of the 15 cube elements and the worksheet with

the results. The mean of each element can be found in cells L22:L36 or by

double-clicking cell J22, as shown in the screenshot below.

The formula, = PsiMean(J22, 1, "[dim_vehicle].[suv], [dim_model].[maz]"),

array entered into cells I24:K24, illustrates how to display a single element of

the cube, in this case the number of available Toyota SUVs. Notice this number

is a fraction because the value for a Toyota SUV was missing in PsiTableCube().

Since Use Sparse Cubes is equal to false, the value for this element was set to 0.

The formula, =PsiMean(J22, "vals") has been array entered into cells N24:P29

to illustrate how to display the cube dimensions and values in the worksheet.

Since this formula has been array entered into only seven rows, only the first

seven cube elements will be displayed.

Click the Platform tab on the Solver Task Pane, scroll down to Advanced and

enter True for Use Sparse Cubes.

Since the ratio of the number of missing elements to the total number of possible

elements is greater than 30% (6 out of a possible 15), Solver will only consider

those six elements included in PsiTableCube() in the model formulation. In

other words, while Use Sparse Cubes is set to True, only 6 elements are

contained in the cube.

Run a simulation by clicking the down arrow beneath Simulate and selecting

Run Once.

Notice that only the first six cells within the range L22:L36 hold values. This is

because the cube only contains six elements! The remaining nine elements

have not been included in the model. The value in cell L22 corresponds to the

first cube element, Toyota cars, the value in cell L23 corresponds to the second

cube element, Honda cars, the value in cell L24 corresponds to the third cube

element Nissan cars, the value in cell L25 corresponds to the fourth cube

element, Mazda SUVs, the value in cell L26 corresponds to the fifth cube

element, Mitsubishi SUVs, and the value in cell L27 corresponds to the sixth

cube element Toyota trucks.

The same is true for the elements in cells N24:P30. Cells N30:P30 show #N/A

because only six elements are included in the model. Those six elements are

displayed in cells N24:P29.

To display the cube output, double-click cell J22. Notice that the missing

elements are now labeled as "NA," which means they do not exist in the

simulation model. Our 15 element cube has been reduced to 6.

Automating Optimization in VBA

Introduction

This chapter explains how to use the Object-Oriented API in Analytic Solver

Platform and its sub-set products (Risk Solver Platform, Premium Solver

Platform, Analytic Solver Pro, Premium Solver Pro and Risk/Premium Solver

Pro) to create, modify and solve optimization models under the control of your

custom application written in VBA.

This API is compatible with the object-oriented API offered by Frontlines

Solver SDK Platform and Solver SDK Pro, used to build custom applications of

optimization and simulation using C++, C#, VB.NET, Java, MATLAB and

other languages.

Analytic Solver Platform also supports traditional VBA functions, which are

upward compatible from the VBA functions supported by the standard Excel

Solver. This API is described in the Frontline Solvers Reference Guide.

The new object-oriented API is more powerful and much more convenient for

programming than the traditional VBA functions.

With the traditional VBA functions:

You work with procedural functions that correspond to operations such as

SolverOK and SolverSolve you can perform interactively in the Solver

dialogs. To access the model and its variables and constraints, you must

process the arrays of text and numbers returned by the SolverGet function.

To obtain solution values, you must use the Excel object model (usually the

Range object) to access the decision variable cells on the worksheet. You

must take care to access the correct cells for specific decision variables.

To obtain dual values and ranges, you must call the SolverFinish function

to insert a report worksheet into the workbook, then use the Excel object

model to access cells in the report. You must take extra care to access the

correct report cells containing dual values and ranges.

With the new Object-Oriented API:

You work with objects that correspond to the Problem, Model, Solver,

Engine, Variables, and Functions. You can access sets of variables and

constraints in the current model directly with expressions such as

myProb.VarDecision and myProb.FcnConstraint.

You can obtain solution values directly, with expressions such as

myProb.VarDecision.FinalValue(i). If you need the cell address for a set of

decision variable cells, you can write myProb.VarDecision.Name.

You can access dual values and ranges for variables and constraints directly,

with expressions such as myProb.VarDecision.DualValue(i) or

myProb.FcnConstraint.DualValue(i).

The result is VBA code thats easier to read, and easier to write in the first place.

Since the VBA Editor recognizes the object model exposed by Analytic Solver

Platform just as it recognizes the object model exposed by Excel youll

receive IntelliSense prompts as you write code. For example, if you type a line

Dim myProb as New Problem, then start a new line with myProb., youll be

prompted with the properties and methods available for Problems:

If you select FcnConstraint and then type a period, youll be prompted with the

properties and methods available for Functions:

This makes it much easier to write correct code, without consulting the manual.

Whats more, you can use this object-oriented API when programming Excel

and Analytic Solver Platform from new languages such as VB.NET and C#,

working in Visual Studio, and receive IntelliSense prompts in the syntax of

these languages!

If youre using new functionality in Analytic Solver Platform, the object-

oriented API is your best bet. And if youre planning to move your application

outside of Excel in the future so it will run as a standalone program youll

find that Frontlines Solver Platform SDK offers an object-oriented API that

closely resembles the new APIs in Analytic Solver Platform.

Controlling the Solver can be as simple as adding two lines to your VBA code!

Each worksheet in a workbook may have a Solver problem defined, which is

saved automatically with the workbook. You can create this Solver model

interactively if you wish. If you distribute such a workbook, with a worksheet

containing a Solver model and a VBA module, you can simply add a reference

to the Analytic Solver Platform COM server (see below), activate the worksheet,

and add these two lines of code:

Dim prob As New Problem

prob.Solver.Optimize

Using the Macro Recorder

If you want to set up a Solver model from scratch programmatically, one easy

way to see how to use the object-oriented API is to turn on the Excel Macro

Recorder (click Record Macro on the Developer tab in Excel 2007 and then set

up a Solver model interactively. Microsoft Excel will record a macro in VBA

that calls the object-oriented API to mimic the actions you perform. You can

then edit and customize this macro, and incorporate it into your application.

Note: You must use the classic Solver dialog to record a macro, rather than the

Solver Task Pane. To open, click Add-ins Premium Solver. By default, the

Excel Macro Recorder will record calls to the object-oriented API.

To use the new object-oriented API in VBA, you must first add a reference to

the type library for the Analytic Solver Platform COM server. To do this:

1. Press Alt-F11 to open the VBA Editor.

2. Select menu choice Tools References.

3. Scroll down until you find Analytic Solver Platform 2016-R2 Type

Library.

4. Check the box next to this entry, and click OK to close the dialog.

5. Use File Save to save your workbook.

Note that this is a different reference from Solver, which is the reference you

add in order to use the traditional VBA functions.

Analytic Solver Platform makes available a hierarchy of objects for describing

optimization problems, as pictured on the next page. Note that the same objects

are used for both optimization and simulation problems; see the next chapter,

Automating Simulation in VBA, for more information.

The Problem object represents the whole problem, and the Model object

represents the internal structure of the model, which in Analytic Solver Platform

is defined by your formulas on the spreadsheet. The Solver object represents

the optimization process you call its Optimize method to find an optimal

solution. The Engine object represents either a built-in or plug-in Solver

engine. A Variable object represents a range of one or more contiguous cells

that contains decision variables, while a Function object represents a range of

cells that contains either constraint left hand sides or the objective. Each

Problem has a collection of Variable objects, and a collection of Function

objects. An Evaluator represents a function you write that the Solver will call

on each iteration (Trial Solution), or on each subproblem in a larger problem.

The Model has a collection of ModelParam objects, each representing a single

option or parameter of the PSI Interpreter (appearing in the Task Pane Platform

tab). An Engine has a collection of EngineParam objects, each representing a

single option or parameter of a Solver engine (appearing in the Task Pane

Engine tab). It also has an EngineLimit object, holding problem size limits for

this Solver engine, and an EngineStat object, holding performance statistics for

the last optimization problem solved by this engine. An OptIIS object holds

results of an infeasibility analysis of the problem.

Using the VBA Object Browser

You can examine Analytic Solver Platform objects, properties and methods in

the VBA Object Browser. To do this, press Alt-F11 to open the VBA Editor,

and select menu choice View Object Browser. This displays a child window

like the one pictured below.

The dropdown list at the top left corner of the Object Browser initially displays

<All Libraries> change this to select RSP. In the object browser pictured,

weve highlighted the properties of the Function object

You use the Analytic Solver Platform object-oriented API by first creating an

instance of a Problem, and initializing it with the Solver model defined on a

worksheet in an open workbook. When you do this, a collection of Variable

objects and a collection of Function objects are created automatically. Each

Variable object corresponds to a cell range of decision variables that appears in

the outlined list of variables, and each Function object corresponds to a cell

range of constraints that appears in the list of constraints in the Task Pane.

Once you have an initialized Problem object, you can do several things:

Set Solver and Engine parameters such as the maximum time or number of

iterations, the method used to compute gradients, and other options and

tolerances.

Perform an optimization, and check the final status of the solution process.

Get results of the optimization, by accessing properties of the Variable and

Function objects, and performance statistics, by accessing properties of the

EngineStat object.

Example VBA Code Using the Object Model

Below is an example of VBA code that could be linked to a command button on

the worksheet:

Private Sub CommandButton1_Click()

Dim prob As New RSP.Problem

prob.Engine = prob.Engines("Standard LP/Quadratic")

prob.Engine.Params("MaxTime") = 600

prob.Solver.Optimize

MsgBox "Status = " & prob.Solver.OptimizeStatus

MsgBox "Obj = " & prob.FcnObjective.FinalValue(0)

For i = 0 To prob.Variables.Count 1

For j = 0 To prob.Variables(i).Size - 1

MsgBox prob.Variables(i).FinalValue(j)

Next j

Next i

Set prob = Nothing

End Sub

The first line creates an instance of a Problem, which by default is associated

with the Solver model defined on the active worksheet. You could associate the

Problem object with a different worksheet by calling the prob.Init method:

create new problem

Dim prob As New RSP.Problem

initialize model on Invent2 worksheet

prob.Init Worksheets("Invent2")

The second line selects the Standard LP/Quadratic Solver engine, and the third

line sets the maximum solution time to 600 seconds. The string names of

parameters such as "MaxTime" are documented in the Frontline Solvers

Reference Guide.

The next set of three lines performs the optimization, displays the Solver Result

status code (for example 0), and displays the final value of the objective.

The double for-loop in the next five lines steps through the Variable objects

each one representing a range of contiguous cells and displays the final value

for each variable cell in each range.

You can write a VBA function that Analytic Solver Platform will call at certain

points during the solution process. In this callback function, you can access

information about the problem and solution so far, to monitor or report progress

and decide whether to stop or continue the solution process.

The object-oriented API defines an Evaluator object that is associated with your

callback function and specifies when Analytic Solver Platform should call it.

You can define Evaluators to be called on each iteration or Trial Solution, or on

each subproblem or each new solution (incumbent) when the solution process

involves multiple subproblems (global optimization problems, and problems

with integer variables).

The VBA function you write to serve as an Evaluator must be contained in a

class module not a regular VBA module and it must be declared to have

the With Events property.

On the next page is an example of code for an Evaluator, in a class module

named Class1.

Private Function EvalIterator_Evaluate _

(ByVal Evaluator As RSP.IEvaluator) As _

RSP.Engine_Action

MsgBox "Iteration = " _

& Evaluator.Problem.Engine.Stat.Iterations _

& Chr(13) & Chr(10) & "Objective = " _

& Evaluator.Problem.FcnObjective.Value(0) _

& Chr(13) & Chr(10)

EvalIterator_Evaluate = Engine_Action_Continue

End Function

Public Sub MySolve()

Set EvalIterator = New RSP.Evaluator

Dim prob As New RSP.Problem

prob.Evaluators(Eval_Type_Iteration) = EvalIterator

prob.Solver.Optimize

Set EvalIterator = Nothing

End Sub

Having created the class module Class1, in a

regular VBA module you can create an instance of

Class1, and then call the MySolve method in Class1:

Private Sub CommandButton1_Click()

Dim c As New Class1

c.MySolve

End Sub

Functions

A further example of programming the object-oriented API is shown in the

model Refinery.xls, which is installed in the Examples folder, normally at the

path C:\Program Files\Frontline Systems\Analytic Solver Platform\Examples.

(You can also open this example by clicking Help Examples on the Ribbon,

then click Optimization Examples.)

The Refinery.xls model, which is based on Problem 12.6 in the 3rd edition of

Model Building in Mathematical Programming by H.P. Williams (see the

Recommended Books on www.solver.com for details), has ten blocks of

decision variables and eleven blocks of constraints, plus bounds on certain

variables.

The VBA code for this model illustrates some of the many ways you can use the

object-oriented API. For example, the following line displays the time that was

required to solve the problem:

MsgBox prob.Engine.Stat.Milliseconds & " msec"

The following line inserts an Answer Report into the active workbook:

prob.Solver.Report "", "Answer"

The VBA code on the next page illustrates one way to display final solution

values for each of the ten blocks of decision variables in this problem:

For i = 0 To prob.Variables.Count 1

prob.Variables(i).MakeCurrent

For j = 0 To prob.VarDecision.Size - 1

MsgBox prob.VarDecision.Name _

& "[" & j+1 & "] = " & _

prob.VarDecision.FinalValue(j)

Next j

Next i

When executed, this code displays MessageBoxes such as:

property VarDecision (a single block of decision variables) with each of the ten

blocks of variables in turn, allowing you to refer to solution values and dual

values of this block in more compact notation. A similar line of code can be

used to make the Problem property FcnConstraint represent one of the eleven

blocks of constraints. The .Name property of the block, which usually returns a

string such as $A$1:$A$10, returns Distilled_oil in this case, since the

Excel model has a defined name for this block of cells.

Model

So far, weve seen how to access variables and constraints that were defined

interactively through the Ribbon and Task Pane (or the Solver Parameters

dialog), using the Problem object and its VarDecision and FcnConstraint

properties, as well as the Variables and Functions collections. But you can also

add new variables and constraints to a model through the Object-Oriented API,

and have them appear in the Task Pane Model tab. To illustrate some additional

properties used in full Analytic Solver Platform, lets add a recourse decision

variable and a chance constraint.

To add a new decision variable, we create a Variable object, associate it with a

worksheet cell, set its properties, and add it to the Variables collection. To make

this a recourse decision variable, we simply set its VariableType property:

Dim v As New RSP.Variable

v.Init "$D$18"

v.VariableType = Variable_Type_Recourse

v.NonNegative

prob.Variables.Add v

Similarly, to add a new constraint, we create a Function object, associate it with

a formula cell on the worksheet, set its properties, and add it to the Functions

collection. To make this a chance constraint, we simply set its FunctionType,

ChanceType and Chance properties:

Dim f As New RSP.Function

f.Init "$C$23"

f.FunctionType = Function_Type_Chance

f.ChanceType = Chance_Type_VaR

f.Chance = 0.95

f.LowerBound.Array = 0 '>= 0

prob.Functions.Add f

Dynamically Generated Variables

A more ambitious example of programming the object-oriented API is shown in

the model CuttingStockVBA(Opt).xls, which is installed in the Examples

folder, normally at the path C:\Program Files\Frontline Systems\Analytic Solver

Platform\Examples. (You can also open this example by clicking Help

Examples on the Ribbon, then click Optimization Examples.)

This application uses the object-oriented API to define and repeatedly solve two

optimization problems, passing information back and forth between the two

problems. One problem is instantiated from a worksheet with the prob.Init

method as mentioned earlier; the other problem is created from scratch, with

new dynamically generated decision variables added each time the problem is

solved.

CuttingStockVBA(Opt).xls solves a classical cutting stock problem, which

arises for example in lumber and paper mills. Imagine that you have a number

of sheets of wood or rolls of paper of a fixed width, waiting to be cut; you have

customer orders for sheets or rolls of various different widths. Your task is to

cut the larger, fixed-width sheets or rolls into different sizes in a way that

minimizes the total stock used while meeting customer demand.

You might for example cut a 100 inch sheet into two sheets of 45 inches

(leaving 10 inches wasted), three sheets of 31 inches (leaving 7 inches wasted),

one 45-inch sheet and one 31-inch sheet (leaving 24 inches wasted), etc. Each

of these is called a pattern, and the main problem will have a decision variable

representing the number of copies of that pattern to cut. In a real-life

application, the number of possible patterns is exponentially large, yielding a

model thats too large to solve.

We can instead use the technique of column generation (columns here refers to

variables in the main problem). We choose a small initial set of patterns to

include in the model, and solve the main problem (an LP). Since it is unlikely

that we chose the perfect set of patterns initially, we use the dual variable

information from the main problem to generate a new pattern. We generate this

new pattern by solving a second optimization problem, called a knapsack

problem. A decision variable for the new pattern is dynamically created and

added to the main problem, which is solved again. These two problems, the

main problem and the knapsack problem, are solved in turn until no more

patterns can be generated that will reduce the total stock used.

In CuttingStockVBA(Opt).xls, sheet Input contains the knapsack problem,

which is solved to generate new patterns, and sheet Patterns contains the main

problem. Our VBA code executes a loop, alternately solving the main problem

and the knapsack problem. When the solution to the main problem can no

longer be improved, we solve a final problem where we add integer constraints

on the variables, so the final solution yields an exact count of the patterns that

should be cut.

Open CuttingStockVBA(Opt).xls and press Alt-F11 to view its VBA code in the

VBA Editor. The first block of code clears the Patterns sheet and sets up the

initial patterns. This code simply sets values and formulas into cells, using the

Excel object model.

Dim nPat As Integer, i As Integer, _

nNumDemands As Integer

nPat = Range("Demands").Count

nNumDemands = nPat

Worksheets("Patterns").Activate

Range("$A$1:$Z$100").Clear

' create initial patterns

For i = 1 To nPat

Cells(2 + i, i) = Int(Range("RollSize").Value2 _

/ Range("Widths").Cells(i).Value2)

Cells(2 + i, nPat + 1).Formula = "=sumproduct(" _

& Range(Cells(1, 1), Cells(1, nPat)).Address

& "," & Range(Cells(2 + i, 1), _

Cells(2 + i, nPat)).Address & ")"

Cells(3 + nPat, i) = Range("RollSize").Value2 - _

Cells(2 + i, i) *

Range("Widths").Cells(i).Value2

Next i

The code then enters the main loop in which we add a new pattern to the main

problem, and set up and solve that problem using Analytic Solver Platforms

object model:

'generate patterns

Cells(2, 1).Formula = "=sum(" _

& Range(Cells(1, 1), Cells(1, nPat)).Address &

")"

For i = 1 To nNumDemands

Cells(2 + i, nPat + 1).Formula = "=sumproduct(" _

& Range(Cells(1, 1), Cells(1, nPat)).Address _

& "," & Range(Cells(2 + i, 1), Cells(2 + i, _

nPat)).Address & ")"

Next i

Dim prob As New RSP.Problem

' variables

prob.Variables.Clear

prob.Functions.Clear

Dim vars As New RSP.Variable

vars.Init Range(Cells(1, 1), Cells(1, nPat))

vars.NonNegative

prob.Variables.Add vars

Set vars = Nothing

' objective

Dim objective As New RSP.Function

objective.Init Range(Cells(2, 1), Cells(2, 1))

objective.FunctionType = Function_Type_Objective

prob.Functions.Add objective

Set objective = Nothing

' constraints

ReDim constraints(1 To nNumDemands) As _

New RSP.Function

For i = 1 To nNumDemands

constraints(i).Init Range(Cells(2 + i, nPat + 1),

_

Cells(2 + i, nPat + 1))

constraints(i).LowerBound(0) = _

Range("Demands").Cells(i).Value2

prob.Functions.Add constraints(i)

Next i

prob.Solver.SolverType = Solver_Type_Minimize

prob.Engine = prob.Engines("Standard LP/Quadratic")

prob.Solver.Optimize

Next, the code obtains the dual values from the solution to the main problem, via

the Analytic Solver Platform object model, and stores these values as parameters

of the knapsack problem on the Input worksheet, via the Excel object model:

' capture shadow prices

For i = 1 To nNumDemands

Worksheets("Input").Cells(2 + i, 5) = _

prob.Functions(Range(Cells(2 + i, nPat + 1), _

Cells(2 + i, nPat + 1))).DualValue(0)

Next

Worksheets("Input").Activate

Dim j As Integer

j = 1

For i = 1 To prob.Functions.Count

If prob.Functions(i - 1).FunctionType = _

Function_Type_Constraint Then

Cells(2 + j, 5) = _

prob.Functions(i - 1).DualValue(0)

j = j + 1

End If

Next i

The code then sets up and solves the knapsack problem, again using the Analytic

Solver Platform object model:

Dim prob1 As New RSP.Problem

prob1.Init Worksheets("Input")

prob1.Engine = prob1.Engines("Standard

LP/Quadratic")

prob1.Engine.Params("IntTolerance").Value = 0

prob1.Solver.Optimize

If the objective value of the knapsack problem is less than 1 (allowing for

rounding error) meaning that there are no more patterns that will improve the

solution we can exit the loop.

If 1 - prob1.FcnObjective.FinalValue(0) _

>= -0.00001 Then

Exit Do

End If

Otherwise, the code writes the new pattern to the Patterns (main problem)

worksheet, using the Excel object model:

Worksheets("Patterns").Activate

Cells(nNumDemands + 3, nPat + 1) = _

Range("RollSize").Value2

' write out new pattern, and associated waste

For i = 1 To nNumDemands

Cells(2 + i, nPat + 1) = _

prob1.VarDecision.FinalValue(i - 1)

Cells(nNumDemands + 3, nPat + 1) = _

Cells(nNumDemands + 3, nPat + 1).Value2 - _

prob1.VarDecision.FinalValue(i - 1) * _

Range("widths").Cells(i).Value

Next i

nPat = nPat + 1

Set prob1 = Nothing

When the Do Loop is exited, all patterns have been generated. Finally, the

code solves one more problem with integer constraints on the variables, to

ensure that we produce the exact count needed to meet customer demand:

Worksheets("Patterns").Activate

prob.Init Worksheets("Patterns")

prob.Functions.Clear

prob.Variables.Clear

' variables

Dim finalvars As New RSP.Variable

finalvars.Init Range(Cells(1, 1), Cells(1, nPat))

For i = 1 To nPat

finalvars.IntegerType(i - 1) =

Integer_Type_Integer

Next i

finalvars.NonNegative

prob.Variables.Add finalvars

' objective

Cells(3 + nNumDemands, nPat + 1).Formula = _

"=sumproduct(" & Range(Cells(1, 1), _

Cells(1, nPat)).Address & "," _

& Range(Cells(3 + nNumDemands, 1), _

Cells(3 + nNumDemands, nPat)).Address & ")"

Dim TotalWaste As New RSP.Function

TotalWaste.Init Range(Cells(3 + nNumDemands, _

nPat + 1), Cells(3 + nNumDemands, nPat + 1))

TotalWaste.FunctionType = Function_Type_Objective

prob.Functions.Add TotalWaste

' constraints

ReDim constraints(1 To nNumDemands) As _

New RSP.Function

For i = 1 To nNumDemands

Cells(2 + i, nPat + 1).Formula = "=sumproduct(" _

& Range(Cells(1, 1), Cells(1, nPat)).Address _

& "," & Range(Cells(2 + i, 1), Cells(2 + i, _

nPat)).Address & ")"

constraints(i).Init Range(Cells(2 + i, nPat + 1),

_

Cells(2 + i, nPat + 1))

constraints(i).LowerBound(0) = _

Range("Demands").Cells(i).Value2

prob.Functions.Add constraints(i)

Next i

prob.Engine = prob.Engines("Standard LP/Quadratic")

prob.Engine.Params("IntTolerance").Value = 0

prob.Solver.Optimize

Set prob = Nothing

This example illustrates some of the power of the object-oriented API.

Although you could use the traditional VBA functions to obtain similar

results, it would require quite a bit more code to do so, especially at the step of

obtaining the dual values from the solution of the main problem and using them

to solve the next knapsack problem.

If you wanted to move this application from Excel to a standalone program,

youd find that nearly all the code in CuttingStockVBA(Opt).xls that references

the Analytic Solver Platform object model could be re-used, with few or no

changes, in building an application for the Solver Platform SDK. Youd have to

rewrite the code that references cells via the Excel object model to use arrays in

a programming language instead, but this would not be difficult.

Automating Simulation in VBA

Introduction

This chapter explains how to use the Object-Oriented API in Analytic Solver

Platform, Risk Solver Platform, Analytic Solver Pro, Risk/Premium Solver Pro

or Risk Solver Pro to create, modify and solve simulation models under the

control of your custom application written in VBA.

In the simplest case, you can use a few standard lines of VBA code to enable

and disable Interactive Simulation, as described below. But you can do much

more in VBA, to create custom risk analysis applications.

You can define a Problem and instantiate it from the spreadsheet with two lines

of code, then access the uncertain elements of your model via Variable and

Function objects. You can perform simulations, access trials and summary

statistics, and present them the way you want to your end user. All the power of

the Excel object model is available, including database access, charts and

graphs, and custom dialogs and controls.

Analytic Solver Platforms VBA object model closely resembles the object-

oriented API of Frontlines Solver SDK Platform or Solver SDK Pro which

both include a complete toolkit for Monte Carlo simulation. This makes it easier

to move an application from Excel to a custom program written in C/C++,

Visual Basic, VB.NET, Java or MATLAB.

To use the new object-oriented API in VBA, you must first add a reference to

the type library for the Analytic Solver Platform COM server. To do this:

1. Press Alt-F11 to open the VBA Editor.

2. Select menu choice Tools References.

3. Scroll down until you find Analytic Solver Platform 2016-R2 Type

Library.

4. Check the box next to this entry, and click OK to close the dialog.

5. Use File Save to save your workbook.

Note that this is a different reference from Solver, which is the reference you

add in order to use the traditional VBA functions.

You need this reference if your VBA code uses the Event Listener as described

in the next section, or uses other elements of the Analytic Solver Platform VBA

object model, described in later sections of this chapter (or both).

If you simply want to activate or deactivate Interactive Simulation under

program control, you need a few standard lines of VBA code. You can place

this code in any VBA procedure you write, and cause it to be run in any manner

that is convenient for your application. For example, you could use:

Public Sub ISActivate

Dim ev As New EventListener

ev.AttachEvent Application

Set ev = Nothing

End Sub

Public Sub ISDeactivate

Dim ev As New EventListener

ev.DetachEvent

Set ev = Nothing

End Sub

You could use the Tools Macro Run menu choice in Excel to run these VBA

procedures, or you could associate a Ctrl-Key combination with each procedure,

so it is run when that key combination is pressed.

Another approach appears in the example workbook BusinessPlanPsiChart.xls

(normally installed at C:\Program Files\Frontline Systems\Analytic Solver

Platform\Examples): Two buttons named CommandButton1 and

CommandButton2 are placed on the spreadsheet, along with two images named

Picture Bulb On and Picture Bulb Off, that are stacked on top of each other. The

VBA code is:

Private Sub CommandButton1_Click()

Dim ev As New EventListener

ev.AttachEvent Application

Set ev = Nothing

Me.Shapes("Picture Bulb On").Visible = True

Me.Shapes("Picture Bulb Off").Visible = False

End Sub

Private Sub CommandButton2_Click()

Dim ev As New EventListener

ev.DetachEvent

Set ev = Nothing

Me.Shapes("Picture Bulb On").Visible = False

Me.Shapes("Picture Bulb Off").Visible = True

End Sub

When the On button (CommandButton1) is clicked, Interactive Simulation is

activated, and the light bulb is turned on. When the Off button is clicked,

Interactive Simulation is deactivated, and the light bulb is turned off.

You can do much more with VBA: You can perform simulations under your

control, rather than on every worksheet recalculation. You can obtain results of

the simulation statistics, percentiles, or even raw trial data that youd

otherwise obtain through worksheet functions such as PsiMean(),

PsiPercentile(), or PsiData(). You can even define certain worksheet cells as

uncertain variables and supply trial data for them in a simulation, without using

functions such as PsiNormal() or PsiUniform() in cell formulas.

You also have access in VBA to the Excel object model, which provides a very

rich source of high-level functions for manipulating cells and ranges, creating

charts and graphs, accessing external databases, and much more. This gives you

a powerful set of tools for developing custom risk analysis applications.

Analytic Solver Platform Object Model

Analytic Solver Platform makes available a hierarchy of objects for describing

Monte Carlo simulation problems, pictured below. This object model is a

simplified subset of the object hierarchy offered by Frontlines Solver Platform

SDK product, which is used to build custom applications in C/C++, Visual

Basic, VB.NET, Java or MATLAB. Note that the same objects are used for

both optimization and simulation problems.

The Problem object represents the whole problem, and the Model object

represents the internal structure of the model, which in Analytic Solver Platform

is defined by your formulas on the spreadsheet. The Solver object represents

the Monte Carlo process you call its Simulate method to perform a simulation.

The Engine object represents the PSI Technology engine its parameters

include the sampling method, for example. A Variable object represents a

range of one or more contiguous cells that contains uncertain variables, while a

Function object represents a range of cells that contains uncertain functions.

You may have a collection of Variable objects, and a collection of Function

objects in one Problem.

You can examine the Analytic Solver Platform objects, properties and methods

in the VBA Object Browser. To do this, press Alt-F11 to open the VBA Editor,

and select menu choice View Object Browser. This displays a child window

like the one pictured below. The dropdown list at the top left corner of the

Object Browser initially displays <All Libraries> change this to select RSP.

Below, weve highlighted the properties of the Statistics object, which is a child

of the Variable and Function objects.

You use the Analytic Solver Platform object model by first creating an instance

of a Problem, and initializing it with the simulation model defined in your Excel

workbook. Once you have an initialized Problem object, you can do several

things:

Add one or more new Variable objects to the problem. (This is an advanced

step, covered near the end of this chapter.)

Set Solver and Engine parameters such as the number of simulations,

number of trials per simulation, the sampling method, and the random seed.

Perform a simulation.

Get results of the simulation, by accessing properties of the Variable and

Function objects, and of their child Statistics objects.

The simplest action you might want to take is to create a Problem representing

the workbook, set parameters, perform a simulation, and display results. Below

is an example that could be linked to a command button on the worksheet:

Private Sub CommandButton3_Click()

Dim prob As New RSP.Problem

prob.Init ActiveWorkbook

prob.Solver.NumTrials = 5000

prob.Engine.Params("SamplingMethod") = 2

prob.Solver.Simulate

For i = 0 To prob.Functions.Count 1

MsgBox prob.Functions(i).Statistics.Mean(0)

Next i

Set prob = Nothing

End Sub

The first two lines create an instance of a Problem, and initialize it with the

simulation model defined in your Excel workbook. The next two lines set the

number of trials in the simulation to 5000, and the sampling method to Latin

Hypercube. The fifth line performs a simulation.

The for-loop in the next three lines will step through the Function objects

assuming, for simplicity here, that each Function object represents just one cell

and display the Mean property of the child Statistics object (the mean or average

value of the function across all trials) for each one.

When you create and initialize a Problem, a collection of Variable objects and

a collection of Function objects are created automatically. Each Variable object

corresponds to a range of one or more cells that contain PSI Distribution

functions. Each Function object corresponds to a formula cell referenced as the

first argument of a PSI Statistics function, or a range of one or more formula

cells referenced by PsiOutput(). For more information on the grouping of cells

into Function objects, please see the Frontline Solvers Reference Guide.

The VBA code example above assumes that any cells containing =PsiOutput()

are separated from each other on the worksheet. When uncertain variable and

uncertain function cells lie in a contiguous range for example A1:A5 or A1:E1

one Variable or Function object is created to represent all the cells in the

range. The Size property of this object tells you the number of cells in the

range, and its other properties may be indexed to access statistics for example

of individual cells. The for-loop above could be written in more general form

as:

For i = 0 To prob.Functions.Count 1

For j = 0 To prob.Functions(i).Size - 1

MsgBox prob.Functions(i).Statistics.Mean(j)

Next j

Next i

In addition to the Statistics child object used above, Variable and Function

objects have properties named Percentiles and AllTrials (the raw trial data).

The Percentiles property plays the same role as the PsiPercentile() function on

the spreadsheet. It yields a DoubleMatrix object that takes two subscripts: the

index (starting from 0) of the cell in the range represented by the Variable or

Function object, and the percentile index, which runs from 0 to 98 for the 1st

through 99th percentile.

The AllTrials property plays the same role as the PsiData() function on the

spreadsheet. It yields a DoubleMatrix object that takes two subscripts: the

index (starting from 0) of the cell in the range represented by the Variable or

Function object, and the index of the Monte Carlo trial (starting from 0).

The example code below illustrates how to obtain and display the values of the

uncertain functions for each simulation trial.

For i = 0 To prob.Functions.Count - 1

For j = 0 To prob.Functions(i).Size - 1

MsgBox prob.Functions(i).Percentiles(j,94)

For k = 0 To prob.Solver.NumTrials -1

MsgBox prob.Functions(i).AllTrials(j, k)

Next k

Next j

Next i

GetFrequency Method

Variable and Function objects also have a GetFrequency method, that plays the

same role as the PsiFrequency() function on the spreadsheet. It takes an argu-

ment specifying the type of frequency distribution (density, cumulative, etc.)

and an array argument specifying the upper limits of the bins for which you

want to obtain frequency data. It yields a DoubleMatrix object that takes two

subscripts: the index (starting from 0) of the cell in the range represented by the

Variable or Function object, and the index (starting from 0) of the frequency bin.

The example code below illustrates the use of the Get Frequency method to

create 14 different "bins" for categorizing the values of the uncertain functions

for each simulation trial.

For i = 0 To prob.Functions.Count - 1

For j = 0 To prob.Functions(i).Size - 1

Dim binlimits(14) As Double

binlimits(0) = -125000

For Count = 1 To 13

binlimits(Count) =

binlimits(Count - 1) + 25000

Next

Dim mymat As New RSP.DoubleMatrix

Set mymat =

prob.Functions(i).GetFrequency(Frequency_Type_Density

, binlimits)

For Count = 0 To 13

MsgBox "Upper Bin Limit"

& ": " & binlimits(Count) & " = " &

mymat(0, Count)

Next Count

Next j

Next i

Analytic Solver Platform provides a number of parameters you can use to

control the simulation process, such as the number of Monte Carlo trials to

perform, or the random number seed. You can set these parameters

interactively, or by setting certain Solver properties or Engine.Params properties

in VBA.

For example, the first line below sets the number of Monte Carlo trials to 5000.

The second line set the random number seed to a fixed value so the same

random number sequence is used on each run. The third line sets the sampling

method to Latin Hypercube:

prob.Solver.NumTrials = 5000

prob.Engine.Params("RandomSeed") = 12345

prob.Engine.Params("SamplingMethod") = 2

For a list of simulation parameters that you can set in VBA, see the descriptions

of the EngineParam Object and the ModelParam Object in the Frontline

Solvers Reference Guide.

Process

You can write a VBA function that Analytic Solver Platform will call at certain

points during the simulation process. In this callback function, you can access

information about the problem and simulation so far, to monitor or report

progress and decide whether to stop or continue the simulation process.

The object-oriented API defines an Evaluator object that is associated with your

callback function and specifies when Analytic Solver Platform should call it.

The VBA function you write to serve as an Evaluator must be contained in a

class module not a regular VBA module and it must be declared to have

the WithEvents property.

Here is an example of code for an Evaluator, in a class module named Class1:

Private WithEvents EvalSim As RSP.Evaluator

Private Function EvalSim_Evaluate _

(ByVal Evaluator As RSP.IEvaluator) As _

RSP.Engine_Action

MsgBox "Current Simulation = " _

& Evaluator.Problem.Engine.Stat.Simulations

EvalSim_Evaluate = Engine_Action_Continue

End Function

Public Sub MySim()

Set EvalSim = New RSP.Evaluator

Dim prob As New RSP.Problem

prob.Init ActiveWorkbook

prob.Evaluators(Eval_Type_Simulation) = EvalSim

prob.Solver.Simulate

Set EvalSim = Nothing

End Sub

Having created the class module Class1, in a regular VBA module you can

create an instance of Class1, and then call the MySim method in Class1:

Private Sub CommandButton1_Click()

Dim c As New Class1

c.MySim

End Sub

You can define Evaluators to be called when the random sample for all

uncertain variables is generated (Eval_Type_Sample), after each simulation is

completed (Eval_Type_Simulation), or after each trial is completed

(Eval_Type_Trial). However, because PSI Technology evaluates all trials in

parallel, an Evaluator to be called on each trial is meaningful only if you use the

Excel Interpreter rather than the PSI Interpreter to calculate the worksheet on

each trial.

Analytic Solver Platform can perform multiple simulations in one run, where

each simulation consists of a number of Monte Carlo trials that you specify.

Multiple simulations can be run whenever you choose Simulate Run Once,

whenever you change a number with Interactive Simulation, or whenever you

call the Problem.Solver.Simulate method in VBA.

In VBA, you can set the property Problem.Solver.NumSimulations = n to

perform n different simulations on a single call to Problem.Solver.Simulate.

After a simulation is run, Analytic Solver Platform can display each Monte

Carlo trial from the simulation on the Excel worksheet, if desired. In VBA, you

can set the property Problem.Solver.TrialIndex = n to display the nth trial, or

you can call the method Problem.Solver.TrialStep to cycle through the trials.

Analytic Solver Platform filters out error trials from your simulation results

when computing statistics and displaying charts. An error trial is a Monte

Carlo trial where any uncertain function returns an Excel error value. However,

all trials are saved in memory, and you can access the values of uncertain

variables and uncertain functions for each trial, or display each trial on the Excel

worksheet.

The Variable and Function objects contain an embedded Statistics object

(described later in this chapter). The property Statistics.NumValues gives the

number of normal trials, over which statistics were calculated, and property

Statistics.NumErrors gives the number of error trials that occurred.

You can cause a specific Monte Carlo trial to be displayed on the Excel

worksheet by setting the property Problem.Solver.TrialIndex = n to the index

(starting from 1) of the trial you want. This causes the PSI Distribution function

for each uncertain variable to return the sample value it had on the nth trial. The

worksheet is then recalculated, so that each uncertain function will have the

value it had on the nth trial.

To step through all trials, normal trials only, or error trials only, and display

them on the Excel worksheet, call the method Problem.Solver.TrialStep

stepsize, trialtype. Trialtype is 0 for all trials, 1 for normal trials, and 2 for error

trials. The stepsize may be positive (1, 2, etc.) or negative (-1, -2, etc.). After

each call to the TrialStep method, the TrialIndex property is set to the index of

the trial just displayed. If stepsize is so large that it would go beyond the last

trial (if positive, or the first trial if negative), the TrialIndex will be set to the last

(or first) trial, and that trial will be displayed.

For multiple simulations to be useful, some parameter of the model normally

something you can control must have a different value in each individual

simulation. Also, you must access statistics, percentiles, and trial data (if used)

for each simulation, so you can compare the results.

If you set Problem.Solver.NumSimulations = n to perform several simulations

on each run, you can use the function PsiSimParam(). This function takes

either two arguments lower and upper, as in PsiSimParam(1,3), or one argument

thats a cell range or array of numbers, such as PsiSimParam({6.0, 7.5, 9.0}).

On the nth simulation, PsiSimParam() returns the nth value from its argument

list, held constant for all the trials in that simulation. In calls to the PSI

Statistics functions, you can select the simulation for which you want results.

For example, if you have an uncertain function in cell F1, you can write

=PsiMean(F1,1), =PsiMean(F1,2), and =PsiMean(F1,3) to access the mean

value of F1 across all the trials in the first simulation, second simulation, and

third simulation, respectively.

If you leave the NumSimulations property at its default value of 1, and call

Problem.Solver.Simulate inside a for-loop, you can set parameter values that

you compute on-the-fly in cells before each simulation using the Excel Range

object. You can either get the values of PSI Statistics functions through the

Excel object model, or (often better) you can access the Statistics, Percentiles

and AllTrials properties, or call the GetFrequency method of your Variables and

Functions, to retrieve the results of that simulation.

The chapter Mastering Simulation and Risk Analysis Concepts describes

Stochastic Library Units, Relationships Preserved or SLURPs, and shows how

to create a SLURP on the spreadsheet. You can also create SLURPs in VBA,

and use the SLURP trial data for uncertain variables in your spreadsheet model.

To do this, you first create a Problem object, and initialize it with the simulation

model defined in your Excel workbook. At this point, the Problems collection

of Variables will contain Variable objects for each contiguous range of cells

containing PSI Distribution functions in the workbook (if any). You can then:

1. Create a new Variable object in VBA.

2. Set its Name property to an unused cell range (say Sheet1:A1:A5).

3. Set its AllTrials property to the SLURP trial data.

4. Add the Variable object to the Problems collection of Variables.

The simulation model then behaves just as if these cells contained =PsiSlurp()

function calls that referred to the SLURP trial data you supplied via VBA. The

SLURP data could be generated by your VBA program, read from a database, or

otherwise obtained it never appears on the Excel spreadsheet. For example:

Dim prob As New RSP.Problem

prob.Init ActiveWorkbook

Dim trials As RSP.DoubleMatrix

Set trials = New RSP.DoubleMatrix

trials.InitDense 1, prob.Solver.NumTrials

Randomize

For i = 0 To prob.Solver.NumTrials 1

trials(0, i) = Rnd()

Next i

Dim var As New RSP.Variable

var.VariableType = Variable_Type_Uncertain

var.Init Range("Sheet1$A$1")

var.AllTrials = trials

prob.Variables.Add var

prob.Solver.Simulate

The first two lines create an instance of a Problem, and initialize it with the

simulation model defined in your Excel workbook. The next three lines create a

DoubleMatrix object named trials to hold SLURP data, and set its dimensions

just 1 x NumTrials in this case, since were adding just one uncertain variable.

The next four lines show how the trials matrix can be initialized with newly

generated values. Of course, youd want to use a better, application-specific

method not the Rnd() function to generate this trial data, or perhaps read the

trial data from a database or external file.

In the next three lines, we create a Variable object, set its Name property to the

cell address Sheet1!A1 (this must be an empty cell on the spreadsheet), and set

its AllTrials property to the trial data we just generated.

In the last two lines, we add the new Variable object to the Problems collection

of Variables, and then perform a simulation.

The newly added Variable object, and the SLURP data represented by its

AllTrials property, participates in the simulation model only for so long as the

VBA Problem object exists it is transient and is not saved in the workbook.

Of course, your VBA program code is saved with the workbook, and it can be

run at a later time to re-create the Variable object and re-generate or retrieve the

SLURP data.

Mastering Conventional

Optimization Concepts

Introduction

This chapter explains basic and advanced concepts of optimization, such as the

types of problems you can solve, types of constraints (regular, integer, conic,

alldifferent) you can specify, the nature of linear, quadratic and nonlinear

functions, convex and non-convex functions, smooth and non-smooth functions,

and the algorithms and methods used by Analytic Solver Platform (or its

optimization sub-set products) and plug-in Solver engines.

This chapter focuses on conventional or deterministic optimization models,

which do not include any uncertainty. The next chapter Mastering Simulation

and Risk Analysis Concepts explains the concepts of stochastic optimization

models those that do include uncertainty and solution methods such as

robust optimization, stochastic programming, and simulation optimization.

If you are using Analytic Solver Platform for the first time, we recommend that

you try out the examples described in the chapter Examples: Conventional

Optimization before tackling this material. If you are relatively new to

optimization, you may find it useful to read the first section below, Elements of

Solver Models, and then proceed to the Examples chapters