This action might not be possible to undo. Are you sure you want to continue?

Welcome to Scribd! Start your free trial and access books, documents and more.Find out more

5

For Use With Microsoft Excel

Premium Solver Premium Solver Platform

User Guide

By Frontline Systems, Inc.

Copyright Software copyright 1991-2003 by Frontline Systems, Inc. Portions copyright 1989 by Optimal Methods, Inc. User Manual copyright 2003 by Frontline Systems, Inc. Neither the Software nor this User Manual 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 on the following pages. Trademarks Microsoft and Excel are trademarks of Microsoft Corporation. Lotus and 1-2-3 are trademarks of Lotus Development Corporation. Pentium is a trademark of Intel Corporation. How to Order Contact Frontline Systems, Inc., P.O. Box 4288, Incline Village, NV 89450. Tel (775) 831-0300 • Fax (775) 831-0314 • Toll-Free (888) 831-0333 Email info@frontsys.com • Web http://www.solver.com

**SOFTWARE LICENSE – INDIVIDUAL USER
**

If you have purchased a single user license, Frontline Systems, Inc. (“Frontline”) grants you, an individual user, the right to use the computer program product that you have received from Frontline or one of its authorized resellers (the “Software”) on one or more computers for your personal use. The Software may be stored on one or more computers, servers or storage devices, as long as it is used only by you. This individual user license does not give you the right to make copies of the Software for use by any person or entity other than you, or rent or lease the Software, or “share” use of the Software with anyone else. You may not make the Software available over the Internet, a company or institutional intranet, or any similar networking technology. Also, by accepting this license, you agree not to reverse compile or reverse engineer the Software. You may transfer this license to another individual if, and only if, Frontline is notified of the transfer, you make no further use of the Software, and the person receiving the Software agrees to all terms of this license. Please contact Frontline if you or your company or institution wishes to license the Software for use by more than one individual user.

**SOFTWARE LICENSE – CONCURRENT USER
**

If you have purchased a concurrent user license, Frontline Systems, Inc. (“Frontline”) grants to you, an organization such as a corporation, partnership, university, association or similar entity, the right to use the computer program product that you have received from Frontline or one of its authorized resellers (the “Software”) as described herein. For purposes of this license, a Local Area Network (“LAN”) is a group of computers interconnected by any local area networking technology without the use of bridges, routers, or wide area networking technologies, and is for example a single Ethernet segment or a single TCP/IP subnet, unless otherwise agreed by Frontline. Under this license, the Software may be (i) stored on one or more computers, servers or storage devices on the LAN, (ii) accessed by and copied into the memory of other computers on the LAN, and (iii) used by multiple individual users working at computers on the LAN, provided that, at any given time, the Software is used by at most one individual user in one active “session” as defined by the underlying networking technology. The individual users may be employees, consultants, or other individuals explicitly authorized by you to use the computers on the LAN. This concurrent user license does not give you the right to make copies of the Software for use in any manner other than as described above, by any persons other than those described above, or by any entity other than you. You are not authorized under this license to rent or lease the Software, or to “share” use of the Software with anyone else. You may not make the Software available over the Internet, a company or institutional intranet other than the LAN, or any similar networking technology. You agree that it is your responsibility to ensure that the Software is used by at most one individual user at a time as described above; if it is or becomes used by more than one individual user at a time, you agree to promptly seek and pay for additional concurrent user licenses from Frontline. If your LAN is connected to other computers through bridges, routers, wide area networking or similar technologies, you agree that it is your responsibility to ensure that the Software cannot be accessed by, copied to, or used via such other computers. Also, by accepting this license, you agree not to reverse compile or reverse engineer the Software. You may transfer this license from one LAN (the “Old LAN”) to another LAN owned by you (the “New LAN”) if, and only if, Frontline is notified of the transfer, no further use is made of the Software on the Old LAN, and you agree that all terms of this license apply to use of the Software on the New LAN. You may transfer this license to a New LAN owned by another person or entity only with Frontline’s written consent, which will not be unreasonably withheld.

COPYRIGHT WARNING

The Software is protected by United States copyright laws and international copyright treaty provisions. It is unlawful for any person to copy or use the Software, except as permitted by the license explicitly granted to you by Frontline. The law provides for both civil and criminal penalties for copyright infringement.

LIMITED WARRANTY

Frontline Systems, Inc. (“Frontline”) warrants that the CD-ROM, diskette or other media on which the Software is distributed and the accompanying User Guide (collectively, the “Goods”), but not the digital or printed content recorded thereon, is free from defects in materials and workmanship under normal use and service for a period of ninety (90) days after purchase, and any implied warranties on the Goods are also limited to ninety (90) days. SOME STATES DO NOT ALLOW LIMITATIONS ON THE DURATION OF AN IMPLIED WARRANTY, SO THE ABOVE LIMITATION MAY NOT APPLY TO YOU. Frontline’s entire liability and your exclusive remedy under this warranty shall be, at Frontline's option, either (i) return of the purchase price or (ii) replacement of the Goods that do not meet Frontline’s limited warranty. You may return any defective Goods under warranty to Frontline or to your authorized dealer, either of which will serve as a service and repair facility. If you purchase an Annual Support Contract from Frontline, then Frontline warrants, during the contract term, that the Software will perform substantially as described in the User Guide, when it is properly used as described in the User Guide. Frontline’s entire liability and your exclusive remedy under this warranty shall be to make reasonable commercial efforts to correct any “bugs” (failures to perform as so described) reported by you, and to timely provide such corrections in the Software to you. If you do not purchase an Annual Support Contract from Frontline, or if you allow your Annual Support Contract to expire, then THE SOFTWARE IS PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND. Whether or not you purchase an Annual Support Contract from Frontline, you understand and agree that any results obtained through your use of the Software are entirely dependent on your design and implementation of an optimization model using Microsoft Excel, for which you are entirely responsible, even if you seek advice on modeling from Frontline. You understand and agree that THE ENTIRE RISK AS TO THE RESULTS AND PERFORMANCE OF THE SOFTWARE AS USED WITH YOUR OPTIMIZATION MODEL IS ASSUMED BY YOU. EXCEPT AS PROVIDED ABOVE, FRONTLINE DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, WITH RESPECT TO THE GOODS AND THE SOFTWARE. THIS WARRANTY GIVES YOU SPECIFIC RIGHTS, AND YOU MAY HAVE OTHER RIGHTS WHICH VARY FROM STATE TO STATE. IN NO EVENT SHALL FRONTLINE BE LIABLE FOR ANY DAMAGES WHATSOEVER (INCLUDING WITHOUT LIMITATION DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, AND THE LIKE) ARISING OUT OF THE USE OR INABILITY TO USE THE GOODS OR THE SOFTWARE, EVEN IF FRONTLINE HAS BEEN 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 TO YOU. In states that allow the limitation but not the exclusion of such liability, Frontline's liability to you for damages of any kind is limited to the price of one copy of the Goods and one single user license to use the Software.

**U.S. GOVERNMENT RESTRICTED RIGHTS
**

The Software and Media are provided with RESTRICTED RIGHTS. Use, duplication or disclosure by the Government is subject to restrictions as set forth in subdivision (b)(3)(ii) of The Rights in Technical Data and Computer Software clause at 252.227-7013. Contractor/manufacturer is Frontline Systems, Inc., P.O. Box 4288, Incline Village, NV 89450. THANK YOU FOR YOUR INTEREST IN FRONTLINE SYSTEMS, INC.

.................................................................. 37 The Objective Function ................................................................................................... 24 How to Use This Guide ........................................................................................................................................................................................................................................... 42 Solver User Guide Introduction • 5 ............................................................................................................................................................................................................ 23 Programmability Improvements ............................................................................................................................................ 42 Linear Functions..........Contents Introduction 11 Using the Premium Solver Platform.......................... 28 Installation 29 What You Need .. 20 The Alldifferent Constraint ........................................................... 25 Using Online Help and the World Wide Web ....... 17 Model Analysis: The Parser and Interpreter...................................................................................................................................................................................................................................................................................................................................................5 ............................................................................ 30 Upgrading to Version 5........................ 37 Elements of Solver Models............................. “Good” and Optimal .............................................. 38 Constraints....................................................................... 14 A Brief Tour of New Features ...................................................................................... 11 Frontline’s Solver Products for Microsoft Excel............................. 39 More About Constraints ....................................................................................................................................................... 37 Decision Variables and Parameters ............................................................................................................................... 35 Solver Models and Optimization 37 Introduction ......................................... 29 Product Licensing and Network Installation ................................................................................................................................................... 26 Academic References for the Excel Solver ............................ 13 Field-Installable Solver Engines........................................... 29 Installing and Licensing the Software ............................................................................................................... 11 The Standard Excel Solver ......................................... 17 The Evolutionary Solver ........................................................................................................... 20 New Types of Reports.................................................................................................................................. 31 Installing Solver Engines........... 33 Setting Up the Add-In Functions...................................................................................................................................................................................................................................... 40 Functions of the Variables ................... 38 Solutions: Feasible................................................................................ 34 Uninstalling the Software .................................................................................. 21 User Interface Improvements ............................ 30 Installing the Software.................................. 11 The Premium Solver........................................................................................................................................................................................................................ 19 The Interval Global Solver ............................... 26 Solver-Related Seminars and Books......... 18 Multistart Methods for Global Optimization.................................................. 12 The Premium Solver Platform....................................................... 22 Speed Improvements ............................

.................................................................................. Jacobians.................Quadratic Functions....................................................83 The Microsoft Excel Recalculator ...............................................43 Nonlinear and Smooth Functions .................................................................65 Using the Variables Button .....44 Discontinuous and Non-Smooth Functions........................................................................................................................................................................................46 Optimization Problems and Solution Methods ...............................................................................................................................84 The Parser and Interpreter .............................................................................................................................49 Nonlinear Optimization ...............................................78 On Solve Options and the Evolutionary Solver.........................................................................................................68 Layout and Formatting .80 More on the Parser and Interpreter .................................................................................................. and Hessians.........................................80 Using Analyzer Advanced Options ...............................................................................48 Linear Programming...................................................................................................................................................................................63 Using the Range Selector .....................................................................................................................................................................................75 Reporting Dependent Problems..............................................................................................................65 Constraint Left and Right Hand Sides.........................................................................60 Decision Variables and Constraints .........................................................................53 Integer Programming .......69 Using Defined Names.......56 The Alldifferent Constraint ........................56 Cut Generation.................................91 Optimization Modeling Hints ...72 Analyzing Model Statistics ..............................................................90 Designing Large Solver Models ...................................................................................................76 Selecting the Best Solver Engine...........................59 A Sample Linear Programming Model...........................................................59 Setting Up a Model.....................................66 More Readable Models..............................................................................................................................92 6 • Introduction Solver User Guide .........................................................................................78 Using the On Solve Options ...............................................................................................................................................59 From Algebra to Spreadsheets .................................................................57 Building Solver Models 59 Introduction..............................................................................................................................................................................................................................................................................................................50 Global Optimization .............................................................................................90 Spreadsheet Modeling Hints.....................................................................................................................................................74 Analyzing Model Exceptions.......51 Non-Smooth Optimization ....................... Gradients..........................................................................................................................................................................................................................63 Variables and Multiple Selections .............................48 Quadratic Programming .........................................................................................................................................................78 Model Analysis When Solving ..........................................45 Derivatives....................................................70 Analyzing and Solving Models 72 Introduction...........75 Reporting Scaling Problems .....................................................................................................................................74 Using the Formulas and Dependents Buttons....................................................................................................................................................................................................72 Using the Solver Model Dialog .......................................86 Building Large-Scale Models 90 Introduction.55 The Branch & Bound Method ...................................................................................................................

126 Limitations on Global Optimization .............................................................................................................................................. 98 Organizing Your Model for Fast Solution.............. 121 Problems with Poorly Scaled Models............................ 138 Derivatives for the Quadratic Solver................................................................................................................................ 130 Solver Options 132 The Standard Microsoft Excel Solver........................................................................................................................ 122 Historical Note on Scaling and Linearity Tests.................................................................. 134 Assume Linear Model ........... 135 Assume Non-Negative ........... 136 LP/Quadratic Solver Options........ 126 Rounding and Possible Loss of Solutions ...................................... 124 GRG Solver Stopping Conditions ............................................................ 135 Show Iteration Results.................................................. 135 Use Automatic Scaling ................. 134 Tolerance and Convergence ...................................................................................................................................................................................................................................................... 101 Using the Add-in Functions ........ 123 Limitations on Smooth Nonlinear Optimization.........................................................Using Multiple Worksheets and Data Sources................ Stop or Restart ........ 92 Quick Steps Towards Better Performance............................................................................................. 96 Using Piecewise-Linear Functions ................ 110 Standard Solver Result Messages........................................... 140 Recognize Linear Variables ......................................................................................... 138 GRG Solver Options.......................................................................................................................................................................... 99 Using Array Formulas ............................. 102 Diagnosing Solver Results 108 If You Aren’t Getting the Solution You Expect.... 129 Evolutionary Solver Stopping Conditions......................................................................................................................................................................................................................................................................... 109 Choosing to Continue.......................... 136 Bypass Solver Reports........................ 138 Convergence....................................................... 124 GRG Solver with Multistart Methods ................................................................................ 126 Interval Global Solver Stopping Conditions ..................................................................................................... 108 During the Solution Process ........................................................................................................................................... 95 Techniques Using Linear Functions and Binary Integer Variables................................................................................................................................................ 94 Techniques Using Linear and Quadratic Functions ................... 137 Pivot Tolerance ........................................................................................................................................................................................................................................................................................................................ 125 GRG Solver and Integer Constraints................................................................ 138 Reduced Cost Tolerance................. 133 Precision ............................................................................................ 140 Solver User Guide Introduction • 7 ............................................................................................ 99 Fast Problem Setup.......................................................................................................................................................... 123 The Tolerance Option and Integer Constraints....................................................................................................................................................... 109 When the Solver Finishes ....................... 122 Dealing with Poor Scaling......................................................................................................... 133 Max Time and Iterations .............. 128 Effect on the GRG and Simplex Solvers............................................................................................................................................................................. 127 Interval Global Solver and Integer Constraints ............................................................................. 110 Interval Global Solver Result Messages..................................................... 132 Common Solver Options ................................................. 128 Limitations on Non-Smooth Optimization .................................................................................................. 93 Improving the Formulation of Your Model..................................................

..................................................................................................................................................................................................150 Require Bounds on Variables ..................................................................................................................................................................................................164 Solver Reports 167 Introduction ..................................................................................................................................................................143 Require Bounds on Variables ...............162 Loading...................................................................................159 Cut Generation..................................................142 Multistart Search ...................................................................................................................................................................................................................................................................................172 The Sensitivity Report .....154 Solve Without Integer Constraints ..................................................................146 Absolute vs. Relative Stop .....154 Max Time without Improvement..............................................156 Integer Tolerance..................................................158 Preprocessing and Probing ...............................................................149 Population Size..........................................................................151 The Limit Options Dialog Tab....................141 Multistart Search Options ....................................................................................................................150 Random Seed.......................................................................163 Transferring Models Between Spreadsheets ..175 The Limits Report.........................................................177 The Population Report ....145 Resolution...............................................................................................................................................................................................................................155 Max Subproblems................................................................................................176 The Solutions Report ....................................................143 Topographic Search.....146 Assume Stationary............................................................................................................................................................................................................ Saving and Merging Solver Models ..............................................................................................................................................................................................................................................................156 Max Integer Solutions .......................................................................................................................167 Selecting the Reports ..............................................................................................................................................................154 Tolerance ...........................................................................150 Local Search ...........................................................................155 The Integer Options Dialog Tab ...................143 Population Size.....174 Interpreting Range Information ...........................................................................................................................144 Random Seed...................................153 Max Subproblems........................................................................................................................................................................................................154 Max Feasible Solutions ...........174 Interpreting Dual Values ...............................................................................168 An Example Model...............171 The Answer Report.........................................144 Accuracy........................................................................................162 Using Multiple Solver Models ...........................................................................................................................................................................................................................................................................................157 Use Dual Simplex for Subproblems ............................................................................................................................................................145 Max Time w/o Improvement .................................................................................................................................................................................161 The Problem Dialog Tab.................................................................180 8 • Introduction Solver User Guide ........................................................146 Method Options Group...............................146 Evolutionary Solver Options ............................................................................................................................................................................Derivatives and Other Nonlinear Options .................................157 Solve Without Integer Constraints .....................................................................163 Merging Solver Models......................149 Mutation Rate .....156 Integer Cutoff ..............148 Convergence ..............................................................................................................................................................................................................................................................................144 Interval Global Solver Options ...................................................................................................

................................................................................................................. 185 Checking Function Return Values ............................................................................................................ 211 SolverLPGet ...................................................................................................................................................................................... 185 Standard VBA Functions........................................................................ 199 SolverModelGet ............................................ 190 SolverLoad .............. 184 Using the Macro Recorder . 185 SolverAdd (Form 1) ...................................................................................................................... 196 Solver Model VBA Functions ........... 188 SolverDelete (Form 2)...................................................................................................................................................................................................................................................................................................... 211 SolverLimOptions .......... 204 SolverGRGOptions ........................................................... 202 SolverEVGet ...................................................... 194 SolverOptions....................................... 201 SolverFormulas ........................................................................................................................................................................................ 200 SolverDependents............................ 214 SolverSizeGet..... 199 SolverModel .................. 192 SolverOk..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... 202 SolverEVOptions ............................................. 190 SolverGet....................................... 209 SolverIntOptions .................................................................................................................................................. 212 SolverLPOptions ................................................................... 187 SolverChange (Form 2) ......................................................................................................................................................................... 184 Using Microsoft Excel Help... 188 SolverFinishDialog........................................... 187 SolverChange (Form 1) ............ 196 SolverSolve .............................................................................................................. 205 SolverIGGet ........................ 196 SolverSave........................................................................................ 184 Referencing Functions in Visual Basic .......... 203 SolverGRGGet .................................................................................. 181 The Feasibility Report .......................................................................................... 201 Premium VBA Functions ...... 206 SolverIGOptions................................................................................................................. 184 Running Predefined Solver Models ............................................................................................................ 188 SolverFinish .............. 186 SolverAdd (Form 2) ............................................................................................................................................................................................................................................................................................................................................................................................................... 185 Standard........................................................................................................................................................................................................................................................................................................................ 194 SolverReset.................................................................................. 213 SolverOkGet............... 215 Index 217 Solver User Guide Introduction • 9 ............................................................................................................. 209 SolverLimGet ....................................The Linearity Report................. Model and Premium Macro Functions......................................... 207 SolverIntGet .............................................................. 193 SolverOkDialog............................................................................................................................. 187 SolverDelete (Form 1).......................................................................................................................................................................................................................................................... 182 Programming the Solver 184 Controlling the Solver’s Operation................................................................................................................

.

for nonlinear problems. or on one or more of the examples in the SOLVSAMP. Frontline Systems’ newest and most powerful Solver products for Microsoft Excel. These topics document the standard Solver’s features and take you through the basic steps of using the Solver. This manual covers all the features of the Premium Solver Platform and the four “Solver engines” packaged with it: the standard LP/Quadratic Solver. The standard Solver User Guide Introduction • 11 . It provides three types of reports: the Answer Report. This Guide will help you set up and solve much larger Solver problems. and Limits Report. the Premium Solver Platform can analyze and interpret your model in ways not possible with Microsoft Excel alone. We recommend that you try out the standard Solver on at least one problem of your own.Introduction Using the Premium Solver Platform Thank you for using the Premium Solver or the Premium Solver Platform. and many new types of problems involving global optimization. This Guide goes well beyond the basics covered in the Microsoft Excel Help system. 100 constraints in addition to bounds on the variables. you may find it helpful to read the Solver-related topics in the online Help supplied with Microsoft Excel. which was developed by Frontline Systems for Microsoft. Frontline’s Solver Products for Microsoft Excel The Standard Excel Solver The standard Solver comes bundled with Microsoft Excel. and reports. It includes basic Solver engines for smooth nonlinear optimization problems using the GRG (Generalized Reduced Gradient) method. Further. messages. Both are fully compatible upgrades for the Solver bundled with Microsoft Excel. and integer programming problems using the Branch & Bound method. Sensitivity Report. The Premium Solver Platform can solve much larger versions of the problems handled by the standard Excel Solver. non-smooth functions. and the standard Interval Global Solver. linear programming problems using the Simplex method. It is limited to problems of up to 200 decision variables and. and understand the results of analyzing and solving your model – solutions.XLS workbook which comes with Microsoft Excel. Before reading this User Guide. the standard GRG Nonlinear Solver. the standard Evolutionary Solver. and new types of constraints. design your models for the fastest solutions.

and linear programming problems (LPs. SUMPRODUCT and MMULT functions and the new DOTPRODUCT function. especially for problems with all linear and integer constraints. And VBA programs you’ve written to control the standard Solver will work as-is with the Premium Solver. previously available only in the Premium Solver Platform. The 12 • Introduction Solver User Guide . and new Linearity and Feasibility Reports for the GRG and Simplex Solvers. Once the Premium Solver is installed. with the Simplex Solver) of up to 1. Version 5 of the Premium Solver includes powerful hybrid Evolutionary Solver features. you can solve non-smooth optimization problems (NSPs. as well as the ability to create outlined reports. and our new Evolutionary Solver. greater control over the solution of integer problems. previously available only in the Premium Solver Platform. Spreadsheet models you’ve developed for use with the standard Excel Solver can be used immediately with the Premium Solver.000 variables with no limit on the number of constraints. Where the GRG Solver can find only a locally optimal solution. with the Evolutionary Solver) or smooth nonlinear optimization problems (NLPs. or permutation. called the alldifferent constraint. Version 5 of the Premium Solver also supports a new type of constraint for integer variables. The Premium Solver also supports fast problem setup for linear and integer programming models built with the SUM. The Evolutionary Solver helps you find “good” solutions to Excel models made up of any standard or user-written (numeric) functions – even those with IF. If you expect that your models will grow in size (and most users find that they do). which will typically solve them faster and/or more accurately than before.Solver can be controlled by user programs written in Visual Basic Application Edition. of integers. The Premium Solver The Premium Solver is Frontline’s basic upgrade to the Solver that comes with Microsoft Excel. The alldifferent constraint specifies that at the solution. It includes all of our latest speed and accuracy improvements to the standard Excel Solver. Hence. which complements the “classical” linear and nonlinear algorithms found in the standard Excel Solver. based on genetic algorithms. organizing the variables and constraints into the blocks you entered in the Solver Parameters dialog. and also for speed. Problem setup can be 5 to 50 times faster for models in this form. new diagnostic reports and ease-of-use features. LOOKUP and similar functions that cause difficulty for the GRG Solver. Improvements to the Solver reports include a new Population Report for the Evolutionary Solver. each integer variable in the group must have a value that is different from all the others. and tolerances used by the linear Simplex and nonlinear GRG solution methods. Solution speed in the Premium Solver is improved for all types of problems. User interface improvements include a more flexible way to specify decision variables (Changing Cells) that may be scattered across your worksheet. the variables in the group form an ordering. with the GRG Solver) of up to 400 variables and 200 constraints in addition to bounds on the variables. the Evolutionary Solver is much more likely to find a globally optimal (or near-optimal) solution. through a set of VBA functions such as SolverOk and SolverSolve. and described later in this chapter. more informative progress reporting on the Excel status bar. in both the Premium Solver and the Premium Solver Platform. we recommend that you design your models using these functions – for clarity and ease of maintenance. and faster ways to move among the Solver dialogs. CHOOSE.

and the concepts of optimization. typically in undergraduate or graduate (MBA) courses in engineering or business administration.” For example: • The Interpreter can diagnose your model as a linear programming. • • Solver User Guide Introduction • 13 . The Interpreter does much more than simply recalculate values for Excel formulas – it can interpret the formulas in many other ways that are advantageous for the Solver. management science. and it is now included in a wide range of courses and textbooks that introduce students to operations research. developed by Frontline Systems. the Interval Global Solver. And it supports multiple. and its speed is about the same as the standard Excel Solver. a fourth Solver engine. and automatically select Solver engines suitable for your model. And the Premium Solver Platform has two other fundamental. This capability is used by the new Interval Global Solver to find globally optimal solutions to optimization problems. using the methods of automatic differentiation. The Interpreter can evaluate Excel formulas in your model over intervals. It includes the functionality and user interface improvements of the Premium Solver. It can even pinpoint formulas that make your model nonlinear or non-smooth. Model Analysis: The Parser and Interpreter The Premium Solver Platform V5 includes a new Parser and Interpreter for Excel formulas. the Linearity. The Interpreter can compute derivatives of your problem functions directly. Feasibility and Population Reports. and the linear Simplex Solver – and in Version 5. The Premium Solver Platform The Premium Solver Platform includes all of the features of the Premium Solver. smooth nonlinear. such as the well-known Traveling Salesman Problem.alldifferent constraint can be used to easily model problems involving orderings or assortments. where the Premium Solver relies on Microsoft Excel for this purpose. The Premium Solver for Education The Premium Solver for Education is a special version of the Premium Solver that is designed exclusively for university use. “A Brief Tour of New Features. as further described in the next section. or non-smooth optimization model. It is licensed only through academic textbook publishers who are serving the university market. powerful capabilities beyond the Premium Solver: It includes a new Parser and Interpreter capable of analyzing Microsoft Excel formulas. but none of the speed or capacity improvements. such as the Evolutionary Solver. nonlinear GRG Solver. in addition to single numeric values. field-installable Solver engines that can solve much larger and more challenging optimization problems. This is much faster and more accurate than the method of formula recalculation and “finite differencing” used by the Excel Solver and Premium Solver. and report outlining. It is limited to 200 decision variables and (for nonlinear and non-smooth problems) 100 constraints in addition to bounds on the variables. plus a wide range of improvements to each of three bundled Solver engines – the Evolutionary Solver. quadratic programming. designed specifically for global optimization problems.

For other problems. or an “inner solution” to a system of nonlinear inequalities. multistart methods will converge in probability to the globally optimal solution. Problems of both types may have up to 2. Quadratic programming problems have a quadratic objective function and all linear constraints. For some smooth nonlinear problems.5 – can be used to solve integer programming subproblems. the Premium Solver Platform finds more accurate optimal solutions in a small fraction of the time that otherwise would be required. and they provide additional power and capacity to solve problems much larger and/or more difficult than the problems handled by the bundled Solver engines. Cut generation methods – new in Version 5. field-installable Solver engines. they are often used to find “efficient portfolios” of securities using the Markowitz or Sharpe methods. These strategies often drastically speed up the solution of integer problems. they often yield very good solutions in an acceptable amount of time – and of course.5 – is actually a hybrid of genetic and evolutionary algorithms and classical optimization methods. can be used to fix variable values. Where the standard Excel Solver and the Premium Solver must use the much slower GRG Solver on problems of this type.000 decision variables. often by factors of 100 or more over the standard Excel Solver. The GRG Solver handles smooth nonlinear (NLP) problems of up to 500 decision variables and 250 constraints. with both non-smooth or discontinuous functions and hundreds of conventional constraints. often dramatically.” It handles smooth nonlinear (NLP) problems of up to 500 decision variables and 250 constraints. plus bounds on the variables. The nonlinear GRG Solver in the Premium Solver Platform is augmented with “multistart” or “clustering” methods for global optimization. They are seamlessly integrated into the Premium Solver Platform – to use one. like the bundled Solver engines. It handles non-smooth (NSP) problems of up to 500 decision variables and 250 constraints. they are far easier to use than a manual exploratory process. and they can be 14 • Introduction Solver User Guide . plus bounds on the variables. the LP/Quadratic Solver and the Branch & Bound method in the Premium Solver Platform employ a powerful set of extensions. operating on 0-1 or binary integer variables. they recognize common Solver options and provide their own Options dialogs. The LP Simplex Solver in the Premium Solver Platform is extended to handle both linear programming (LP) and quadratic programming (QP) problems. “A Brief Tour of New Features. all real solutions to a system of nonlinear equations. plus bounds on the variables. and determine in advance whether a subproblem has any feasible solutions.5 – further speed up the solution of integer programming problems. tighten constraints. The Dual Simplex method – significantly enhanced in Version 5. They produce reports as Excel worksheets. in addition to the four “bundled” Solver engines. A variety of Preprocessing and Probing strategies. you simply select the Solver engine by name in the dropdown list that appears in the Solver Parameters dialog. with no effective limit on constraints. This new hybrid Evolutionary Solver can be applied to extremely challenging problems. For problems involving integer variables.Solver Engines in the Premium Solver Platform The new Interval Global Solver in the Premium Solver Platform uses state-of-the-art interval methods to find the globally optimal solution to a nonlinear optimization problem. typically in far less time. Such Solver engines are licensed as separate products. Field-Installable Solver Engines The Premium Solver Platform also includes support for multiple. The Evolutionary Solver in the Premium Solver Platform – significantly enhanced in Version 5. as further described in the next section.

handling problems of up to 16. and an Extended version. It is especially effective on nonlinear problems with many linear constraints or linear occurrences of variables. methods for finding a feasible solution quickly. It is offered in three versions: A Basic version. The Large-Scale LP Solver uses advanced matrix factorization methods such as the LU decomposition and dynamic Markowitz refactorization. Such problems require different algorithmic methods to manipulate large amounts of numerical data.000 variable limit imposed by the built-in LP/Quadratic Solver. Its only built-in size limit is 100. and smooth nonlinear optimization problems even larger than those handled by the Large-Scale GRG Solver. The Large-Scale SQP Solver uses a Sequential Quadratic Programming method. the result of intense research in large-scale nonlinear optimization in recent years.000 constraints.000 constraints.000 constraints. Solver User Guide Introduction • 15 .000 constraints. It uses sparse matrix storage methods. In most cases.000 constraints. advanced methods for selecting a basis and dealing with degeneracy. since it exploits information about the model supplied by the new Interpreter in the Premium Solver Platform. The Large-Scale LP Solver Frontline’s Large-Scale LP Solver is designed to solve linear programming problems much larger than the 2. Thanks to enhancements in Version 5. The Large-Scale GRG Solver Frontline’s Large-Scale GRG Solver is designed to solve smooth nonlinear problems much larger than the 500 variable limit imposed by the built-in nonlinear GRG Solver.5.000 constraints. The Large-Scale SQP Solver Frontline’s Large-Scale SQP Solver is a state-of-the-art optimizer that is capable of solving linear programming problems even larger than those handled by the LargeScale LP Solver. handling very large problems of up to 65. The KNITRO Solver Frontline’s KNITRO Solver – developed in close cooperation with Ziena Optimization.controlled by VBA code in your custom applications. capable of solving problems of up to 4. it is even faster than the Large-Scale LP Solver on linear mixed-integer problems. to enable you to evaluate how well they perform on a challenging Solver model that you have developed.000 variables and 4. and to maintain numerical accuracy after hundreds of thousands to millions of floating-point arithmetic calculations.000 variables and 65. It is offered in two versions. the other capable of handling large problems of up to 12. and new in Version 5.000 variables and 100. a Standard version.000 constraints. The standard version of this Solver engine solves nonlinear problems of up to 100.5 – offers breakthrough performance in solving smooth nonlinear problems of almost unlimited size.000 variables and 4. quadratic programming (QP) problems larger than the Premium Solver Platform’s LP/Quadratic Solver. even larger-scale versions are available by special request.000 variables and 16. one capable of solving problems of up to 4.000 variables and 12. and faster than the Large-Scale GRG Solver on nonlinear problems. for both speed and numerical stability. and other algorithmic methods adapted for larger problems. trial license versions of these Solver engines are available.000 variables and 100. It is typically faster than the Large-Scale LP Solver on linear problems. The KNITRO Solver is the leading implementation of new state-of-the-art interior point nonlinear methods.

The XPRESS Solver Frontline’s XPRESS Solver Engine. The OptQuest Solver uses advanced methods including tabu search and scatter search.. even larger-scale versions are available by special request.. 16 • Introduction Solver User Guide . available from Frontline Systems. LOOKUP. Inc. Version 5 of the XPRESS Solver Engine can also solve quadratic programming (QP) problems. via phone. developed in close cooperation with Pintér Consulting Services. developed in close cooperation with Dash Optimization. and ROUND that cause difficulty for the classical nonlinear Solvers. The name LGO is an abbreviation for Lipschitz(ian) Global Optimizer. and other upgrades for the Premium Solver Platform. email. is designed to work with all types of Excel models. and virtually unlimited problem solving capacity of the XpressMP mixed-integer linear optimizer to Excel spreadsheet users. It supports up to 5. that will operate seamlessly with the Premium Solver Platform.5 introduces even better performance on linear and quadratic mixedinteger problems. brings the lightning-fast performance.000 variables and 1. with special emphasis on global optimization of multiextremal models (models with many locally optimal solutions). CHOOSE. The standard version of this Solver engine solves problems of up to 200.000 variables and 200. Inc.solver. to solve new types and sizes of optimization models. as described in the Solver Engine User Guide. subject to time and memory constraints. and COUNT and non-smooth functions such as ABS. developed in close cooperation with OptTek Systems.000 constraints. Other New Solver Engines Frontline is constantly working to enhance both the four bundled Solver engines in the Premium Solver Platform. Many professionals regard XpressMP as the world’s best general-purpose mixed-integer optimizer. and the seven field-installable Solver engines briefly described above. It is designed to find globally optimal solutions to problems of up to 1. Also. Your Excel model can contain any standard or user-written (numeric) functions – even discontinuous functions such as IF.000 constraints. Be sure to stay in contact with Frontline Systems.000 variables and 1. The OptQuest Solver Frontline’s OptQuest Solver. is designed to solve nonlinear problems more general than the Large-Scale GRG Solver (including functions that are continuous but not necessarily smooth).000 constraints. The LGO Global Solver Frontline’s LGO Global Solver. Version 5. the OptQuest Solver may find a globally optimal (or near-optimal) solution to a problem with multiple locally optimal solutions (though it cannot give any assurance of finding the globally optimal solution). MIN. The XPRESS Solver Engine offers more than 60 Solver Options and is described in a separate Solver Engine User Guide. as described in the Solver Engine User Guide available separately from Frontline Systems.com) to get the latest news about the availability of new field-installable Solver engines. And Frontline is developing more Solver engines. or the World Wide Web (at www.

e. such as a dollar amount in hundreds of millions and a return or risk measure in fractions of a percent. and pinpoint for you formulas that are likely to yield a loss of accuracy due to poor scaling. if you intended to create a smooth nonlinear model. Solver User Guide Introduction • 17 . and which are constant in the model. and the Interpreter will pinpoint the specific cells containing formulas that introduce a nonlinear dependence into your model. linear. because the loss of accuracy occurs in your model and not in the Solver’s own calculations. then it evaluates each arithmetic operation or function in your model to determine how the formula depends on each decision variable: Whether it is independent (i. Further. with brief explanations of what they mean for your ability to create models and find optimal solutions. The Interpreter can evaluate your formulas while keeping track of the magnitude of each intermediate result. statistical. you can tell the Interpreter that your goal or intent was to create (say) a linear model. Model Diagnosis One way that the Interpreter can evaluate Excel formulas is for model diagnosis. or non-smooth as a function of that variable. The Interpreter can handle nearly any Microsoft Excel formula syntax. quadratic programming. a few functions such as INDEX and OFFSET. including the financial. Similarly. and user-defined functions written in VBA or other languages. and calculate values for (“interpret”) these formulas whenever you – or the Solver – change values of input cells. The Interpreter can also help diagnose problems of poor scaling in your model. and engineering functions in the Analysis Toolkit. quadratic. This section provides a tour of these new features. the Interpreter will pinpoint cells containing nonsmooth operations or functions of each decision variable. or non-smooth optimization model. constant). smooth nonlinear. Automatic scaling by the Solver engines cannot overcome this. For rarely used syntax forms. including the ability to solve entirely new kinds of problems. This Interpreter does much more than simply recalculate values for Excel formulas – it can interpret the formulas in many other ways that are advantageous for the Solver. and Premium Solver Platform relied on Microsoft Excel itself to read and analyze (“parse”) the formulas you enter in spreadsheet cells. smooth nonlinear.A Brief Tour of New Features The Premium Solver product family provides a wide range of new features for Solver users. developed by Frontline Systems. if one of your formulas adds or subtracts two quantities of very different magnitudes. the Platform V5 can still use Microsoft Excel instead of its own Interpreter for Excel formulas. the result will be accurate to only a few significant digits. including array formulas. and almost all of the Excel built-in functions. but it also includes a new Parser and Interpreter for Excel formulas. Model Analysis: The Parser and Interpreter Previous versions of the Excel Solver. It determines which input cells are decision variables. The Premium Solver Platform V5 retains the ability to use Microsoft Excel for evaluation of spreadsheet formulas. This enables the Interpreter to diagnose your model as a linear programming. Premium Solver. For example.

The standard Excel Solver cannot handle models that employ such functions in the calculation of their objectives or constraints. once at each major iteration or trial point. because of the number of recalculations and the loss of significant digits from the many division operations involved. This process was relatively slow and inaccurate. Hence. and the chain rule is applied to compute derivatives for composite functions. derivative values can be obtained many times faster. Addition. Interval Arithmetic To support the Premium Solver Platform’s new Interval Global Solver. derivative evaluation is key to both the speed and accuracy of such optimization algorithms. The Evolutionary Solver included in the Premium Solver products. [1.Automatic Differentiation Most optimization algorithms make heavy use of derivatives or gradients of the problem functions (the objective and constraints) with respect to the decision variables. In the Premium Solver Platform V5. 6] in interval arithmetic. Hence. Premium Solver. the Interpreter can also evaluate Excel formulas over intervals rather than single numeric values. and without any loss of accuracy beyond the actual function values themselves. See below for a brief description of the Interval Global Solver included in the Platform V5. such as IF. including linear programming and integer programming problems. 2] represents all of the possible numeric values between 1 and 2. to Solver engines using interval methods. Linear programming algorithms require that derivatives be evaluated once. but they are used internally by the Interval Global Solver (and they could be used by future field-installable Solver engines). and Premium Solver Platform estimated derivative values by the method of finite differencing (FD): They used Microsoft Excel itself to recalculate values for the objective and constraints at the “current trial point” (i. the interval values are not displayed in spreadsheet cells. Nonlinear optimization algorithms typically require that derivatives be evaluated many times. The Evolutionary Solver The standard Excel Solver is able to find solutions for “classical” optimization models. 18 • Introduction Solver User Guide . Previous versions of the Excel Solver.e. and other arithmetic operations and functions can be defined over intervals – for example. subtraction. values of the decision variables). CHOOSE and LOOKUP. including automatic differentiation over intervals. and at nearby points with small changes (“perturbations”) in each decision variable. using the methods of automatic differentiation (AD): Analytic formulas for the derivatives are applied to each arithmetic operator and elementary function. An interval such as [1. and problems with smooth nonlinear objectives and constraints. At present. can handle models whose calculation uses any type of (numeric) operations and functions. to obtain the LP coefficient matrix. But the Excel formula language includes many operations and functions. on the other hand. The Interpreter can compute interval values for all of Excel’s arithmetic operators and most built-in smooth functions. that don’t satisfy the requirements for linear or smooth nonlinear problems. 4] = [4. The Interpreter provides powerful facilities. 2] + [3. the Interpreter can evaluate derivatives directly.

In some problems this is sufficient. it outperforms competitive products whose main (or only) feature is a genetic algorithm. the Evolutionary Solver has no way of knowing for certain that a given solution is optimal – even “locally optimal. which are typically beyond the capabilities of genetic and evolutionary algorithms working alone. you simply select the Evolutionary Solver from the list. The classical methods sometimes yield rapid “local improvement” of a trial solution. however. the Evolutionary Solver is a nondeterministic method: Because it is based partly on random choices of trial solutions. and even the Simplex method for linear subsets of the constraints.” Similarly. classical gradient-based quasi-Newton methods. the Evolutionary Solver is greatly enhanced – it is actually a hybrid of genetic and evolutionary algorithms and classical optimization methods. and application of classical methods to smooth nonlinear and linear variable occurrences. That’s it! You don’t have to change your model. The Evolutionary Solver is often able to solve problems with hundreds of constraints. but in other cases you may want or need to find a globally optimal solution. And the Evolutionary Solver doesn’t require that you learn new terminology or choose from a variety of complicated “solving methods. new “filtered local search” methods that greatly improve performance on smooth global optimization problems. constraints or objective. including automatic application of genetic algorithm methods to non-smooth variable occurrences.5 introduces a wide range of significant new enhancements to the Evolutionary Solver. A Solver based on genetic or evolutionary algorithms is not a panacea. Hybrid Evolutionary Solver Methods In Version 5 of the Premium Solver and Premium Solver Platform. Solver User Guide Introduction • 19 . the Evolutionary Solver has no way of knowing for certain whether it should stop. And unlike the Simplex and GRG Solvers. You can even apply the Evolutionary Solver to models created with the standard Excel Solver. With the Premium Solver products.” the nonlinear GRG Solver – like virtually all “classical” nonlinear optimizers – is guaranteed only to find a locally optimal solution. including gradient-free ‘direct search’ methods. Imagine a graph of the objective function with “hills” and “valleys:” The GRG Solver will typically find the peak of a hill near the starting point you specified (if maximizing). you are not limited to an evolutionary algorithm – you can apply the most appropriate Solver engine to each problem you encounter. The Evolutionary Solver is based on the principles of “genetic algorithms” and “evolutionary algorithms.The Evolutionary Solver appears as a Solver “engine” in the dropdown list in the Solver Parameters dialog. Multistart Methods for Global Optimization As explained in the chapter “Solver Models and Optimization. Unlike the Simplex and GRG Solvers which are deterministic optimization methods. To use it. by default it will often find a different “best solution” each time you run it.” You just select the Evolutionary Solver engine and click Solve. even if you haven’t changed the model at all. by finding better solutions in significantly less time. or your selections of variables. however. with no extra work on your part to set up the optimization problem. but it may not find an even higher peak on another hill that is far from your starting point. and they also help to “solve for” sets of constraints. Version 5. You can switch Solver engines at any time.” In tests on a wide variety of Excel models. or continue searching for a better solution. and new “integer heuristic” methods from the local search literature that improve performance on problems with integer variables.

you’ll encounter a problem where you want to specify that a set of integer variables (typically representing an ordering of choices) must all be different at the solution. Given time. With multistart methods in the Premium Solver Platform. You don’t have to do anything special to use these methods – just define your model in the usual way. Rather than search in the neighborhood of a single starting point. In contrast. The Alldifferent Constraint In the standard Excel Solver. select “Interval Global Solver” from the dropdown list of Solver engines. such as linear enclosures. At times. We’ve pioneered several of the methods used in this Solver. where a salesman 20 • Introduction Solver User Guide . It uses interval methods to find the globally optimal solution to a nonlinear optimization problem. binary or 0-1 integer variables are often used to represent yes/no decisions in an optimization model. but the types of problem conditions you could model with integer variables remained the same. and runs the GRG Solver from a representative point in each cluster. and the best solution found (the “highest peak” if maximizing) will be returned as the optimal solution. you can specify that certain decision variables must have integer values at any feasible or optimal solution. Now. The Interval Global Solver The Interval Global Solver is a new Solver engine built-in to the Premium Solver Platform V5. Frontline believes its Interval Global Solver is the first commercially supported optimizer to use these methods. solution times of problems involving integer variables were often greatly improved. all real solutions to a system of nonlinear equations. (As a special case.) In previous versions of the Premium Solver. and it will find all real solutions to a system of nonlinear equations (subject to some limitations involving roundoff error. and standard Evolutionary Solvers. whereas the Evolutionary Solver and the multistart methods described above use nondeterministic methods. plus the ability to estimate whether all locally optimal solutions have likely been found. and click the Solve button. The Evolutionary Solver will also handle non-smooth functions – but such functions limit its ability to speed up the search for an optimal solution. which have yielded order-ofmagnitude speed improvements compared to earlier interval algorithms. standard GRG Nonlinear. An algorithm called “multi-level single linkage” randomly samples starting points. but cannot find “provably optimal” solutions. An example is the Traveling Salesman Problem (TSP). which involve an element of random chance. and to test for optimality. it maintains a population of candidate solutions “scattered around the landscape. the nonlinear GRG Solver – and other. field-installable Solver engines – can be automatically run many times from judiciously chosen starting points. Interval methods for global optimization are the subject of considerable research currently. the Interval Global Solver will find a “proven” global optimum. The result is performance similar to the “filtered local search” methods used by the Evolutionary Solver. the Evolutionary Solver and the multistart methods described above often find good solutions.” and (based in part on random choices) it will attempt to improve each one. along with the standard LP/Quadratic. or an “inner solution” to a system of nonlinear inequalities. The Interval Global Solver uses deterministic methods to search for the global optimum.The Evolutionary Solver provides one way to seek a globally optimal solution. as described in the chapter “Diagnosing Solver Results”). you’ll have an easy-to-use way to apply these groundbreaking methods to your own problems. collects them into “clusters” that are likely to lead to the same locally optimal solution.

This allows you to model your problem in a high-level way. you can specify that a set of variables must be “alldifferent. if desired. New Types of Reports Where the standard Excel Solver offers three types of reports – the Answer Report. produced by the Premium Solver Platform – is described below. such as using a >= relation when you meant <=. and the new Linearity Report. and also whether each variable occurs linearly or nonlinearly in the problem. By examining just the constraints in the Feasibility Report. With the Premium Solver products. and Scaling Report. Feasibility Report. and each city must be visited exactly once. (An even better solution – the Dependents Report. thereby gaining the extra speed and accuracy available with a Solver designed for linear problems. You can also select automatic outlining for the first six reports.” you have the option of producing a standard Answer Report and/or a new Population Report. In the Premium Solver Platform. And the Premium Solver Platform offers nine types of reports: The first six just listed. Sensitivity. for models with hundreds of variables and constraints. and Population Report. implementing it in different ways. and the Solutions Report. When the Evolutionary Solver stops with a “best solution. you can usually pinpoint the problem with your model very quickly. especially if you have hundreds of constraints to examine. Where the Answer Report gives you detailed information about the single “best solution” Solver User Guide Introduction • 21 . you can select which blocks of variables and constraints appear in reports. and try a variety of Solver engines to see which one yields the best performance on your problem. Linearity.) When you receive the message that “Solver could not find a feasible solution. that shows you whether the objective and each constraint is a linear or nonlinear function of the variables. Sensitivity Report. In the Premium Solver and Premium Solver Platform V5. and you can identify each block with descriptive comments. Field-installable Solver engines also support the “alldifferent” constraint. It will automatically re-solve the problem with subsets of the original constraints. All of the bundled Solver engines support this new type of constraint: The Branch & Bound process used by the Simplex LP (or LP/Quadratic). eliminate nonlinear formulas in your model. nonlinear GRG and Interval Global Solvers is extended to handle “alldifferent” constraints as a native type. but which becomes feasible if any one of the constraints is removed. you can locate and. which will organize the variables and constraints into outlined groups corresponding to the blocks you entered in the Solver Parameters dialog. With this information. This condition is difficult to model using conventional constraints and integer variables. until it isolates a subset of constraints (called an “Irreducibly Infeasible System” or IIS) which is infeasible. and Population Reports When the Solver says that “The linearity conditions required by this Solver engine are not satisfied. Dependents Report.” this often means that you’ve made a mistake entering some constraint.” Such variables will then have integer values from 1 to N (the number of variables). and Limits Report – the Premium Solver offers six types of reports: The Answer. and Limits Reports. all of them different at the solution. Feasibility. and the Evolutionary Solver implements these constraints using mutation and crossover operators for permutations. But it can be difficult to pinpoint the source of the error. you can produce a Feasibility Report and let the Solver do the work. This can make it much easier to find the information you need in the reports.must choose the order of cities to visit so as to minimize travel time.” you can produce a Linearity Report.

the Population Report gives you summary information about the entire population of candidate solutions at the end of the solution process. Dependents. and it can pinpoint not just overall constraints and variables. If. you can diagnose your model even before you solve it. and produce the Dependents Report and Scaling Report to pinpoint problems in your model. or (if it wasn’t) exactly which formulas caused the model to be nonlinear or nonsmooth? Or – having learned about how the large-scale Solver engines exploit sparsity in a model – have you wondered just how sparse your model actually is. Where the Answer Report gives you detailed information about the first solution to the system of equations found by the Solver. and help you decide whether additional runs of the Evolutionary Solver are likely to yield even better solutions. you simply select the type of model you meant to create – linear. but individual cell formulas where the dependence of constraints on variables is nonlinear (if your assumed model is an LP) or non-smooth (if your assumed model is an NLP). and whether it’s getting close to the size limits supported by a given Solver engine? In Version 5 22 • Introduction Solver User Guide . and Scaling Reports When the Interval Global Solver in the Premium Solver Platform solves a system of nonlinear equations. over which all solutions will satisfy the inequalities.returned by the Solver. The Dependents Report is both more useful and more reliable than the Linearity Report. which controls the Parser and Interpreter. the Scaling Report will probably identify this formula as poorly scaled – again with a hyperlink to the cell containing the scaling problem. When the Interval Global Solver solves a system of nonlinear inequalities. or non-smooth – and ask the Solver to report any exceptions to this assumption. help you move more quickly through the Solver dialogs. User Interface Improvements User interface improvements in the Premium Solver products are designed to give you more information. The Population Report can give you insight into the performance of the Evolutionary Solver as well as the characteristics of your model. by the Large-Scale SQP Solver – by exploiting linear constraints or linearly occurring variables wherever possible? The new Solver Model dialog in the Premium Solver Platform V5 gives you answers to all these questions. a formula adds or subtracts a dollar amount in millions and a return or yield figure in percent. but it requires no assumed model type – it is designed to identify individual cell formulas in your model that are likely to cause numerical problems for the Solvers. because they are poorly scaled and will yield fewer significant digits in the calculated result than the Solvers need. and accomplish what you want in fewer steps. because it evaluates your model symbolically rather than numerically (so it cannot be “fooled” by poorly scaled models). or whether it could be solved faster – for example. with hyperlinks to the actual cells containing the formulas in question. you have the option of producing a standard Answer Report and/or a new Solutions Report. Have you ever wondered about the size of the problem you’ve defined. Solutions. These cell formulas are reported as “exceptions” in the Dependents Report. Using the Platform’s new Solver Model dialog. the Solutions Report lists all real solutions to the system of equations. quadratic. for example. For the Dependents Report. Have you ever wondered whether your model was truly linear or smooth nonlinear. The Scaling Report is similar to the Dependents Report. the Solutions Report gives you intervals or ranges for all decision variables. smooth nonlinear.

Have you ever found it difficult to enter all of your variables (Changing Cells) via a multiple selection in the single edit box provided by the standard Solver? The Premium Solver products provide a Variables button which allows you to switch between a single edit box and a multi-line display. for a larger model. as you solve variants of the same problem? In the Premium Solver products. a check box in the Solver Results dialog lets you return to the Solver Parameters dialog directly. variable bounds and integer variables in your problem and the corresponding size limits at any time. The Premium Solver supports fast problem setup for linear programming models. Have you ever wondered how long the Solver will take.. Speed Improvements The Premium Solver offers a range of speed and accuracy improvements over the standard Excel Solver. By simply clicking on check boxes and radio buttons. stopping conditions for the nonlinear GRG Solver. the Premium Solver products provide access to algorithmic methods and tolerances used in each of the bundled Solver engines.. which will appear in each of the Solver’s reports. or entering values in edit boxes in the Solver Options dialogs. which can yield answers up to 100 times faster than in the standard Excel Solver. compared to the Premium Solver and earlier versions of the Platform. for entering and modifying an unlimited number of variable selections. Have you ever had trouble remembering the purpose of a block of constraints in your model? In Version 5 of the Premium Solver products. when “Setting Up Problem.” Solver User Guide Introduction • 23 . for models that use a restricted set of Excel functions and conform to “fast problem setup format. mutation rate. to find out why. where you can change settings and click the Solve button immediately. the population size.of the Premium Solver products. If you solve an integer problem and find that there is no feasible solution. menu choice again and again. you’ll have the option to create a Feasibility Report.. Finally.” appears on the status bar. you’ll know: An estimated “% Done” appears on the status bar in each of these situations. you can add descriptive comments to each block. the Solver Results dialog provides an option to immediately solve the “relaxation. you can control key tolerances in the Simplex method. Have you ever found yourself selecting the Tools Solver. And if there is still no feasible solution.” temporarily ignoring the integer constraints. and other options for the Evolutionary Solver. or when the Solver is building a Limits Report? Thanks to improved progress reporting in the Premium Solver products. Premium Solver For large Excel models. the time spent “Setting Up Problem…” can be significant – often more than the time spent on “Trial Solutions” for LP problems. similar to the Constraints list box.. constraints. The Premium Solver Platform V5 realizes a whole new level of speed and accuracy. by displaying the Problem tab in the Solver Options dialog available for each Solver engine. thanks to model analysis and automatic differentiation performed by the new Parser and Interpreter. and the interval methods and tolerances used by the new Interval Global Solver. the number of subproblems and integer solutions to be explored by the Branch & Bound method. you can examine the number of variables.

report outlining. depending on how many variables occur linearly in the problem (which is. but on many problems the Premium Solver is ten or more times faster than the standard Excel Solver.5 on average! For linear mixed integer (LP/MIP) models. This means that you can build an application using the GRG nonlinear Solver. thanks to a new Dual Simplex method whose speed increases as bounds on the variables are tightened by the Branch & Bound method.5. you can turn on Excel’s Macro Recorder. Although solution times vary from model to model.5 on average.” that can speed up the solution process by as much as 50%.The Standard Simplex LP Solver is about three times faster than the standard Excel Solver. the Premium Solver Platform’s Dual Simplex method (for all problems with integer variables) and several Preprocessing and Probing options (for problems with 0-1 integer variables) will often drastically improve solution time. which reproduces your interactive steps whenever it is run. and also uses less memory. Evolutionary Solver. Premium Solver Platform In the Premium Solver Platform V5. and new options in the Solver Options dialogs for all Solver 24 • Introduction Solver User Guide . the Premium Solver Platform V5 is twice as fast as the Premium Solver and the Platform V3. or a field-installable Solver engine. and thanks to new cut generation methods that automatically add new constraints to the problem. hide the Premium Solver user interface. build your Solver model interactively. “cutting off” parts of the LP feasible region without eliminating any potential integer feasible solutions. on a comparative test of actual user NLP models. such as pseudocost branching. the Solver Model dialog. and which includes direct calls to the VBA functions that control the Solver. and present your own customized user interface for your end users. on a comparative test of actual user LP models. the Premium Solver Platform is even faster. of course. to select the next subproblem to be solved and the next variable to be “branched upon. The Premium Solver products also provide programmatic access to new features such as the Variables list. Interval Global Solver. and let the Solver generate a working Visual Basic program for you. thanks to new “steepest edge pricing” methods in Version 5. And with the new Interpreter’s automatic differentiation facilities.” The results are highly dependent on the specific model and integer problem formulation. Programmability Improvements The Premium Solver and Premium Solver Platform are fully programmable from Excel’s Visual Basic Application Edition. A complete summary of the VBA functions supported by both the standard Excel Solver and the Premium Solver products is included in this Guide. the six new types of reports. The Branch & Bound method in the Premium Solver products uses better heuristics. And the Evolutionary Solver in the Premium Solver and Premium Solver Platform is often many times faster on problems with linear or smooth nonlinear constraints. These methods make the Platform hundreds of times faster than the standard Excel Solver. fast problem setup is still available for LP and QP models in restricted format. “Recognize Linear Variables. The nonlinear GRG Solver in the Premium Solver supports a new option. the Premium Solver Platform V5 was seven times faster than the Premium Solver and the Platform V3. but the Parser and Interpreter can make problem setup faster for virtually all models. Simplex LP (or LP/Quadratic) Solver. regardless of the formulas and functions they use. On specific models. To get started.5. nonlinear overall). Performance is further improved in Version 5.

better-documented models. either-or constraints. and the tradeoffs involved. It describes modeling techniques such as ratio constraints. quadratic. It describes how a model is made up of variables. constraints and an objective. “Solver Models and Optimization” reviews the basic framework of the optimization problems that can be handled by the Solver. “Solver Options” documents in depth the advanced options and tolerances used by each of the bundled Solver engines. such as layout and formatting and use of defined names. smooth nonlinear. and the Evolutionary Solver for non-smooth problems. It also provides hints on “what to do next” when you have a solution. “Analyzing and Solving Models” describes how to use the new Solver Model dialog to analyze your model for linear. find nonlinear or non-smooth formulas that are “exceptions” to your intended form of model. and non-smooth constraints and decision variables.” It outlines the most common problems that users have. you can use your existing VBA code. “Building Solver Models” is an introduction to the process of building optimization models in Microsoft Excel. “Building Large-Scale Models” provides a number of valuable hints when building large-scale spreadsheet models and using external data sources. And it shows how you can use array formulas and functions such as MMULT. automatically select “valid. This chapter covers in some detail the strengths and limitations of the GRG Solver for smooth nonlinear problems. “Solver Reports” describes the contents of reports that may be chosen from the Solver Results dialog. How to Use This Guide “Installation” takes you through the simple steps required to install the Premium Solver product you have licensed. The effect of each option and situations where you would likely choose it are described. translating from algebraic notation to spreadsheet formulas and Solver Parameters dialog choices. from linear programming problems to the non-smooth optimization problems handled by the Evolutionary Solver. and extend it as much as you wish to utilize the new Premium Solver features. constraints for IF functions. use of the new Variables button. find poorly scaled formulas in your model. and control the operation of the Parser and Interpreter when your model is solved. or if you encounter a message other than “Solver found a solution. and problems involving the new alldifferent constraint. and use of the “dif” dropdown for alldifferent constraints. and the SUM. which can be set using the new multi-tabbed Solver Options dialogs. This chapter also provides a Solver User Guide Introduction • 25 . It shows you how to interpret the numbers in the reports.engines. It covers multiple selections for decision variables. the possible forms of constraint left. the multistart methods and the new Interval Global Solver for smooth global optimization problems. and more. SUMPRODUCT and special add-in functions to define your objective and constraint formulas in fast problem setup format. based on our technical support experience with the Solver. piecewise linear constraints. and it covers the major categories of optimization problems that you can solve. It also provides hints on how to build more readable.and right-hand sides. Since the programmatic interface is upward compatible with the standard Excel Solver. fixed-charge constraints.” “good” or “best” Solver engines. “Diagnosing Solver Results” helps you determine what is wrong if you don’t get the solution you expect from the Solver. and how to use the Sensitivity Report to predict changes in the optimal solution in response to certain kinds of changes in your input data. to work with your copy of Microsoft Excel.

http://www.com. Unlike any other current textbook. select Help from the main Excel menu bar. Using Online Help and the World Wide Web The enhanced Help system included with your Premium Solver product gives you online access to much of the information in this manual. Linearity Report and Feasibility Report in the Premium Solver.solver. You can also send email to Frontline Systems directly from your Web browser or your email client program. published by John Wiley & Sons. Don’t reinvent the wheel – find out how others have solved problems similar to yours! You may also want to attend a public seminar on spreadsheet optimization and other advanced techniques in Excel. On the World Wide Web. smooth nonlinear and non-smooth optimization. just click on the Help button in any of the Solver dialogs. Because of the popularity of the Excel Solver. There’s a good chance that you can find an answer to your question. The Art of Modeling with Spreadsheets: Management Science. The World Wide Web is currently our best way of delivering technical support assistance for the Premium Solver products. you’ll want to check it periodically for the latest news about the Solver. To access this reference Help. “Programming the Solver” describes how you can control the Solver from Visual Basic Application Edition. visit http://www. or discuss your problem with someone in your firm or at your local university with a background in operations research and/or management science. or a related hint in this manual or on our Web site. There is a vast literature on problems of various types and for various industries and business situations that have been solved successfully with the methods available in the Solver. and Modeling Craft by Stephen G. Powell and Kenneth R. seminars taught by highly regarded instructors are offered in a variety of U. look up the Solver functions in the Object Browser. or integer programming techniques. This brand-new textbook (copyright 2004) is a valuable aid for anyone using the Premium Solver or Premium Solver Platform. and create “turn-key” applications using the Solver.S. Baker. To make the most of the Solver. it does not attempt to teach you how to formulate Solver models or apply linear and quadratic programming. Spreadsheet Engineering. Solver-Related Seminars and Books Although this manual will provide many valuable hints for making effective use of the Solver.com or contact us at info@frontsys. Since this site is frequently updated. For the latest information on these seminars. in other parts of the world). use the Macro Recorder to create macros corresponding to your interactive choices. you will find a wealth of current information about the standard Solver and the Premium Solver products at Frontline Systems’ Web site. ISBN 0-471-20937-6.com.com. or look under “Performing What-If Analysis on Worksheet Data” and “Analyzing Multiple-Variable Problems” in the Contents. this book teaches you “best practices” in modeling and spreadsheet 26 • Introduction Solver User Guide . especially for users building large-scale models. Dependents Report. we strongly recommend that you consult one of the books cited below. You can type “solver” in the Index.detailed look at the new Population Report. to info@frontsys. To access Help for the standard Solver included with Microsoft Excel when a Premium Solver product is installed. and Scaling Report in the Premium Solver Platform V5. and the new Solutions Report.solver. cities (and in some cases.

nonlinear optimization. Irwin. regression analysis and simulation). many of them calling the Solver’s VBA functions. integer programming and the Branch & Bound method. at a more technical level than the textbooks described above – including topics in linear algebra. using a four-step process: Picture and paraphrase. product mix. This book is slightly more challenging than Cliff Ragsdale’s book. especially if you are building large-scale optimization models. as well as techniques of linear and nonlinear optimization. option pricing and portfolio optimization. This textbook. 4th Edition by Wayne Winston and Munirpallam Venkataramanan. stock trading. covering a wide range of deterministic and stochastic models. The Premium Solver for Education is included on CD-ROM with this book. Model Building in Mathematical Programming. This book. 2nd Edition with CD-ROM Update by Wayne Winston and S. including linear and integer programming. This “good. ISBN 0-324-18399-2. provides an extensive introduction covering linear and integer programming. It mentions nonlinear models only briefly. but this version is much less powerful than the commercial Premium Solver or Premium Solver Platform. It provides an in-depth treatment of modeling for linear and integer programming problems. and genetic and evolutionary algorithms using Frontline’s Evolutionary Solver. but includes an extensive set of spreadsheet models and a whole chapter on the Evolutionary Solver. published by Duxbury Press. also widely used in new MBA courses on management science. And it includes over 100 Microsoft Excel spreadsheets. The applications include blending. published by Richard D. ISBN 0-534-38012-3.P. the Simplex method. features an in-depth tutorial treatment of optimization modeling. ISBN 0-256-21530-8. production scheduling and similar models. algebraic model and spreadsheet model. 4th Edition by Cliff T. ISBN 0-534-42435X. It includes a basic introduction to VBA and the Excel object model. nonlinear and integer programming problems. this book is still valuable for its explanation of model-building approaches. Spreadsheet Modeling and Decision Analysis: A Practical Introduction to Management Science. goal programming. Practical Management Science. Though it doesn’t cover spreadsheet optimization. Christian Albright. 4th Edition by H. published by Duxbury Press. published by South-Western College Publishing. It covers types of models ranging from simple goalseeking and unconstrained problems to linear. It also includes the Premium Solver for Education on CD-ROM. Ragsdale. This unique book will prove invaluable to anyone seeking to use VBA (Visual Basic Application Edition) to programmatically control Microsoft Excel and build custom applications. verbal model. as well as other management science topics. published by John Wiley.engineering. but it offers a unique treatment Solver User Guide Introduction • 27 . and evolutionary algorithms using Frontline’s Evolutionary Solver (as well as other management science topics such as forecasting. It also includes the Premium Solver for Education on CD-ROM. and data analysis using Excel. ISBN 0-471-99788-9. Managerial Spreadsheet Modeling and Analysis by Richard Hesse.Developing Decision Support Systems Using Microsoft Excel by S. a favorite in new MBA courses on management science and decision analysis. published by Duxbury Press. nonlinear optimization. and 16 example applications developed in depth with VBA source code. Monte Carlo simulation. This textbook also includes the Premium Solver for Education on CD-ROM. This book focuses entirely on optimization. Introduction to Mathematical Programming. plus capital budgeting. VBA for Modelers . Williams. Christian Albright. but hard to find” book teaches you how to formulate a model from a complex business situation. ISBN 0-534-35964-7. and the differential calculus topics underlying nonlinear optimization.

Interval Methods for Accelerated Global Search in the Microsoft Excel Solver. Lasdon and S. Lasdon. Design and Testing of a Generalized Reduced Gradient Code for Nonlinear Programming. A. pp. Nenov and D.S. ORSA Journal on Computing 4:1 (1992). It also includes a complete discussion of 24 models drawn from various industries. You can obtain this article from your local university library. Solving Sparse Nonlinear Programs Using GRG. A recent academic journal article describes the Parser and Interpreter. Lasdon. Waren. 2-15.of large-scale model structure and decomposition methods. ACM Transactions on Mathematical Software 4:1 (1978). Ratner. or request a copy from Frontline Systems: D. Academic References for the Excel Solver An academic journal article written by the authors of the Excel Solver describes its methods and some of the considerations involved in using it. 29-55. pp. A. Waren. Smith. and the new Interval Global Solver included in the Premium Solver Platform V5: I. pp. Jain and M. L. Watson and A. J. 34-50. please consult the following: L. For a technical description of the nonlinear GRG solver included with the standard Microsoft Excel Solver and the Premium Solver. 28 • Introduction Solver User Guide . Fylstra. L. Fylstra. 143–159. Design and Use of the Microsoft Excel Solver.S. Reliable Computing 9 (2003): pp. INFORMS Interfaces 28:5 (Sept-Oct 1998).

typically 15 days. leaving the standard Excel Solver as it was originally. You also must have installed the standard Microsoft Excel Solver. you can install the standard Solver “on demand” when you first choose Solver. the Premium Solver or the Premium Solver Platform may be easily uninstalled. Once this is done. and (iii) select the Solver from the list of components you can install. from the Tools menu. You Solver User Guide Installation • 29 . Excel XP and Excel 2003. command from the Tools menu and display the standard Solver Parameters dialog box. and include all of its features. If you try to solve very large models. Excel 2000. will guide you through the steps involved.Installation What You Need In order to install the Premium Solver or the Premium Solver Platform. A graphical installation program. If you cannot display the Solver Parameters dialog. you must have first installed Microsoft Excel 97. Evaluation licenses and permanent or “full” licenses are available for the Premium Solver. and specific Solver engines.. if you should ever need to do so. An evaluation license for the Premium Solver Platform allows you to run the full. Both the Premium Solver and the Premium Solver Platform are upward compatible with the standard Excel Solver. and require more memory than models without such constraints. from the date of installation. which contains all of the Solver files in compressed form. (i) run the Microsoft Excel or Microsoft Office Setup program. Excel XP or Excel 2003 under Windows 95. (ii) choose Custom Installation. In Excel 2000. this has been done if you can select the Solver.. The Premium Solver and Premium Solver Platform will run on the same hardware and system software configuration that you’ve used to run Microsoft Excel. you may proceed to install the Premium Solver or Premium Solver Platform. Further. 98 or Millenium Edition or Windows NT.. Steps you can take to improve performance are outlined in the chapter “Building Large-Scale Models. Premium Solver Platform. Use of the Parser and Interpreter in the Premium Solver Platform may also require considerable memory. 2000 or XP. Large models with many integer constraints can take substantially more time to solve. however.. performance may depend on the amount of main memory (RAM) in your system.” Installing and Licensing the Software Installing the Premium Solver or the Premium Solver Platform is a straightforward process. unrestricted software for a limited period.

5. In a network environment where Microsoft Excel is run from a central server. (You will be prompted about this when you run the Setup program. the newly installed files will replace the files from the previous version. A concurrent user license can be used by multiple individual users on computers connected to a single local area network. they will not work with the Premium Solver Platform Version 5. You must run the installation program to set up any of the Premium Solver products properly. Again. If the Setup program detects a previous version. it will uninstall this version as it installs the new one. unrestricted software for a limited period. If you have any questions about licensing of the Premium Solver products. typically 15 days.) No matter which version is installed.com. An evaluation license for a field-installable Solver engine is even more flexible: You can install the Solver engine software before you need it.can upgrade to a full license at any time. and you may simply click OK. by simply re-running the Solver engine installation program and entering the license code that you obtain from Frontline Systems. you’ll be asked whether you want to activate an evaluation license for that engine.5. in order to create a license record on that machine.5 If you are upgrading from a previous version of the Premium Solver or Premium Solver Platform to Version 5. In either case. you can upgrade to a full license at any time. but this is not required. as described in “Software License – Single User” at the beginning of this User Guide. Upgrading to Version 5. please call Frontline Systems at (775) 831-0300 or send email to info@frontsys.5.0 are designed to work with the Premium Solver Platform Version 3. When you attempt to solve a problem (by clicking the Solve button) for the first time with that Solver engine. in lieu of the standard Excel Solver). (If you try to use them.5. the installation program must be run on each client PC where the software will be used.5 or 4. You may uninstall the previous version before installing the Premium Solver or Premium Solver Platform Version 5.5. but only by the individual user who purchased the license. A single user license may be used on a computer connected to a network. but only as described in “Software License – Concurrent User” at the beginning of this User Guide. But we recommend that you upgrade Solver engines at the same time that you upgrade the Premium Solver Platform.0 generally will work with the Premium Solver Platform Version 5.”) Field-installable Solver engines Version 5. you’ll receive an error message “Solver Engine is incompatible with Premium Solver Platform. 30 • Installation Solver User Guide . If you accept. customized for your use. The installation program creates a license record. or for these files to be installed on a client PC where they will be used. you’ll be able to use the full. Note: Field-installable Solver engines Version 3. which the Premium Solver products require in order to run. Product Licensing and Network Installation Frontline Systems offers both single user and concurrent user licenses for the Premium Solver products. Simply copying the Solver files from one PC to another will not work. you (or your system administrator) can arrange either for the Premium Solver product files to be installed on the server (if they are to be made available to all users. by simply re-running the installation program and entering the license code that you obtain from Frontline Systems. uninstalling the software restores the standard Solver for use with Microsoft Excel. which allows you to examine the Solver Options dialogs and online Help for that Solver engine at your leisure.

and press ENTER or click OK. insert the Premium Solver or Premium Solver Platform CD or other media into your CD or disk drive. from the Start menu. an installation master program will start automatically. a dialog box like the one shown below should appear: Press ENTER or click OK to proceed. After a brief pause.. Next. In the dialog box.exe for the Premium Solver Platform. and will display a window with a menu from which you can choose installation of the Premium Solver. and click OK. If nothing happens when you insert the CD. choose Run. Enter it carefully into the dialog box.. Solver User Guide Installation • 31 . type a drive letter such as d: if required. followed by PSSetup.Installing the Software To begin the installation. you’ll choose the installation option you want from a dialog box like the one below: Make sure that the “Install” choice is highlighted. Premium Solver Platform. or Solver engines. You will then be prompted for a license code for this installation. or PSPSetup. which Frontline Systems will provide to you. Then press ENTER or click OK.exe for the Premium Solver. On most CD drives.

they are saved under different names so that the Premium Solver Platform can be uninstalled. Next. When you receive your license code from Frontline Systems.Your license code for a full license depends on your Windows registered user name and on the address of your Ethernet adapter. a dialog like the one on the next page appears: 32 • Installation Solver User Guide . Both of these are displayed in this dialog box.DLL) in this directory. Frontline can reply with a matching license code that you can enter here. and present a dialog box where you can select or confirm the directory to which files will be copied (normally the Solver subdirectory for your version of Excel).com. or email Frontline at info@frontsys. If you give the information displayed in this dialog by phone or email. If there is more than one version of Excel installed on your PC. or enter the path to another directory. this dialog will list the directory paths for each of them. and the standard Solver can be restored later if desired. just call Frontline Systems at (775) 831-0300. The installation program looks for the standard Excel Solver files (SOLVER. If these files are found. An easy way to do this is to click the button Email User/Adapter Info to Frontline Systems. If you don’t already have a license code at the time you run the installation program. if you have one. If they are not found. the installation program will search for installed copies of Microsoft Excel.XLA and SOLVER32. you can cut and paste it into this dialog box.

XLA. Be sure to read any special messages in the final dialog box(es) – they may give you important hints about new developments since this User Guide was printed.exe). This code will be different for each Solver engine (and different from the one you used for the Premium Solver Platform). Installing Solver Engines To install additional Solver engines. But then you must either load the Solver manually (using File Open SOLVER. Simply run Microsoft Excel and choose Tools Solver. If you open this dropdown list. When the installation is complete. you’ll follow the same steps outlined above for the Premium Solver Platform. you’ll see a dialog box like the one below. to display the new Solver Parameters dialog. Then press ENTER or click OK.It is possible to install the Premium Solver Platform files to an empty directory and use them from this directory.XLA) before using it. which is easily recognized by the new Solver engine dropdown list. you’ll see the names of both bundled and (for the Premium Solver Platform) field-installed Solver engines. or else set up Excel to auto-load the Solver from this directory (using Tools Add-Ins to select SOLVER...exe or LSGRGSetup. as outlined below for the optional Add-In Functions). but the name of the installation program will be different for each engine (for example. You may receive the license Solver User Guide Installation • 33 . LSLPSetup. you’ll again be prompted for a license code. The Premium Solver or Premium Solver Platform is now installed. After you select the “Install” choice from the menu.

you’ll gain access to Solver engine-specific Help – including information on the status of your license. If you click the Help button in this Solver Options dialog. SUMPRODUCT. Click the Options button to display a Solver Options dialog for your new Solver engine. typically 15 days. to display the Solver Parameters dialog. The Premium Solver Platform includes an enhanced version of this add-in function module that supports DOTPRODUCT. If you accept. Then open the Solver engine dropdown list – the name of your new Solver engine should appear in the list. It is always possible to define a linear or quadratic model using these functions. or purchase a full license for a Solver engine. DOTPRODUCT and QUADPRODUCT. see the instructions under “Uninstalling the Software” later in this chapter. (To remove a Solver engine. The arguments of QUADPRODUCT make it easy for you to specify the variables and the appropriate coefficients. DOTPRODUCT.. and it can be used in array form to define many constraint left hand sides at once. if you are evaluating the Solver engine. As noted earlier. especially in the layout of cells used for the variables. then multiplied by constant coefficients (plus a linear term). or QUADPRODUCT (for quadratic objective functions). The DOTPRODUCT function is a generalized version of Excel’s built-in function SUMPRODUCT. your Solver engine is installed and ready to use.. and a third function QUADTERM. and you can install and remove Solver engines independently of each other and the Premium Solver Platform itself. Each Solver engine has its own license record. You can “mix and match” evaluation and full license Solver engines with the Premium Solver Platform. DOTPRODUCT will accept multiple cell ranges for either of its arguments.” the Premium Solver products can perform problem setup much more quickly if you define your model so that the cells containing the objective function (Set Cell) and the left hand sides of all of the constraints are written using one of the following functions: SUM. Setting Up the Add-In Functions There’s one more step you can take to make building your Solver models much more convenient: The Premium Solver comes with an add-in function module providing two new functions.code in advance when you request an evaluation. Just as a linear function is a sum of variables multiplied by constant coefficients. Simply run Microsoft Excel and choose Tools Solver. 34 • Installation Solver User Guide . or you can call or email Frontline Systems with the information shown in the dialog to obtain your license code. As you will learn in the chapter entitled “Building Large-Scale Models. when you attempt to solve a problem (by clicking the Solve button) for the first time with your new Solver engine. The QUADPRODUCT function allows you to define any quadratic objective in one step. You can upgrade to a full license at any time.) After you press ENTER or click OK in the final installation dialog box. MMULT. but doing so requires some planning. unrestricted software for a limited period. which gives you more flexibility in laying out your model. by simply re-running the Solver engine installation program and entering the license code that you obtain from Frontline Systems. you’ll be able to use the full. QUADPRODUCT. you may be asked whether you want to activate an evaluation license for that engine. a quadratic function is a sum of pairs of variables multiplied together. which you can use to simplify and speed up your linear or quadratic optimization model.

It is not used for fast problem setup. then click OK and go on to the next section. The functions are described in more detail in the chapter “Building Large-Scale Models. To set up these functions. these functions behave just like built-in Microsoft Excel functions: You can use them in formulas on any worksheet.” Congratulations on the successful installation of your Premium Solver product! Uninstalling the Software To uninstall or remove any of the Premium Solver products. choose them from the Insert Function list. simply run the Setup program as outlined above.The QUADTERM function is included only with the Premium Solver Platform.. it is handled specially by the Platform’s new Parser and Interpreter. If you see the line “Frontline’s Mathematical Functions. instead. square matrix. The new functions are now available for use in your worksheet models.XLL. All three functions are implemented by a special form of Dynamic Link Library (DLL) called an XLL. you will use Excel’s Add-In Manager. Once set up. either alone or in conjunction with the Solver. Start Microsoft Excel and choose Add-In. which you can use to navigate to the Solver subdirectory (typically C:\Program Files\Microsoft Office\Office\Library\Solver. If you do not see a line for “Frontline’s Mathematical Functions.” just ensure that the box to its left is checked. you will next return to worksheet Ready mode or to the Add-In Manager dialog box.. When you click OK. from the Tools menu. an alert box like the one below should appear. Depending on the version of Excel you are using. and select the Uninstall choice from the menu in the Solver User Guide Installation • 35 . where you should simply click OK.. A dialog box like the one shown below should appear.” click on the Browse. use \Office10\ for Excel XP or \Office11\ for Excel 2003) and select the file DOTPRD32. A Browse dialog will appear. and so on. button.. it is used to help define quadratic objective functions in large models where the limit of 256 columns in an Excel worksheet makes it impossible to define the objective as one large.

” select the Premium Solver Platform or the specific Solver engine that you want to remove. and click the Add/Remove… button. In the list box below “Currently installed programs” or “The following software can be automatically removed by Windows…. You can also uninstall the Premium Solver Platform or any of the Solver engines by choosing Settings Control Panel from the Start menu (or just Control Panel in Windows XP). 36 • Installation Solver User Guide . You can uninstall Solver engines (with either evaluation or full licenses) without affecting the Premium Solver Platform. Click OK in the confirming dialog box to uninstall the software.second dialog box. and double-clicking the Add/Remove Programs applet.” scroll down if necessary until you reach lines beginning with “Frontline. When you uninstall the Premium Solver Platform itself or the Premium Solver. the standard Microsoft Excel Solver files will be restored.

We’ll call these values parameters of the model.Solver Models and Optimization Introduction This chapter explains the principles behind spreadsheet Solvers.” or variations of the same problem to solve. Such parameter values may be conveniently captured using the Excel Scenario Manager. more advanced sections of this chapter. and field-installable Solver engines. Let’s examine this framework more closely. But the parameter values will be fixed numbers for any given run of the Solver. Solver User Guide Solver Models and Optimization • 37 . formulas that calculate values based on the input values or on other formulas. Premium Solver Platform. If you have been using the Solver for a while. The model you create for use with the Solver is no different from any other spreadsheet model. and the parameter values will change in each problem variation. “Building Solver Models. It consists of input values. Decision Variables and Parameters Some of the input values may be fixed numbers. read the later. including the types of problems you can solve. and other elements such as formatting. the nature of linear. smooth nonlinear and non-smooth functions. which you cannot change in the course of finding a solution – for example.” for a hands-on example. prevailing interest rates or supplier’s prices. Often you will have several “cases. you may find it helpful to read the first section below. This familiar concept can be very useful when you wish to present your results to managers or clients.” and then proceed to the next chapter.” “scenarios. You can practice “what if” with a Solver model just as easily as with any other spreadsheet model. and you’d like a more in-depth review of the mathematical relationships found in Solver models. quadratic. and the optimization methods and algorithms used by the Solver. and the algorithms and methods used by the Premium Solver. values for the variables or Changing Cells in your model – that satisfies the constraints and that maximizes or minimizes the objective or Set Cell value (if there is one). Elements of Solver Models The basic purpose of the Solver is to find a solution – that is. “Elements of Solver Models. If you are just starting out with the Solver. who are usually “spreadsheet literate” even if they are unfamiliar with Solvers or optimization.

In this situation the Solver will simply find a solution that satisfies the constraints.” Although Excel allows you to enter any numeric expression on the right hand side. the logical formula would evaluate to FALSE. in which case the Set Cell edit box will be blank. a relation (<=. for reasons that will be explained in the chapter “Building LargeScale Models. the constraint would be satisfied. or costs. A2 <= 10. In fact. and an expression for the “right hand side. This is a little different from a logical formula such as =A1>=0 evaluating to TRUE or FALSE which you might enter in a cell. A5 <= B5. located close to the starting values of the decision variables. A2 <= B2. entering a specific value for the Solver’s Set Cell is exactly the same as leaving the Set Cell blank and entering an equality constraint for the Set Cell in the Constraint List Box. A4 <= 10..0000001. Because of the numerical methods used to find solutions to Solver models and the finite precision of computer arithmetic. For example. If you have nothing to maximize or minimize. This feature was included for compatibility with the Goal Seek. command on the Tools menu. constraints are specified by giving a cell reference such as A1 or A1:A5 (the “left hand side”).Other input values may be quantities that are variable. A4 <= B4. risk. A3 <= B3. or references to cells that contain constant values on the right hand side. If your problem requires only a single Set Cell value and a single variable or Changing Cell with no constraints. We’ll refer to these as the variables. A5 <=10. Constraints Constraints are relations such as A1 >= 0. This cell is listed in the Set Cell edit box of the Solver Parameters dialog. In the Excel Solver. You may have a Solver model that has nothing to maximize or minimize. or Changing Cells. if A1 were -0.. or under your control in the course of finding a solution. you can just use the Goal Seek. The Objective Function The quantity you want to maximize or minimize is called the objective function or Set Cell. These cells are listed in the By Changing Variable Cells edit box of the Solver Parameters dialog. A3 <= 10. we recommend that you leave the Set Cell blank and enter all of your constraints in the Constraint List Box. = or >=).” we strongly encourage you to use only constants.. Often. decision variables. some of the same cell values you use to play “what if” are the ones for which you’ll want the Solver to find solution values. but with the default Solver Precision setting.) A constraint such as A1:A5 <= 10 is shorthand for A1 <= 10. A constraint such as A1:A5 <= B1:B5 is shorthand for A1 <= B1. or error values (to be minimized). 38 • Solver Models and Optimization Solver User Guide . (A constant value to the Solver is any value that does not depend on any of the decision variables. There is rarely a good reason to use the Set Cell Value of edit box in the Solver Parameters dialog. this could be a calculated value for projected profits (to be maximized). which allows you to seek a specific value for a cell by adjusting the value of one other cell on which it depends. it would be unrealistic to require that constraints like A1 >= 0 be satisfied exactly – such solutions would rarely be found. Typically this will be only one of (infinitely) many such solutions. A constraint is satisfied if the condition it specifies is true within a small tolerance.. In this example. The Excel Solver also permits you to enter a specific value that you want the objective function or Set Cell to achieve. command. The Solver will find optimal values for these variables or cells.

in others. It is normally able to find a globally optimal solution. (The Premium Solver includes the Linear Simplex Solver – a subset of the LP/Quadratic Solver. finding a feasible solution may be the hardest part of the problem. you are using now. This form of constraint. it will stop after a certain amount of time with the best solution it has found so far. if one exists. as long as the quadratic objective function is of the appropriate form (not indefinite – see below). A globally optimal solution is one where there are no other feasible solutions with better objective function values. “Good” and Optimal A solution (set of values for the decision variables) for which all of the constraints in the Solver model are satisfied is called a feasible solution. and Evolutionary Solver.) Later sections of this chapter provide an overview of the optimization methods and algorithms employed by each of these Solver engines. In the Premium Solver Platform. Interval Global Solver. and in still others. are explored in the next section. the optimal solution is always determined by the constraints. and related forms such as A1:A5 = binary and A1:A5 = alldifferent. In some problems. In the best case. such as -1. we summarize the capabilities of the four Solver “engines” bundled with the Premium Solver Platform: the LP/Quadratic Solver. An optimal solution is a feasible solution where the objective function reaches its maximum (or minimum) value – for example. or set of choices. nonlinear GRG Solver. Solver User Guide Solver Models and Optimization • 39 . or a good solution depends on the nature of the mathematical relationships between the variables and the objective function and constraints (and the solution algorithm used). there is no natural “peak” or “valley” for the objective function itself. a locally optimal solution. the nonlinear GRG Solver.) For this class of problems. a feasible solution is already known. and the objective may be linear or quadratic (explained further below). but you can imagine its graph as a straight line. Solutions: Feasible. and the Evolutionary Solver. the Solver normally can find the globally optimal solution. This Solver handles problems where the constraints are all linear. you may decide that it’s most important to find a good solution – one that is better than the solution. 0 or 2. (The term linear function is explained below. But like many users. Linear Simplex and LP/Quadratic Solver The linear Simplex Solver finds optimal solutions to problems where the objective and constraints are all linear functions of the variables. it will find a locally optimal solution. it will find the globally optimal solution – but this is not always possible. A locally optimal solution is one where there are no other feasible solutions “in the vicinity” with better objective function values – you can picture this as a point at the top of a “peak” or at the bottom of a “valley” which may be formed by the objective function and/or the constraints. the most profit or the least cost. where A1:A5 are decision variables. In other cases. Below.Another type of constraint is of the form A1:A5 = integer. to within a small tolerance. the linear Simplex Solver is extended to the LP/Quadratic Solver. Whether the Solver can find a globally optimal solution. The Solver is designed to find feasible and optimal solutions. This specifies that the solution values for A1 through A5 must be integers or whole numbers. Because a linear function (a straight line) can always be increased or decreased without limit.

For this class of problems. where there are no restrictions on the formulas that are used to compute the objective and constraints. if one exists – but this may or may not be the globally optimal solution. to find the best of the locally optimal solutions – ideally the globally optimal solution. The nonlinear GRG Solver can be used on problems with alllinear functions. More About Constraints This section explains in greater depth of the role of certain types of constraints. These methods are more fully described (and contrasted with other methods for global search) below under “Global Optimization” and in the chapter “Solver Options. A nonlinear objective function can have a natural “peak” or “valley. the Solver normally can find a locally optimal solution. the Interval Global Solver or the combination of multistart methods and the GRG Solver are likely to do as well or better than the Evolutionary Solver on such problems.”) For this class of problems. and different forms of integer constraints. It can be used on problems with smooth convex (or concave) functions. or simply a better solution than the one found by the nonlinear GRG Solver alone. the Solver will return the best feasible solution (if any) that it can find in the time allowed. 40 • Solver Models and Optimization Solver User Guide . Evolutionary Solver The Evolutionary Solver usually finds good solutions to problems where the objective and constraints include non-smooth functions of the variables – in other words. equality and inequality constraints.” Interval Global Solver The Interval Global Solver finds globally optimal solutions to problems where the objective and constraints are all smooth functions of the variables.Nonlinear GRG Solver The nonlinear GRG Solver finds optimal solutions to problems where the objective and constraints are all smooth functions of the variables. compared to the GRG Solver. The tradeoff is that the Interval Global Solver usually takes much more time to solve a given problem than the GRG Solver. the Interval Global Solver is normally able to determine for certain that the solution is globally optimal. but there is little point in doing so when the linear Simplex or LP/Quadratic Solver is available. Hence. including bounds on the decision variables. the Interval Global Solver is practically able to solve only smaller problems.” but in most problems the optimal solution is partly or wholly determined by the constraints. you can use multistart methods for global optimization with the nonlinear GRG Solver. In the Premium Solver Platform. Similarly. The Evolutionary Solver can be used on problems with all-smooth functions that may have multiple locally optimal solutions. The idea behind multistart methods is to automatically start the Solver from a variety of starting points. but it is usually less effective and efficient than the nonlinear GRG Solver on such problems. Unlike the Evolutionary Solver or the GRG Solver with multistart methods. and this time rises steeply as the number of variables and constraints in the problem increases. it can be used on problems with all-linear functions. in order to seek a globally optimal solution. however. (The term smooth function is explained below. but it is much less effective and efficient than the LP/Quadratic Solver on such problems. but you can imagine a graph – whether straight or curved – that contains no “breaks.

0 or 2. as discussed below under “Global Optimization” and in the chapter “Solver Options. An equation is much more restrictive than an inequality. These constraints affect only one variable. For example. The most common type of bound on a variable is a lower bound of zero (A1 >= 0). you will be aware of realistic lower and upper bounds on the variables. Many variables represent physical quantities of some sort. the Solver generally must exploit properties of the constraint formula – such as linearity or smoothness. where A1:A5 are decision variables. integer constraints are of the form A1:A5 = integer. but only a tiny chance that two such values will satisfy C1+C2 = 0. which cannot be negative. constraints such as A1 <= 0 are called inequality constraints or simply inequalities.” Equations and Inequalities Constraints such as A1 = 0 are called equality constraints or equations. A problem with only equality constraints (and no objective) is sometimes called a system of equations. but the Interval Global Solver in the Premium Solver Platform can be used to find all real solutions to a system of smooth nonlinear equations – a capability that was once felt to be beyond the limits of any known algorithm. which makes the variable non-negative. Regardless of the Solver engine chosen. and multistart methods for global optimization. discussed below – to solve for one variable in terms of another. bounds on the variables always help speed up the solution process. are called bounds on the variables and are treated specially by the Solver. may have a hard time finding any feasible solutions to problems with equality constraints. such as -1. Binary and Alldifferent Constraints As explained in the last section. There is a 50% chance that two randomly chosen values for C1 and C2 will satisfy C1+C2 <= 0. A common special case that can be entered directly in the Constraint Solver User Guide Solver Models and Optimization • 41 .” which automatically places a lower bound of zero on every variable which has not been given an explicit lower bound via a constraint in the Constraints list box. then A1 <= 0 restricts the possible solutions to a half plane. As a convenience. where C1 and C2 are decision variables. because they limit the range of values that the Solver must explore. whereas A1 = 0 restricts the solutions to a line where all possible values of C1and C2 must sum to 0 (C1 = -C2 within a small tolerance. if A1 contains the formula =C1+C2. solution methods that rely on random choices. Because of this. the Solver Options dialog offers a check box “Assume Non-Negative. In many problems. most Solver engines will find just one solution that is “close” to the starting values of the variables. To satisfy equality constraints. to within a small tolerance. but they won’t be of any help to the Solver unless you include them in the Constraints list box! Bounds on the variables are especially important to the performance of the Evolutionary Solver. The Solver can be used to find solutions to systems of both linear and nonlinear equations. If there are several different solutions (sets of values for the decision variables) that satisfy the equations. the Interval Global Solver.Bounds on the Variables Constraints of the form A1 >= -5 or A1 <= 10 (for example). such as genetic algorithms. where A1 is a decision variable. whereas general constraints have an indirect effect on several variables that have been used in a formula such as A1+A2. This specifies that the solution values for A1 through A5 must be integers or whole numbers. Each of the Solver engines takes advantage of this fact to handle bounds on the variables more efficiently than general constraints. as explained above). Integer.

the job of the Solver is to find some combination of values for the decision variables that maximizes or minimizes this cell’s value. Hence. and only the parts that are dependent on the decision variables “count” during the optimization. During the optimization process. but if C1 doesn’t depend on the variables.List Box is A1 = binary. where A1:A5 is a group of two or more decision variables. such as the Traveling Salesman Problem. it pays to understand the differences between linear.2*D1) is non-smooth if C1 depends on the decision variables.5 or 1. then the IF expression is also a linear function of the variables.D1. A1:A5 will contain a permutation of integers. If you have constant values on the right hand sides of constraints. you will find that parts of those formulas (those which refer to non-decision variable cells) are unchanging in value and could be replaced by a numeric constant for the purposes of the optimization.2. hence A1 can be used to represent a “yes/no” decision. such as 1.3. but the presence of even one such constraint in a Solver model makes the problem an integer programming problem (discussed below). Integer constraints have many important applications. Functions of the Variables Since there are large differences in the time it takes to find a solution and the kinds of solutions – globally optimal. Such a constraint is of the form (for example) A1:A5 = alldifferent. or simply “good” – that you can expect for different types of problems. called the “alldifferent” constraint. A formula such as =IF(C1>10. always bear in mind that only the parts of formulas that are dependent on the decision variables “count. all other “input” cells are held constant. Linear Functions The simplest and most common case is where the objective and/or constraints are linear functions of the variables. and non-smooth functions are least desirable in a Solver model (if you want the fastest and most reliable solutions). When you consider whether your objective and constraints are linear.5. A1 >= 0 and A1 <= 1. The alldifferent constraint can be used to model problems involving ordering of choices. with each variable different from all the others at the solution. let’s clarify what it means to say that the spreadsheet cells you select for the objective and constraints are “functions of the decision variables. which may be much more difficult to solve than a similar problem without the integer constraint.2. then only D1 or 2*D1 – not both – can be selected during the solution process. or non-smooth functions of the variables. we explain that linear functions are most desirable.4. Version 5 of the Premium Solver and Premium Solver Platform support a new type of integer constraint. which is equivalent to specifying A1 = integer. nonlinear. If you analyze the chain of formulas that calculates the objective function value.” Below. smooth nonlinear. then the same observation applies to the left hand sides of constraints: Parts of the constraint formulas (those which refer to non-decision variable cells) are unchanging in value. and it specifies that these variables must be integers in the range 1 to N (N = 5 in this example). and non-smooth functions. This means that the function can be written as a 42 • Solver Models and Optimization Solver User Guide .4. only the decision variable cells are changed. This implies that A1 must be either 0 or 1 at the solution. locally optimal.3. Hence if D1 is a linear function of the variables.” The objective function in a Solver problem is a cell calculating a value that depends on the decision variable cells. To begin.

which cannot be written in the algebraic form shown above – and its partial derivatives are not constant. are simple instances of quadratic functions of the variables. where only C1 and C2 are decision variables. As explained below in the section “Derivatives. Algebraically. The QUADPRODUCT function computes values of exactly this form. 0 in A3 and 3 in B3. 2 in A2. where each term is a (positive or negative) constant (again called a coefficient) multiplied by a single variable or the product of two variables.C1:C2) This is simple and clear. 0 in B1. A common example is =SUM(C1:C5). stand for constant values and the xis stand for the decision variables.” If the decision variable cells that should participate in the expression are not all contiguous on the spreadsheet.e. For example. 4 in B2. + anxn is the first partial derivative of the expression with respect to variable xi. which are called the coefficients. This would still be a linear function.. A nonlinear function (explained further below). and B2 = A1*B1 where A1 is constant in the problem. i. where a1 = B1/B2 and a2 = (D1*2+E1) are the coefficients.e.A1:B1. A more complex example would be: =2*C1^2+3*C2^2+4*C1*C2+5*C1 A quadratic function is a sum of terms. where C1:C5 are decision variables and the ais are all 1. then the problem cannot be solved with an LP Solver.. Note that a linear function does not have to be written in exactly the form shown above on the spreadsheet. and is also useful for fast problem setup as described in the chapter “Building Large-Scale Models. not dependent on any of the decision variables. Note that the SUMPRODUCT and DOTPRODUCT functions compute exactly the algebraic expression shown above. =C1^2 or =C1*C2 where both C1 and C2 are decision variables. then B2 is a linear function (=A1*C1+ A1*C2). For example. Gradients. If the objective function or any of the constraints are nonlinear functions of the variables. and the formula =(D1*2+E1) in cell A2. Jacobians and Hessians. then we could write the above example as: =QUADPRODUCT(C1:C2. If we were to place the formula =B1/B2 in cell A1. where each term consists of one decision variable multiplied by a (positive or negative) constant. as its name implies. If we put the constant 5 in A1. Examples would be = 1/C1. =C1^2 or =C1*C2. we can write: a1x1 + a2x2 + . then we could write the example function above as: =SUMPRODUCT(A1:A2..A2:B3) Solver User Guide Solver Models and Optimization • 43 . =LOG(C1). Quadratic Functions The last two examples above. is any function of the decision variables which is not linear. + anxn where the ais.. and x1 = C1 and x2 = C2 are the variables. if cells C1 and C2 are decision variables. suppose that the function is =B1/B2*C1 + (D1*2+E1)*C2. Remember that the ais need only be constant in the optimization problem. the DOTPRODUCT function can be used instead of SUMPRODUCT.” each coefficient ai in the linear expression a1x1 + a2x2 + . and the other cells contain constants (or formulas that don’t depend on the variables). These partial derivatives are always constant in a linear function – and all higher-order derivatives are zero. i. B1 = C1+C2.sum of terms.

you can try solving the model with the standard Simplex LP Solver. because their graphs are curved but contain no “breaks. Semi-Definite and Indefinite Quadratics A quadratic function has an algebraic property of definiteness. or the variance or standard deviation of security returns in a portfolio optimization application. =LOG(C1). The “best” quadratics are positive definite (in a minimization problem) or negative definite (in a maximization problem). and which occur nonlinearly in your model – another way of summarizing the same information. Definite. Gradients. + anxn Examples. and decide whether (or not) the formula can be written in linear form. If you have the Premium Solver. A semi-definite quadratic has a bowl shape with a “trough” where many points have the same objective value. as explained in the chapter “Analyzing and Solving Models. Jacobians and Hessians.Common uses for quadratic functions are to compute the mean squared error in a curve-fitting application.e... and you aren’t sure whether your objective function and constraints are linear or nonlinear functions of the variables? If you have the Premium Solver Platform. you can easily find out by pressing the Dependents button in the Solver Model dialog. You can then ask the Solver to produce a Linearity Report. As explained below in the section “Derivatives. An indefinite quadratic has a “saddle” shape. with respect to those two variables. which cannot be written in the algebraic form: a1x1 + a2x2 + . the coefficients that multiply the products of two variables are the second partial derivatives of the function. which shows whether the objective and each of the constraints is a linear or nonlinear function of the variables. You should next look closely at the objective or constraint formulas that the Linearity Report indicates are nonlinear. as before.D1. you can easily obtain a report showing exactly which cells contain formulas that are nonlinear. The way that the Solver handles such functions is explained further below under “Quadratic Programming. but it is “worse” (from the Solver’s viewpoint) because it is discontinuous: Its graph 44 • Solver Models and Optimization Solver User Guide . these first and second order derivatives are always constant.” Testing for a Linear or Quadratic Model What if you have already created a complex spreadsheet model without using functions like SUMPRODUCT. This report also shows which variables occur linearly.2*D1) is also a nonlinear function.” Moreover. are =1/C1. The Platform can also distinguish quadratic functions from other nonlinear functions. but its true minimum or maximum is not found in the “interior” of the function but on its boundaries with the constraints.” the coefficients that multiply single variables in a quadratic function are the first partial derivatives of the function with respect to those variables. i. where there may be many locally optimal points. All of these are called continuous functions. In a quadratic function. You can picture the graph of these functions as having a “round bowl” shape with a single bottom (or top). If the problem contains nonlinear functions of the variables. where C1 is a decision variable. Nonlinear and Smooth Functions A nonlinear function is any function of the variables that is not linear. and =C1^2. and higher order derivatives are zero.” =IF(C1>10. you will (in virtually all cases) receive the message “The linearity conditions required by this Solver engine are not satisfied” in the Solver Results dialog. and tell you whether you’ve properly defined a quadratic programming (QP) problem (described below).

If the graph of the function’s derivative also contains no breaks. (Convexity and concavity have more general definitions that don’t depend on derivatives.D1. An example of a continuous function that is non-smooth is =ABS(C1) – its graph is an unbroken “V” shape. the derivative) of the function is undefined. A convex function that is being minimized.2*D1). Jacobians and Hessians.” most Solver algorithms rely on derivatives to seek improved solutions. Gradients. then the original function is non-smooth. you’ll get better results if you try to use the most “Solver-friendly” functions in your model. will have only one locally optimal solution which is also globally optimal. convex functions. but the graph of its derivative contains a break. Every linear function is a smooth. and all of the other examples of nonlinear functions given earlier – =1/C1. Many nonlinear Solver algorithms rely on second order derivatives of at least the objective function to make faster progress. As noted above. convex function. Convex and Concave Functions If a function’s second derivative is always nonnegative. and non-smooth functions cause some difficulty for most nonlinear Solvers. and to test whether the optimal solution has been found. discontinuous functions cause considerable difficulty. By far the most common discontinuous function in Excel is the IF function where the conditional test is dependent on the decision variables.e. =C1^2 and =C1*C2 – are also smooth. as in the example =IF(C1>10. Discontinuous and Non-Smooth Functions Microsoft Excel provides a very rich formula language. The Interval Global Solver does not accept any non-smooth functions. including many functions that are discontinuous or non-smooth. and the nonlinear GRG Solver will find it (absent unusual difficulties such as extremely poor scaling). Here is a short list of common discontinuous Excel functions: Solver User Guide Solver Models and Optimization • 45 . the rate of change (i. jumping from – 1 to +1 at C1=0. Gradients. values of the decision variables) at which the function is evaluated.e. they may have trouble with functions such as =ABS(C1). Jacobians and Hessians. such functions are not accepted by the Interval Global Solver. Every discontinuous function is also non-smooth. and which functions you use. you have a degree of choice in how you model the real-world problem.” general nonlinear functions have first. but this description is sufficient here.contains a “break” at C1=10 where the function value jumps from D1 to 2*D1. as you do with the Premium Solver products. it is called a concave function. =SIN(C1) is an example of a smooth function that is not convex or concave over the full range of values for C1. or a concave function that is being maximized.) The graph of such a function contains no “up/down waves”—convex functions are “bowl-shaped” and concave functions have an “upside-down bowl” shape. As explained below in the section “Derivatives. it is called a convex function.2*D1). Even when you have a “full arsenal” of Solver engines available. The Interval Global Solver does not accept discontinuous functions at all. =LOG(C1). and sometimes higher order derivatives that change depending on the point (i. then the original function is called a smooth function. in other cases.D1. if its second derivative is always nonpositive. At this break. second. so they may have trouble with a Solver model containing functions such as =IF(C1>10. Some models can only be expressed with the aid of these functions. If it does contain breaks. As explained below in the section “Derivatives.

Since a Solver model consists of an objective and constraints. If you have the Premium Solver Platform. the partial derivatives are the coefficients: ∂f/∂x1 = a1. + anxn.. etc.. They give the rate of change of the function in each dimension. HLOOKUP.) derivatives are zero. VLOOKUP COUNT INT. and use the Solver Model dialog to automatically diagnose the model type. and all higher order (third.. where each row is the gradient vector for one function: The gradient of a function f (x1.x2. ROUND CEILING. discontinuous functions have first derivatives that are undefined at some points. ∂f/∂x2 = a2... just create a model using the function. Gradients... OR and NOT are discontinuous at their points of transition from FALSE to TRUE values. Derivatives. third. To recap the comments about derivatives made in the sections above: • • • • Linear functions have constant first derivatives – the coefficients ai – and all higher order derivatives (second. …. it is often useful to collect these gradients into a matrix. this will usually reveal whether the function is discontinuous or non-smooth. Functions such as SUMIF and the database functions are discontinuous if the criterion or conditional argument depends on the decision variables.x2. ∂f/∂xn ] This vector points in the direction (in n-dimensional space) along which the function increases most rapidly..xn) is the vector of its partial derivatives: 46 • Solver Models and Optimization Solver User Guide . not in the Constraints list box) and logical functions such as AND. while second derivatives provide curvature information. MAX Formulas involving relations such as <=. Non-smooth functions have second derivatives that are undefined at some points.xn) with respect to each variable are denoted ∂f/∂x1. Smooth nonlinear functions have first and second derivatives that are defined.. For a linear function a1x1 + a2x2 + . and Hessians To find feasible and optimal solutions. but not constant – they change with the point at which the function is evaluated.xn. = and >= (on the worksheet.. If you aren’t sure about a particular function. CHOOSE LOOKUP. First derivatives indicate the direction in which the function is increasing or decreasing. Quadratic functions have constant first and second derivatives.. all of which are functions of the variables x1. ∂f/∂xn. …. and so on. Jacobians. [ ∂f/∂x1... etc. FLOOR Here is a short list of common non-smooth Excel functions: ABS MIN.x2. ∂f/∂x2. ∂f/∂x2.IF.) are zero. try graphing it (by hand or in Microsoft Excel) over the expected range of the variables. most optimization algorithms rely heavily on derivatives of the problem functions (the objective and constraints) with respect to the decision variables.. The partial derivatives of a function f (x1.

∂2f/∂x2∂x2. ∂2f/∂x1∂x2. this is not your only alternative. …. or undefined) of their problem functions. they need be computed only once – and second derivatives (which are zero) need not be computed at all.. A major difference between the Premium Solver Platform Version 5 and earlier versions of the Platform. and their difficulty – how much computing time is required to solve them.. …. relations and logical functions can be modeled with 0-1 integer variables and associated constraints. …. whereas for general nonlinear functions. ∂2f/∂x1∂xn ∂2f/∂x2∂x1. When reading the next section. ∂f2/∂x2. ∂2f/∂xn∂xn This matrix is called the Hessian matrix. For quadratic functions. ∂f2/∂xn … ∂fm/∂x1. These ideas are explored further in the chapter “Building Large-Scale Models. What if your optimization problem requires the use of non-smooth or discontinuous functions? For common non-smooth functions such as ABS. As described in the chapter “Analyzing and Solving Models. …. the first and second derivatives can be computed only once. though you may need to use multistart methods to improve the chances of finding the optimal solution. the Premium Solver. these derivatives may have to be computed many times. ∂f1/∂x2. changing. You can then use the nonlinear GRG Solver. and the Excel Solver is the method used to compute derivatives. It provides second order (curvature) information for a single problem function. Alternatively. and the Hessian of a general nonlinear function may change depending on the point (values of the decision variables) where it is evaluated. …. …. or even the linear Simplex or LP/Quadratic Solver. you can use the Evolutionary Solver (which does not require any derivative values) to find a “good” solution. “Optimization Problems and Solution Methods. The second partial derivatives of a function f (x1. Large-Scale GRG and Large-Scale SQP Solvers often yield acceptable results. In a linear programming problem. because the first derivatives of linear functions are constant. For example...” the Interpreter in the Premium Solver Platform can supply fast.∂f1/∂x1.” Solver User Guide Solver Models and Optimization • 47 . However.x2. this is the LP coefficient matrix. in combination with the Branch & Bound method.” bear in mind that the different classes of Solver problems. ∂2f/∂x2∂xn … ∂2f/∂xn∂x1. many common uses of IF. the nonlinear GRG. as outlined above.xn) with respect to each pair of variables xi and xj are denoted ∂2f / ∂xi∂xj. the Hessian of a quadratic function has all constant elements. MAX and MIN. and all of its elements (the ais) are constant. ∂fm/∂xn This matrix is called the Jacobian matrix. For example. The Hessian of a linear function would have all zero elements. ∂fm/∂x2. such as the objective. accurate derivatives to Solver engines via a process called automatic differentiation. CHOOSE and LOOKUP functions. and even for some IF functions. to find the true optimal solution to your problem. and it’s likely to take considerably more computing time to find a solution. ∂f1/∂xn ∂f2/∂x1. There are n2 second partial derivatives. and they can be collected into an n x n matrix: ∂2f/∂x1∂x1. ∂2f/∂xn∂x2. But you’ll have to give up guarantees of finding an optimal solution. and how certain you can be of the results – is directly related to the nature of the derivatives (constant.

memory. A QP problem cannot be solved with a linear programming “engine” such as the linear Simplex Solver. Problem Size and Numerical Stability Because of their structural simplicity. and the possibility of numerical “instabilities” which are the cumulative result of the small errors intrinsic to finite precision computer arithmetic. A model in which the objective or any of the constraints are non-smooth functions of the variables is called a non-smooth optimization (NSP) problem. the typical constraint will depend upon only a few of the variables. and the optimal solution will always be found at a “corner point” on the surface where the constraints intersect. A quadratic programming (QP) problem can be thought of as a generalization of a linear programming problem. the main limitations on the size of LP problems that can be solved are time. Since a QP problem is a special case of an NLP problem. A model in which the objective function and all of the constraints (other than integer constraints) are smooth nonlinear functions of the decision variables is called a nonlinear programming (NLP) or nonlinear optimization problem. (ii) has an unbounded objective.e. and all of its constraints must be linear functions of the variables. The Premium Solver Platform includes an LP/Quadratic Solver that uses special methods to efficiently solve QP problems. The larger the model. it is called an integer nonlinear programming problem. (The term “programming” dates from the 1940s and the discipline of “planning and programming” where these solution methods were first used.Optimization Problems and Solution Methods A model in which the objective function and all of the constraints (other than integer constraints) are linear functions of the decision variables is called a linear programming (LP) problem. (In some problems there may be multiple optimal solutions. an LP has at most one feasible region with “flat faces” (i. it is called an integer linear programming problem. it can be solved with the standard nonlinear GRG solver in Excel.) If the problem includes integer constraints. Its objective is a (definite or semi-definite) quadratic function of the decision variables. or (iii) has a globally optimal solution (either a single point or multiple equivalent points along a line). and some variables that are constrained to integer values. Linear Programming Linear programming problems are intrinsically easier to solve than nonlinear problems. it has nothing to do with computer programming. If the problem includes integer constraints. no curves) on its outer surface. all of them lying along a line between corner points. This means that the Jacobian matrix of partial derivatives of the 48 • Solver Models and Optimization Solver User Guide . Most large LP models are sparse in nature: While they may include thousands of decision variables and constraints. but this may take far more time than solving an LP of the same size.) This means that an LP Solver needs to consider many fewer points than an NLP Solver. with the same objective function value. or as a restricted case of a nonlinear problem. and it is always possible to determine (subject to the limitations of finite precision computer arithmetic) that an LP problem (i) has no feasible solution. the more likely it is that numerical instabilities will be encountered in solving it. In contrast. A linear programming problem with some “regular” (continuous) decision variables. is called a mixed-integer programming (MIP) problem. In an NLP there may be more than one feasible region and the optimal solution might be found at any point within any such region.

which fully exploits sparsity in the LP model to save time and memory. The Large-Scale SQP Solver engine for the Premium Solver Platform includes a very powerful linear programming Solver that uses “active set” methods (closely related to the Simplex method). The Simplex Method LP problems are generally solved via the Simplex method. and is practical for problems up to 100. the Large-Scale LP Solver uses techniques such as automatic scaling. The XPRESS Solver engine is Frontline’s fastest and most powerful Solver for linear programming and especially mixed-integer linear programming problems. yield solutions in record time. This same Solver engine also handles large-scale QP and NLP problems very efficiently. The Premium Solver Platform uses an extended LP/Quadratic version of this Simplex Solver to handle LP and QP problems. can also handle semi-definite quadratics. Its ultra-sophisticated primal and dual Simplex and Barrier methods. updating and refactorization methods.000 variables and constraints.problem functions. Quadratic Programming Quadratic programming problems are more complex than LP problems. it will find one of the equivalent (globally) optimal solutions – which one depends on the starting values of the decision variables. steepest-edge pivoting strategies. described earlier. Thanks to highly effective matrix factorization. When applied to an indefinite quadratic objective function. plus other algorithmic improvements such as steepest-edge pricing. The LP/Quadratic Solver in the Premium Solver Platform. and dynamic Markowitz refactorization. it is even faster than the Large-Scale LP Solver engine. but simpler than general NLP problems. but the optimal solution may be found anywhere within the region or on its surface. Such problems have only one feasible region with “flat faces” on its surface (due to their linear constraints). Most quadratic programming algorithms are specialized to handle only positive definite (or negative definite) quadratics. The Large-Scale LP Solver engine for the Premium Solver Platform uses a more sophisticated implementation of the Simplex method. when the Simplex LP Solver is chosen from the Solver engine dropdown list in the Solver Parameters dialog. These same techniques often result in much faster solution times – making it practical to solve LP problems with tens of thousands of variables and constraints. The LP/Quadratic Solver engine in the Premium Solver Platform uses a variant of the Simplex method to determine the feasible region. Such sparsity can be exploited to save memory and gain speed in solving the problem. To cope with potential numerical instabilities. regardless of the model’s sparsity. however. when the Assume Linear Model box is checked in the Solver Options dialog. combined with state-of-the-art Branch and Cut methods for integer problems. matrix factorization using the LU decomposition with the Bartels-Golub update. then uses special methods based on the properties of quadratic functions to find the optimal solution. will have many elements that are zero. The Premium Solver uses an improved implementation of the Simplex method with bounds on the variables. the LP/Quadratic Solver provides only the guarantees of a general Solver User Guide Solver Models and Optimization • 49 . The standard Microsoft Excel Solver uses a straightforward implementation of the Simplex method to solve LP problems. The memory required by this Simplex code increases with the number of variables times the number of constraints.

the memory required increases with both the number of variables times the number of constraints and the number of variables squared. since it includes a highly efficient QP Solver. many common NLP problems have a simpler structure than this general description. This method and specific implementation have been proven in use over many years as one of the most robust and reliable approaches to solving difficult NLP problems. It is also subject to problems of numerical instability. or that an optimal solution is the “global optimum” across all feasible regions. which may be even more severe than for LP and QP problems. to solve much larger NLP problems. and are more amenable to solution. and XPRESS Solver engines can be used to solve large QP problems. which selects a basis. Large-Scale SQP Solver. It is important to note that the standard nonlinear GRG Solver – the only choice for NLPs in the standard Excel Solver and the Premium Solver – applies the same method to all problems. there is no simple or fast way to determine with certainty that the problem is infeasible. and its memory and solution time increases with the number of variables times the number of constraints. since they can exploit sparsity in the model and are better able to cope with numerical instabilities. If you don’t select another Solver engine from the dropdown list box in the Solver Parameters dialog (or. that the objective function is unbounded. 50 • Solver Models and Optimization Solver User Guide . The Premium Solver Platform can automatically determine the type of problem. if you don’t check the Assume Linear Model box in the Solver Options dialog). such as matrix condition testing and degeneracy handling. As with the Simplex method. this Solver will be used – and it may have difficulty with LP or QP problems that could have been solved easily with one of the other Solvers. Because of the possibility of multiple feasible regions and multiple locally optimal points within such regions. The GRG method can be viewed as a nonlinear extension of the Simplex method. Large QP problems are subject to many of the same considerations as large LP problems: When using a straightforward or “dense” representation of the quadratic objective and the constraints. The Large-Scale SQP Solver is especially effective on QP problems. which uses the Generalized Reduced Gradient method as implemented in Lasdon and Waren’s GRG2 code. in the standard Microsoft Excel Solver. However. Numerical instabilities can arise in QP problems and may cause more difficulty than in similar-size LP problems. The Large-Scale GRG Solver engine for the Premium Solver Platform uses sparse storage methods and better numerical methods for nonlinear models. and select only the “good” or “best” Solver engine(s) for that problem. determines a search direction. The Large-Scale GRG Solver. even those that are really LPs or QPs. and performs a line search on each major iteration – solving systems of nonlinear equations at each step to maintain feasibility.nonlinear Solver: It will converge to a locally optimal solution (either a saddle point in the interior. The GRG Method The standard Excel Solver. Premium Solver and Premium Solver Platform include a standard nonlinear GRG Solver. Nonlinear Optimization As outlined above. or a locally optimal solution on the constraint surface). nonlinear programming (NLP) problems are intrinsically more difficult to solve than LP and QP problems. the GRG method in the standard Excel Solver uses a “dense” problem representation. regardless of the model’s sparsity.

and the OptQuest and Evolutionary Solvers. on each major iteration. an SQP method is likely to outperform an interior point method. the Large-Scale GRG Solver. The ability of the Parser and Interpreter in the Premium Solver Platform to efficiently compute this second derivative information is key to the performance of an interior point method. which can be used with the nonlinear GRG Solver. an interior point method can greatly outperform SQP and GRG methods. powerful interval methods for global optimization in a commercial software product. the path taken towards the optimal solution normally lies strictly within the feasible region. limited guarantees can be made about these methods’ ability to find a “local optimum” where the objective function and all of the constraints are smooth functions of the variables. solving problems much larger than either of these methods. and takes a step towards a better point on each major iteration.” The Interior Point Method The KNITRO Solver engine uses an interior point method (also called a barrier method) to solve nonlinear optimization problems. On highly constrained problems. The GRG. But on loosely constrained (especially unconstrained) problems. updating and refactorization methods. if you stop the Solver before it reports an optimal solution. the GRG method is far more likely than the SQP method to return a feasible solution as its “best point so far. For non-convex problems. Because it includes a highly efficient QP solver. up to 100. a new Interval Global Solver that offers. Solver User Guide Solver Models and Optimization • 51 . QP and NLP problems. with a quadratic merit function and linearized constraints. all of these methods will normally find the globally optimal solution. This method forms a logarithmic “barrier function” of the constraints. Because the barrier function increases to infinity as a constraint boundary is approached. However. Hence. specifically the Hessian of the Lagrangian (combination of the constraints and objective) to determine its search direction on each major iteration. SQP and interior point methods are all subject to the intrinsic limitations cited above on their ability to find the globally optimal solution. for the first time. the Large-Scale SQP Solver.000 variables. Global Optimization The Premium Solver Platform includes powerful tools to help you find the globally optimal solution instead of a locally optimal solution for a smooth nonlinear problem. This method forms and solves a QP subproblem. all of them can be used with the multistart methods for global optimization described below. especially those with equality constraints. the SQP method typically follows a path of infeasible trial points until it finds the solution that is both feasible and optimal. However. combines this with the objective. the Large-Scale SQP Solver engine is very fast in solving all types of LP. and sparsity-exploiting matrix factorization. Benchmark studies in the academic literature have demonstrated exceptionally good performance for the KNITRO Solver. These tools include multistart methods. An interior point method relies heavily on second derivative information. And if the objective function is convex (when minimizing) or concave (when maximizing) and the constraints form a convex region. for global solutions of smooth and non-smooth problems. the LGO Global Solver Engine. a powerful linear programming solver using “active set” methods. and the KNITRO Solver. on a wide range of test problems.The SQP Method The Large-Scale SQP Solver engine uses a Sequential Quadratic Programming (SQP) method to solve nonlinear optimization problems.

” The Interval Branch & Bound algorithm processes a list of “boxes” that consist of bounded intervals for each decision variable. an exact penalty function is used in the process of “clustering” the starting points. For many smooth nonlinear problems. as discussed in the chapter “Solver Options. The Interval Branch & Bound Method In contrast to the multistart methods and the Evolutionary Solver’s methods. or that it can contain no objective 52 • Solver Models and Optimization Solver User Guide . the new Interval Global Solver in the Premium Solver Platform uses a deterministic method: An Interval Branch & Bound algorithm that will find the globally optimal solution – given enough time. then select the best of these as the proposed globally optimal solution.) This means that as the number of runs of the nonlinear Solver increases. The multistart method operates by generating candidate starting points for the nonlinear Solver (with randomly selected values between the bounds you specify for the variables). if used as starting points for the Solver. which are nondeterministic methods for global optimization that offer no firm guarantees of finding the globally optimal solution. it seeks lower and upper bounds for the objective and the constraints in a given box that will allow it to discard all or a portion of the box (narrowing the intervals for some of the variables). by proving that the box can contain no feasible solutions. Both clustering and topographic search multistart methods are included in the Premium Solver Platform.The Multistart Method The basic idea of the multistart method is to automatically run a nonlinear Solver from different starting points. since the multistart method is used for each subproblem generated by the Branch & Bound method for integer problems. (To obtain the same solution on each run. The nonlinear Solver is then run repeatedly.” If you have many integer variables. the Evolutionary Solver has been enhanced with “filtered local search” methods that offer many of the benefits of multistart methods – making the Evolutionary Solver even more effective for global optimization problems. the multistart method has a limited guarantee that it will “converge in probability” to a globally optimal solution.5 of the Premium Solver Platform. starting with a single box determined by the bounds that you specify. The multistart method can be used on smooth nonlinear problems that also contain integer variables and/or “alldifferent” constraints. These points are then grouped into “clusters” – through a method called multi-level single linkage – that are likely to lead to the same locally optimal solution. the multistart method. is a nondeterministic method. in Version 5. But this can take a great deal of solution time. The process continues with successively smaller clusters that are increasingly likely to capture each possible locally optimal solution. and it can also impact the Solver’s ability to find feasible integer solutions. try the Evolutionary Solver as an alternative to the multistart method. the probability that the globally optimal solution has been found also increases towards 100%. and subject to some limitations related to roundoff error. or alldifferent constraints. this method will at least yield very good solutions. reaching different locally optimal solutions.”) As discussed below. For most nonlinear problems. A Bayesian test is used to determine whether the process should continue or stop. which by default may yield different solutions on different runs. once from (a representative starting point in) each cluster. As discussed below. like the Evolutionary Solver. On each iteration. (To attain convergence for constrained problems. as described in the chapter “Diagnosing Solver Results. you can set a Random Seed option for either of these solution algorithms. as discussed in the chapter “Diagnosing Solver Results.

Second-order methods rely on the Interpreter’s ability to compute interval Hessians of Excel functions. Non-Smooth Optimization The most difficult type of optimization problem to solve is a non-smooth problem (NSP). and the best of these is chosen as the globally optimal solution. It can also find an “inner solution” for a system of nonlinear inequalities – a region or “box” (bounds on the variables) within which all points satisfy the inequalities. unlike the Interval Global Solver which requires strictly smooth functions. the boxes that remain each enclose a locally optimal solution. derivative or gradient information generally cannot be used to determine the direction in which the function is increasing (or decreasing). or sampling of possible solutions – combined with deterministic (non-random) methods for exploring the search space. In all but the simplest problems. Solver User Guide Solver Models and Optimization • 53 . or else stop after a length of time. The Evolutionary Solver. even on a fast computer. or number of iterations or candidate solutions. Hence. relies more heavily on deterministic search methods. In other words. presently known solutions. continuous Branch & Bound. Such a problem may not only have multiple feasible regions and multiple locally optimal points within each region – because some of the functions are nonsmooth or even discontinuous. Several methods are used to obtain good bounds on the values of the objective and constraints within a box or region. Innovative linear enclosure methods – implemented for the first time in the Interval Global Solver – bound each problem function with a linear approximation that can be used in a Simplex method-based test for feasibility and local optimality. A drawback of these methods is that a solution is “better” only in comparison to other. and the process is repeated. including a GRG-type local Solver. Classic interval methods rely on the ability of the Interpreter in the Premium Solver Platform to evaluate Excel functions over intervals and interval gradients. These capabilities are summarized in the chapter “Solver Reports. whereas the OptQuest Solver Engine. Use of the LGO Global Solver is described in more depth in Frontline’s Solver Engine User Guide. Boxes that cannot be discarded are subdivided into smaller boxes. based on tabu search and scatter search. This also means that these methods must use heuristic rules to decide when to stop. It also handles nearly any continuous function. based on genetic algorithms. The Interval Global Solver also has a unique ability to find all real solutions for a system of nonlinear equations – which can be listed in the new Solutions Report. a multistart method of its own. and use a variant of the Interval Newton method to rapidly minimize function values within a region. the situation at one possible solution gives very little information about where to look for a better solution. relies fairly heavily on controlled random search. and adaptive random search. it is impractical to exhaustively enumerate all of the possible solutions and pick the best one.” Methods Used by the LGO Global Solver The LGO Global Solver Engine for the Premium Solver Platform is a sophisticated tool that incorporates many of the methods described earlier. both the Evolutionary and OptQuest Solvers normally have no way to test whether a solution is optimal. that you specify.function values better than a known best bound on the globally optimal objective. most methods rely on some sort of controlled random search. Eventually. Local constraint propagation methods (also known as hull consistency methods) are used to narrow intervals at each stage of evaluation of the problem functions.

an evolutionary algorithm maintains a population of candidate solutions. where most classical optimization methods maintain a single best solution found so far. in an “evolutionary algorithm. In a constrained optimization problem. There are many possible ways to perform a “mutation. decision variable values) of existing solutions are combined in a crossover operation.) An evolutionary algorithm for optimization is different from “classical” optimization methods in several ways.” The elements (e.g. Fifth – inspired by the role of natural selection in evolution – an evolutionary algorithm performs a selection process in which the “most fit” members of the population survive. Most commercial Solver products are based on evolutionary algorithms. as discussed in the chapter “Solver Options. with some of the features of each “parent. yielding a new candidate solution (which may be better or worse than existing population members). whether it satisfies all of the constraints). Frontline Systems has done just that. This makes it a nondeterministic method. there are many possible ways to perform a “crossover” operation – some much better than others – and the Evolutionary Solver actually employs multiple variations of four different crossover strategies. Hybrid Evolutionary and Other Algorithms You might imagine that better results could be obtained by combining the strategies used by an evolutionary algorithm with the “classical” optimization methods used by the nonlinear GRG and linear Simplex Solvers. you can set a Random Seed option for the Evolutionary Solver. but not always. with equivalent objectives) of these is “best. when an even better optimum may be found outside the vicinity of the current solution. (In a genetic algorithm the problem is encoded in a series of bit strings that are manipulated by the algorithm. it relies in part on random sampling. where a better solution may later be found.Genetic and Evolutionary Algorithms A non-smooth optimization problem can be attacked – though not often solved to optimality – using a genetic or evolutionary algorithm. and the Evolutionary Solver attempts to “repair” such a solution to make it feasible. First. the notion of “fitness” depends partly on whether a solution is feasible (i. As with mutation. successful. which may yield different solutions on different runs. inspired by the crossover of DNA strands that occurs in reproduction of biological organisms.”) Second. Only one (or a few. this is sometimes. The selection process is the step that guides the evolutionary algorithm towards ever-better solutions. (To obtain the same solution on each run. and the “least fit” members are eliminated. Fourth – inspired by the role of sexual reproduction in the evolution of living things – an evolutionary algorithm attempts to combine elements of existing solutions in order to create a new solution. The use of a population of solutions helps the evolutionary algorithm avoid becoming “trapped” at a local optimum. Third – inspired by the role of mutation of an organism’s DNA in natural evolution – an evolutionary algorithm periodically makes random changes or mutations in one or more members of the current population. and partly on its objective function value. In the Premium Solver and Premium Solver Platform Version 5. The result of a mutation may be an infeasible solution. 54 • Solver Models and Optimization Solver User Guide .” the decision variables and problem functions are used directly.e.” but the other members of the population are “sample points” in other regions of the search space.” and the Evolutionary Solver actually employs five different mutation strategies.

5. it is called an integer programming problem. Tabu Search and Scatter Search The OptQuest Solver Engine for the Premium Solver Platform is based on the principles of tabu search and scatter search. the Evolutionary Solver takes maximum advantage of the diagnostic information available from the Parser and Interpreter: It automatically applies genetic algorithm methods to non-smooth variable occurrences (where classical methods cannot be used) and classical methods to smooth and linear variable occurrences.5 of the Premium Solver Platform. or allow them to vary. A1:A10 = binary. the Solver can use “repair methods”. Solving such problems may require far more computing time than the same problem without the integer constraints. a local search is conducted to try to improve that point. In the local search phase. a quasi-Newton method. it can either fix non-smooth variables. avoid becoming “trapped” in regions close to local optima. Scatter search methods can sample the space of possible solutions. and adaptively diversify or intensify the search. based on linearity and smoothness of the problem functions. This step can use a “random local search” method. but it also employs classical methods in two situations: First. when the evolutionary algorithm generates a new best point. when the evolutionary algorithm generates an infeasible point. to find optimal solutions to problems involving general integer or binary integer variables. or A1:A10 = alldifferent). These methods have strong analogies with – and actually predate – genetic algorithm methods. or any equality constraints at all. a gradient-based quasi-Newton method. the hybrid Evolutionary Solver in the Premium Solver and Premium Solver Platform has been able to find good solutions to non-smooth problems with many – even hundreds – of constraints.The Evolutionary Solver operates as described above. Integer Programming When a Solver model includes integer constraints (for example A1:A10 = integer. The “Achilles’ heel” of most evolutionary algorithms is their handling of constraints – they are typically unable to handle more than a few inequalities. a gradient-free. The “distance filter” plays a role similar to “clustering” in the multistart methods described earlier. In Version 5. They work with a population of solutions. Use of the OptQuest Solver is described in more depth in Frontline’s Solver Engine User Guide. Second. deterministic direct search method. then subjected to a selection process. or a “linearized local gradient” method. but they rely less heavily on random choice. In contrast. The Premium Solver and Premium Solver Platform use a much more sophisticated Branch & Bound method that is extended to handle alldifferent constraints. the Evolutionary Solver uses a “distance filter” and a “merit filter” to determine whether to carry out a local search when the genetic algorithm methods find an improved starting point. which are modified and combined in different ways. both filters contribute to the excellent performance of the Evolutionary Solver on global optimization problems. The standard Microsoft Excel Solver uses a basic Branch & Bound method. and that Solver User Guide Solver Models and Optimization • 55 . And it can automatically select the most appropriate local search method. or even a specialized Simplex method (for subsets of the constraints that are linear) to transform the infeasible point into a feasible one. Also in Version 5. Tabu search uses memory of past search steps to avoid repeated steps and improve future searches. in conjunction with the linear Simplex or nonlinear GRG Solver.

Many cuts may be added to a given LP subproblem.45 at the solution. the Large-Scale SQP Solver. also known as lifted cover inequalities. but where the Branch & Bound algorithm can guarantee that a solution is optimal or is within a given percentage of the optimal solution. A cut is an automatically generated linear constraint for the problem. 56 • Solver Models and Optimization Solver User Guide . reduced cost fixing. If one or more integer variables have non-integral solutions.) The Evolutionary Solver can often find good solutions to problems with integer constraints. These subproblems are solved and the process is repeated. Gomory cuts are generated by examining the reduced costs at an LP solution. while knapsack cuts. genetic algorithm methods. The “bounding” part of the Branch & Bound method is designed to eliminate sets of subproblems that do not need to be explored because the resulting solutions cannot be better than the solutions already obtained. The Branch & Bound Method The Branch & Bound method begins by finding the optimal solution to the “relaxation” of the integer problem. Dual Simplex and Preprocessing and Probing methods to greatly speed up the solution of integer linear programming problems. (The constraint repair methods include classical methods. The number of subproblems may grow exponentially. then one subproblem will have the additional constraint A1 <= 3 and the other subproblem will add the constraint A1 >= 4. instead. For example. often referred to as a “Branch & Cut” algorithm. and there are many different methods for generating cuts. Cut generation derives from so-called “cutting plane” methods that were among the earliest methods applied to integer programming problems. the Evolutionary Solver cannot offer such guarantees. “branching” as needed on each of the integer decision variables. cut generation. Cut Generation The LP/Quadratic Solver in the Premium Solver Platform V5. each one a “regular” Solver problem. For example. are generated from constraints involving subsets of the 0-1 integer variables. if integer variable A1 has the value 3. in addition to the constraints that you specify. the decision variables with integer constraints already have integer values. ignoring the integer constraints. until a solution is found where all of the integer variables have integer values (to within a small tolerance). This constraint is constructed so that it “cuts off” some portion of the feasible region of an LP subproblem. but they combine the advantages of these methods with the Branch & Bound method to yield a highly effective approach. the Branch & Bound method chooses one such variable and “branches. Hence.” creating two new subproblems where the value of that variable is more tightly constrained.often greatly speeds up the solution process for problems with integer variables. and integer heuristics from the local search literature.5. then no further work is required. in the same form as the other Solver engines (including the alldifferent constraint). without eliminating any possible integer solutions. Cuts add to the work that the LP solver must perform on each subproblem (and hence they do not always improve solution time). If it happens that in this solution. The Evolutionary Solver handles integer constraints. primal heuristics. The Premium Solver Platform also uses improved pseudocost-based branch and variable selection. it generates many trial points and uses “constraint repair” methods to satisfy the integer constraints. the Branch & Bound method may solve many subproblems. and the XPRESS Solver Engine all make use of “cut generation” methods to improve performance on integer linear programming problems. but it does not make use of the Branch & Bound method.

including several mutation operators that preserve the “alldifferent property. The Evolutionary Solver uses methods from the genetic algorithm literature to handle alldifferent constraints as permutations.5. To solve problems involving alldifferent constraints. Hence. Whenever variables in an “alldifferent group” have non-integral solution values.3. or integral values that are not all different. With the Premium Solver Platform. with each variable different from all the others at the solution.but on many problems. a constraint such as A1:A5 = alldifferent specifies that the variables A1:A5 must be integers in the range 1 to 5.2. or implement their own method for handling alldifferent constraints. The LP/Quadratic Solver and the nonlinear GRG Solver bundled with the Premium Solver products.5 or 1. The Alldifferent Constraint In the Premium Solver and Premium Solver Platform Version 5. and eliminate branches that cannot lead to better solutions than the best one already known. the Premium Solver products employ an extended Branch & Bound method that handles these constraints as a native type. and KNITRO Solver engines use this extended Branch & Bound method to solve problems with integer and alldifferent constraints. such as 1.” creating two new subproblems where the value of that variable is more tightly constrained.3.4.” and several crossover operators that generate a “child” permutation from “parents” that are also permutations. Large-Scale SQP Solver.4. Large-Scale GRG Solver. cut generation enables the overall Branch & Cut algorithm to more quickly discover integer solutions. and Frontline’s Large-Scale LP Solver. you will be able to try a variety of Solver engines to see which one performs best on your model – especially if your model is built with smooth nonlinear or – even better – linear functions aside from the alldifferent constraint. the Branch & Bound method chooses one such variable and “branches. Solver User Guide Solver Models and Optimization • 57 . Other Solver engines use quite different methods to handle the alldifferent constraint. A1:A5 will contain a permutation of the integers from 1 to 5.2. Other field-installable Solver engines may use the Premium Solver Platform’s extended Branch & Bound method.

58 • Solver Models and Optimization Solver User Guide .

As models become larger. 2. the problems of managing data for constraints. maintainable and scalable. we’ll show how you can translate from the algebraic statement of a problem to a spreadsheet model that the Solver can optimize. and enter a formula that calculates the objective function value in this cell. Hence. and so on become more significant. Our step-by-step example is a “quick and dirty” setup that can be used to solve the example problem. constraints. using the Premium Solver products. the last section in this chapter provides hints for designing a model that is understandable. Solver User Guide Building Solver Models • 59 . through tools such as defined names. The next chapter describes how to use the Solver Model dialog. Pick a cell to represent the objective function. but is not well documented or easy to maintain. It then describes in depth the features of the Solver Parameters dialog that you can use to define the essential elements of your Solver model: decision variables. Microsoft Excel has many features that can help you organize and display the structure of your model. and the objective function. coefficients. the Solver Parameters dialog operates as described and pictured in this chapter.Building Solver Models Introduction This chapter takes you step by step through the process of setting up and solving a simple linear programming model in Excel. Setting Up a Model To set up an optimization model as a Microsoft Excel spreadsheet. The pictures of the Solver Parameters dialog in this chapter are from the Premium Solver. formatting and outlining. you will follow these essential steps: 1. Reserve a cell to hold the value of each decision variable. but in all other respects. which is displayed when you click the Model button in the Premium Solver Platform. and a properly organized spreadsheet model can help manage this complexity. From Algebra to Spreadsheets Optimization problems are often described in algebraic terms. the Guess button in this dialog is replaced by the Model button. In this section. In the Premium Solver Platform (Version 5).

so the objective function (the quantity we want to maximize) is: Maximize 75 x1 + 50 x2 + 35 x3 (Profit) Building each product requires a certain number of parts of each type. The number of parts used depends on the mix of products built (the left hand side of each constraint). we also have the constraints x1. the formulas needed for a linear programming problem can always be specified with the SUMPRODUCT function. The decision variables are the number of products of each type to build: x1 for TV sets. or entered directly in the Solver’s Add Constraint dialog box. you may want to use defined names for the vectors and built-in functions such as MMULT to compute the constraint left hand sides. Then the objective might be entered in cell A4 as the formula: =75*A1+50*A2+35*A3 We’d go on to enter a formula in (say) cell B1 for the first constraint left hand side (Chassis). x2. If the model is easily expressed in vector-matrix algebraic notation. For example. x2 for stereos and x3 for speakers. stereos and speakers. TV sets and stereos each require one chassis. Our factory is building three products: TV sets. speaker cones. or with the DOTPRODUCT add-in function included with the Premium Solver products. The Algebraic Form This problem can be described in algebraic form as follows. cell A2 for x2 and cell A3 for x3. and we have a limited number of parts of each type on hand (the corresponding constraint right hand side): Subject to 1 x1 + 1 x2 + 0 x3 <= 400 1 x1 + 0 x2 + 0 x3 <= 200 2 x1 + 2 x2 + 1 x3 <= 800 1 x1 + 1 x2 + 0 x3 <= 400 2 x1 + 1 x2 + 1 x3 <= 600 (Chassis) (Picture tubes) (Speaker cones) (Power supplies) (Electronics) Since the number of products built must be nonnegative. a variation on the “Product Mix” worksheet in the SOLVSAMP. Our goal is to produce the mix of products that will maximize profits. x3 >= 0. For example. There is a fixed profit per unit for each product. and which formulas and built-in functions you use. Each product is assembled from parts in inventory. power supplies and electronics units. given the inventory of parts on hand. The Spreadsheet Formulas The fastest (though not necessarily the best) way to lay out this problem on the spreadsheet is to pick (for example) cell A1 for x1. Within this overall structure. you have a great deal of flexibility in how you lay out and format the cells that represent variables and constraints.XLS workbook included with Microsoft Excel. The constraint right hand sides can be entered as numbers in other cells. 4. such as =1*A1+1*A2+0*A3. or perhaps the equivalent =A1+A2. Similarly. B3 for the formula 60 • Building Solver Models Solver User Guide .3. but speakers don’t use one. Pick other cells and use them to enter the formulas that calculate the left hand sides of the constraints. we’d use cell B2 for the formula =A1 (Picture tubes). picture tubes. A Sample Linear Programming Model Consider the following LP problem. and there are five types of parts: Chassis.

We’ll also enter values for the constraint right hand sides. and (iii) the cells that calculate the constraint left hand sides. command from the Tools menu. in the last section of this chapter.=2*A1+2*A2+A3 (Speaker cones).. the objective (Total Profit) and the corresponding values of the constraint left hand sides (the numbers of parts used) will be calculated. then choose the Solver. click in the Changing Cells edit box and type A1:A3. Next. To enter the non-negativity constraint. (ii) the cell that calculates the value of the objective function. with which we can practice “what if. To select the decision variables or Changing Cells. (In the Premium Solver Platform. A2 and A3. just click on the Guess button. which is both easier to read and appropriate for fast problem setup.” For any values we enter for the decision variables in cells A1. click on the Constraint (right hand side) edit box Solver User Guide Building Solver Models • 61 . The Solver Dialogs To prepare the model for optimization. The Solver Parameters dialog will appear. and non-negativity constraints on the variables. the correct one) suggested as the entry in the Set Cell box. so you can either type A1:A3 or use the mouse to select cells A1 to A3 on the spreadsheet. Note that this simple example is not in the form required for the Premium Solver’s fast problem setup. you’ll see how this model can be formulated using the SUMPRODUCT function. The simplest way to proceed is to select cell A4 (the objective function). we will use the Solver Parameters dialog to point out to the Solver (i) the cells that we’ve reserved for the decision variables.. including the non-negativity constraint on the decision variables. We now have a simple spreadsheet model. The default choice of Max is also correct for this problem.) At this point your spreadsheet and Solver Parameters dialog should look like the one shown below: The next step is to enter the constraints. or use the mouse to select cells A1 to A3 on the spreadsheet. B4 for the formula =A1+A2 (Power supplies). The input focus is on the Cell Reference edit box. This causes cells A1:A3 (the cells on which the formula at A4 depends) to appear in the By Changing Variable Cells box. click on the Add button to bring up the Add Constraints dialog. and B5 for the formula =2*A1+A2+A3 (Electronics). with the current cell (A4.

selecting the Solver engine is easier: There is a dropdown list of Solver engines available in the main Solver Parameters dialog. If you are using one of the Premium Solver products. The click OK to make the Solver Parameters dialog reappear. click on cell B1. so you are now ready to click the Add button to accept this constraint. To accept the non-negativity constraint and continue with entry of another constraint. while slower. Since this is a linear programming problem. it can be solved more efficiently with the Simplex Solver. click the OK button instead of the Add button. and the constraints you have entered should appear in the Constraints list box. click on the Options button to bring up the Solver options dialog. is fully capable of solving linear as well as well as nonlinear problems). Finally. The default relation <= is correct for this constraint. click the Add button. Then click on the Constraint edit box. and click on the engine of your choice. and select >= from the list. the first constraint left hand side. Your Add Constraint dialog box should look like the one below. When you have entered the Cell Reference (B5) and Constraint value (600) for the last constraint. as shown below: Selecting the Solver Engine If you are using the standard Microsoft Excel Solver. The default choice is the standard GRG Solver (which. To use this Solver engine. With the input focus on Cell Reference. 62 • Building Solver Models Solver User Guide . your choices for the Solver engine to optimize this model are the nonlinear GRG Solver (the default choice) or the linear Simplex Solver. To choose the standard Simplex LP or LP/Quadratic Solver. click on the down arrow next to Relation to display a list of relation symbols. click on the down arrow symbol to display the list of Solver engines. and click on the “Assume Linear Model” check box. The Add Constraint dialog box will reappear with the edit fields blank. The Solver Parameters dialog will reappear. and enter 400 there.and enter 0 there. Continue with entry of the remaining four constraints in a similar manner.

**Solving the Problem
**

To find the optimal solution for this LP model, click on the Solve button. After an instant or two, the solution values (A1 = 200, A2 = 200, A3 = 0) should appear in the cells for the decision variables, and the Solver Results dialog should appear, as shown below.

Here you have several choices: You can select one or more reports to be produced from the Reports list box (and check the Outline Reports box, if you’d like the reports outlined); you can save the solution values as a named scenario, for display later with the Excel Scenario Manager; and you can either discard the solution values (restoring the original cell values) or save the solution values in the decision variable cells. The reports are described in more detail in the chapter “Solver Reports” later in this Guide. For now, click on OK to save the optimal solution in the decision variable cells. You’ll then return to worksheet Ready mode, unless you checked the box “Return to Solver Parameters Dialog,” in which case the Solver Parameters dialog would reappear, ready to solve another problem.

**Decision Variables and Constraints
**

You have a great deal of flexibility in how you specify the decision variables and the constraints in the Solver dialogs. In the previous section, we used the simplest forms: The decision variables were all adjacent cells in one column, and the constraint right hand sides were constants. In this section, we’ll cover more general forms of specifying both variables and constraints.

**Variables and Multiple Selections
**

In the standard Excel Solver, the Solver Parameters dialog provides just one Changing Cells edit box to specify all of the decision variables in a model. This edit box accepts only cell selections, which may be typed in as cell coordinates (or as defined names equivalent to cell coordinates), or entered by clicking with the mouse on the desired cells in the spreadsheet. However, you can use this box to enter the most general form of cell selection permitted by Microsoft Excel, called a multiple selection. A multiple selection consists of one of more individual selections, separated by commas (when English is chosen in the Regional Settings – you may be using different settings). Each individual selection may be a single cell, a column or row of cells, or a rectangular set of (contiguous or adjacent) cells. An example of a multiple selection from the “Maximizing Income” sheet in the SOLVSAMP.XLS workbook included with Microsoft Excel is shown on the next page.

Solver User Guide

Building Solver Models • 63

The decision variables in this problem are the amounts to invest in 1-month CDs, 3month CDs and 6-month CDs. We have opportunities to invest in 1-month CDs every month, but 3-month CDs are available only in Month 1 and Month 4, and 6month CDs are available only in Month 1. To enter all of these cells as decision variables, we need a multiple selection: It must consist of at least three individual selections, separated by commas. Note that although all of the cells to be selected “touch” each other, they cannot be selected as one rectangular area. We could select these cells in several different ways: For example, as (B14:G14,B15:B16,E15) or as (B14:B16,C14:G14,E15). If you display the Solver Parameters dialog for this example, you will see that the Changing Cells edit box uses another selection, (B14:G14,B15,E15,B16). All of these selections are equivalent as far as the Solver is concerned. (Note: The parentheses are not needed when entering a multiple selection in the Changing Cells edit box, but they would be needed when entering a multiple selection as an argument in a function such as DOTPRODUCT.) In general, the areas of a multiple selection must be rectangular, but they need not “touch” each other as they did in the example above. You should avoid entering overlapping areas in a multiple selection: For example, Excel will allow you to enter the above selection as (B14:B16,C14:G14,E14:E15), but the duplication of variable cells will slow down the Solver during problem setup and reporting, and may yield results different from the ones you expected. There are several ways to enter a multiple selection in a formula or a dialog box: (i) You can simply type the cell coordinates, entering each rectangular area in the form FromCell : ToCell, separating the areas by commas (or other language-specific separators); (ii) you can select each area by clicking with the mouse, typing a comma between each mouse selection; or (iii) you can make the entire multiple selection with the mouse by pressing the CTRL key as you make the first selection, and holding it down until you have selected all of the rectangular areas. If you enter the individual selections by clicking with the mouse, you will notice that the cell reference is entered in “absolute” coordinates, such as $B$14:$G$14. Further, you will find that regardless of whether you include the dollar signs when you type in the cell coordinates, the cell reference is treated as absolute, and it appears with the dollar signs the next time you display the dialog. “Relative” cell references have significance when you copy a formula from one cell to another, but in the Solver dialogs all cell references are absolute.

64 • Building Solver Models

Solver User Guide

**Using the Range Selector
**

In Excel 97 / 2000 / XP / 2003, there is a convenience feature for selecting cells with the mouse, called the Range Selector. With the Range Selector, you can temporarily “hide” the dialog box where the cell selection will be entered, so that you can more easily see and move about on the worksheet itself. This is most useful for the Set Cell and Changing Cells edit boxes in the Solver Parameters dialog, since that dialog can cover large portions of the viewable worksheet area; but the Range Selector is available in all of the cell selection edit boxes in the standard Solver and the Premium Solver products. You activate the Range Selector by clicking the small rectangular button at the right edge of the cell selection edit box, as shown, for example, in the Solver Parameters dialog just before “Selecting the Solver Engine.” This causes the dialog to be hidden and the Range Selector to appear:

You can now enter a single or multiple selection, by either typing or selecting cells with the mouse, exactly as described above; the only difference is that the dialog box is replaced by the smaller Range Selector. To complete your entry, click the button at the right edge of the Range Selector edit box, or press the ENTER key. The original dialog will then reappear, with the cell selection in the appropriate edit box.

**Using the Variables Button
**

If your decision variable cells are scattered across your worksheet, selecting all of them in a single multiple selection can become difficult and tedious. And since Microsoft Excel imposes two limits on the maximum size of a multiple selection – one limiting the number of individual areas and another limiting the total length of the selection in characters – you may not be able to specify all of the decision variables in one Changing Cells edit box. In most cases you can avoid this problem by organizing your model so that the decision variable cells occupy a small number of contiguous blocks – as outlined in “More Readable Models” later in this chapter. But if this is inconvenient, the Premium Solver products allow you to switch to a more flexible method of specifying decision variables, using the Variables button. In the “Maximizing Income” example shown on the previous page, the standard display of the Solver Parameters dialog box looks like the one below:

If you click on the Variables button, the dialog box changes to show the variable selections in a list box, as shown on the next page. The Variables button is now labeled Constraints, and clicking on it returns you to the original display.

Solver User Guide

Building Solver Models • 65

You can now use the Add, Change and Delete buttons to add, modify or remove variable cells, just as you would for constraints. Each row in the Variable Cells list box can contain a multiple selection; however, we recommend that you use a simple selection for clarity, since there is no limit on the number of rows in the list box. If you click on the Add button for example, a dialog box like the one below appears:

One factor to bear in mind about use of the Variables button is that a Solver model where you have used more than one row in the Variable Cells list box cannot be moved to a computer where the standard Excel Solver is being used, even if the total number of variables is less than the standard Solver’s limit of 200. (The same thing is true for models that depend on other extensions in the Premium Solver products.) But as your Solver models become larger and more complex, you will probably find that the alternate display of the Variable Cells list box will become more useful.

**Constraint Left and Right Hand Sides
**

In specifying the constraints for the sample LP model earlier in this chapter, we entered the constraint left hand sides as single cell references, and the right hand sides as constants in the Add Constraint dialog. But Microsoft Excel permits more general forms for both the left and right hand sides of constraints. The constraint left hand side, entered in the Cell Reference edit box, may be any individual selection, such as a column, row, or rectangular area of cells. Multiple selections are not permitted here. In the example shown earlier, we could have entered all five constraint left hand sides at once, as B1:B5 (as long as we entered the five right hand sides at the same time).

**Overlapping and Conflicting Constraints
**

You should be careful about entering equivalent or overlapping cell references in the left hand sides of different rows of constraints in the Constraints list box. The only situation where this makes sense is when one constraint uses the >= relation to specify a lower bound, and the other uses the <= relation to specify an upper bound. (Of course, the lower bound must be less than the upper bound, or else there will be no feasible solution to the problem.) If you place multiple lower or upper bounds on the same cells, the Premium Solver products will use the “tighter” bounds. For

66 • Building Solver Models

Solver User Guide

so the Solver will use A3 <= 5. When this box is checked.) Constraint Right Hand Sides The constraint right hand side may be any of the following: 1. It is by far the most useful form. (The two selections need not have the same “shape:” For example. 5. all variables that do not have explicit lower bounds in the Solver User Guide Building Solver Models • 67 . “integer”. you can always use formulas in other cells to shift this range of values to another range. If the constraint right hand side is a cell reference. An arbitrary formula such as C1+1 or C2/D2. the Solver transforms a constraint such as “LHS >= RHS” into “LHS . or variable (i. you’ve specified both A3 <= 10 and A3 <= 5. the left hand side could be a column and the right hand side a row. In any case.) You may also use rectangular areas of cells. If the right hand side depends on any of the decision variables. the Solver needs to know whether the contents of those cells. you could have entered the right hand side values 400. 2. All Solver engines work internally with constant bounds on the constraint functions. you should always use the form with the = relation in the constraint. To save you the trouble of entering these constraints explicitly in the Constraints list box. A cell reference such as C1. An (individual) selection such as C1:C5. 800. both the standard Solver in Excel 97 / 2000 / XP / 2003 and the Premium Solver products provide an Assume Non-Negative check box in the Solver Options dialog. 3. “binary” or “alldifferent” Option 5 is for integer constraints only and is discussed below under “Using Integer Constraints. Implicit Non-Negativity Constraints Many Solver problems – and perhaps most LP problems – have “non-negativity” constraints. or the value of the formula is constant in the problem. and the constraint left hand sides correspond element-byelement to the right hand sides.example. A numeric constant such as 1. For example.” If you use option 3 – a selection of more than one cell – the number of cells selected must match the number of cells you selected for the constraint left hand side.RHS >= 0” internally. or lower bounds of zero on the decision variables. In the example shown earlier. If you specify both a <= or >= constraint and a binary integer or alldifferent constraint for the same group of variable cells. when you use this form you are specifying several constraints at once. the Premium Solver products will display an error message when you try to solve the problem. but is considerably less efficient and may cause problems for some of the Solver’s advanced solution strategies. A1:A5 >= 3 and either A1:A5 = binary or A1:A5 = alldifferent will cause the Solver to display an error message. cell selection or formula. dependent on the values of the decision variables). of course. 4. and entered a single constraint such as B1:B5 <= C1:C5. where N is the number of variables. Hence. if you enter constraints such as A1:A5 <= 10 and A3:C3 <= 5. unless the bounds you specify agree with the binary integer or alldifferent constraint. as well as throughout this manual. (The values of variables in an “alldifferent group” must vary from 1 to N. 400 and 600 into cells C1 to C5. 200.e. You can see examples of this form in nearly all of the sample worksheets included with Microsoft Excel. A pair of constraints such as A1:A5 <= 10 and A1:A5 >= 10 has the same effect as A1:A5 = 10.

and each cell must have a value different from all the others. binary or alldifferent constraint by selecting the “int”. “bin” or “dif” choice from the Relation dropdown list in the Add/Change Constraint dialog. such as -1. The most common instance of a bound on a variable is a non-negativity constraint such as A1 >= 0. More Readable Models This section focuses on features of the Solver and Microsoft Excel you can use to build more readable.RHS >= 0” – even if the formula really was a constant bound on a variable. Variable cells that have binary integer constraints must be either 0 or 1 at the optimal solution. If you select = from the dropdown list and type the word “integer. maintainable. but any sort of constant bounds are handled efficiently by all of the Solver engines.” it treats any formula as a RHS potentially dependent on the variables. Because the Solver doesn’t have the facilities to recognize the right hand side “on the fly. overriding the implicit lower bound. 0 or 2. where N is the number of cells specified on the constraint left hand side. Efficiency of Constraint Forms The Solver recognizes the case where the constraint left hand side is a decision variable. Be sure that you select “int”. and clicking on Solve will probably result in the error message “Solver encountered an error value in a target or constraint cell”. Variable cells subject to an alldifferent constraint must have values from 1 to N. Using Integer and Alldifferent Constraints Integer constraints can only be applied to cells that are decision variables. and internally creates a constraint “LHS . these constraints are specially treated as bounds on the variables. the Solver can determine whether it is dependent on the variables. As long as the corresponding right hand sides are constant (i. “bin” or “dif” from the Relation dropdown list. scalable models. On the other hand. and reference that cell as the constraint right hand side: Because the formula has already been analyzed by Microsoft Excel when it was entered in the cell. The Solver displays such constraints in the Constraint list box in the form “A1:A5 = integer. There is no difference in terms of efficiency between a constraint entered (for example) as A1 <= 100 or as A1 <= B1 where B1 contains 100. It is better to place whatever formula you need into a cell. You can enter constraints such as A1 >= 2 or A1 >= -3 for certain variables.e. the Solver will not recognize this as an integer constraint.” “binary” or “alldifferent” on the right hand side. hence the cells selected on the left hand side of the constraint must be a subset (or all) of the cells in the Changing Cells edit box. You specify an integer. The form A1 <= B1 is usually better from the standpoint of maintainability of your Solver model. to within a small tolerance. or the Variable Cell list box. and use the Assume Non-Negative box to give all other variables zero lower bounds. Integer constraints specify that the selected variable cells must have solution values that are integers or whole numbers. the Solver recognizes that B1 is equivalent to a constant. The approach outlined above in 68 • Building Solver Models Solver User Guide . a constraint right hand side that is a formula – even a simple one like 2+2 – will incrementally increase the solution time for the model.Constraint list box are automatically given lower bounds of zero.” “A1:A5 = binary” or “A1:A5 = alldifferent”. or a set of decision variables. not dependent on any of the variables).

column and cell formatting. For a better approach to laying out this model. and use of labels. DOTPRODUCT would be preferred in sparse models. choose Format Cells and the appropriate tab to see how the fonts. Solver User Guide Building Solver Models • 69 . the coefficients of this model) are laid out in cells on the spreadsheet. you can insert new rows between rows 11 and 15. since it permits multiple selections of cells for both of its arguments. To add products. In each instance you could have used DOTPRODUCT instead. ready for optimization. You are encouraged to open this worksheet in Microsoft Excel and examine its formulas.XLS workbook. The SUMPRODUCT function is used in EXAMPLE1 to calculate the value of the objective function and the constraint left hand sides. To enhance readability. patterns and borders have been set. row. shown below. Layout and Formatting EXAMPLE1 shows one way (not the only way!) to set up an LP model in a more readable and maintainable fashion. which is copied to your Solver subdirectory (typically C:\Program Files\Microsoft Office\Office\Library\Solver. this is a good opportunity to see how it works. 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). To add more parts. the constraint left hand side formulas at C11 to C15. or show the model to someone unfamiliar with the problem or uncomfortable with algebraic notation. consider the EXAMPLE1 worksheet in the EXAMPLES. borders and labels have been used to draw attention to the decision variables at D9 to F9. the constraint formulas will “expand” automatically. then copy any one of the existing formulas in column C into the new rows. use \Office10\ for Excel XP or \Office11\ for Excel 2003) during installation. EXAMPLE1 is also much easier to maintain and expand than a model constructed with “hardwired” formulas as outlined in the previous chapter. and the right hand sides at B11 to B15.“From Algebra to Spreadsheets” is the “quick and dirty” way to translate from a model in algebraic form to an equivalent spreadsheet model. you can simply insert new columns in the range of columns D through F.e. The parts required for each product and the unit profit per product built (i. expand the model to include more products or parts. If you are not familiar with Excel’s “Format Cells” tabbed dialog box. Your client or management won’t miss the objective function calculation at B17 to F18. Just select one or more cells in EXAMPLE1.

the decision variables and the constraint left-hand and right-hand sides were referred to by their cell coordinates..” use defined names for both individual cells and groups of cells. Click on the Constraint field (the default <= relation is OK) and use the mouse to select all five cells B11 through B15. and “Products” for cells D9:F9). Power_Supply for B14 and Electronics for B15. menu command in Excel provides a shortcut way to define a group of names at once. Click on OK to add this block of information. “Total_Profit” for cell D18. menu command and entering the name and the range of cells it should refer to. the number of TV sets is at D9.. but appropriate names have been defined for the decision variables. as shown on the next page. Speaker_Cone for B13. Notice how much easier it is to grasp the structure of the model when it is presented this way. Picture_Tube for B12. 4.. Click on Add. the Solver Parameters dialog for EXAMPLE1 will appear. The Solver Parameters dialog box reproduced there defines the same Product Mix problem as shown above. to bring up the Add Constraints dialog. then re-enter it with the following steps: 1.. and the number of products built as a whole is D9:F9. choose Insert Name Create. but they can be entered all at once in the Constraints list box. or the Cell Reference field of the Add Constraint dialog. and then type “Products” into the Changing Cells field. C12 <= B12. from the Tools menu. For example. For example. 3. A defined name is created by selecting the Insert Name Define. constraints and objective (for example.. and click OK to create the names Chassis for B11. If you haven’t previously tried this. and make effective use of cell 70 • Building Solver Models Solver User Guide . you could define the name Products to refer to D9:F9.. see the title page of this manual.If you choose Solver. With the Cell Reference field ready for input. click the Delete button to remove the first line in the Constraints list box... For an example of the use of defined names.. If you take the time to organize and lay out your model in “block form. For example. This dialog illustrates a simple case of the definition of blocks of constraints at one time. There are five constraints of the form C11 <= B11. The Insert Name Create. etc. use the mouse to select all five cells C11 through C15. 2. Using Defined Names On the worksheet and in the Solver Parameters dialog in EXAMPLE1.. in EXAMPLE1 you can select the area A11 to B15. You can make your spreadsheets more readable and more flexible by using defined names instead of such cell coordinates..

you’ll find that it’s easier to maintain your model. clients and management.borders. and to communicate your results to coworkers. colors and other formatting. Solver User Guide Building Solver Models • 71 .

a simple Portfolio Optimization model. You can also set options to determine whether and how the Parser and Interpreter will be used when you do solve your model. you can run the Parser and Interpreter on your model. described briefly in the “Introduction. Using the Solver Model Dialog You use the Solver Model dialog to analyze your model. and previous versions of the Premium Solver Platform. by clicking the Solve button in the Solver Parameters dialog. Pictured on the next page is the Solver Parameters dialog for the EXAMPLE3 worksheet. in comparison to the Microsoft Excel formula recalculator. to analyze models and control the solution process. the Premium Solver. identify “problem formulas” that make your model nonlinear. but not to solve it. and how certain Solver engines take advantage of the Interpreter’s considerably greater capabilities. and set options for use of the Parser and Interpreter when you solve your model.Analyzing and Solving Models Introduction This chapter explains how to use the Solver Model dialog. non-smooth or poorly scaled. The last section describes in greater depth how the Parser and Interpreter work. which is unique to the Premium Solver Platform.” The Parser and Interpreter fundamentally change the way the Solver operates. The first sections of this chapter explain how to use the Solver Model dialog to diagnose your model’s type and sparsity. 72 • Analyzing and Solving Models Solver User Guide . included with the Premium Solver Platform. Notice that the Model button has replaced the Guess button that appears in the standard Excel Solver. and they affect – often dramatically – the performance of both built-in and fieldinstallable Solver engines. The Solver Model dialog is the user interface to features of the new Parser and Interpreter in the Premium Solver Platform. without running any Solver engines. Through this dialog.

Clicking the Solve button will run the currently selected Solver engine to solve the current problem. non-smooth or poorly scaled – as described below under “Analyzing Model Exceptions. using the current settings in the Solver engine’s Options dialog. Solver User Guide Analyzing and Solving Models • 73 .Clicking the Model button will display the Solver Model dialog. Cancel buttons and Help buttons. and report any exceptions to your assumed or intended model type. this is useful primarily to determine whether your model uses any formula syntax or other Excel features that the Parser does not support.” The other option groups in this dialog control settings that are used when you click Solve in the main Solver Parameters dialog. Clicking the Dependents button can be very useful – this runs the Parser. this dialog has two command buttons – Formulas and Dependents. and the current settings for the Parser and Interpreter in the Solver Model dialog. Clicking the Formulas button runs the Parser on your model. The Assume Model option group (where you select your intended model type) and the check boxes Report: Scaling Problems and Dependent Problems are used with the Dependents button to generate reports of “problem formulas” that make your model nonlinear. Besides the standard OK. shown below. The upper left region of the Solver Model dialog displays statistics about the model defined on the current Excel worksheet. then runs the Interpreter to diagnose your model’s type and sparsity.

and Integers edit boxes are filled in with current values. quadratic. As you might expect. Interpreter. then runs the Interpreter to “diagnose” the model type. For example.) The rows labeled All. smooth functions. Functions (including constraints and the objective). determines each dependent (i. the time taken by the Parser. and dependents. even if it is referenced more than once in the function’s cell formulas. =3*A1 + A2^2 + INT(A3). The columns contain counts of the Variables. Smooth and Linear rows of the Solver Model dialog. The Interpreter examines each element of each formula in your model. is counted only once per function. this function would contribute 3 dependents to the total count. Clicking the Formulas button runs the Parser on your model. Assuming no errors.e. QP.Analyzing Model Statistics The edit boxes in the upper left region of the Solver Model dialog display statistics about the model defined on the current Excel worksheet. everywhere that it occurs in formulas of your model. This is a useful measure of the size of your model. and linear dependents in the model. functions. For an explanation of linear functions and smooth functions. and (iii) the number of linear variables. if you have used any formula syntax or Excel features not supported by the Parser. 74 • Analyzing and Solving Models Solver User Guide . how each function depends on each variable) and whether the dependent relationship is linear. and cells A1:A3 are all variables. The Dependent % and Total Cells boxes help measure the total size and sparsity of your model. this step will fill in the Total Cells box with a count of all the cells that participate in the calculation of your objective and constraint functions. variable A1 would be counted as a linear variable. It fills in the counts for the All. All Functions. variable A2 would be counted as a smooth variable (it is actually a quadratic). Smooth and Linear will display – respectively – (i) the total number of variables. a variable is counted as a “smooth variable” if everywhere it occurs. binary. Bounds. smooth nonlinear.” A decision variable is a “linear variable” if. and alldifferent variables in your model. and smooth dependents in the model. A “dependent” is counted each time that a given function is found to depend on a given variable. and Dependents in the model. as further discussed below. an error message dialog will appear. please consult the section “Functions of the Variables” in the chapter “Solver Models and Optimization. (Note that a variable. such as A2 in this example. The Bounds box displays the total number of bounds on variables. Clicking the Dependents button runs the Parser on your model. only the All Variables. cell B2 contains =A2*A3. and the Integers box shows the total number of integer. linear functions. and Solver engines on your model depends on its size. if cell B1 is the objective function. or non-smooth. Using the Formulas and Dependents Buttons When the Solver Model dialog is first opened. if your model had only an objective defined by the formula. since the expression 3*A1 taken alone is a linear function. NLP. For example. (ii) the number of smooth variables. NSP. Similarly. independent of the number of variables. and dependents in the model. or Unknown. it contains =A1+A2-B2. the expression (taken alone) would be a smooth function. The Dependents button also fills in the type of model in the upper left corner of the Solver Model dialog – LP. the expression where it occurs (taken alone) would be a linear function. and variable A3 would appear only in the count of all variables. functions.

If your objective formula had referred to other formula cells. you may be a little surprised to see that the model is diagnosed as NLP rather than QP. This will run the Parser and Interpreter. then click the Model button and click the Dependents button in the Solver Model dialog. but the Interpreter reports that your model is non-smooth (NSP)? The Premium Solver Platform can tell you exactly which cell formulas contributed to a diagnosis of a model type different from what you expected. LargeScale GRG. and create a report worksheet that is inserted in the workbook. As mentioned in the earlier chapters. Reporting Dependent Problems The Assume Model option group and the Report: Dependent Problems check box are used together to help you find formulas that are “exceptions” to the type of model that you intended to create. EXAMPLE3!$I$15 in the report is a hyperlink – you can click on it to jump to the specific cell in question. Analyzing Model Exceptions What if you intended to create a linear programming (LP) model. the Portfolio Optimization model included with the Premium Solver Platform. If you select the Quadratic option in the Assume Model group. And this dependence was first found at cell I15 on worksheet EXAMPLE3. Sparsity was mentioned briefly in the chapters “Introduction” and “Solver Models and Optimization. This report shows that the objective function at cell I15 is an exception to your assumption of a quadratic model – it is a nonlinear function. Simply click the type of model that the Solver should assume you intended – Linear. and click the Dependents button. More specifically. expressed as a percentage. Frontline’s Large-Scale LP. it includes nonlinear dependents on variables B6. a report like the one shown on the next page will be inserted into your workbook – showing you the “problem formulas. We can illustrate this process with EXAMPLE3. analyzed in the Solver Model dialog shown earlier in this chapter. If you select Tools Solver… and then change the Set Cell from I14 (Portfolio Variance) to I15 (Standard Deviation).” but here we can describe it more precisely: A dense model will have a high Dependents % (up to a maximum of 100%) and a sparse model will have a low Dependents % figure. where you would realize that the SQRT function in I15 makes the formula nonlinear.” given your assumption that the model was a QP. The Dependents % box measures the sparsity of your model. C6 and D6 (and possibly others). check Report: Dependent Problems. just to the left of the model worksheet. large optimization models tend to be sparse in nature. but when you click the Dependents button. what if you planned to use the Large-Scale GRG or Large-Scale SQP Solver. Quadratic. KNITRO and XPRESS Solvers are designed to exploit sparsity in a model to save memory and solution time. complex model that you had developed. Large-Scale SQP. and click the Dependents button. a linear programming (LP) model of over 10. Solver User Guide Analyzing and Solving Models • 75 . the report would show you the specific cell where a nonlinear operation or function was first found.000 variables will have a Dependents % figure of as little as 2% or 3%. the Interpreter reports that the model is quadratic (QP) or smooth nonlinear (NLP)? Or. Often. and improve accuracy. Suppose that you encountered this on a large. Nonlinear or Nonsmooth – check the box Report: Dependent Problems. the Dependents button fills in the Dependents % box with the result of the formula [All Dependents] / ([All Variables] * [All Functions]).Finally. which in turn referred to other cells and ultimately to the decision variables.

It can cause Solver engines to return messages such as “Solver could not find a feasible solution” or “Solver could not improve the current solution.To save space. the result will be accurate to only a few significant digits. you should create a new report to identify any further exceptions to your assumed model type – until the model type changes to the type you expected.” with results that are suboptimal or otherwise very different from your expectations. but this is a feasible solution! Since you’re familiar with the Solver options. When you click Solve. a maximum of three exceptions of each type is shown in the report for each problem function. the effect will be magnified. What’s wrong with the Solver? (Past users of the Premium Solver products have on occasions wrestled with problems just like this. After modifying any formulas that were shown as exceptions in the report. So you change the constraint TotalPortfolio = 1 (or 100%) to be TotalPortfolio = 1000000000. you turn on the Use Automatic Scaling box in the LP/Quadratic Solver Options dialog and click Solve again. but when the Solver explores Trial Solutions with very different values for the variables. you are surprised to find that the Solver reports it cannot find a feasible solution – as shown on the next page. unmodified) EXAMPLE3 Portfolio Optimization model. Suppose that in the (original. you decide to make a simple change: Instead of using percentages for the stock allocations. Most Solver engines include an Automatic Scaling option to deal with scaling problems. in your $1 billion institutional portfolio. Reporting Scaling Problems The effects of poor scaling in a large. and nothing to the other stocks – far from an optimal result. The Trial Solution on the worksheet allocates the entire $1 billion to Stock 5.) 76 • Analyzing and Solving Models Solver User Guide . complex optimization model can be among the most difficult problems to identify and resolve. such as a dollar amount in millions or billions and a return or risk measure in fractions of a percent. The effect might not be apparent given the initial values of the variables. For example. but you get the same infeasible result. if one of your formulas adds or subtracts two quantities of very different magnitudes. but this can only help with the Solver’s internal calculations – not with poor scaling that occurs in the middle of your Excel model. you’d rather see the actual dollars to be invested.

As with the Dependents report.To diagnose this problem. The Scaling Report uses a much lower threshold than machine accuracy – it reports potential losses of more than about 6 significant digits – so it also highlights the sum at H6 and the sum of products at I16. you can click on the cell references to jump to the actual cells on the EXAMPLE3 worksheet. and click the Dependents button. Then you click the Model button. check the box Report: Scaling Problems. In seeking the optimal solution. and click OK. The Scaling Report inserted into your workbook is shown below. The report indicates that there are scaling problems with the formulas at H6. At this point. check Return to Solver Parameters Dialog. Solver User Guide Analyzing and Solving Models • 77 . This doesn’t cause problems when the largest value is 100% or 1 and the smallest is zero. calculation of the Portfolio Variance involves adding a very small value and a very large one (the Stock 5 variance times 1 billion squared) which leads to a loss of significant digits. the Solver is likely to try extreme values – large and small – for the variables. you select Keep Solver Solution. but it does cause problems when the largest value is 1 billion. I14 and I16.

and Evolutionary Solver will appear. For example. Model Analysis When Solving The two remaining option groups in the Solver Model dialog determine how the Parser and Interpreter are used when you click the Solve button in the main Solver Parameters dialog. Using the On Solve Options The On Solve options group determines whether the equivalent of pressing the Formulas button or the Dependents button happens (just before running the Solver engine) when you click Solve. Interval Global Solver. based on the most recent use of the Dependents button to diagnose the model. regardless of the model type. Choosing All (the default) specifies that all available Solver engines will appear in the dropdown list. the LP/Quadratic Solver will not appear. The On Solve group controls whether the Parser and Interpreter are run at the time the Solver engine is invoked to solve the model. if the model type is smooth nonlinear or NLP. For example.” “automatic differentiation. Excel recalculator.” and “dependents analysis” in the following paragraphs. so you must click the Dependents button again to redisplay model statistics and make the Engines option effective. but the nonlinear GRG Solver.5. Interpreter. the Evolutionary Solver. while valid for smooth nonlinear models. and you choose Best for an LP or NLP model. whereas the built-in Solver engines are treated as simply “good” – so the Solver engine dropdown list would be empty! Note that your selection in the Engines option group will affect the Solver engine dropdown list only if you have clicked the Dependents button since the last time you used Tools Solver… to display the Solver Parameters dialog. if the model type is smooth nonlinear or NLP. The Analyzer options group controls advanced features of the Interpreter during the Solve step. The Solver assumes that you may have edited formula cells and changed the model type between the time you close the dialog and reopen it later. and the meaning of “finite differencing. Choosing Best specifies that only Solver engines that are considered “best of breed” for this model type will appear. you’ll receive a warning message. since they are valid (but not necessarily good or best) for this model type. only the nonlinear GRG Solver and Interval Global Solver will appear. This is a very demanding criterion: If you have only the Solver engines built-in to the Platform. is really designed for non-smooth models. asking you for another choice. This is because certain field-installable Solver engines are considered “best” for these problems. Choosing Valid specifies that only Solver engines that are able to handle the current model type will appear. Please see the last section of this chapter for background information on the Parser.Selecting the Best Solver Engine The selection in the Engines option group of the Solver Model dialog determines which Solver engines will appear in the Solver engine dropdown list in the main Solver Parameters dialog. all Solver engines are designed to run with any of the On Solve option settings – but some Solver engines operate most efficiently with specific settings. Except for the Interval Global Solver. 78 • Analyzing and Solving Models Solver User Guide . Choosing Good specifies that only Solver engines that were specifically designed for this model type will appear. this was the behavior of the Premium Solver Platform V3.

Further. This is equivalent to the behavior of the Premium Solver Platform V3. When this is done. since the model is expected to be an LP. However. The resources spent on this analysis are often repaid many times over when the Solver engine runs. Most often. an error message dialog will appear when you click the Solve button.5. accurate derivatives will be obtained via automatic differentiation. and dependents analysis would simply show that all variables. For more information. no dependents analysis will be available to the Solver engine. and the Solver engine requests function values and derivatives. fast. since it is designed to take advantage of linear dependents in a model that is nonlinear overall. on the model. and derivatives will be estimated via finite differences. prior to running the selected Solver engine. You’ll need to choose No Action for On Solve if you receive an error message when you click the Formulas or Dependents button. prior to running the selected Solver engine. fast. On Solve = Formulas Choosing Formulas specifies that the Parser will be run on each Solve step. the Dependents button) takes significantly more time and memory than simply parsing and interpreting the model (the Formulas button). to some degree.” As you may notice when using the Formulas and Dependents buttons to diagnose your model. this means that your model uses formula syntax or Excel functions not supported by the Parser and Interpreter. or userdefined functions written in VBA. When this is done. and the Solver engine requests function values and derivatives. As when you press the Formulas button. Dependents analysis (i. if your model includes any formula syntax or Excel features not supported by the Parser. if the Solver engine requests it. On Solve = Automatic Choosing Automatic in the On Solve group – the default – specifies that either the Formulas or the Dependents option will be chosen automatically. dependents analysis information will be available. Solver User Guide Analyzing and Solving Models • 79 . On Solve = Dependents Choosing Dependents specifies that the Parser will be run and the Interpreter will be run to perform a dependents analysis on each Solve step. or if the model type shown in the upper left corner of the Solver Model dialog appears as “Unknown” after you click the Dependents button. at a minimum the Parser will be run whenever you click Solve. but this depends on the Solver engine.On Solve = No Action Choosing No Action in the On Solve group specifies that the Parser and Interpreter will not be used – instead. But the Large-Scale SQP Solver uses both Formulas and Dependents when On Solve = Automatic. see the section “Model Analysis Messages” in the chapter “Diagnosing Solver Results. For example. but they don’t use Dependents. functions and dependents were linear. the LP/Quadratic Solver and the Large-Scale LP Solver both use Formulas when On Solve = Automatic. the Microsoft Excel recalculator will be used to compute all problem functions. accurate derivatives will be obtained via automatic differentiation. and also. they will be computed by the Interpreter. If you choose any option besides No Action for On Solve. these steps can take some time for larger models – and they can also require significant amounts of memory. they will be computed by the Interpreter. based on the type of model and the currently selected Solver engine’s ability to use the information.e.

even if you’ve selected the Formulas option in the On Solve group: 1. if you choose Gradient Local or Automatic Choice as the Local Search option. which means that the Evolutionary Solver cannot distinguish between nonsmooth and smooth or linear variables and constraints. And you can control whether the Solver will stop via two options in the Analyzer group in the Solver Model dialog. which implies Dependents for the Evolutionary Solver).If you choose Dependents for the LP/Quadratic Solver. the engine will still solve the problem. On Solve Options and the Evolutionary Solver The hybrid Evolutionary Solver in the Premium Solver Platform V5 is designed to solve nonsmooth problems. and gradients are computed via finite differencing. but the LP/Quadratic Solver will make little or no use of this analysis. models composed of all nonlinear functions – there would be little payoff from dependents analysis information. Using Analyzer Advanced Options The Analyzer group of check boxes controls advanced features of the Interpreter during the Solve step. If you choose Formulas for the Large-Scale SQP Solver. but it will not be able to take advantage of dependents analysis. When On Solve = Dependents (or On Solve = Automatic. When you check the Sparse box in the Analyzer option group (described below). this may cause the gradient search to be slower or less effective. but you may wish to experiment 80 • Analyzing and Solving Models Solver User Guide . the dependents analysis will be performed. This choice is not recommended for use with the Evolutionary Solver. the On Solve option will determine how the gradients are computed. the Solver will stop only if a simple recalculation yields an error. as long as the Solver does not stop because a gradient is undefined for a nonsmooth function. Specifically. and the Solver engine might take the same or less total time.) When On Solve = Formulas. This Solver engine doesn’t accept any non-smooth functions. But the Evolutionary Solver can also use classical methods. and your overall solution time will probably be greater than if you chose Formulas or Automatic. A dependents analysis is required for the Interpreter to operate in its own “Sparse mode. Except for the Require Smooth box. such as gradient search. but diagnostic information is not produced. where derivatives are required. a dependents analysis is always performed when you click Solve. In this case. these options primarily affect the Interpreter’s speed and memory usage on large models. and diagnostic information is produced and will be used by the Evolutionary Solver to distinguish nonsmooth and smooth or linear variables and constraints. as discussed below. but in some cases – for example. the Solver will attempt to compute derivatives for your problem functions. the Parser and Interpreter are not used. this will mean that the Solver engine will take more time than if you had chosen Dependents. and it uses dependents analysis to check for them. automatic differentiation is used. For most models. The default values (all unchecked) are appropriate for most problems. automatic differentiation is used. where derivatives of some of the problem functions may not be defined at certain points. This choice often yields the best performance. In two situations. When On Solve = No Action.” When the Interval Global Solver is selected in the Solver engine dropdown list. (The gradient values for nonsmooth functions may not be valid at certain points. 2.

and obtain LP and QP coefficients for the Solver engines. the Interpreter will treat these functions as smooth nonlinear unless the Require Smooth box is checked. because they won’t be diagnosed as nonsmooth. Moreover. Require Smooth This option affects whether and how the Interpreter diagnoses model types and computes derivatives for a small set of commonly used Excel functions – currently ABS. The result is very similar to that obtained when derivatives are estimated via finite differencing – the method used in the Excel Solver and Premium Solver. MAX. MAX. as described below. NLP or NSP) of a model.5. As explained in the section “Functions of the Variables” in the chapter “Solver Models and Optimization.” and you want to locate occurrences of ABS. when diagnosing the type (LP.with these options to find the settings that yield the best performance on your models. But the Solver will likely have trouble if the transition between TRUE and FALSE occurs near the optimal solution or the boundary of a constraint. then variables occurring in these functions will be diagnosed as nonsmooth. IF. the Solver will stop with an Interpreter error message. using automatic differentiation. Fast Problem Setup is essentially a simple and fast way to parse and interpret models that use a very restricted set of Excel functions and formulas (such as SUM and SUMPRODUCT) for linear and quadratic models only. If Require Smooth is unchecked when you solve your model. unless you check the Sparse box. If you are using the Solver Model dialog to diagnose your model type and optionally find “problem functions. for IF at the transitions between TRUE and FALSE in its first argument. IF. If Require Smooth is checked. or the third argument on FALSE. MIN or SIGN functions are encountered. which means their derivatives are undefined at certain points: For ABS and SIGN at zero. But it is possible to compute derivatives of these functions at all points other than the transition points. use of the Parser and Interpreter supersedes. leaving Require Smooth unchecked will allow the gradient-based local search (if used) to proceed even if ABS. MAX. The Parser and Interpreter in the Premium Solver Platform can handle almost all Solver User Guide Analyzing and Solving Models • 81 . IF. IF. In most cases. then computing derivatives of the second argument on TRUE. Fast Setup In the Premium Solver Platform V5. MAX. QP. And if other nonsmooth functions – such as CHOOSE and LOOKUP – are used in your model. be sure to check the Require Smooth box before you click the Dependents button. for MAX and MIN at the transitions when one argument becomes larger or smaller than the others. MIN and SIGN. However. MIN or SIGN. and the Interpreter will do this automatically. unless the Req (Require) Smooth box is checked. these “directional derivatives” will enable a nonlinear optimization method to make progress towards a feasible or optimal solution. automatic differentiation will always cause the Solver to stop with an error message. MIN or SIGN in your model. the use of “Fast Problem Setup” as implemented in the Premium Solver and the Premium Solver Platform V3.” these functions are non-smooth. for most models. For the Evolutionary Solver. the option to Fix Nonsmooth Variables in the Evolutionary Solver will not fix variables that occur in these functions. the Interpreter will evaluate derivatives of IF functions (for example) by computing a value – TRUE or FALSE – for the first argument. This in turn means that the first time the Solver engine requests derivatives of a function whose formulas use ABS.

Extra time is required to perform a dependents analysis (which is required to take advantage of sparsity) and to create the sparse data structures. But if the model is very dense. If you have sufficient RAM memory to avoid any swapping to disk. If you check the Fast Setup box. if you have a mix of models. Memory usage grows with model size. old-style Fast Problem Setup will remain available. the memory required may exceed available RAM and cause Windows to beginning swapping to disk – with a severe impact on solution time. like the Large-Scale SQP Solver. old-style “Fast Problem Setup” will be tried first.Excel formulas and functions.” the Interpreter uses sparse data structures. Sparse When the Sparse box is checked. It will take some extra time to examine the model using old-style Fast Problem Setup. When it operates in “Sparse mode. which can be very slow. Sparse mode also enables a Solver Engine to request that nonsmooth variable occurrences should be ignored when computing derivatives via automatic differentiation. This option will have an effect only when you run a linear Solver engine. the Parser and Interpreter will be used instead. you should experiment to see whether the Sparse box yields the best performance. such as the LP/Quadratic Solver or the Large-Scale LP Solver. Sparse mode can save a significant amount of memory – and if this prevents swapping to disk. you may find that the dependents analysis requires more time up-front than it saves during the solution process. Fast Problem Setup still has some uses: Existing models in proper form for Fast Problem Setup may experience faster total solution times if you choose On Solve = No Action. Hence. Sparse mode can actually take more time and memory than Dense mode. and index lists for the occurrences of variables in problem functions. and for some very large models. so the time penalty is usually not very great. sparse linear or quadratic model. sparse model. If you have selected On Solve = No Action. the memory required for the Parser and Interpreter may be greater than available RAM and may cause swapping to disk. If you have a very large. it will also save significant time. if this fails (because the model is not in the required form). you should check the Sparse box only for models where the Dependents % figure in the Solver Model dialog is quite low. the Interpreter operates in “Dense mode. For a large. However. sparse problems. it would be inconvenient to have to switch frequently between On Solve = Automatic and On Solve = No Action. or for large.” This option affects only the Interpreter.” when it is unchecked (the default). In the Premium Solver Platform Version 5. Bear in mind that checking the Sparse box will cause a dependents analysis to be performed before running the Solver engine. and is greatest when the Solver is running (and using significant amounts of memory itself) and requesting derivatives. 82 • Analyzing and Solving Models Solver User Guide . But. but this process stops as soon as the first problem function not in the required form is encountered. like the LP/Quadratic Solver. not the Parser or the Solver Engines – the latter are typically designed either for dense problems. especially when diagnosing a model and computing derivatives via automatic differentiation. it will not affect nonlinear models. some in Fast Problem Setup form and others not in that form.5. including “packed” gradient vectors and Hessian matrices. so there is little reason to restrict models to “Fast Problem Setup form” in the future. the Interpreter operates internally in “Sparse mode. The Parser and Interpreter can use significant amounts of memory (RAM). If your model is large enough. regardless of whether this Fast Setup box is checked.

This Solver operates most effectively when it can obtain second derivatives (Hessians) from the Interpreter using automatic differentiation. on all worksheets.For the KNITRO Solver. Cells on other worksheets in the active workbook. So. the Parser and Interpreter in the Premium Solver Platform fundamentally change the way the Solver operates. that are referenced in formulas making up the Solver model will be treated as constant in the problem. and click Solve again. This box should be checked only if you have a large model that is spread across multiple worksheets. When the Active Only box is unchecked (the default). the Evolutionary Solver can – and will – ask the Interpreter to ignore nonsmooth variables in automatic differentiation. checking this box will save time in the Parser and Interpreter. this fact will be ignored and you will be solving a problem where these cells are effectively held constant at their last known values. The KNITRO Solver makes this request. and Sparse mode is so critical to its performance. the Parser and Interpreter will evaluate cells only on the active (frontmost) worksheet in the active workbook. making their partial derivatives zero. these workbooks will be opened if available. Note that.” you should check the Analyzer Sparse box in the Model dialog. second derivative information can be computed far more efficiently in Sparse mode. If you have a large number of such cells on other worksheets. otherwise the external cell’s “last known value” (as stored in the active workbook) is used and treated as constant in the model. But we recommend that you run most Solver engines with the default settings (On Solve = Automatic). referenced in formulas involved in the Solver model. and Solver User Guide Analyzing and Solving Models • 83 . Sparse mode can also have an important impact. if these cells actually contain formulas that depend on the decision variables. More on the Parser and Interpreter As mentioned in the Introduction to this chapter. Typical models for the Evolutionary Solver – which is limited to 500 decision variables – are not large enough to require this option for memory-saving purposes. You can still force the Interpreter to run in its own Dense mode by setting On Solve = Dependents (or another choice different from Automatic) and leaving the Sparse box unchecked. the Interpreter will run in Sparse mode regardless of the setting of the Sparse check box. For the Evolutionary Solver. But this process can consume large amounts of time and memory when the Interpreter is in Dense mode. The effect of this is to “fix” the nonsmooth variables. But when the Interpreter operates in Sparse mode. the Parser and Interpreter will evaluate all cells. If a large nonlinear model is sparse – as is usually the case – or if it includes many linear occurrences of variables (which contribute nothing to the Hessian of the function in which they occur). if the Evolutionary Solver stops with the message “Solver encountered an error computing derivatives. since the Sparse box is unchecked by default.5. which will yield the best performance in the majority of cases. Sparse mode has a huge impact on performance. a Solver engine can request that. If the model references cells on sheets in other workbooks. In the Premium Solver Platform V5. Active Only When the Active Only box is checked. and you want all cells on worksheets other than the active sheet to be treated as constant in the problem. and especially if they contain formulas that do not depend on the decision variables. or on sheets in other workbooks. and to allow the Solver to proceed with automatic differentiation of any nonsmooth function. if On Solve = Automatic.

As the standard “interpreter” from Microsoft. The recalculator is used to compute up-to-date values for formulas in your model whenever you enter or edit information in spreadsheet cells (when Excel is in “Automatic Calculation mode”) or when you press the F9 (Calc Now) key. 5. So.” The Microsoft Excel Recalculator Microsoft Excel includes an “Interpreter” of its own for Excel formulas. by VBA code or by an add-in such as the Solver. or analyzing formulas for linear or nonlinear dependents. This method is based on the definition of the partial derivative of a function f with respect to a variable xj: ∂f / ∂xj = lim f (x + ej∆) – f (x) ∆→0 ∆ where x represents the vector of decision variables [ x1 x2 … xn ] and ej is a unit vector (with 1 in the jth position and 0 elsewhere). you may need to review “Functions of the Variables” in the chapter “Solver Models and Optimization. Ask Excel to recalculate the model. 2. the Microsoft Excel recalculator can also be invoked programmatically. Premium Solver. Set the cell for the jth variable to the “perturbed” value xj + ∆. Although it is fast and accurate. It does not perform other tasks such as computing function derivatives. To appreciate this section. and how certain Solver engines take advantage of the Interpreter’s considerably greater capabilities. Ask Excel to recalculate the model. While it is invoked automatically when you work interactively with your spreadsheet. divided by ∆. in comparison to the Microsoft Excel formula recalculator. the Microsoft Excel recalculator has a specific and limited purpose: To calculate function values in formula cells. the Solver has traditionally worked by writing new values into cells for decision variables. and previous versions of the Premium Solver Platform have traditionally used the Excel recalculator to compute approximations of partial derivatives. asking Excel to recalculate the model. using the method of finite differencing. the Solver uses the following steps: 1. Compute the difference of f (x + ej∆) and f (x). 4. it computes values for every kind of formula syntax or function that is legal in Microsoft Excel. that is usually referred to as the formula recalculator. Set the cells for the decision variables to x = [ x1 x2 … xn ]. thereby computing f (x). then reading the computed values of cells for the objective and constraints. given new values for other cells. It is controlled by options on the Calculation tab in the Tools Options dialog in Excel. 3. but most Solver engines require both function values and function derivatives. Indeed. While the definition applies only in the limit when ∆ goes to zero. This optional section will give you more insight into how the Parser and Interpreter work.they affect – often dramatically – the performance of both the built-in and fieldinstallable Solver engines. thereby computing f (x + ej∆). Finite Differencing Since the Microsoft Excel recalculator computes only function values. the Excel Solver. an approximation of the partial derivative can be computed by choosing a very small value such as 10-8 for ∆. 84 • Analyzing and Solving Models Solver User Guide .

with constant gradients). but not participating in the optimization problem. this takes as much time as it would to compute gradients of all the functions. the Excel Solver and Premium Solver have used the finite differencing method to successfully solve optimization problems. ∂f1/∂x2. …. Most Solver algorithms require the gradient of the objective and the gradients of all the constraints. and Hessians” in the chapter “Solver Models and Optimization”): ∂f1/∂x1. the Solver obtains values for all of the partial derivatives in one column of the Jacobian matrix each time it asks Excel to recalculate the model at step 4. they require the Jacobian matrix of partial derivatives. by computing a new search direction at each Trial Solution. But the method does have several drawbacks: • • • It is relatively slow. Since the Solver uses derivative values to determine the direction in which to search.” and they may lead to less accurate final solutions. since the subtraction and division typically result in a loss of significance – in the worst case half of the significant digits are lost. For more than a decade. ∂fm/∂x2. often the greatest drawback of using the Excel recalculator is the fact that it always computes values for every formula cell that depends on the perturbed decision variable cells. ∂fm/∂xn This is not quite as expensive in computing time as it looks. and would yield derivative values of very low accuracy. where finite differencing is performed many times. since the model must be recalculated n + 1 times (and when solving a nonlinear problem. While most Solver algorithms can “correct course” as they proceed. Each time it recalculates. Solver User Guide Analyzing and Solving Models • 85 . the loss of accuracy in derivatives can lead to less-than-ideal search directions. as described in the chapter “Solver Models and Optimization”) is not practical – this would require n2 worksheet recalculations (a million for a 1. …. because when the Solver asks Excel to recalculate the model at steps 2 and 4 above. If the Solver algorithm needs the gradient of only one function at each Trial Solution (perhaps because the constraints are all linear. ∂f1/∂xn ∂f2/∂x1. To compute the function gradient – the partial derivatives with respect to all of the variables – steps 3 through 5 above must be performed n times if there are n decision variables. In other words. less accurate derivatives will often mean that more major iterations will be needed to make the “course corrections. Excel will compute values for all formula cells in the spreadsheet that depend on the perturbed decision variable cells – even cells that do not participate in the objective and constraints. Jacobians.These steps compute a partial derivative with respect to one variable. That is. Computing second order partial derivatives (the Hessian matrix. ∂f2/∂xn … ∂fm/∂x1.000-variable problem!) at each Trial Solution. this must be done at each Trial Solution). Excel will calculate values for all of the problem functions at once. Gradients. So the Solver can obtain approximate values for all partial derivatives by performing steps 1 – 2 once. It is relatively inaccurate. and steps 3 – 5 n times (once for each variable). ∂f2/∂x2. Because many Solver models in Excel are really just part of a larger spreadsheet model that has many formulas calculating values of interest for other purposes. …. • • The slowness of finite differencing directly impacts solution time – especially for nonlinear problems. where each matrix row is the gradient of one function (see “Derivatives.

and to make it possible to evaluate the Solver model in other ways – for example. and translates them into a compact intermediate code that can be processed efficiently by the Interpreter. the Parser and Interpreter are usually faster than the Excel recalculator when computing function values. etc. And where Excel always computes values for every formula cell in the spreadsheet that depends on the changed decision variable cells. it uses a very different approach than the finite differencing method outlined earlier. But the Parser and Interpreter’s greatest benefit by far lies in computing function derivatives. using algebraic relationships such as: • • • • Sums: ∂[f(x) + g(x)]/∂x = ∂f(x)/∂x + ∂g(x)/∂x Products: ∂[f(x) * g(x)]/∂x = ∂f(x)/∂x * g(x) + ∂g(x)/∂x * f(x) Exponents: ∂xn/∂x = n * xn-1 Trig functions: ∂sin(x)/∂x = cos(x). The Microsoft Excel recalculator and the Parser and Interpreter are both designed to be very efficient. It scans the intermediate code for one or more problem functions (objective and constraints). on a spreadsheet where there are many cell formulas that aren’t directly involved in the optimization model. The Parser and Interpreter The Parser in the Premium Solver Platform reads cell formulas. the time required is dramatically less than the time required for finite differencing – especially for “reverse mode” automatic differentiation (which is used for all expressions except array formulas).To achieve greater speed. In essence. for both first partial derivatives (the Jacobian matrix) and second partial derivatives (the Hessian matrix). and computes numeric values. The Interpreter implements both “forward mode” and “reverse mode” automatic differentiation (further described in the technical literature). called automatic differentiation in the technical literature. used by the Interpreter to look up current cell values and identify occurrences of decision variables. But where Excel reads and translates every cell formula that you create in a spreadsheet. And because of the way derivatives are computed. Solver engines can sometimes find the optimal solution with fewer Trial Solutions than required when finite differencing is used.” when you click the Dependents button. the Interpreter computes derivatives at the same time that it computes values for functions. 86 • Analyzing and Solving Models Solver User Guide . and control of the computation of derivative values. the Interpreter computes values for only the functions that the Solver engine actually needs. These partial derivatives are computed to the same accuracy as the function values themselves – hence. ∂cos(x)/∂x = -sin(x). to determine linear and nonlinear dependents. in the form that you write them such as =A1*SUM(B1:B5)/EXP(-C1). arithmetic operators. using the current values of the decision variables (set by the Solver engine) and constants. and to evaluate models over intervals instead of single-point values – Frontline Systems developed its own Parser and Interpreter for Excel. and the like in the intermediate code. Automatic Differentiation When the Interpreter computes partial derivatives for your objective and constraints. accuracy. the Parser translates only the cell formulas that are involved in calculating your objective and constraints (as you’ve defined them in the Solver Parameters dialog). Because of this. The Interpreter acts in response to requests from Solver engines for function values and derivatives – or in response to your requests for a “dependents analysis. It also builds a symbol table of names and cell references.

The Interpreter can compute interval values for all of Excel’s arithmetic operators and most built-in smooth functions. multiplication. The way the Interpreter does this is very similar to the way it computes derivatives via automatic differentiation. based on the magnitudes of the values of decision variables. quadratic (QP). but the Interpreter computes function values and first and second partial derivatives over intervals. and similar operations on the magnitudes of function results.” the Interpreter can also evaluate Excel formulas over intervals rather than single numeric values. larger models may experience even greater speed gains (provided that they are run on PCs with sufficient RAM for the Interpreter). total solution times (which include much more than the time spent computing derivatives) for the Premium Solver Platform were on average twice as fast for linear problems and seven times faster for nonlinear problems. subtraction. [1. At present. and find the true global optimum of a constrained problem. 2] + [3. Solver User Guide Analyzing and Solving Models • 87 . Interval analysis makes it possible for the Interval Global Solver to overcome the limitations of classical methods for nonlinear optimization and equation-solving. smooth nonlinear (NLP) or non-smooth (NSP) and providing the statistics on linear and smooth variables. With the Premium Solver Platform. functions and dependents that you see when you click the Dependents button in the Solver Model dialog. far more expensive modeling systems and Solvers. the product of two linear functions is a quadratic function The Interpreter uses a similar approach to diagnose scaling problems in your model: It computes symbolic “values” for every cell formula in your model. using algebraic relationships such as: • • Sums: The sum of two linear functions is a linear function Products: The product of a constant (independent) function and a linear function is a linear function. Model Diagnosis and Dependents Analysis The Interpreter is also responsible for diagnosing your model as linear (LP). this capability is not only possible. far more expensive modeling systems and Solvers. Addition.Thanks primarily to automatic differentiation. 2] represents all of the possible numeric values between 1 and 2. and other arithmetic operations and functions can be defined over intervals – for example. the interval values are not displayed in spreadsheet cells. And it provides model type. but is readily available and very easy to use. The Interpreter computes symbolic “values” for the dependence of functions on decision variables for every cell formula in your model. sparsity and “dependents analysis” information to Solver engines during the solution process. The ability to evaluate Solver models over intervals is a fundamental new capability in the Premium Solver Platform that is not yet available in other. or find all real solutions of a system of nonlinear equations – a capability described under the heading “What is Not Possible” in one classic optimization textbook. when you select the On Solve = Dependents option. for use by the new Interval Global Solver in the Premium Solver Platform. This is another capability that is not available in other. Since the speed advantage of automatic differentiation grows with the number of variables in the problem. 4] = [4. Interval Arithmetic and Interval Differentiation As described in the chapter “Introduction. and algebraic relationships that capture the effect of addition. on a sample of small and medium-size actual user models. An interval such as [1. 6] in interval arithmetic.

Functions that are recognized but not supported include: CALL CELL GETPIVOTDATA INDIRECT INFO HYPERLINK OFFSET REGISTER. XP and 2003 (file msowcf. one reason for confidence is that Frontline Systems actually developed. The Parser and Interpreter support almost all of these functions. and at this point the Microsoft Excel recalculator is used to compute values for the objective and constraints – even when the Parser and Interpreter have been used internally during the solution process.Excel Built-in Functions Microsoft Excel has over 320 built-in functions. how confident can you be that the values computed this way will match the values that would have been computed by Excel? While discrepancies are always possible. When a Solver engine displays a final solution with the Solver Results dialog box. not the full spreadsheet “grid. or an intermediate solution with the Show Trial Solution dialog box. including the financial. Because of this.” Since the Parser and Interpreter compute values for your problem functions without using the Microsoft Excel recalculator. Frontline’s implementation of these functions was tested against the same functions in Microsoft Excel. implementations of most of the Excel built-in functions for use in the Internet Explorer “spreadsheet component” that is included with Microsoft Office 2000. in an extensive quality assurance process during the development of Office 2000.dll in the Microsoft Office program directory). under contract to Microsoft. statistical.” and the Parser and Interpreter are designed to process only the formula cells that participate in calculation of your objective and constraints. Frontline Systems was uniquely qualified to develop a full-scale Interpreter for Microsoft Excel and its extensive library of built-in functions. the current values of the decision variables are placed in cells on the spreadsheet.ID SQLREQUEST The most commonly used of these functions – OFFSET and perhaps INDIRECT – are not supported because they can reference arbitrary cell “addresses. So you can be 100% confident that the values you see won’t change when you save and later reopen your workbook! 88 • Analyzing and Solving Models Solver User Guide . and engineering functions that are part of the Excel Analysis ToolPak.

Solver User Guide Analyzing and Solving Models • 89 .

management is naturally interested in applying these methods to bigger problems. QP.Building Large-Scale Models Introduction It’s a maxim that a successful Solver model will grow in size over time. NLP or NSP). including: • • Steps towards better performance that are easy to apply in most situations Steps you can take – with more design and modeling effort – to improve the formulation of your model. or personnel. It focuses on steps you can take to obtain faster and more reliable solutions for large models using the Premium Solver and Premium Solver Platform. and scaling also become far more important. so your model remains comprehensible to other Excel users. by replacing non-smooth or nonlinear constraints with linear (or integer linear) constraints Steps you can take to enable the Premium Solver (and in some cases. you’ll be well advised to learn about good spreadsheet modeling practices. or to cover more time periods. auditable for errors. When your model grows in size. sparsity. When the initial results from an optimization model demonstrate ways to achieve significant cost savings. and cells in your model. This might involve extending the model to include more plants. higher quality or increased profits. and also more challenging to solve. warehouses. to bring in other divisions or geographic regions. assembly lines. and the reliability of the solutions you will obtain. it becomes more challenging to design and maintain. constraints. or more specific parts or products. The result is an increase in the number of decision variables. the Premium Solver Platform) to analyze your model more efficiently • Designing Large Solver Models A large Solver model in Microsoft Excel is both a large spreadsheet workbook and a large optimization model. and easy to modify. And issues such as your model type (LP. improved schedules. 90 • Building Large-Scale Models Solver User Guide . If you plan to build such a model. since they strongly influence the time it will take to solve your model. and about good optimization modeling techniques. Good modeling practices – touched upon in the chapter “Building Solver Models” – become far more important. This chapter can only briefly survey good modeling practices – entire books have been devoted to this subject (we will recommend some). more detailed process steps.

and other topics most relevant to you. Separate Data and Formulas. 1999).” Focusing on modeling for linear and integer programming problems. Paul William’s Model Building in Mathematical Programming. As John Nevison suggested. Write down your objectives and sketch out a design before you begin working on the real spreadsheet.com Marketplace. 4th Edition (John Wiley. place constants in cells. Create separate table areas. Plunging in and entering numbers and formulas immediately will quickly lead to problems when constructing a large spreadsheet. listed at the end of the chapter “Introduction. include comments that point readers to the major areas or sections of the spreadsheet. Powell and Kenneth R. and then build the real spreadsheet model. 1990). both of which are still useful in designing modern spreadsheets. Use and Separate Two-Dimensional Tables.We highly recommend the new textbook The Art of Modeling with Spreadsheets: Management Science. Create a Table of Contents. Baker. or his earlier works 1-2-3 Spreadsheet Design (1989) or The Elements of Spreadsheet Style (1987). listed at the end of the chapter “Introduction. as well as techniques of linear and nonlinear optimization using Excel. They are offered in many venues. and Modeling Craft by Stephen G. but through resources like the Amazon. in-house corporate training. this book teaches you “best practices” in modeling and spreadsheet engineering. This will help make your formulas clearer and more flexible. Solver User Guide Building Large-Scale Models • 91 . Avoid using constants in formulas. it includes a treatment of large-scale model structure and decomposition methods that is hard to find elsewhere. and refer to those cells in formulas. Check the course outline or syllabus to see if it features spreadsheet design and good modeling practices. Many elements of your model will lend themselves to a row-column table representation.” Unlike other management science textbooks. Use Excel’s Insert Name Define and Insert Name Create commands to assign meaningful names to individual cells and cell ranges. and classes sponsored by computer dealers. Plan in advance to build a prototype. Spreadsheet Modeling Hints Below is a brief set of suggestions for planning. you may be able to locate a copy of John Nevison’s book Microsoft Excel Spreadsheet Design (Prentice-Hall. borders or shading. What you learn from building and solving the prototype will probably save you time in the long run. Training courses in Microsoft Excel often cover at least some elements of good spreadsheet design. Build a Prototype. A readily available book on optimization modeling techniques is H. throw it away. unless they are intrinsic to the mathematical definition of the function you are using. and identify these with distinct colors. Other books on good spreadsheet design are hard to find. from universities and community colleges to public seminars. Spreadsheet Engineering. Use labels or cell comments to document key formulas and complex calculations. Parameters and Methods. Document Assumptions. Instead. Create separate areas on the spreadsheet for input data and for calculations. In the upper left corner of your first worksheet. seek to “surface and label every assumption” in your model. designing and constructing large Solver models: Start with a Plan. Use defined names. published by John Wiley & Sons.

this Excel add-in is available at http://www. the Premium Solver and Premium Solver Platform require that all cells serving as (i) decision variables. This may involve getting help from your IT department or from other groups that create or maintain the data. Collect non-table data (such as individual parameters) into a separate area. …) and similar factors.with distinct colors. time periods (January. The best third-party auditing tool we’ve seen so far. and (iii) the Set Cell or objective must be located on the same worksheet where you open and use the Solver Parameters dialog. But the formulas in your objective and constraint cells 92 • Building Large-Scale Models Solver User Guide . and many where you might otherwise use IF.uq. constraints. Learn to use the Auditing Toolbar (Tools Auditing…) to trace precedents and dependents of your formulas. and how you’ll have to summarize or transform it for the purposes of the model. Use the View tab in the Tools Options dialog to display formulas instead of values.) Given the large number of data elements. At each node of a network model (such as a warehouse). it’s usually easier to determine the constraints and their indexing. CHOOSE or other non-smooth or discontinuous functions. in a multi-period inventory model. B. South. the beginning item quantity plus incoming deliveries minus outgoing shipments must equal the ending item quantity (“what goes in must come out”). units made by product A. …). Define Balance Constraints. Once you’ve identified the quantities that will be decision variables. how you will get it (and keep it up to date).…). and many intermediate calculations will fall into groups that are indexed by elements such as products (A. Identify and write down these index sets and their members.… or shipments by region North. the sources from which you are getting the data. Many relationships that you might find difficult to model at all. you will frequently spend a good part of your time figuring out what data you need. Use the top row and left column of each table area for index set member names as labels.au/detective/home. can be effectively modeled with binary integer variables. regions (North. Use Excel Tools to View and Audit Your Spreadsheet. and scan them for consistency. It is easy to overlook “balance” or “continuity” constraints that arise from the physical or logical structure of your model. Identify Your Decision Variables. Determine the Data You’ll Need. Currently. B. multiple worksheets are often necessary or at least useful for organizing your data. Use the View Zoom command to get a high-level view of your spreadsheet’s structure. Optimization Modeling Hints Identify Your Model’s Index Sets. and how they are indexed (for example. South …). Your decision variables.html. Learn to Use Binary Integer Variables. the ending inventory at time t must equal the beginning inventory at time t+1. Use the Spreadsheet Detective. (ii) left hand sides of constraints. In building large optimization models. and the procedures you use to keep the data up to date.net. (Some large models reference data found in other workbooks. February. Using Multiple Worksheets and Data Sources Large Solver models and their data are often organized into multiple worksheets of a single workbook. Then organize the columns and rows of your table areas using these index sets. The section below “Improving the Formulation of Your Model” describes many situations where you can use such variables to organize your model. borders and shading. For example.

or the XPRESS Solver Engine. the KNITRO Solver. to bring such data into an Excel worksheet. especially. on decision variable cells. do not depend on the variables). Solver User Guide Building Large-Scale Models • 93 . we highly recommend that you try solving your model with our field-installable Solver Engines – especially the LargeScale SQP Solver. The raw data. Ensure that You Have Enough Memory If the Solver seems unusually slow. with distinct colors. Given the requirements of the Premium Solver and Premium Solver Platform. which greatly slows down the Solver. For users of the Premium Solver. hours of your time to develop an optimization model. The Solver can determine which formulas depend on the variables. If you’re investing money and. This is more than just a “sales pitch” – every step you take costs something. consider that RAM is very cheap. For users of the Premium Solver Platform. it’s desirable – though not essential – to go beyond the basic requirements and try to keep all of the formulas (i) that are used to compute your objective and constraints and (ii) that depend on the decision variables on a single worksheet. request a free 15-day evaluation license. and those cells on other worksheets can contain formulas that depend. And you can find out at no cost whether the upgrade will be worthwhile – just download the Premium Solver Platform Setup program. Some of the data you need may be available in relational databases. but you or your colleagues may find it difficult to do so if the formulas are intermixed. directly or indirectly. often needs to be further transformed and summarized on your worksheet(s). such as external data ranges and PivotTables. While the difference in cost may be greater. OLAP databases or data warehouses. This is usually easy to do with Excel formulas. the cost of upgrading will be repaid if it saves just a few hours of time. but also the advice of commentators on good spreadsheet modeling practices (who feel that models defined on a single worksheet are easier to understand and maintain). borders or shading. check whether the hard disk activity LED (present on most PCs) is flickering during the solution process.can refer to cells on other worksheets.e. memory demands may be causing Windows to swap data between main memory and disk. this is almost always cheaper (and yields results sooner) than spending many hours or days of valuable professional time. and relatively easy to install. either in terms of money or your effort. the same rationale applies: If you can solve your model more quickly or more reliably by upgrading the software. Microsoft Excel provides rich facilities. We recommend at least 512MB RAM if you are working with large Solver models – 1 GB or more is certainly desirable. and try solving your model with the actual software. This section describes steps that are easy to apply in most situations. For most professionals. If it is. for formulas that simply massage the data and do not participate in the solution process (i. even if partially summarized from database records or transactional data. But for clarity in your model. we recommend that you use separate worksheet areas. the best recommendation we can make to improve performance is to upgrade to the Premium Solver Platform. Quick Steps Towards Better Performance The rest of this chapter focuses on steps you can take to obtain faster and more reliable solutions for large models from the Premium Solver and Premium Solver Platform.

When this box is checked. but this extra work usually has an excellent payoff if the constraints are “binding” (i.” which is checked by default. A first step towards improving performance is to enter the tightest bounds on the variables that you can.” a problem with integer variables can take much longer to solve than a problem without such variables. and even non-smooth functions. and (iii) each of the Solver engines is able to handle bounds on the variables more efficiently than general constraints. (ii) it’s easy to enter bounds on the variables in the Constraints list box. It’s true that the Solver must do more work to handle the additional constraints. see “Problems with Poorly Scaled Models” in the chapter “Diagnosing Solver Results. and the solution method or Solver engine that must be used. for both linear and nonlinear problems. or with linear functions and binary integer variables. as described in the subsection “Reporting Scaling Problems” in the chapter “Analyzing and Solving Models. satisfied with equality) at some point during the solution process. but which do further constrain the search space that the Solver must explore. the Solver will stop with an error message if some variables do not have lower or upper bounds at the time you click Solve. If you are using the Interval Global Solver or the OptQuest Solver. you can improve solution time by adding constraints to your model which may not be essential in defining the problem.” Add Constraints to Your Model Frequently. This is because (i) it’s usually easier for you to determine realistic lower and upper bounds on the variables than to formulate new general constraints. without eliminating possible good solutions. Quadratic programming problems take somewhat more time. This section discusses techniques you can use to replace nonlinear functions. and sometimes omit lower bounds as well.” Using the Solver Model dialog in the Premium Solver Platform.Analyze Your Model for Scaling Problems Poorly scaled calculations are a frequent cause of long solution times and unreliable solution results. the Options dialogs for these Solver engines include a check box “Require Bounds on Variables. As explained in the chapter “Solver Models and Optimization. However. Users often omit upper bounds on their decision variables. with equivalent (or nearly equivalent) linear or quadratic functions. bounds on all variables are required – the Solver will always stop with an error message if bounds on the variables are missing. Nonlinear optimization problems take considerably more time. Since bounds on the variables are especially important for the performance of the Evolutionary Solver and for multistart methods for global optimization used with the nonlinear Solver engines. Improving the Formulation of Your Model The type of problem you are trying to solve. you can automatically diagnose scaling problems.e. Non-smooth problems take by far the greatest amount of time. For a further discussion. has a major impact on solution time: • • • • Linear programming problems can be solved most quickly. an integer linear problem formulated using the techniques described in this section may 94 • Building Large-Scale Models Solver User Guide . The greatest payoff often comes from additional constraints that are simple bounds on the decision variables.

you can find a guaranteed optimal solution. the same constraint can be rewritten (multiplying both sides by the denominator. and you decide to implement some of these techniques to speed up solution of your model. so you would have to use the GRG Solver to find a solution. you can introduce another variable D1. so you’d need to use at least the GRG Solver. and perhaps the Evolutionary Solver to find a solution.) Mini-Max and Maxi-Min You may want to minimize the maximum of a group of cells such as C1:C5 (or maximize the minimum of a group of cells). Techniques Using Linear and Quadratic Functions Below are three common situations where you might at first expect that a nonlinear function is required to express the desired relationship – but with a simple transformation or approximation.still take significantly less time to solve than the equivalent nonlinear or non-smooth problem. You might write a constraint such as: (1*C1 + 3*D1 + 6*E1) / (C1 + D1 + E1) <= 3 This constraint left hand side is a nonlinear function of the variables. non-smooth models with more than 1. Ratio Constraints You may want to express a relationship that seems to require dividing one or more variables by other variables. where all of the problem functions are linear (except for the objective function. Moreover. make D1 the objective to be minimized. and add the constraint: C1:C5 <= D1 Solver User Guide Building Large-Scale Models • 95 . you can use a linear or quadratic function instead. which may be quadratic). However. i. bear in mind that you can use the LP/Quadratic Solver or the XPRESS Solver only for LP or QP models. D1 and E1.” MAX (and MIN) are non-smooth functions.000 variables in a reasonable amount of time. A caveat: If you currently have a model with many nonlinear or non-smooth functions. it may take just as long or longer to solve. with the amounts of each CD in cells C1. If you create a model with a mix of nonlinear or non-smooth functions and linear functions using binary integer variables. -2*C1 + 3*E1 <= 0 This constraint is a linear function of the variables. Suppose that you have a portfolio of 1-month. then collecting terms) as: (1*C1 + 3*D1 + 6*E1) <= 3*(C1 + D1 + E1). As a rough guide. whereas with a nonlinear or non-smooth problem you will have no such guarantees. It is tempting to use an objective function such as MAX(C1:C5)– but as explained in the chapter “Solver Models and Optimization. or a solution that is guaranteed to be within at least x% of optimal. 3-month and 6-month CDs. Instead.000 variables may be difficult or impossible to solve in a reasonable amount of time – but equivalent models formulated with linear functions and binary integer variables can often be solved efficiently with the LP/Quadratic Solver. so you would be able to use the much faster Simplex or LP/Quadratic Solver to find a solution. you can often solve linear integer problems of 10. And with the field-installable XPRESS Solver Engine. and you wish to limit the average maturity to 3 months. (This transformation above relies on the fact that C1 + D1 + E1 >= 0. if your problem is integer linear.e.000 to 100.

you can use the much faster Simplex or LP/Quadratic Solver to find a solution. and occurrences of variables in functions. quadratic approximation to a smooth nonlinear function f near a point a: f (x) ≅ f (a) + f ´(a)(x . with a quadratic objective and linear constraints. a machine on a production line may have a fixed setup time or cost if it is used at all. and use cell E1 for a binary integer variable y that is 1 if you produce any widgets on this machine. For example. try to formulate it as a quadratic programming (QP) problem. Then the total production time can be computed as =0. And if the rest of your model is linear. and adding a constraint x <= My. Fixed-Charge Constraints You may have a quantity x in your model that must “jump” from zero to some (fixed or variable) non-zero value.5*C1+10*E1. The Large-Scale SQP Solver is particularly effective when used with the Premium Solver Platform. plus a time or cost per unit produced. You may be able to use a local. Let cell C1 hold the number of widgets you are producing on this machine. If you select the “Recognize Linear Variables” check box in the GRG Solver Options dialog of the Premium Solver Platform. suppose you have a machine that has a setup time of 10 minutes. where M is a constant that is larger than any possible value for x. for still faster solutions. because it uses the Interpreter’s dependents analysis to break down each function into linear and nonlinear terms.” Techniques Using Linear Functions and Binary Integer Variables Below are three common situations where you might at first expect that a nonsmooth function such as IF is required to express the desired relationship – but you can instead use a binary integer variable and one or two linear functions to define an equivalent relationship. Quadratic Approximations If you cannot represent the entire problem using linear functions of the variables. For example. speeding up the solution process. And the Large-Scale GRG Solver and Large-Scale SQP Solver engines also recognize both linearly occurring variables and linear constraints automatically.The effect of this constraint is to make D1 equal to the maximum of C1:C5 at the optimal solution. which it handles as efficiently as possible. Assuming that C1 can be at most 10.000. functions. under certain conditions. You can avoid creating a non-smooth function for x by introducing a binary integer variable y (which is 1 if x is used and 0 if it isn’t). you can improve solution time by making an effort to ensure that as many variables as possible occur linearly in the objective and all of the constraints. You can use the Solver Model dialog in the Premium Solver Platform to easily determine the number of linear variables. Even if you cannot eliminate nonlinear functions from your problem altogether. let M1 = 10000 and add a constraint: 96 • Building Large-Scale Models Solver User Guide . but once set up will process a widget every 30 seconds. and f ´´(a) denotes the second derivative of the function f at the point a.a)2 where f ´(a) denotes the first derivative. the Solver will take advantage of any linearly occurring variables to reduce the number of recalculations it needs to compute partial derivatives. as described in the chapter “Analyzing and Solving Models.a) + ½ f ´´(a)(x .

If you use this IF function directly in your model. your model may call for either one constraint (say f(x) <= F) or another constraint (say g(x) <= G) to be satisfied. however. Suppose that one supplier’s bid requires that you either purchase at least 400 units from their Chicago warehouse or else purchase at least 600 units from their Phoenix warehouse. You can model the supplier’s either-or requirement with a binary integer variable in cell E1 and the following constraints: 400 – C1 <= M1*E1 600 – D1 <= M1*(1-E1) Notice that we have reversed the sense of the constraint left hand sides to reflect the “at least” (>=) requirement. where M is greater than any possible value for f(x) or g(x).C1 <= M1*E1 (or C1 – M1*E1 <= 0) If variable C1 is nonnegative (C1 >= 0) and variable E1 is binary integer (E1 = binary). If E1=0. the first constraint forces C1 <= 10.000 which is more than the maximum number of units you intend to purchase. then C1 is forced to be 0 whenever E1 is 0. when y=0. but when y=1. and the second constraint has no effect. the first constraint has no effect. then D1 (units purchased from Phoenix) must be at least 600. this formulation allows either E1=0 or E1=1. whichever one yields the better objective. you’ll have to solve the problem with the Evolutionary Solver. (If C1=10 exactly. g(x) is unrestricted and f(x) <= F. If E1=1. Since the production time calculation and the constraint are both linear functions. IF Functions In the chapter “Solver Models and Optimization. and the second constraint has no effect. Either-Or Constraints Constraints in an optimization problem are implicitly connected by the logical operator AND – all of them must be satisfied. Solver User Guide Building Large-Scale Models • 97 . For example. and 0 otherwise. and add the constraints f(x) – F <= My and g(x) – G <= M(1-y). When E1 is 1. you can avoid the IF function and solve the problem with the nonlinear GRG Solver – or even the linear Simplex Solver – by introducing a binary integer variable (say E1) that is 1if the conditional argument of the IF is TRUE. You might consider using the OR function in Excel. f(x) is unrestricted and g(x) <= G. where C1 depends on the decision variables. in order to obtain their most favorable pricing. Instead. and the first constraint has no effect. then C1 (units purchased from Chicago) must be at least 400. and the second constraint forces C1 >= 10. you can introduce a binary integer variable y and a constant M. This is called a fixedcharge constraint. you can solve the problem with the Simplex (or LP/Quadratic) Solver and the Branch & Bound method. but as noted in the chapter “Solver Models and Optimization. or equivalently E1 is forced to be 1 whenever C1 is greater than 0. Sometimes. Assume that cell M1 contains 10.) The value of the IF function can then be calculated as D1*E1 + 2*D1*(1-E1). Instead.” we used =IF(C1>10. as an example of a non-smooth function: Its value “jumps” from D1 to 2*D1 at C1=10. Let cell C1 hold the number of units you would purchase from Chicago.2*D1). imagine you want to allocate your purchases among several suppliers in different geographic regions. each of whom has imposed certain conditions on their price bids. which simplifies to D1*(2-E1) in this example.” this function is non-smooth. Add the constraints: C1 – 10 <= M1*E1 10 – C1 <= M1*(1–E1) When E1 is 0. Now.D1. and cell D1 hold the number of units you would purchase from Phoenix.

if f(x) < F then you don’t need this constraint. y2 and y3. x2 and x3. the non-smooth behavior has been eliminated. You can then use a binary variable y (cell E1 in the example above). Depending on how you use the result of the IF function in the rest of your model. and the first constraint has no effect. that if f(x) >= F then you want to impose the constraint g(x) <= G. if D1 depends linearly on the variables. otherwise. the objective and constraints are: 98 • Building Large-Scale Models Solver User Guide . V1 represents a fixed initial cost. it is a smooth nonlinear function.If D1 is constant in the problem.” You have a decision variable x representing the quantity to order. the variable x is replaced by three variables x1. You might be surprised to learn that you can instead use linear functions and binary integer variables to express the relationship. you might be purchasing parts from a vendor who offers discounts at various quantity levels. The three prices (slopes of the line segments) are c1. f(x) <= F is enforced. it is a quadratic. with three prices and three “breakpoints. the constraints involving y remain linear.c2*B1 V3 = V2 + c2*B2 . Since you want to minimize costs. and impose constraints like the pair above plus an additional constraint on g(x): f(x) – F <= My F – f(x) <= M(1-y) g(x) – G <= M(1-y) If y is 0. for example. In all cases. Using Piecewise-Linear Functions Many problems involve “stepped” price schedules or quantity discounts. and the problem can be solved with Branch & Bound and the Simplex Solver. where you might at first expect that a non-smooth function such as CHOOSE or LOOKUP is required to express the relationship. V2 and V3 are also constant in the problem and can be computed from: V2 = V1 + c1*B1 . this is a linear function. f(x) >= F and g(x) <= G are enforced. representing the quantity ordered or shipped at each possible price. The graph below represents such a discount schedule. If y is 1. If f(x) and g(x) are linear functions of the variables.c3*B2 In the model. For example. Also included are three 0-1 or binary integer variables y1. and the second and third constraints have no effect. c2 and c3. you may be able to take this strategy further. Suppose.

this section is relevant primarily for the Premium Solver. Because the Parser and Interpreter in the Premium Solver Platform have largely superseded this form of fast problem setup. For more information on linear and quadratic functions. by using line segments with slopes matching the gradient of the nonlinear function at various intermediate points. and they are obtained by the method of finite differencing. Solver User Guide Building Large-Scale Models • 99 . x2 ≤ B2*y2. QUADPRODUCT and MMULT.” In the Support section of Frontline Systems’ Website at www. but you’ll be rewarded with a 5. Piecewise-linear functions can also be used to approximate a smooth nonlinear function. you may find that the Solver spends most of its time with “Setting Up Problem. It can be used in place of a CHOOSE or LOOKUP function. compared to the time taken by the Premium Solver when finite differencing is used.to 100-fold speed improvement in setup time. DOTPRODUCT.com. it is not applicable to nonlinear and non-smooth models. The setup time is required to extract the LP coefficients of the problem functions by recalculating the worksheet. and it results in a linear integer model instead of a difficult-to-solve non-smooth model. Organizing Your Model for Fast Solution This section describes ways you can organize your model so that the Premium Solver and Premium Solver Platform can analyze it more efficiently. (As described in more depth in the last section of the chapter “Analyzing and Solving Models. but if the function is non-concave (it may vary up and down). Fast Problem Setup If your model is linear or quadratic.” on the Excel status bar. you can find an example of the process of converting an existing LP model into fast problem setup form.Minimize V1*y1 + V2*y2 + V3*y3 + c1*x1 + c2*x2 + c3*x3 Subject to x1 ≤ B1*y1. although you may need to introduce new sets of cells to hold the calculated coefficients so that these cells can be referenced by one of the fast problem setup functions. x3 ≤ B3*y3 If the cost curve is concave as shown above. this is sufficient.solver. You can always express a linear or quadratic programming problem using these functions for the objective and all of the constraints.. then speeds through the “Trial Solutions” very quickly.. SUMPRODUCT. This may require some work on your part to revise a model you have already constructed. additional “fill constraints” are needed: y1 + y2 + y3 ≤ 1 x1 ≤ B1*y2 x2 ≤ B2*y3 This approach is called a “piecewise-linear” function.” the LP coefficients are the first partial derivatives of the problem functions with respect to the variables. see the sections on “Linear Functions” and “Quadratic Functions” in the chapter “Solver Models and Optimization.) Much of this setup time can be avoided if you write the formulas for the objective function and all of the constraint left hand sides using the functions recognized for fast problem setup: SUM. Most of this section is devoted to an in-depth discussion of “fast problem setup” for linear and quadratic models (possibly with integer variables). which requires n + 1 recalculations if there are n decision variables.

it will return the same value in every resulting array element. has more flexible arguments and is far more useful in array formulas. and the other cell range consists entirely of cells that are constant in the Solver problem. defining it in fast problem setup format may still save time compared to use of the Parser and Interpreter – but the advantage is not nearly as great as the 5. (The DOTPRODUCT function. The SUM Function The simplest case of a function recognized for fast problem setup is a formula such as =SUM(C1:C10) where C1 through C10 are decision variables. and the constant Hessian matrix (the QP coefficients) of a quadratic objective function – but it is used only if you check the Fast Setup box or choose No Action in the On Solve group in the Solver Model dialog. a column or a rectangular area of cells). and the form of the function arguments that you must use to ensure that they are recognized for fast setup purposes. your formula must consist only of =SUM(cells) (with no constants) where every cell referenced is a decision variable. Because the Parser and Interpreter handle almost every kind of Excel formula and built-in function.The Parser and Interpreter in the Premium Solver Platform use the techniques of automatic differentiation to obtain the LP coefficients faster and more accurately than they can be obtained via finite differencing. Other Functions for Fast Problem Setup Use of the MMULT function is illustrated below under “Using Array Formulas. You may list the arguments in either order. which is exactly the form of a linear function: a1x1 + a2x2 + . your formula must follow the same rules as for SUMPRODUCT: It must consist only of =MMULT(cell range. described below. are permitted in the arguments.” To be recognized in fast problem setup. The following subsections describe the functions supported for fast problem setup. not multiple selections. cell range) where one of the cell ranges consists entirely of decision variables. You may use absolute or relative references or defined names in the arguments to SUM. + anxn SUMPRODUCT requires that its two arguments refer to the same number of cells in the same orientation (either a row. cell range) where one cell range specifies the decision variables. Only single selections.to 100-fold speed improvement mentioned above. If SUMPRODUCT is used in an array formula (see below). and the other cell range specifies the corresponding coefficients.. An example of the use of SUM to define constraints can be found in the “Shipping Routes” sheet in the SOLVSAMP. To be recognized in fast problem setup. you don’t have to do the work of designing your model – or revising an existing model – to use only the small set of functions recognized for fast problem setup. which is usually not the result you want.. 100 • Building Large-Scale Models Solver User Guide . It returns the sum of the products of corresponding elements in its two arguments. If your LP or QP model is very large. Fast problem setup is still available in the Premium Solver Platform as a specialized method of extracting the constant Jacobian matrix (the LP coefficients) of a linear or quadratic problem. using absolute or relative references or defined names. your formula must consist only of =SUMPRODUCT(cell range. The SUMPRODUCT Function The SUMPRODUCT function is documented in Microsoft Excel online Help. Note that a SUM of decision variables is a linear function where all of the coefficients are 1.) To be recognized in fast problem setup.XLS workbook included with Microsoft Excel.

D11:F15)} The braces above are not typed. In addition.” you may wish to consider use of Microsoft Excel’s matrix built-in functions.TRANSPOSE(_X))} (The TRANSPOSE function is needed only to “match up” the orientation of the matrix _A with the row vector _X. formatting and labels as EXAMPLE1. you can read about them in Excel’s online Help. In this example. the left hand side of this expression could be written as: {=MMULT(_A. This worksheet uses exactly the same layout.. or any other quadratic form.5 ij j j=1 The SUMPRODUCT function corresponds to the summation expression above for one constraint. the five constraints in EXAMPLE1 could be written in vector-matrix form as: Ax <= b where A is the matrix of coefficients. which is copied to your Solver subdirectory (typically C:\Program Files\Microsoft Office\Office\Library\Solver. To qualify as a quadratic programming (QP) problem – which can be solved efficiently by the LP/Quadratic Solver engine – only the objective function (not any of the constraints) may use QUADPRODUCT. from the Tools menu. In EXAMPLE1. this worksheet has defined names for the decision variables (_X). provides a complete example of vector-matrix notation. but they appear when you “array-enter” the formula by pressing CTRL-SHIFT-ENTER instead of just ENTER. the five constraints in EXAMPLE1 could be written as: 3 ∑ a x . If your LP model is “dense” and regular in form rather than “sparse. Using Array Formulas Optimization models in algebraic form can often be expressed more compactly using indexing and summation notation. the constraint left hand side values (_AX) and the right hand side values (_B). The entire set of five constraint formulas could be defined with the array form of the DOTPRODUCT function (described in detail later in this section). i=1. but the constraint left hand side formulas are written using the MMULT function as illustrated above.) The worksheet EXAMPLE2 in the EXAMPLES. your usage of these two functions must follow the same rules as for SUMPRODUCT. use \Office10\ for Excel XP or \Office11\ for Excel 2003) when your Premium Solver product is installed... They are one of the most useful features of Microsoft Excel.. If you select sheet EXAMPLE2 and choose Solver. In the Microsoft Excel formula language. such as MMULT which (when array-entered into a group of cells) yields the matrix product of its two operands. x is the vector of decision variables and b is the vector of constraint right hand sides. If you aren’t familiar with array formulas in Microsoft Excel..The DOTPRODUCT and QUADPRODUCT functions are described in their own sections below.XLS workbook. you would select cells C11 to C15 and “array-enter” the following formula: {=DOTPRODUCT(D9:F9. To be recognized in fast problem setup. For example. we’ve checked the “Assume Non- Solver User Guide Building Large-Scale Models • 101 .. you’ll see a Solver Parameters dialog like the one shown on the next page. the objective function coefficients (_C). For example.

XLL that defines three new Excel functions: DOTPRODUCT. it isn’t recognized for fast problem setup. so it is not necessary to enter the constraint _X >= 0. Using DOTPRODUCT DOTPRODUCT is a generalized version of the built-in function SUMPRODUCT. DOTPRODUCT and QUADPRODUCT are recognized for purposes of fast problem setup as described earlier in this chapter. these functions will appear in the “Select a Function” or “Paste Function” list (classified as Math & Trig functions). but the cell ranges specified 102 • Building Large-Scale Models Solver User Guide .Negative” box in the Solver Options dialog. Using the Add-in Functions Your Premium Solver product comes with a special add-in called DOTPRD32. we recommend that you use array formulas where they make sense. The Parser and Interpreter in the Premium Solver Platform recognize most kinds of array formulas supported by Microsoft Excel. When you use the Insert Function… menu option. When the add-in is open in Excel. QUADTERM is used to define a term of a quadratic function. and focus on making your model simple and easy to maintain. but it is recognized by the Parser and Interpreter in the Premium Solver Platform. If you’re using the Premium Solver Platform. QUADPRODUCT and QUADTERM. In addition. cell reference) where all of the cells in one of the cell references are decision variables. and you’ll be prompted with named edit fields for their arguments. and it may be inconvenient or impractical to define entire constraint left hand sides with functions like MMULT and TRANSPOSE. provided that you follow the rules outlined earlier: Your formula must consist only of =DOTPRODUCT(cell reference. DOTPRODUCT is also recognized for fast problem setup as described above. and all of the cells in the other cell reference are constant in the Solver problem. and it is very useful for defining the objective function and constraints of linear programming problems. Each cell reference must be either an individual selection or a defined name. In a large model. you’ll probably find that you want or need to use multiple tabular areas for the formulas that define your constraints. But (for rather technical reasons) the use of array formulas actually involves a speed disadvantage in the Premium Solver Platform when the coefficients are extracted via automatic differentiation. these functions behave just like Excel built-in functions: You can use them in formulas in any spreadsheet (not only in Solver models). They are also recognized by the Parser and Interpreter in the Premium Solver Platform.

B16).B16). type a name such as CertDepos.E15.I1:I9) would calculate the objective function (total interest earned). DOTPRODUCT will return an array value when the number of cells in one of its arguments is an even multiple of the number of cells in its other argument. it returns a scalar (single number) result. or rectangular area). when you use the array form of DOTPRODUCT. 4%. DOTPRODUCT always processes its arguments in column. Then the formula: =DOTPRODUCT(CertDepos. But this syntax is recognized for purposes of fast problem setup only if the argument string is less than about 180 characters.I1:I9). To do Solver User Guide Building Large-Scale Models • 103 . the formula: =DOTPRODUCT(A1:C2. and in a multiple selection it reads the individual cell selections in the order in which they are listed. For example. The Parser and Interpreter in the Premium Solver Platform accept only single selections such as I1:I9. area order – in an individual selection it reads cells across columns. for both function arguments and defined names – so you cannot define this objective function with a single call to DOTPRODUCT.) If you can’t use the array form. you could still calculate the objective function for your model with one call to DOTPRODUCT.B15. and the coefficients of the constraint left hand sides (the number of parts used for each product) are in cells D11 to F15. In a sparse model where you’d like to use the built-in function MMULT to compute the constraint values. if DOTPRODUCT is used (with the proper arguments) in an array formula. you might put the corresponding interest rate figures (1%. but the variables and constraints aren’t laid out in a single matrix. if you had designed a model like the “Maximizing Income” worksheet pictured in the chapter “Building Solver Models.E15. However. and it’s also recognized by the Parser and Interpreter in the Premium Solver Platform. You would first select the cells (B14:G14. 9%) in cells I1 to I9.B15. 1%. The Array Form of DOTPRODUCT If SUMPRODUCT is used in an array formula. or define it with + and * operators as in the original “Maximizing Income” worksheet. the Premium Solver products will recognize this form and use it to process many constraints at once in problem setup. 1%. 1%. You could skip the defined name step and use the multiple cell selection directly. it returns an array result.by the two arguments need not have the same “shape” (row. As an example. You can use this capability to calculate the left hand sides of several constraints with a single array formula. and click OK. For use in Excel and for purposes of fast problem setup. For example. and would be recognized for purposes of fast problem setup.” where the decision variables consisted of several rectangular cell selections. 4%. DOTPRODUCT will accept defined names that specify multiple selections for either of its arguments. 1% 1%. then choose Insert Name Define…. as in =DOTPRODUCT((B14:G14. row.D1:D6) will calculate as =A1*D1+B1*D2+C1*D3+A2*D4+B2*D5+C2*D6. However. with the Parser and Interpreter you don’t need to – you can define the objective as a sum of several DOTPRODUCT functions. Further. (The array form is recognized for fast problem setup. The decision variables are in cells D9 to F9. column. which is returned in every cell of the array. you can use the array form of DOTPRODUCT instead. consider the calculation of parts used in the LP model EXAMPLE1. We want to calculate the left hand sides of the constraints in cells C11 to C15. even the simple form of DOTPRODUCT will save time in problem setup. Next. wrapping around to subsequent rows.

Recall from the section “Quadratic Functions” in the chapter “Solver Models and Optimization” that a quadratic function is a sum of terms. single coefficients. 100 in C12. Whether it is used in the simple form or the array form. using an element-by-element correspondence. and so on. In the example above. row. those formulas must not refer to any of the decision variables. 200 in C14 and 400 in C15..this. it will compute the same set of values as the expression {=MMULT(_A.. In the array form... For example. and a coefficient for each possible pair of two variables. there must be n2 cells in the third argument.. Hence. then the first cell paired with the second cell. QUADPRODUCT computes the function: n n n n(i-1)+j ∑ ∑c i=1 j=1 x x +∑a x i j j j j=1 The pairs are enumerated starting with the first cell paired with itself. DOTPRODUCT “wraps around” to the beginning of the “shorter” argument. Keep this rule in mind when you use the array form of DOTPRODUCT.a2.an..c2. there should be nine cells in the third argument. You supply the arguments of QUADPRODUCT as shown below: =QUADPRODUCT(variable cells. and so on. if these cells contain formulas. the single coefficients by a1. TRANSPOSE(_X))} in EXAMPLE2. if the first argument consisted of the cells A1:A3.xn... This means that in order to represent the most general quadratic function. if there are n cells in the first argument.. DOTPRODUCT always processes its arguments in column. using a single function call as required for purposes of fast problem setup.cN where N = n2. and keep your spreadsheet layouts as simple as possible! Using QUADPRODUCT The QUADPRODUCT function can be used to define the objective for quadratic programming problems. The QUADPRODUCT function is designed to supply coefficients for each single variable and each pair of variables. If the variables are represented by x1.D11:F15)} – the braces are added by Microsoft Excel when the formula is array-entered. this array formula will calculate 200 in C11... Then we would type: =DOTPRODUCT(D9:F9. when the cells in the “shorter” argument have all been processed and cells remain to be processed in the “longer” argument. area order. pair coefficients) The first argument must consist entirely of decision variable cells. in a manner similar to SUMPRODUCT and DOTPRODUCT. and the pair coefficients by c1.g. we would first select the group of five cells C11:C15 with the mouse. The formula will display as {=DOTPRODUCT(D9:F9.D11:F15) completing the entry with CTRL+SHIFT+ENTER instead of just ENTER. The second argument supplies the coefficients to be multiplied by each single variable in the first argument. and the 104 • Building Large-Scale Models Solver User Guide . where each term is a (positive or negative) constant (called a coefficient) multiplied by a single variable or the product of two variables. cell C12 computes =D9*D12+E9*E12+F9*F12. The third argument supplies the coefficients to be multiplied by each pair of variables drawn from the first argument. 500 in C13. cell C11 calculates the value =D9*D11+E9*E11+F9*F11. The second and third arguments must consist entirely of cells whose values are constant in the optimization problem.x2. With the cell values shown in EXAMPLE1 prior to solution (e.. 100 for each of the decision variables). we might have a coefficient for each instance of a single variable. Hence.

This model. which is copied to your Solver subdirectory when your Premium Solver product is installed. The worksheet EXAMPLE3 in the EXAMPLES. see the discussion of the QUADTERM function below. we supply a row of zeroes for the second argument to QUADPRODUCT. Solver User Guide Building Large-Scale Models • 105 . uses the QUADPRODUCT function to compute the variance of a portfolio of five securities. (We’ve again checked the “Assume NonNegative” check box in the Solver Options dialog.Stock_Covariances) If you select Solver. but defined names are needed for purposes of fast problem setup. A1*A3.) Notice the use of defined names in this model: “Allocations” is defined as the cell range B6:F6. The formula using QUADPRODUCT at cell I14 reads as follows: =QUADPRODUCT(Allocations. Multiple selections can be used for each argument of QUADPRODUCT. from the Tools menu. A2*A3. (For an easier way to define a quadratic objective that is accepted by the Parser and Interpreter in the Premium Solver Platform. Because the objective is a quadratic function. illustrates portfolio optimization using the Markowitz method. and uses this quantity as the objective to be minimized. A2*A2.) A common application of quadratic programming is to find an “efficient portfolio” of securities – often called portfolio optimization. A3*A2..values in those cells will be multiplied by the following pairs in order: A1*A1. A3*A1. and “Stock_Covariances” is defined as the rectangle B12:F16. shown below. The value returned by QUADPRODUCT is the sum of all of the coefficients multiplied by their corresponding single variables or pairs of variables. subject to the same considerations outlined above for DOTPRODUCT: You can use the general syntax for multiple selections in Microsoft Excel.B8:F8.XLS workbook. and A3*A3. this Solver model is a quadratic programming (QP) problem which can be handled by the LP/Quadratic Solver in the Premium Solver Platform. and multiple selections are not accepted by the Parser and Interpreter. A1*A2. A2*A1. Since in this problem the objective function consists only of the quadratic terms (pairs of variables) with no linear terms (single variables). subject to a constraint that gives a lower limit on the portfolio return.. and the constraints (including the lower bound on return) are all linear functions. the Solver Parameters dialog will appear with the entries shown on the next page.

each one up to 256 rows and columns. The value returned by QUADTERM is the sum of all of the coefficients multiplied by their corresponding pairs of variables. the pairs are enumerated starting with the first cell in the first argument paired with the first cell in the second argument. A901:IV1156) + QUADTERM (X257:X512.. plus a SUMPRODUCT or DOTPRODUCT function if there is a linear term in the objective. or they may define different ranges of cells). Instead. In your objective function cell. X1:X256. As an example. and n2 cells in the third argument. As described earlier. variables2. A1501:IV1756). you sum up the QUADTERM functions.. X1:X256..c2. using four submatrices and a formula =QUADTERM (X1:X256. pair coefficients) The first and second arguments should each be a range of decision variable cells (both arguments may define the same range. Because Microsoft Excel allows a maximum of 256 columns in a single worksheet. QUADTERM computes the function: n n n(i-1)+j ∑ ∑c i=1 j=1 xy i j As with QUADPRODUCT. You supply the arguments of QUADTERM as shown below: =QUADTERM(variables1. then the first cell in the first argument paired with the second cell in the second argument. with or without the Solver. X257:X512. X257:X512.. the QUADTERM function can be used in any Microsoft Excel worksheet.. you might define the objective of a 512-variable problem. but it is recognized by the Parser and Interpreter in the Premium Solver Platform.yn.x2..cN where N = n2.y2. and the pair coefficients by c1. The third argument defines coefficients that will be multiplied by each pair of cells in the ranges variables1and variables2..Using QUADTERM The QUADTERM function can be used to define a term of an overall quadratic function..xn. If there are n cells in the first argument. A1201:IV1456) + QUADTERM (X257:X512. If the first argument is represented by x1.. A601:IV856) + QUADTERM (X1:X256. It is not recognized for purposes of fast problem setup. 106 • Building Large-Scale Models Solver User Guide . the second argument by y1. you cannot easily define a “square matrix” of coefficients with more than 256 rows and columns. and so on... you can break up the matrix into four. You then use the QUADTERM function to compute the contribution to the overall quadratic function from each submatrix. Its purpose is to make it easier for you to define a quadratic objective (or other function) of more than 256 decision variables. with decision variables X1:X512. there must be n cells in the second argument.. nine or more submatrices.

Solver User Guide Building Large-Scale Models • 107 .

If the Solver stops with a solution (set of values for the decision variables or Changing Cells) that is different from what you expect. readable and efficient form – as outlined at the beginning of the chapter “Building Large-Scale Models” – diagnosing problems should be relatively easy.Diagnosing Solver Results If You Aren’t Getting the Solution You Expect This chapter will help you understand the results reported by the Solver and diagnose problems with your Solver models. Consider carefully the possibility that the solution found by the Solver is correct. and that your expectation is wrong. But at times you may be “surprised” by the results you get from the Solver. Check the “Show Iteration Results” box in the Solver Options dialog and re-solve. follow the suggestions below. If you then build your model in a well-structured. You may have to modify the formula in this cell to use the Parser and Interpreter. quadratic. how it relates to well-known problem types. and whether yours is a linear. This may mean that what your model actually says is different from what you intended. You can usually narrow down the problem to one of a few possibilities. • Check the Solver Result Message shown in the Solver Results dialog. In the Premium Solver Platform. Read carefully the discussion of your Solver Result Message in the following sections. The most important step you can take to deal with potential Solver problems is to start out with a clear idea of the type of optimization model you are creating. The Solver will pause with the message “Solver paused. many Solver Result Messages from the Parser and Interpreter refer to a specific problem at a specific cell address in your worksheet.” Click Continue to see the path towards the solution taken by the Solver. smooth nonlinear or non-smooth optimization problem – as discussed in previous chapters. but they don’t know which Solver Result Message they received – this is crucial to diagnosing the problem. • • • 108 • Diagnosing Solver Results Solver User Guide . or else you’ll have to set the On Solve option to No Action in the Solver Model dialog. current solution values displayed on worksheet. Users sometimes contact Frontline Systems about “wrong solutions”. or what you believe is correct.

objection function and constraints. displaying a Solver Result Message. and giving you the option to save or discard the results and generate reports. Stop or Restart At the time the Show Trial Solution dialog appears. the Interval Global Solver for global optimization of smooth nonlinear problems. stop.) In this dialog (or via your VBA function) you can choose to continue. If you are controlling the Solver via a VBA program.• If you receive the message “Solver could not find a feasible solution. pictured below.” select and examine the Feasibility Report to determine which subset of the constraints is making the problem infeasible. subproblems. or restart the solution process. The Show Trial Solution dialog also appears if you have checked the box Show Iteration Results in the Solver Options dialog. • • • During the Solution Process When you click the Solve button in the Solver Parameters dialog. or integer or feasible solutions) that you have set via the Solver Options dialog. your worksheet will contain the current values of the decision variables. iterations. you can specify a function in your code to be called in lieu of displaying this dialog. Read the section in this chapter on “Problems with Poorly Scaled Models. Even better – if you have the Premium Solver Platform – follow the steps in “Analyzing Model Exceptions” in the chapter “Analyzing and Solving Models” to pinpoint the exact cell formulas that aren’t linear. Read the section(s) most relevant for the type of problem you are solving. Choosing to Continue.” Later sections of this chapter discuss characteristics and limitations of the GRG Solver for smooth nonlinear problems. and the Evolutionary Solver for non-smooth problems. the solution process is started. If you receive the message “The linearity conditions required by this Solver engine are not satisfied. This will display the Show Trial Solution dialog. You can interrupt the solution process at any time by pressing the ESC key. (If you are using a VBA program to control the Solver. and this function will return an integer result code that corresponds to a Solver Result Message. you will call the SolverSolve function. or if the Solver reaches a limit on the solution process (such as maximum time.” select and examine the Linearity Report to determine which functions or variables in your model are not linear. When it completes. the Solver Results dialog appears. Solver User Guide Diagnosing Solver Results • 109 .” and – if you have the Premium Solver Platform – check your model for poorly scaled formulas as described in “Analyzing Model Exceptions” in the chapter “Analyzing and Solving Models.

” After the reports (if any) are produced. the Solver “cleans up” and then displays the Solver Results dialog. The Interval Global Solver treats the restart option as equivalent to the continue option. Standard Solver Result Messages The LP/Quadratic Solver. and calculated values for the objection function and constraints. uncheck this box. or click Cancel in the Solver Results dialog. then continue to run. Clicking Cancel instead will discard the solution and cancel generation of the reports. and Evolutionary Solver. Interval Global Solver. choose one of the options “Keep Solver Solution” or “Restore Original Values. To return to worksheet Ready mode. the Solver will return to worksheet Ready mode unless you’ve checked the box “Return to Solver Parameters Dialog. The Evolutionary Solver reinitializes its population of candidate solutions. In this dialog (or by calling the SolverFinish function).. the Solver Results dialog appears.. The reports are further described in the chapter “Solver Reports. The linear Simplex and LP/Quadratic Solvers treat the restart option as equivalent to the continue option. and continues the solution process. At this point. this function will return an integer result code that corresponds to a Solver Result Message. button. replacing the worst half of the population with newly sampled points for greater diversity. Field-installable Solver engines handle this option in manners similar to those just described for linear. nonlinear GRG Solver. the limit (if any) that was reached is ignored. displaying a Solver Result Message. the Solver will “re-initialize” in a manner specific to the Solver engine being used. and the Solver continues to run. If you choose to stop the solution process. When you click OK. The nonlinear GRG Solver re-initializes its “curvature” information (approximate Hessian of the objective) and convergence test. the reports will be produced.” and optionally save the decision variable values in a named scenario by clicking on the Save Scenario. it remains checked (until you change it) for the duration of your Excel session. and the Branch & Bound and multistart methods bundled with the Premium Solver Platform return the integer result codes and display the Solver 110 • Diagnosing Solver Results Solver User Guide .If you choose to continue the solution process. your worksheet contains the best solution found – values for the decision variable cells. or returns from your call to the SolverSolve function. and continues from the current Trial Solution. as shown below. you can click the Close button in the Solver Parameters dialog. you can select one or more reports.” When you check the “Return to Solver Parameters Dialog” box. When the Solver Finishes When the solution process completes. smooth nonlinear and non-smooth problems. If you choose to restart the solution process. If you are controlling the Solver via a VBA program and you’ve called the SolverSolve function.

in rare cases. If you receive this message the first time you try to use your Premium Solver product.Result Messages described in this section. It is possible that there are other solutions with the same objective value. Some of these messages have a slightly different interpretation depending on which Solver engine you are using. this means that the Solver has found the globally optimal solution: There is no other solution satisfying the constraints that has a better value for the objective. cause the Solver to “miss” a feasible solution with an even better objective value. or your trial license has expired. The exact meaning depends on whether you are solving a linear or quadratic. the GRG Solver has found a locally optimal solution: There is no other set of values for the decision variables close to the current values and satisfying the constraints that yields a better value for the objective (Set Cell). it indicates that the product wasn’t installed properly (by running the product’s installation program. this message means that the Branch & Bound method has found a solution satisfying the constraints (including the integer constraints) with the “best possible” objective value (but see the next paragraph). because they have no way of testing the solution for true optimality. If you are using the Interval Global Solver for global optimization of a smooth nonlinear problem with no integer constraints. The Interval Global Solver can return three of these custom result codes and messages. or that something went wrong during the installation process. as outlined below. This means that the Solver has found the optimal or “best” solution under the circumstances. particularly for return code 0. the true integer optimal solution has been found. But this is subject to limitations due to the finite precision of computer arithmetic – discussed below in “Limitations on Global Optimization” – that can. but all such solutions are linear combinations of the current decision variable values. or integer programming problem. as described in their individual documentation. or if you have a time-limited evaluation license that has expired. see the explanations of each message. far away from the current values. there may be other sets of values for the variables. If you are solving a linear programming problem (or a quadratic programming problem with a definite or semi-definite objective) with no integer constraints. if the licensing information is invalid.” Please note that the Branch & Bound and multistart methods usually return result codes 14 through 17. which are documented later in this section. If the problem is linear or quadratic. -1. If you are solving a smooth nonlinear optimization problem with no integer constraints. the LP/Quadratic Solver has found the globally optimal solution: There is no other solution satisfying the constraints that has a better value for the objective (Set Cell).com for further assistance. This message appears if a Premium Solver product cannot find its licensing information (which is created when the product is installed). “Solver found a solution. global optimization. Solver found a solution. Solvers for non-smooth problems rarely if ever display this message. All constraints and optimality conditions are satisfied. or send email to us at info@frontsys. In general. described at the end of this section. which yield better values for the objective and still satisfy the constraints. Please call Frontline Systems at (775) 831-0300. Field-installable Solver engines are designed to return the same codes and display the same messages as the built-in Solver engines whenever possible. Click on the Help button for further information about the licensing problem. as outlined in the Chapter “Installation”). 0. If you are solving a mixed-integer programming problem (any problem with integer constraints) using a Premium Solver product. A licensing problem was detected. smooth nonlinear. Solver User Guide Diagnosing Solver Results • 111 . but they can also return custom result codes (starting with 1000) and display custom messages.

this message means that the objective function value is changing very slowly as the Solver progresses from point to point. and that have very similar objective function values. the Branch & Bound process has found the best of the locally optimal solutions found for subproblems by the nonlinear Solver. but you may also want to increase the Mutation Rate and/or the Population Size. The “fitness” values incorporate both the objective function and a penalty for infeasibility. the Solver stops if the absolute value of the relative (i. the Evolutionary Solver stops if 99% or more of the members of the population have “fitness” values whose relative (i. this message also appears for mixed-integer problems where the Solver stopped because the solution was within the range of the true integer optimal solution allowed by the Tolerance value in the Solver Options dialog (5% by default). For more information. In the standard Microsoft Excel Solver. 1. percentage) change in the objective function. The exact meaning depends on whether you are solving a smooth nonlinear problem with the GRG Solver or the Interval Global Solver. 112 • Diagnosing Solver Results Solver User Guide . see the discussion of “GRG Solver Stopping Conditions” below. All constraints are satisfied. in the last few iterations. For more information.e. If you are sure that your model is well scaled. percentage) difference is less than the Convergence tolerance in the Solver Options dialog. and should be removed. even if the Use Automatic Scaling box in the Solver Options dialog is checked. Solver cannot improve the current solution.e. All constraints are satisfied” (result code 14) is displayed to distinguish this condition (see below). The exact meaning depends on whether you are solving a smooth nonlinear problem with the GRG Solver. or a non-smooth problem with the Evolutionary Solver. When the GRG Solver is being used. This means that the Solver has found a series of “best” solutions that satisfy the constraints. however. you should consider why it is that the objective function is changing so slowly. when the Branch & Bound process stops due to a nonzero Tolerance without “proving optimality. or a non-smooth problem with the Evolutionary Solver. More precisely. For more information. a global optimization problem with the Interval Global Solver. even though the tests for optimality (“Solver found a solution”) and convergence (“Solver converged to the current solution”) have not yet been satisfied. this message means that the “fitness” of members of the current population of candidate solutions is changing very slowly. in order to increase the diversity of the population of trial solutions. this test is heavily weighted towards the objective function values. All constraints are satisfied. More precisely. is less than the Convergence tolerance in the Solver Options dialog. but it has been unable to further improve the objective.” the message “Solver found an integer solution within tolerance. This means that the Solver has found solutions that satisfy the constraints. It means that the model is degenerate and the Solver is probably cycling. see the discussion of “GRG Solver Stopping Conditions” below. When the GRG Solver or the Interval Global Solver is being used. A poorly scaled model is more likely to trigger this stopping condition. see the discussion of “Evolutionary Solver Stopping Conditions” below. In the Premium Solver products. 2. When the Evolutionary Solver is being used. One possibility worth checking is that some of your constraints are redundant. no single solution strictly satisfies the Solver’s test for optimality. this message occurs very rarely. you can make the Convergence tolerance smaller.If the problem is smooth nonlinear. Solver has converged to the current solution. If you believe that the Solver is stopping prematurely when this test is satisfied. but since the Solver has found some feasible solutions.

If you receive this message. see the discussion of “Interval Global Solver Stopping Conditions” below. see the discussion of “Evolutionary Solver Stopping Conditions” below. to control the overall solution process. 3. in the amount of time specified by the Max Time without Improvement option in the Solver Options dialog. =LOG(A1) increases without limit). It means that the Solver has been unable to find a new. and the Branch & Bound method (employed by the other Solver engines on problems with integer constraints) uses the Max Subproblems and Max Integer Solutions options on the Integer Options dialog tab. If the objective is a linear function of the decision variables. But you should also consider whether re-scaling your model or adding constraints might reduce the total number of iterations required. If you believe that this message is appearing prematurely. or trial solutions. or click on the Continue button instead of the Stop button in the Show Trial Solution dialog. this message is much more common. Solver User Guide Diagnosing Solver Results • 113 . this message is more common. The Evolutionary Solver uses the Max Subproblems and Max Feasible Solutions options on the Limit Options dialog tab. Since the Evolutionary Solver has no way of testing for optimality. but the search space has not been fully explored. =A1*A1 has a minimum at zero). This message appears when (i) the Solver has completed the maximum number of iterations. If you are solving a mixed-integer programming problem (any problem with integer constraints).When the Interval Global Solver is being used. Remember that. You can check the Assume Non-Negative box in the Solver Options dialog to impose >= 0 bounds on all variables. it will normally stop with either “Solver converged to the current solution” or “Solver cannot improve the current solution” if you let it run for long enough. 4. The Set Cell values do not converge. so this limit usually is not reached. The count of iterations against which the Iteration limit is compared is reset on each new subproblem. If the objective is a nonlinear function of the variables. and you are willing to spend more solution time to have a better chance of “proving” global optimality. if you’ve selected Minimize. this message is relatively unlikely to appear. Stop chosen when the maximum iteration limit was reached. It means that the Solver has not found an “improved global solution” (a feasible solution with an objective value better than the currently best known solution). in the amount of time specified by the Max Time without Improvement option in the same dialog. it can always be increased or decreased without limit (picture it as a straight line). it may have a “natural” maximum or minimum (for example. The reported solution is the best one found so far. increase the value of the Max Time without Improvement option. This message appears when the Solver is able to increase (if you are trying to Maximize) or decrease (for Minimize) without limit the value calculated by the objective or Set Cell. or increase the amount of time allowed by the Max Time without Improvement option. For more information. the Set Cell may take on negative values without limit unless this is prevented by the constraints or bounds on the variables. or no such limit (for example. You may increase the value in the Iterations box. For more information. you can either make the Tolerance value smaller (or even zero). so the Solver will seek the extreme value that still satisfies the constraints. When the Evolutionary Solver is being used. better member of the population whose “fitness” represents a relative (percentage) improvement over the current best member’s fitness of more than the Tolerance value on the Limit Options dialog tab. while still satisfying the constraints. allowed in the Iterations box in the Solver Options dialog and (ii) you clicked on the Stop button when the Solver displayed the Show Trial Solution dialog.

Most often this is due to choosing the wrong relation (e. but there could be a feasible solution far away from these initial values. In any case. The Interval Global Solver is designed to “prove feasibility” as well as global optimality. thereby allowing the evolutionary algorithm to explore more “nearly feasible” points). 5. it might succeed in finding one if you run it with different initial values for the variables and/or increase the Precision value in the Solver Options dialog (which reduces the infeasibility penalty. If you have forgotten a constraint. described in the chapter “Programming the Solver”). the Solver has determined for certain that there is no feasible solution. If you are controlling the Solver from a VBA program. If you are using the Evolutionary Solver.If you receive this message.” 6. You can write VBA code to disable the ESC key. If you are using the nonlinear GRG Solver. You should at least test for this value (6) returned from the SolverSolve function. cause the Solver to “miss” a feasible solution. the GRG method (which always starts from the initial values of the variables) was unable to find a feasible solution. and take action appropriate for your application. which the Solver might find if you run it with different initial values for the variables. or – better – define a VBA function that the Solver will call instead of displaying the Show Trial Solution dialog (the ShowRef argument of the SolverSolve function. This message appears only if you press ESC to display the Show Trial Solution dialog. you may have forgotten a constraint. If you are using the linear Simplex or LP/Quadratic Solver. this message means that the Solver could find no feasible solutions after a systematic exploration of the search space.e.) For an example of using the Feasibility Report to diagnose an infeasible solution. The easiest way to do this is to select the Feasibility Report. and much more time for the Interval Global Solver. which may be nonsmooth. in rare cases. This message appears when the Solver could not find any combination of values for the decision variables that allows all of the constraints to be satisfied simultaneously. the Evolutionary Solver may find solutions with very large (or small) values for the objective – thereby making you aware of the omission – but this is not guaranteed. i. remember that the user may press ESC while your VBA program is running.g. the constraint left hand sides and the objective should provide a strong clue about what happened. <= instead of >=) on an otherwise appropriate constraint. 114 • Diagnosing Solver Results Solver User Guide . and then click on the Stop button. and click OK. see “The Feasibility Report” in the chapter “Solver Reports. and the model is well scaled. The Evolutionary Solver never displays this message. or failed to anticipate values for the variables that allow the objective to increase or decrease without limit. conditions that cannot be satisfied simultaneously. If you are using the Interval Global Solver. The final values for the variable cells. because it has no way of systematically increasing (or decreasing) the objective function. but this is subject to limitations due to the finite precision of computer arithmetic – discussed below in “Limitations on Global Optimization” – that can. it is not available for the Evolutionary Solver. shown in the Reports list box when this message appears. Solver could not find a feasible solution. you should first look for conflicting constraints. the evolutionary algorithm was unable to find a feasible solution. more time for the GRG Solver. Solver stopped at user’s request. (This report can take time for the LP/Quadratic Solver.

constraints. You can check the size (the number of variables. examine the formulas for the objective and constraints for nonlinear or non-smooth functions or operators applied to the decision variables. If you have the Premium Solver. and discovers an error value such as #VALUE!. the error might have occurred in one of these formulas rather than in a cell on the worksheet. this message appears if you’ve selected the linear Simplex Solver engine. simply follow the steps in “Analyzing Model Exceptions” in the chapter “Analyzing and Solving Models” to pinpoint the exact cell formulas that aren’t linear. #NUM!. If you see #VALUE!. we recommend that you use only constants and cell references on the right hand sides of constraints. For this and other reasons. read the section “Functions of the Variables” in the chapter “Solver Models and Optimization. bounds. Solver encountered an error value in a target or constraint cell. and compare it to the size limits of the Solver engine you are using. You’ll have to select – or possibly install – another Solver engine appropriate for your problem.7. #N/A or #NAME?. or the objective is not a linear or quadratic function of the variables. If you’ve selected the Large-Scale LP Solver. but the Solver’s tests determine that either (i) the constraints are not linear functions of the variables or (ii) the objective is not a linear or quadratic function of the variables. The linearity conditions required by this Solver engine are not satisfied. The problem is too large for Solver to handle.” Field-installable Solver engines can also display this message. If you have the Premium Solver Platform.” and it can appear only when the Assume Linear Model box in the Solver Options dialog is checked. see “The Linearity Report” in the chapter “Solver Reports. look for Solver User Guide Diagnosing Solver Results • 115 . look for names or cell references to rows or columns that you have deleted. this message appears if the constraints are not all linear functions. or Too many integer adjustable cells – appears when the Solver determines that your model is too large for the Solver engine that is selected (in the Solver engine dropdown list) at the time you click Solve. This message – or the more specific message Too many adjustable cells. (In the standard Excel Solver. This message appears when the Solver recalculates your worksheet using a new set of values for the decision variables (Changing Cells).) In the Premium Solver. or integer variables in order to proceed. this message appears if you’ve selected the LP/Quadratic Solver engine. If you receive this message. and integers) of the problem you have defined. #DIV/0! or #NAME? in the cell calculating the objective (Set Cell) or one of the constraints. Too many constraints. 9. Inspecting the worksheet for error values like these will usually indicate the source of the problem. To understand exactly what is meant by a linear or quadratic function.” 8. this message appears if the objective and constraints are not all linear functions of the variables. or else reduce the number of variables. If you’ve entered formulas for the right hand sides of certain constraints. For an example. this message is worded “The conditions for Assume Linear Model are not satisfied. by displaying the Limit Options or Integer Options dialog tab for that Solver engine. If you see #NUM! or #DIV/0!. select and examine the Linearity Report to determine which functions or variables in your model are not linear. constraints. In the Premium Solver Platform. but the Solver’s numeric tests to ensure that the objective and constraints are indeed linear functions of the decision variables were not satisfied. If you’ve selected the XPRESS Solver Engine.

The Evolutionary Solver and the field-installable OptQuest Solver rarely. “Division by zero” would yield #DIV/0! on the worksheet. try a constraint such as $A$1 >= 0. a more specific message usually appears instead of “Solver encountered an error value in a (nonspecific) target or constraint cell. “Non-smooth special function” appears if your model uses functions ABS. and you are unable to correct or avoid these error values by altering your formulas or by imposing additional constraints. Error condition is one of the following: Floating point overflow Runtime stack overflow Runtime stack empty String overflow Division by zero Unfeasible argument Type mismatch Invalid operation Invalid token Decision variable with formula Decision variable defined more than once Missing Diagnostic/Memory evaluation Unknown function Unsupported Excel function Excel error value returned Non-smooth special function See also result code 21. The general form of the message is: Error condition at cell address. the message will say “Excel error value returned at cell Sheet1!$A$1. and the Require Smooth box is checked in the Solver Model dialog (see the chapter “Analyzing and Solving Models”). or set the On Solve option to No Action in the Solver Model dialog.” At a minimum. such as user-written functions in VBA. 10. In the Premium Solver Platform. you can still use the Evolutionary Solver or OptQuest Solver to find (or make progress towards) a “good” solution.unanticipated values of the decision variables which lead to arguments outside the domains of your functions – such as a negative value supplied to SQRT. “String overflow” indicates that a string is too long to be stored in a cell. with messages that can appear when the Parser first analyzes the formulas in your model (when you click Formulas. MAX. when the Parser and Interpreter are used (On Solve = anything other than No Action). if ever. display this message – since they maintain a population of candidate solutions and can generate more candidates without relying on derivatives. “Solver encountered an error computing derivatives. You may increase the value in the Max Time box or click on the Continue 116 • Diagnosing Solver Results Solver User Guide . Dependents or Solve). and “Unfeasible argument” means that an argument is outside the domain of a function. Edit your formulas. such as =SQRT(A1) where A1 is negative. MIN or SIGN. If you have a model that frequently yields error values for trial solutions generated by the Solver.” and result code 12. You can often add constraints to avoid such domain errors. Stop chosen when the maximum time limit was reached. Other specific messages may tell you more about the error. they can simply discard trial solutions that result in error values in the objective or the constraints. This message appears when (i) the Solver has run for the maximum time (number of seconds) allowed in the Max Time box in the Solver Options dialog and (ii) you clicked on the Stop button when the Solver displayed the Show Trial Solution dialog.0001 instead.” where Sheet1!$A$1 is replaced by the cell address where the error was encountered. “Unknown function” appears for functions whose names are not recognized by the Interpreter. if you have trouble with a constraint such as $A$1 >= 0. “Unsupported Excel function” appears for the few functions that the Interpreter recognizes but does not support (see the list in the section “More on the Parser and Interpreter” in the chapter “Analyzing and Solving Models”). “Floating point overflow” indicates that the computed value is too large to represent with computer arithmetic. IF.

so they may be able to solve a problem using far less total memory than the bundled Solver engines. 12. are sparse in that a typical constraint depends on only a small subset of the variables. and closing any Excel workbooks not needed to solve the problem. using the Solver Model dialog: 1. after you click the Solve button. or even when “Analyzing Solver Model. There is not enough memory available to solve the problem. This message appears when the Solver could not allocate the memory it needs to solve the problem. However.” “Diagnosing Problem Function” or “Setting Up Problem” appears on the Excel status bar. 3. and the hard disk activity light in your PC is flickering during the solution process. Set the On Solve option to No Action. 11.button instead of the Stop button in the Show Trial Solution dialog. But you should also consider whether re-scaling your model or adding constraints might reduce the total solution time required.000 variables and 2. say. closing programs that run in the System Tray. The large-scale Solver engines available for the Premium Solver Platform typically use sparse representations of your model. The Parser and Interpreter in the Premium Solver Platform can use a considerable amount of memory. and when you click the Formulas or Dependents buttons in the Solver Model dialog. when you solve a problem by clicking the Solve button. Address is the worksheet address of the cell (in Sheet1!$A$1 form) where the error was encountered. the Parser and Interpreter are not used and do not use any memory. You can save some memory by closing any Windows applications other than Excel. This message appears when the Parser first analyzes the formulas in your model. Error condition at cell address.000 constraints. these Solver engines will allocate memory for all 4 million possible dependencies of the constraints on the variables – so they are more likely to run out of memory. 2. any further problems are due to memory demands of the Solver engines. 2. Check the Sparse box in the Analyzer options group. Microsoft Excel and Windows. For a problem with. however. You can progressively reduce the memory used by the Parser and Interpreter by taking the following actions in order. Edit your formulas. before you see this message you are likely to notice that solution times have greatly slowed down. and Error condition is one of the following: OLE error Invalid token Unexpected end of formula Invalid array Invalid number Invalid fraction Invalid exponent Too many digits Real constant out of range Missing ( Missing ) Wrong number of parameters Type mismatch Code segment overflow Expression too long Symbol table full Circular reference External name Solver User Guide Diagnosing Solver Results • 117 . Most large problems. It also appears (without the second sentence) when you click Formulas or Dependents in the Solver Model dialog. or set the On Solve option to No Action in the Solver Model dialog. since Microsoft Windows supports a “virtual memory” much larger than your available RAM by swapping data to your hard disk. Note that the Solver engines bundled with the Premium Solver and the Premium Solver Platform use a dense representation of the problem. When On Solve = No Action. Set the On Solve option to Formulas.

Undefined identifier appears if you’ve used a name or identifier (instead of a cell reference such as A1) in a formula. Error in model. While the Parser and Interpreter do accept argument lists consisting of single selections. 118 • Diagnosing Solver Results Solver User Guide . perhaps one with no objective in the Set Cell edit box and no constraints other than bounds on the variables in the Constraints list box. can cause this message to appear. constraints. such as =SUM(A1:A5.C1:H1). either interactively or in a VBA program. This message means that the internal “model” (information about the variable cells. 13.C2:H2)). you’ll have to set On Solve = No Action to avoid using the Parser and Interpreter. and the Parser is unable to open those workbooks. Circular reference appears if Excel has already warned you about a circular reference in your formulas. Excel doesn’t consider this a circular reference. you should avoid using any defined names beginning with “solver” in your own application. If you’ve used “labels in formulas” and checked the box “Accept labels in formulas” on the Calculation tab of the Tools Options… dialog in Excel. Note: Result code 12 was formerly associated with the message “Another Excel instance is using SOLVER32. or for single arguments such as =SUMSQ((A1:A5.DLL. and it can also appear if you’ve used array formulas in a “potentially circular” way. if cells A1:A2 contain {=1+B1:B4} and cells B3:B4 contain {=1+A1:A4}. or if you’ve modified the values of certain hidden defined names used by the Solver. An “empty” or incomplete Solver model. Some of the messages you may encounter are described in the following paragraphs. or for better performance.C1:H1).Integer constant out of range Invalid expression Undefined identifier Range failure Multi-area not supported Non-smooth function Unknown function Loss of significance Many of these messages will never appear as long as you entered your formulas in the normal way through Microsoft Excel. (B1:B5.DLL. and that name was not defined using the Insert Name Define… or Insert Name Create… menu commands in Excel. Multi-area not supported or Missing ) appears if your formulas or defined names use multiple selections such as (A1:A5. The Parser and Interpreter do not support this use of labels in formulas – you’ll have to define these labels with the Insert Name Define… or Insert Name Create… commands. You should ensure that the external workbooks are in the same directory as the Solver workbook. move or copy the worksheets you need into the workbook containing the Solver model. Set Cell.) If you must use circular references in your model.” which does not occur in the modern versions of Excel and Windows supported by the Premium Solver and Premium Solver Platform. Try again later.) is not in a valid form.XLA or SOLVER32. but the Parser and Interpreter do. because Excel “validates” your formulas and displays its own error messages as soon as you complete formula entry. this message will appear. you’ll have to set On Solve = No Action. If you must use such multiple selections. Solver options. (For example. or else set On Solve = No Action to avoid using the Parser and Interpreter. Please verify that all cells and constraints are valid. To guard against this possibility. External name appears if your formulas use references to cells in other workbooks (not just other worksheets). You might also receive this message if you are using the wrong version of either SOLVER. they do not accept multiple selections for defined names.C1:H1). etc.

Solver found an integer solution within tolerance. You may increase the value in the Max Subproblems box. this message appears when (i) the Solver has found the maximum number of feasible solutions (values for the variables that satisfy all constraints) allowed by the Max Feasible Sols box on the Limit Options dialog tab and (ii) you clicked on the Stop button when the Solver displayed the Show Trial Solution dialog. If you are using the Evolutionary Solver. and whether you can add constraints to “tighten” the formulation. You may increase the value in the Max Feasible Sols box. this message appears when (i) the Solver has explored the maximum number of subproblems allowed in the Max Subproblems box on the Limit Options dialog tab and (ii) you clicked on the Stop button when the Solver displayed the Show Trial Solution dialog. If your problem includes many 0-1 or binary integer variables. But you should also consider whether the problem is formulated correctly. But you should also consider whether the problem is formulated correctly. All constraints are satisfied” (result code 0. Stop chosen when the max number of feasible [integer] subproblems was reached. and whether you can add constraints to “tighten” the formulation. this message appears when (i) the Solver has found the maximum number of integer solutions (values for the variables that satisfy all constraints. If you are using the Evolutionary Solver. You may increase the value in the Max Integer Sols box. the Premium Solver products will produce the message “Solver found a solution. If you are solving a mixed-integer programming problem (any problem with integer constraints) using one of the Premium Solver products. 16. All constraints are satisfied. or click on the Continue button instead of the Stop button in the Show Trial Solution dialog. 15. If you are using one of the other Solver engines on a problem with integer constraints. or click on the Continue button instead of the Stop button in the Show Trial Solution dialog to continue the solution process. see “The Integer Options Dialog Tab” in the chapter “Solver Options. the Branch & Bound method has found a solution satisfying the constraints (including the integer constraints) where the relative difference of this solution’s objective value from the true optimal objective value does not exceed the integer Tolerance setting. If all subproblems were explored (which can happen even with a non-zero Tolerance in some cases). this message appears when (i) the Solver has explored the maximum number of integer subproblems (each one is a “regular” Solver problem with additional bounds on the variables) allowed in the Max Subproblems box on the Integer Options dialog tab and (ii) you clicked on the Stop button when the Solver displayed the Show Trial Solution dialog. or click on the Continue button instead of the Stop button in the Show Trial Solution dialog to continue the solution process. including the integer constraints) allowed by the Max Integer Sols box on the Integer Options dialog tab and (ii) you clicked on the Stop button when the Solver displayed the Show Trial Solution dialog. you may benefit from the “Binary Integer Methods” options on the Integer Options dialog tab offered by the LP/Quadratic Solver engine in the Premium Solver Platform. (For more information.14. You may increase the value in the Max Subproblems box. the Branch & Bound method did not take the extra time to search all possible remaining subproblems to “prove optimality” for this solution. you Solver User Guide Diagnosing Solver Results • 119 . Stop chosen when the maximum number of feasible [integer] solutions was reached. If your problem includes many 0-1 or binary integer variables. with a non-zero value for the integer Tolerance setting on the Integer Options dialog tab. however. shown earlier in this section). If you are using one of the other Solver engines on a problem with integer constraints. or click on the Continue button instead of the Stop button in the Show Trial Solution dialog.”) This may actually be the true integer optimal solution.

For the Evolutionary Solver or the multistart methods. and you have checked the box “Require Bounds on Variables” in the Solver Options dialog (it is checked by default). this message appears if you have not defined lower and upper bounds on all of the decision variables in the problem. Solver converged in probability to a global solution. You must define bounds on all variables in order to use the Interval Global Solver. If a <= or >= constraint causes the conflict. If you are using the Evolutionary Solver or the multistart methods for global optimization. Variable bounds conflict in binary or alldifferent constraint. based on the number of subproblems solved and the number of locally optimal solutions found so far. All variables must have both upper and lower bounds. but they are a practical necessity if you want the Solver to find good solutions in a reasonable amount of time. Lower bounds of zero can be applied to all variables by checking the “Assume Non-Negative” box in the Solver Options dialog. The Bayesian test initially assumes that the number of locally optimal solutions to be found is equally likely to be 1. this message will also appear. the solution displayed on the worksheet is the best of these locally optimal solutions. If you are using the Interval Global Solver. This message appears if you have both a binary or alldifferent constraint on a decision variable and a <= or >= constraint on the same variable (that is inconsistent with the binary or alldifferent specification). such bounds are not absolutely required (you can uncheck the box “Require Bounds on Variables”). where the lower bound is greater than the upper bound. If you are using the multistart methods for global optimization. or if the same decision variable appears in more than one alldifferent constraint. and is probably the globally optimal solution to the problem. When the number of locally optimal solutions actually found so far is within one unit of the most probable total number of locally optimal solutions. non-zero lower bounds must be entered in the Constraints list box. variables in an alldifferent group always have a lower bound of 1 and an upper bound of N. an updated estimate of the most probable total number of locally optimal solutions is computed. and ensure that alldifferent constraints apply to non-overlapping groups of variables. but most Solver engines will detect this 120 • Diagnosing Solver Results Solver User Guide . After each run of the nonlinear GRG Solver or field-installable Solver engine. 20. … etc. with either the nonlinear GRG Solver or a field-installable nonlinear Solver engine (by checking the Global Optimization options in the appropriate Solver Options dialog). You should check that the binary or alldifferent constraint is correct. the multistart method stops and displays this message. 2. 3. and that the relative sizes of the regions containing each locally optimal solution follow a uniform distribution. You should add the missing bounds and try again. up to infinity. this message appears when the multistart method’s Bayesian test has determined that all of the locally optimal solutions have probably been found. the LGO Global Solver or the OptQuest Solver. the LGO Global Solver. 17. Lower and upper bounds on variables allow no feasible solution. 19. where N is the number of variables in the group. This message appears if you’ve defined lower and upper bounds on a decision variable. Upper bounds must be entered in the Constraints list box. or the OptQuest Solver.may benefit from the “Binary Integer Methods” options on the Integer Options dialog tab offered by the LP/Quadratic Solver engine in the Premium Solver Platform. Binary integer variables always have a lower bound of 0 and an upper bound of 1. remove it and try to solve again. This (obviously) means there can be no feasible solution. 18.

2] as well as real numbers. whether or not the Require Smooth box is checked in the Solver Model dialog. see “More on the Parser and Interpreter” in the chapter “Analyzing and Solving Models. but it can also return one of three custom result codes and messages. Interval Global Solver requires On Solve Automatic and strictly smooth functions. and display this message instead of “Solver could not find a feasible solution” to help you more quickly identify the source of the problem. In the course of seeking a solution. for which the derivative is undefined. Solver encountered an error computing derivatives. If you receive this message. and the On Solve option is set to No Action or Formulas (On Solve = Automatic is the same as On Solve = Dependents for this Solver). the lower and upper bounds on a given range of cells will appear consecutively in the Constraints list box (where they are sorted). automatic differentiation is somewhat more strict than finite differencing: As a simple example. IF. you must modify these formulas if you want to use the Interval Global Solver. or set On Solve to No Action in the Solver Model dialog. If you receive this message. 21. follow the steps in “Analyzing Model Exceptions” in the chapter “Analyzing and Solving Models” to pinpoint the exact cell formulas that are non-smooth. Consult Help on Derivatives. the Solver may have to evaluate a formula that (for example) involves division by an interval containing zero. Recall that the Interval Global Solver evaluates Excel formulas over intervals such as [1. which yield errors If you Solver User Guide Diagnosing Solver Results • 121 . or the square root of an interval containing negative values. 1001. If you have defined your bounds and other constraints in uniform blocks. that doesn’t require derivatives. (For more information. If you cannot modify your formulas to eliminate the non-smooth functions. and the Interpreter encounters an error when computing derivatives via automatic differentiation. such as the Evolutionary Solver or the OptQuest Solver. making it easy to spot the inconsistent bounds. Function cannot be evaluated for given real or interval arguments. But in general.condition before even starting the solution process. MAX. your options are to (i) use a Solver engine. This message appears if you select the Interval Global Solver engine and click Solve. as described below. 1000. MIN or SIGN non-smooth. but it won’t yield an error when On Solve = No Action and the Solver is using finite differencing. This message may appear (instead of “Solver encountered an error value…”) if the Interval Global Solver encounters an arithmetic operation or function that it cannot evaluate for the current values of the decision variables. Interval Global Solver Result Messages The Interval Global Solver can return many of the standard result codes and Solver Result Messages described above. or if your model contains any non-smooth functions. follow the steps in “Analyzing Model Exceptions” in the chapter “Analyzing and Solving Models” to pinpoint the exact cell formulas that are nonsmooth. or (ii) set On Solve = No Action and solve the problem using finite differencing.”) The most common cause of this message is a non-smooth function in your objective or constraints. =SQRT(A1) evaluated at A1=0 will yield this error message when the Solver is using automatic differentiation (since the derivative of the SQRT function is algebraically undefined at zero). The Interval Global Solver considers the ‘special’ functions ABS. This message appears when the Parser and Interpreter in the Premium Solver Platform are being used (On Solve = anything other than No Action).

After many such steps. you can check your model for scaling problems that arise in the middle of your Excel formulas by following the steps in “Reporting Scaling Problems” in the chapter “Analyzing and Solving Models. or adjusting the right hand sides of existing constraints to eliminate the problem. When this box is checked. the Solver rescales the values of the objective and constraint functions internally in order to minimize the effects of poor scaling. The effects may not be apparent to you. For example.” with results that are suboptimal or otherwise very different from your expectations. but when the Solver explores Trial Solutions with very large or small values for the variables. If you have the Premium Solver Platform. It can cause Solver engines to return messages such as “Solver could not find a feasible solution.” The effects of poor scaling in a large. you’ll have to go through each of your formulas and play “what-if” manually to identify such problems. Dealing with Poor Scaling Most Solver engines include a Use Automatic Scaling box in their Solver Options dialogs.” Problems with Poorly Scaled Models A poorly scaled model is one that computes values of the objective.receive this message. Because of the finite precision of computer arithmetic. But this can only help with the Solver’s own calculations – it cannot help with poorly scaled results that arise in the middle of your Excel formulas. and you’re experiencing results that may be due to poor scaling. This message indicates that the Interval Global Solver has systematically explored the solution space and has found a solution that is very probably the global optimum. subtracted. For example. the effects will be greatly magnified. try adding constraints.” “Solver could not improve the current solution. or intermediate results that differ by several orders of magnitude. given the initial values of the variables. this means that there is more than a tiny difference between this solution’s objective value and the best bound on the global optimum’s objective value that the Solver has been able to find. constraints. the Solver may detect or suffer from “numerical instability. Solution found.0001 instead.” If you have the Premium Solver.” Most often. 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. try a constraint such as $A$1 >= 0. or compared – in the user’s model or in the Solver’s own calculations – the result will be accurate to only a few significant digits. 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.” or even “The linearity conditions required by this Solver engine are not satisfied. if you have trouble with a constraint such as $A$1 >= 0. the actual numbers computed on your worksheet may range from perhaps 1 to 1. but not proven globally optimal. 1002. 122 • Diagnosing Solver Results Solver User Guide . if you express dollar amounts in units of (say) millions. For more information.000. when these values of very different magnitudes (or others derived from them) are added. see the discussion of “Interval Global Solver Stopping Conditions” in the section “Limitations on Global Optimization. complex optimization model can be among the most difficult problems to identify and resolve. but it has not been able to “prove global optimality.

this option was effective only for nonlinear problems solved with the GRG Solver. and then spends far more time exhaustively checking other possibilities to find (or verify that it has found) the very best integer solution. When you solve a mixed-integer programming problem (any problem with integer constraints) using the Simplex. the Solver’s linearity test (used when the “Assume Linear Model” box was checked) could be “fooled” by an all-linear.0. which can be reached from the Solver Options dialog.0 and 7. and for almost any kind of mathematical software. In similar cases. Because of this. The Tolerance Option and Integer Constraints Users who solve problems with integer constraints using the standard Excel Solver occasionally report that “Solver claims it found an optimal solution. In the Premium Solver products.” 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 Solver Options dialog. Since no automatic scaling method will work in all situations. GRG or Interval Global Solver. the Premium Solver products display a message “Solver found an integer solution within tolerance. Solver User Guide Diagnosing Solver Results • 123 . LP/Quadratic. XP.Historical Note on Scaling and Linearity Tests Poor scaling is an ever-present issue for the Solver.” In Excel 97. To ensure that the Solver finds the true integer optimal solution – possibly at the expense of far more solution time – set the integer Tolerance option to zero. the Use Automatic Scaling option is effective for all types of models. but I manually found an even better solution. The integer Tolerance default setting is a compromise value that often saves a great deal of time. 2000. culminating in the Premium Solver Platform’s tools for analyzing your model for scaling problems.05. but in Excel 5.” to avoid confusion. the solution process is governed by the integer Tolerance option on the Solver Options or Integer Options dialog tab. and still ensures that a solution found by the Solver is within 5% of the true optimal solution. it is still good practice to ensure that the model on your worksheet is well scaled – even if you do take advantage of the Use Automatic Scaling option. you may know of or be able to discover an integer solution that is better than the one found by the Solver.05 is that the solution process for integer problems – which can take a great deal of time in any case – often finds a near-optimal solution (sometimes the optimal solution) relatively quickly. and Excel 2003 and the Premium Solver products. look for the Tolerance edit box on the Integer Options dialog tab. Therefore. all of which employ the Branch & Bound method. The Use Automatic Scaling option has been available in the last five versions of the Solver in Microsoft Excel. and the Solver also uses a more robust test for linearity. Successive versions of the Solver have used increasingly sophisticated methods to deal with poor scaling. the Solver stops when it has found a solution satisfying the integer constraints whose objective is within 5% of the true integer optimal solution. Since the default setting of the Tolerance option is 0. The reason that the default setting of the integer Tolerance option is 0. but poorly scaled model – yielding the error message “The conditions for Assume Linear Model are not satisfied.

When the GRG Nonlinear Solver is selected in the dropdown list in the Solver Parameters dialog. as discussed above. when it is making very slow progress (the objective function is changing very little from one trial solution to another) or for other reasons. At best. and use the multistart method to automatically run the Solver from multiple starting points.Tucker (KKT) conditions for local optimality have been satisfied (to within a certain tolerance. it means that the GRG Solver has found a locally optimal solution – there is no other set of values for the decision variables close to the current values that yields a better value for the objective function. Since the Solver follows a path from the starting values (guided by the direction and curvature of the objective function and constraints) to the final solution values. it is a good idea to run the Solver starting from several different sets of initial values for the decision variables.” In the Premium Solver Platform. So you should always ensure that you have selected the right Solver engine for your problem. For more information on this topic. it will normally stop at a peak or valley closest to the starting values you supply. Mathematically. and what each of the possible Solver Result Messages means for this Solver engine. By starting from more than one point – ideally chosen based on your own knowledge of the problem – you can increase the chances that you have found the best possible “optimal solution. 124 • Diagnosing Solver Results Solver User Guide . the GRG Solver alone – like virtually all “classical” nonlinear optimization algorithms – can find a locally optimal solution to a reasonably well-scaled model. At times. the GRG (Generalized Reduced Gradient) algorithm is used to solve the problem – even if it is actually a linear model that could be solved by the (faster and more reliable) Simplex method. see the chapter “Solver Models and Optimization” or consult the books recommended in the Introduction. Figuratively. If your model has certain mathematical properties. but occasionally you will receive a Solver Result Message indicating some uncertainty about the status of the solution – especially if the model is poorly scaled. particularly Practical Management Science by Winston and Albright. When dealing with a nonlinear problem. and there are fewer guarantees about what the Solver can do. it is possible to make stronger guarantees about the nonlinear GRG Solver’s ability to find the globally optimal solution. this message means that the Karush . GRG Solver Stopping Conditions It is helpful to understand what the nonlinear GRG Solver can and cannot do. you can check the Global Optimization options in the Solver Options dialog for the nonlinear GRG Solver.Limitations on Smooth Nonlinear Optimization As discussed in the chapter “Solver Models and Optimization. related to the Precision setting in the Solver Options dialog).” nonlinear problems are intrinsically more difficult to solve than linear problems.Kuhn . this means that the Solver has found a “peak” (if maximizing) or “valley” (if minimizing) – but there may be other taller peaks or deeper valleys far away from the current solution. the Solver will stop before finding a locally optimal solution. The GRG method will usually find the optimal solution to a linear problem. such as a convex (or concave) objective function and convex constraints. Locally Versus Globally Optimal Solutions When the first message (“Solver found a solution”) appears.

GRG Solver with Multistart Methods The multistart methods for global optimization included in the Premium Solver Platform can overcome some of the limitations of the GRG Solver alone. the multistart method can improve upon this only by finding another starting point from which the GRG Solver can find a feasible solution. or fails to find a feasible point on a given run. More precisely. which yields the message “Solver cannot improve the current solution. It means that the model is degenerate and the Solver is probably cycling.” occurs only rarely. This means that the objective function value is changing very slowly for the last few iterations or trial solutions. When Solver Cannot Improve the Current Solution The third stopping condition. you can change the setting in the Convergence edit box to a smaller value such as 1E-5 or 1E-6. While the default value of 1E-4 (0. they will provide a reasonable degree of “coverage” of the space enclosed by the bounds on the variables. The issues involved are beyond the level of this User Guide. However. but they are not a panacea. by following a different path into the same region. and should be removed. The tighter the variable bounds you specify and the longer the Solver runs. the better the coverage. A poorly scaled model is more likely to trigger this stopping condition. the second message (“Solver has converged to the current solution”) appears. it may be too large for some models. the performance of the multistart methods is generally limited by the performance of the GRG Solver on the subproblems.0001) is suitable for most problems. you may need specialized consulting assistance. by more than three or four orders of magnitude. or from the decision variable values. The multistart methods will automatically run the GRG Solver (or a field-installable nonlinear Solver engine) from a number of starting points and will display the best of several locally optimal solutions found as the globally optimal solution. as well as most of the books recommended in the Introduction. If this suggestion doesn’t help and you cannot reformulate the problem.When Solver has Converged to the Current Solution When the GRG Solver’s second stopping condition is satisfied (before the KKT conditions are satisfied). Perhaps you can add constraints or use different starting values for the variables. but you should also consider why it is that the objective function is changing so slowly. Because the starting points are selected at random and then “clustered” together. even if the Use Automatic Scaling box in the Solver Options dialog is checked. the GRG Solver stops if the absolute value of the relative change in the objective function is less than the value in the Convergence box in the Solver Options dialog for the last 5 iterations. instead of continuing for more iterations until the KKT conditions are satisfied. One possibility worth checking is that some of your constraints are redundant. So it pays to design your model to be reasonably well scaled in the first place: The typical values of the objective and constraints should not differ from each other. If you are getting this message when you are seeking a locally optimal solution. try using the Interval Global Solver or the Evolutionary Solver. To go further with the GRG Solver. Solver User Guide Diagnosing Solver Results • 125 . or a better locally optimal solution. If the GRG Solver stops prematurely due to slow convergence. causing the GRG Solver to stop prematurely when this test is satisfied. so that the Solver does not get “trapped” in a region of slow improvement.

you can use the Interval Global Solver. Which choice should you use? Perhaps the best answer is “try them all. Limitations on Global Optimization With the Premium Solver Platform. If the GRG Solver stops prematurely due to slow convergence. and it is the only Solver engine that can “prove” that it has found the global optimum. the Premium Solver Platform forms the world’s best platform for global optimization. the molecule will be in that configuration most of the time. you’ll want the true global optimum because in nature. this may prevent the Branch & Bound method from finding the true integer optimal solution. consider using one of the field-installable nonlinear Solver engines for the Premium Solver Platform. whereas the Evolutionary Solver and the multistart methods for global optimization use nondeterministic methods. “Limitations on Non-Smooth Optimization. though it is designed primarily for non-smooth problems. if you’re seeking the minimum energy configuration of atoms in a molecule. In many cases this indicates that the globally optimal solution has been found – but you should always inspect and think about the solution. which involve an element of random chance. and consider whether you should run the GRG Solver manually from starting points selected based on your knowledge of the problem. 126 • Diagnosing Solver Results Solver User Guide . In most cases. you have several choices available for solving global optimization problems: You can use the nonlinear GRG Solver (or a fieldinstallable nonlinear Solver engine) with multistart methods. For example. this will tend to decrease the Bayesian estimate of the number of locally optimal solutions in the problem. see the following section. For more information on the multistart methods. Overall. or fails to find a feasible point on a given run.” Rounding and Possible Loss of Solutions The Interval Global Solver uses deterministic methods to search for the global optimum. However. causing the multistart method to stop relatively quickly. You can also try the LGO Global Solver. and possibly other field-installable Solver engines. or a “good” solution that’s better than what you’re using now. if you are unable to find a sufficiently good solution with this combination of methods. but it has a better chance than other methods of finding the true global optimum.” For more information on the Evolutionary Solver. the combination of the Branch & Bound method and the GRG Solver will at least yield a relatively good integer solution. the performance of the Branch & Bound method on nonlinear problems with integer constraints is limited by the performance of the GRG Solver on the subproblems. GRG Solver and Integer Constraints Like the multistart methods. “Limitations on Smooth Nonlinear Optimization. see “GRG Solver with the Multistart Method” in the previous section. and use the one that performs best on your model. OptQuest Solver. or you can use the Evolutionary Solver to seek global solutions to smooth nonlinear problems. the Interval Global Solver will find a “proven” global optimum. Given time. The Interval Global Solver may take longer to run.If the GRG Solver reaches the same locally optimal solution on many different runs initiated by the multistart method. This section describes the characteristics and limitations of global optimization with the Interval Global Solver.” But you may favor the new Interval Global Solver if it’s important to you to find the true global optimum – not just a “better” local optimum.

And its methods.” When Solver Cannot Find a Feasible Solution When the Interval Global Solver reports that “Solver could not find a feasible solution. It is possible to use interval methods. fail to find a feasible solution. But it has been shown that the simplest possible global optimization problem – a quadratic programming problem in the general case (where the objective may be indefinite. The ideal of finding globally optimal solutions with rigorous guarantees is no doubt achievable for problems of low dimension (with a small number of variables). At best. and it would have to spend a great deal of time processing large numbers of very small “boxes” to rigorously verify that they don’t contain possible solutions. and what each of the possible Solver Result Messages means for this Solver engine. combined with “directed rounding” of floating point arithmetic operations at the machine level. but this is subject to limitations due to roundoff error. or “lose” real solutions of a system of nonlinear equations. as discussed above under “Rounding and Possible Loss of Solutions. Much of the total solution time may be spent doing this. The Interval Global Solver trades off rigorous guarantees of finding the globally optimal solution in favor of fast solution times on realistic size problems. The Evolutionary Solver and multistart methods have no way to “prove” that the global optimum has been found. Frontline Systems has not yet seen or constructed an example problem where the Interval Global Solver actually “loses” a solution that turns out to be the global optimum. are very effective at finding the true global optimum. and there may be many locally optimal points at the constraint boundaries) – is NPhard. you are likely to receive a Solver Result Message such as “Solution found. But at times. it is very likely – though not 100% certain – that no feasible solution exists. or unable to find a feasible solution. And the words “proven” and “prove” are in quotes because they are subject to limitations due to roundoff error. unable to improve the current solution in a reasonable amount of time. the Solver has not been able to verify that it has found the true global optimum.and it will find all real solutions to a system of nonlinear equations (subject to the limitations described here). while not rigorous. the Solver will be unable to “prove” that the solution is globally optimal.” and you have allowed the Solver to run without interruption until this message appears. even those involving ordinary real numbers (which must be enclosed in narrow intervals). Interval Global Solver Stopping Conditions It is helpful to understand what the Interval Global Solver can and cannot do. for various reasons. or all real solutions to a system of equations will be found. because of roundoff error that arises from the use of finite precision computer arithmetic. But to do this. This is more likely to occur for solution(s) found at or very close to the boundaries of constraints. to eliminate the possibility of roundoff error. the Interval Global Solver will find a “proven” globally optimal solution to a reasonably well-scaled smooth nonlinear optimization problem – in a reasonable amount of time. As a practical matter. the Interval Global Solver can “lose track of” potential solutions that might prove to be the global optimum. meaning that the solution time is very likely to grow exponentially with the number of decision variables. the Interval Global Solver would have to use interval arithmetic and directed rounding for all arithmetic operations. But in rare cases. The Interval Global Solver is designed to “prove feasibility” as well as global optimality. Solver User Guide Diagnosing Solver Results • 127 . but not proven globally optimal” or “Solver cannot improve the current solution” in situations where. In fact. and rigorously guarantee that the globally optimal solution.

and the Branch & Bound process may require thousands of such runs. however.” Interval Global Solver and Integer Constraints As with the nonlinear GRG Solver. Limitations on Non-Smooth Optimization As discussed in the chapter “Solver Models and Optimization. When the Interval Solver finishes processing the list of boxes. in the amount of time specified by the Max Time without Improvement option in the Solver Options dialog. but the above two conditions are not met. it returns the message “Solution found. and you are willing to spend more solution time to have a better chance of “proving” global optimality. (i) the bounded intervals for each decision variable are smaller than the Accuracy value in the Solver Options dialog. In most cases. the combination of the Branch & Bound method and the Interval Global Solver will at least yield a relatively good integer solution. the boxes that remain each enclose a locally optimal solution. in the box enclosing the best solution. and (ii) the objective value in this box differs from the best known bound on the globally optimal objective by no more than the Accuracy value. and improving a known bound on the globally optimal objective function value.” non-smooth problems – where the objective and/or constraints are computed with discontinuous or non-smooth Excel functions – are the most difficult types of optimization problems to solve.” it means that the Solver has not found an “improved global solution” (a feasible solution with an objective value better than the currently best known solution). When Solver Cannot Prove Global Optimality As described in “Global Optimization” in the chapter “Solver Models and Optimization. this may prevent the Branch & Bound method from finding the true integer optimal solution. increase the value of the Max Time without Improvement option. if any. the Interval Global Solver makes further tradeoffs in favor of fast solutions rather than guarantees of finding the global optimum on each run.” the Interval Global Solver processes a list of “boxes” that consist of bounded intervals for each decision variable. when it is solving a problem with integer constraints. There are few. and the best of these is chosen as the globally optimal solution. INT and 128 • Diagnosing Solver Results Solver User Guide . MIN and MAX. progressively subdividing and “shrinking” them. If you receive this message. or fail to find a feasible point when one exists on a given run. the performance of the Branch & Bound method on nonlinear global optimization problems with integer constraints is limited by the performance of the Interval Global Solver on the subproblems. Eventually. Since a single global optimization run can take a great deal of time. Common non-smooth functions in Excel are ABS. but not proven globally optimal. Other common discontinuous functions are CHOOSE. The most common discontinuous function in Excel is the IF function where the conditional test is dependent on the decision variables. but the search space has not been fully explored. and COUNT. If the Interval Global Solver should fail to find the globally optimal solution.When Solver Cannot Improve the Current Solution When the Interval Global Solver reports that “Solver cannot improve the current solution. the LOOKUP functions. The Interval Solver returns “Solver found a solution” (result code 0) when it determines that. The reported solution is the best one found so far. guarantees about what the Solver (or any optimization method) can do with these problems.

to ensure that you understand what the various messages say about your model. so these caveats apply whenever you try to solve a non-smooth problem. The Premium Solver behaves at all times like the Premium Solver Platform with On Solve = No Action. and CEILING and FLOOR. you’ll likely receive the message “Solver encountered an error computing derivatives. your simplest course of action is to use the Evolutionary Solver to find a “good” solution. If your optimization problem contains discontinuous or non-smooth functions. MIN or SIGN) using the GRG Solver. but you should be aware of the effects of non-smooth functions on these Solver engines. If you try to solve a problem with non-smooth or discontinuous functions with the linear Simplex Solver (using On Solve = No Action in the Premium Solver Platform). you’ll also receive this message for models that use the ‘special functions. are nonsmooth. For more information on this subject. (For more information. see “More on the Parser and Interpreter” in the chapter “Analyzing and Solving Models. You should read the section “Evolutionary Solver Stopping Conditions” below and the discussion earlier in this chapter of specific Solver Result Messages. MAX. it cannot guarantee that any solution it finds to such a problem is truly optimal. You can use discontinuous functions such as IF and CHOOSE in calculations on the worksheet that are not dependent on the decision variables. read the section “Non-Smooth Functions” in the chapter “Solver Models and Optimization. You can try using the nonlinear GRG Solver. this Solver engine requires smooth nonlinear functions for the objective and constraints. Users sometimes fail to realize that certain functions.” Effect on the GRG and Simplex Solvers A smooth nonlinear solver. (This probably means that the functions are linear over the range considered by the linearity test – but there are no guarantees at all that the solution found is optimal!) Solver User Guide Diagnosing Solver Results • 129 .” If you check the Require Smooth box in the Solver Model dialog. the GRG Solver can sometimes deal with discontinuous or non-smooth functions that are “incidental” to the problem. Since it is unable to compute the gradient of a function at points where the function is discontinuous. Functions such as SUMIF and the database functions are discontinuous if the criterion or conditional argument depends on the decision variables. it is possible – though very unlikely – that the linearity test performed by the Solver will not detect the discontinuities and will proceed to try to solve the problem. relies on derivative or gradient information to guide it towards a feasible and optimal solution. the Interpreter will compute derivatives of the problem functions using automatic differentiation.ROUND. but as a general statement. IF. which are summarized below. such as ABS and ROUND. or even the linear Simplex Solver. or to compute curvature information at points where the function is non-smooth.’ You can still solve your model with the On Solve option set to No Action – but only with the caveats noted above. on problems of this type. In practice. If you are using the Premium Solver Platform with default settings. and are therefore constant in the optimization problem.”) If you try to solve a problem with non-smooth or discontinuous functions (other than the ‘special functions’ ABS. such as the GRG Solver. But any discontinuous functions that do depend on the variables make the overall Solver model non-smooth.

At best. it may also mean that the population has lost diversity – a common problem in genetic and evolutionary algorithms – and hence the evolutionary algorithm is unable to generate new and better solutions through mutation or crossover of current population members. the heuristic stopping rules discussed below may cause the Solver to stop at an appropriate time and report this solution. and what each of the possible Solver Result Messages means for this Solver engine. When you use the Evolutionary Solver. This condition may mean that the Solver has found a globally optimal solution – if so. When Solver has Converged to the Current Solution This message means that the “fitness” of members of the current population of trial solutions is changing very slowly. You may also find that starting the GRG Solver from the point where the Evolutionary Solver stops will yield a better (sometimes much better) solution. But the Evolutionary Solver will not be able to tell you that this solution is optimal. which increases the chances of a diverse population. it actually has no concept of an “optimal solution. percentage) difference is less than the Convergence tolerance in the Solver Options dialog. In this latter case.e. Because the Evolutionary Solver does not rely on derivative or gradient information. on models with a limited number of variables and constraints. Instead. the Evolutionary Solver – like other genetic or evolutionary algorithms – will be able to find a good solution to a reasonably well-scaled model. if you keep the resulting solution and restart the Evolutionary Solver.” or any way to test whether a solution is optimal. better member of the population whose “fitness” represents a relative (percentage) improvement over 130 • Diagnosing Solver Results Solver User Guide . you may find – like other users of genetic and evolutionary algorithms – that you spend a lot of time running and re-running the Solver. or else when it exceeds a limit on computing time or effort that you’ve set. or to run the Evolutionary Solver again with a larger Population Size and/or an increased Mutation Rate. smoothness or convexity) of the objective and the constraints. it will find an even better solution. This is an inescapable consequence of using a Solver engine that makes few or no assumptions about the nature of the problem functions. trying to find better solutions. you may very well find that. the Evolutionary Solver stops and returns a solution either when certain heuristic rules (discussed below) indicate that further progress is unlikely. less fit members) will tend to “crowd around” this solution. When the Evolutionary Solver stops. the Evolutionary Solver stops if 99% or more of the members of the population have “fitness” values whose relative (i. new members of the population (that replace other. You can never be sure whether you’ve found the best solution.Evolutionary Solver Stopping Conditions It is helpful to understand what the Evolutionary Solver can and cannot do. More precisely. it cannot determine whether a given solution is optimal – so it never really knows when to stop. It may sometimes find the true optimal solution. The Evolutionary Solver knows only that a solution is “better” in comparison to other solutions found earlier. on such models. or what the payoff might be of running the evolutionary algorithm for a longer time. “Good” Versus Optimal Solutions The Evolutionary Solver makes almost no assumptions about the mathematical properties (such as continuity. When Solver Cannot Improve the Current Solution This message means that the Solver has been unable to find a new. it may help to interrupt the Solver with the ESC key and click the Restart button (which replaces the worst half of the population with newly sampled points). Because of this. However.

you may be able to obtain a significantly better solution with the other Solver engines. but will tend to increase the diversity of the population and the portion of the search space that is explored. restart the Evolutionary Solver from that solution. or even an integer linear problem. and still obtain “good” solutions – but as we suggested in the Introduction. and to know with some certainty whether or not you have found the optimal solution. Solver User Guide Diagnosing Solver Results • 131 . The Evolutionary Solver allows you to spend less time analyzing the mathematical properties of your model. switch to the GRG Solver and start it from that solution. The chapter “Building Large-Scale Models” describes many techniques you can use to replace non-smooth functions with smooth nonlinear or integer linear expressions. Keep the resulting solution. this may indicate that you have found an optimal solution.the current best member’s fitness of more than the Tolerance value on the Limit Options dialog tab. 3. If the GRG Solver displays the message “Solver found a solution.” you may have found at least a locally optimal point (but remember that this test depends on smoothness of the problem functions). Since optimization tends to drive the variable values to extremes. Evaluating a Solution Found by the Evolutionary Solver Once you have a solution from the Evolutionary Solver. This will take more time. With enough work. and if the Standard Deviations are small. you will appreciate its ability to find “good” solutions to previously intractable optimization problems. if the solution is feasible and the Best Values are close to the Maximum or Minimum Values listed in the Population Report. what can you do with it? Here are some ideas: 1. it is not a panacea. This will also take more time. As you work with the Evolutionary Solver. this may be reason for confidence that your solution is close to the global optimum. if it is unable to make that much progress in the time you’ve specified. 5. Select and examine the Population Report. Tighten the Convergence and Tolerance values. increase the Max Subproblems and Max Feasible Sols values. Keep the resulting solution. Increase the Population Size and/or the Mutation Rate. but will allow the Solver to explore more possibilities. the Solver will stop and report the best solution found. 4. and see if it is able to find an even better solution in a reasonable length of time. in the amount of time specified by the Max Time without Improvement option in the same dialog. If your problem is large. If the Best Values are similar from run to run of the Evolutionary Solver. and restart the Evolutionary Solver. you may want to invest more effort to formulate a model that satisfies the requirements of a smooth nonlinear optimization problem. and see if it finds the same or a better solution. Under this heuristic stopping rule. or if the payoff from a true optimal solution is significant. 2. the Evolutionary Solver will continue searching for better solutions as long as it is making the degree of progress that you have indicated via the Tolerance value. but you will also come to appreciate its limitations. and restart the Evolutionary Solver.

we’ll describe the options specific to the linear Simplex and LP/Quadratic Solvers. All of the options in this dialog – with the exception of the Assume Linear Model check box. this option is replaced by the Solver engine dropdown list in the Premium Solver products. and control features like the display of iteration results. XP and Excel 2003. you should change these settings only when necessary. the Interval Global 132 • Solver Options Solver User Guide . We’ll include the Assume Linear Model option. 2000. used only in the standard Excel Solver. Bear in mind that the options that control numerical tolerances and solution strategies are pre-set to the choices that are most appropriate for the majority of problems. Limits. Integer and Problem tabs) for the Premium Solver and Premium Solver Platform. The Standard Microsoft Excel Solver There is just one Solver Options dialog displayed by the standard Microsoft Excel Solver. The options you will use most often are common to all the Solver products. discussed later in this chapter – are also present in one of the options dialogs for the Premium Solver and the Premium Solver Platform. Next. the nonlinear GRG Solver (including the multistart methods). and in the Solver Options dialogs (General. containing options for both the linear Simplex Solver and the nonlinear GRG Solver engines. after carefully reading this chapter. You may also wish to consult the description of standard Solver options in online Help for Microsoft Excel. This dialog box is depicted below. as it appears in Excel 97. We will first discuss the options common to all Solver engines.Solver Options This chapter describes the options available in the Solver Options dialog for the standard Microsoft Excel Solver. or the upper limits on solution time or Solver iterations.

For problems with integer constraints. you should hold down the ESC key for a second or two. Finally. If you click on the Continue button. and you will not be prompted again. you can simply press the ESC key while the Solver is running. in order to solve larger problems. including problem setup time and time to find the optimal solution. After a momentary delay. and you will have the option to stop at that point or continue or restart the solution process.147. the most recent Trial Solution is reported on the Excel status bar. we’ll discuss the options on the Limits.483. If your model is large enough to take some time to recalculate even once. In the Premium Solver products. The value in the Iterations edit box determines the maximum number of iterations (“pivots” for the Simplex Solver. they are 32-bit integers and may be as large as 2. The default value is 100 iterations. the time or iteration limit is removed. or major iterations for the GRG Solver) that the Solver may perform on one problem. the dialog box shown on the next page will appear. the Iterations setting determines the maximum number of iterations for any one subproblem. The default value is 100 seconds. and Problem tabs in the Solver Options dialogs. A new “Trial Solution” is generated on each iteration. Common Solver Options Max Time and Iterations The value in the Max Time edit box determines the maximum time in seconds that the Solver will run before it stops. these settings are limited to 16bit integers. with a maximum value of 32767.647 – enough time in seconds to allow the Solver to run for 68 years! Bear in mind that if the maximum time or maximum number of iterations is exceeded. Users of the Premium Solver and Premium Solver Platform will most likely want to increase the Max Time and Iterations settings from their default values. Integer. Solver User Guide Solver Options • 133 . and the Evolutionary Solver. For problems with integer constraints. used to control the Evolutionary Solver and advanced methods for integer programming problems. There is really no downside to specifying quite a large value for the Max Time or Iterations setting: If you ever get impatient.Solver. In the standard Excel Solver. this is the total time taken to solve all subproblems explored by the Branch & Bound method. the Solver will stop and display a dialog like the one below: You will have the option to stop at that point or to continue the solution process.

0E-7 would satisfy a constraint such as A1 >= 0. this option appears on the Integer Options dialog tab. If your constraints are not being satisfied because the values you are calculating are very large (say in millions or billions of dollars). the variable value is treated as an integer.Precision The number entered here determines how closely the calculated values of the constraint left hand sides must match the right hand sides in order for the constraint to be satisfied. A1:A5 = binary or A1:A5 = alldifferent. it appears in the Options dialogs for the Evolutionary Solver and the GRG Solver (only). since the finite precision of computer arithmetic virtually ensures that the values calculated by Microsoft Excel and the Solver will differ from the expected or “true” values by a small amount. or checking the Use Automatic Scaling box instead of altering the Precision setting. Tolerance and Convergence The Tolerance option determines how close a “candidate” integer solution must be to the true integer optimal solution before the Solver stops. 134 • Solver Options Solver User Guide . setting the Precision to a much larger value would cause constraints to be satisfied too easily. consider adjusting your formulas and input data to work in units of millions. Precision and Regular Constraints Use caution in making this number much smaller.000001) to 1. Generally. The Convergence option controls the stopping conditions used by the GRG Solver and the Evolutionary Solver that lead to the message “Solver has converged to the current solution. a calculated left hand side of -1. With the default setting of 1.” In the Premium Solver and Premium Solver Platform. this setting should be kept in the range from 1. Recall from “Elements of Solver Models” in the chapter “Solver Models and Optimization” that a constraint is satisfied if the relation it represents is true within a small tolerance. is satisfied.0E-6 (0. such as A1:A5 = integer.0E-4 (0.000001). the Precision value is that tolerance. In the Premium Solver and Premium Solver Platform.0E-6 (0. it is described more fully in a later section focusing on options for integer problems.0001). On the other hand. It is described more fully in later sections focusing on options for these Solver engines. If the difference between the decision variable’s value and the closest integer value is less than the Precision setting. Precision and Integer Constraints Another use of Precision is determining whether an integer constraint.

For more information. the Solver engine to be used is selected from a dropdown list in the main Solver Parameters dialog. or alldifferent constraints in the Constraints list box of the Solver Parameters dialog will be given a lower bound of zero when the problem is solved. A poorly scaled model is one that computes values of the objective. it performs tests to verify that the objective and constraints are. constraints. the Solver will attempt to scale the values of the objective and constraint functions internally in order to minimize the effects of a poorly scaled model. If you choose the Simplex (or LP/Quadratic) Solver.” Note: In older versions of Microsoft Excel (prior to Excel 97).” Note: If you are using an older version of Microsoft Excel. and will display the Solver Results dialog with the message “The linearity conditions required by this Solver engine are not satisfied. in fact. Solver User Guide Solver Options • 135 . the Assume Linear Model check box controls the choice of the linear Simplex Solver or the nonlinear GRG Solver: When it is checked. in modern versions of Microsoft Excel and in the Premium Solver products) and displays the Solver Results dialog with the message “The conditions for Assume Linear Model are not satisfied:” In the Premium Solver and Premium Solver Platform. or intermediate results that differ by several orders of magnitude. due to the effects of finite precision computer arithmetic. and the Assume Linear Model check box is not used. The box is labeled “Assume Linear Model” because the Solver initially assumes that your model is made up entirely of linear functions for the objective and constraints. please see the “Historical Note on Scaling and Linearity Tests” in the chapter “Diagnosing Solver Results. see “Problems with Poorly Scaled Models” in the chapter “Diagnosing Solver Results. binary.” and “Reporting Scaling Problems” in the chapter “Analyzing and Solving Models. the Solver will test your objective and constraint functions for linearity as described above. this option is effective only for nonlinear optimization problems solved with the GRG Solver.” Assume Non-Negative When this box is checked. Poorly scaled models may cause difficulty for both linear and nonlinear solution algorithms. the Solver stops (usually before starting any Trial Solutions. behaving as linear functions of the variables. but as it recalculates the worksheet. the Simplex Solver is used. This option has no effect for decision variables that do have explicit >= constraints. any decision variables that are not given explicit lower bounds via >=. even if those constraints allow the variables to assume negative values. It solves the problem using the Simplex Solver. Use Automatic Scaling When this box is checked. If these tests are not satisfied to within a close tolerance. otherwise the GRG Solver is used.Assume Linear Model In the standard Microsoft Excel Solver.

it is also supported by many field-installable Solver engines that can solve problems with tens of thousands of variables and constraints. which may be displayed later with the Microsoft Excel Scenario Manager.” i.e. The effectiveness of the Automatic Scaling option depends on how well these starting values reflect the values encountered during the solution process. see the section “During the Solution Process” in the chapter “Diagnosing Solver Results. the Solver always performs extra computations to prepare for the possibility that you will select one or more reports from the Solver Results dialog. Show Iteration Results When this box is checked. or the Restart button to restart (and then continue) the solution process. unless this box is checked.” Bypass Solver Reports This check box is a “Common Solver Option” in the Premium Solver products. the Reports list box will be greyed out in the Solver Results dialog. but when the Show Iteration Results box is checked it appears automatically on every iteration.. You may also click on the Save Scenario. Interval Global Solver. it appears in the Solver Options dialogs shown below for the Simplex or LP/Quadratic Solver. GRG Solver. the best values so far for the decision variables appear on the worksheet. You may click the Continue button to go on with the solution process. make sure that the initial values for the decision variables are “reasonable. especially if you have taken other steps (such as using the functions recognized for fast problem setup) to ensure the best possible solution times. and Evolutionary Solver. the extra computations are skipped. button to save the current decision variable values in a named scenario.. a dialog like the one below will appear on every iteration during the solution process: This is the same dialog that appears when you press ESC at any time during the solution process. In the Premium Solver Platform. You can use it to save time during the solution process if you do not need the reports for the current solution run.If your model is nonlinear and you check the Use Automatic Scaling box. When this dialog appears. The reports are selected from the Solver Results dialog at the end of the solution process. the Stop button to stop immediately. It is not unusual for the extra report-related computations to take as much time as the entire solution process. and you will not be able to select any reports for this run. The Bypass Solver Reports option can make a significant difference in your total solution time. 136 • Solver Options Solver User Guide . especially when you are solving larger models. For more information on this dialog and the effect of the Restart button. of roughly the same magnitudes that you expect for those variables at the optimal solution. When this box is checked. which is recalculated to show the values of the objective function and the constraints.

These dialogs contain all of the Common Solver Options discussed earlier. which are used by the Simplex Solver. and (in the Premium Solver Platform) the Derivatives option.LP/Quadratic Solver Options In the Premium Solver V5. if the linear Simplex Solver is selected from the Solver engine dropdown list. In Version 5. and Problem. the Solver Options dialog shown below is displayed. the Solver Options dialog shown below is displayed. which is used by the LP/Quadratic Solver. Limits or Integer.5.0. if the LP/Quadratic Solver is selected from the Solver engine dropdown list. Solver User Guide Solver Options • 137 .5. plus the Pivot Tolerance and Reduced Cost Tolerance. In the Premium Solver Platform V5. the options for each Solver engine are grouped on dialog tabs labeled General.

the method used for finite differencing is determined by the setting of the Derivatives choice. Derivatives for the Quadratic Solver When a quadratic programming (QP) problem – one with a quadratic objective and all linear constraints – is solved with the LP/Quadratic Solver.Pivot Tolerance The Simplex method looks for a non-zero matrix element to pivot upon in its basic iteration.” In the Premium Solver Platform. Forward differencing uses the point from the previous iteration – where the problem function values are already known – in conjunction with the current point. these derivatives may be computed via automatic differentiation or via finite differencing. and the setting of the Derivatives choice is ignored. and in the Premium Solver Platform when On Solve = No Action. only finite differencing is available. when you are using the Parser and Interpreter (i. and perturbs the decision variables in opposite directions from that point. exact derivative values are computed. In the Premium Solver Platform. when the nonlinear GRG Solver is selected from the Solver engine dropdown list in the Solver Parameters dialog.0. For more information. when On Solve = anything other than No Action). In the Premium Solver.) GRG Solver Options In the Premium Solver V5. see the section “More on the Parser and Interpreter” in the chapter “Analyzing and Solving Models. Reduced Cost Tolerance The Simplex method looks for a variable to enter the basis that has a negative reduced cost. the quadratic Solver extension requires first or second partial derivatives of the objective function at various points. a Solver Options dialog like the one shown on the next page will be displayed. The candidates are only those variables that have reduced costs less than the negative value of this tolerance. automatic differentiation is used. the Central differencing choice yields essentially exact (rather than approximate) derivative values. and the Options button is clicked.e. For QP problems. (In the Premium Solver Platform. 138 • Solver Options Solver User Guide . Any matrix element with absolute value less than this tolerance is treated as zero for this purpose. which can improve solution accuracy and reduce the total number of iterations. In the Premium Solver. however each iteration may take up to twice as long as with Forward differencing. Central differencing relies only on the current point. automatic differentiation is much faster than either Forward or Central differencing.

In the Premium Solver Platform. plus several options specific to the GRG Solver. the options for each Solver engine are grouped on dialog tabs labeled General. This dialog contains all of the Common Solver Options discussed earlier. Limits or Integer. the Solver Options dialog shown below is displayed for the GRG Solver.5. the Global Optimization options group and the Solver User Guide Solver Options • 139 .5. which are described in this section. and Problem.In the Premium Solver Platform V5. In Version 5.

140 • Solver Options Solver User Guide . if any of these values has changed. checking this box will not save any time. when the Parser and Interpreter are used (which is the default).0001) is suitable for most problems.0E-4 (0. If you are getting this message when you are seeking a locally optimal solution.Population Size and Random Seed edit boxes also appear in this dialog. Hence the partial derivatives of the problem functions with respect to these variables are constant. you should first consider other alternatives such as improved scaling before attempting to fine-tune them. because partial derivatives are computed via automatic differentiation rather than finite differencing. these options are described in the next section.” the GRG Solver will stop and display the message “Solver has converged to the current solution” when the objective function value is changing very slowly for the last few iterations or trial solutions.0E-6.” If you receive this message. causing the GRG Solver to stop prematurely when this test is satisfied. But in many such problems. Perhaps you can add constraints or use different starting values for the variables. As explained in the chapter “Solver Models and Optimization. hence that their partial derivatives remain constant. “Multistart Search Options. you should uncheck the Recognize Linear Variables box and re-solve the problem. the partial derivatives are recomputed and compared to the assumed constant values.” a Solver problem is nonlinear (and must be solved with the GRG Solver engine) if the objective or any of the constraints is a nonlinear function of even one decision variable. In some scientific and engineering applications. you can change the setting in the Convergence box to a smaller value such as 1. and in the Premium Solver Platform when the Parser and Interpreter are not used (On Solve = No Action). instead of continuing for more Trial Solutions until the optimality (KKT) conditions are satisfied. At the solution. The fieldinstallable Large-Scale GRG Solver and Large-Scale SQP Solver engines are designed to take advantage of information provided by the Parser and Interpreter. some of the variables occur linearly in the objective and all of the constraints. In the Premium Solver Platform. the Solver will display the message “The linearity conditions required by this Solver engine are not satisfied. More precisely.” The default choices for these options are suitable for the vast majority of problems. but you should also consider why it is that the objective function is changing so slowly.0E-5 or 1. although it generally won’t hurt to change these options. While the default value of 1. Recognize Linear Variables This check box activates an “aggressive” strategy to speed the solution of nonlinear problems that may be useful in the Premium Solver. and need not be re-computed on each iteration. the GRG Solver will look for variables whose partial derivatives are not changing over several iterations. the GRG Solver stops if the absolute value of the relative change in the objective function is less than the value in the Convergence edit box for the last 5 iterations. and then will assume that these variables occur linearly. alternative choices may improve the solution process. so that the Solver does not get “trapped” in a region of slow improvement. If you check the Recognize Linear Variables box. Convergence As discussed in the chapter “Diagnosing Solver Results. and will exploit partial linearity in the problem functions much more effectively than the GRG Solver with the Recognize Linear Variables option. it may be too large for some models.

If the current reduced objective is well modeled by a quadratic. If you have no special information about the behavior of this function. when you are using the Parser and Interpreter (i.e. the GRG Solver requires values for the gradients of the objective and constraints (i. Central differencing relies only on the current point. In the Premium Solver Platform. and the setting of the Derivatives choice is ignored. Forward differencing (the default choice) uses the point from the previous iteration – where the problem function values are already known – in conjunction with the current point. The GRG (Generalized Reduced Gradient) solution algorithm proceeds by first “reducing” the problem to an unconstrained optimization problem.e. The Search option is concerned with how this search direction is determined. where n is the number of nonbasic variables) is chosen along which an improvement in the objective function will be sought. and perturbs the Solver User Guide Solver Options • 141 . Derivatives and Search options can be used for most problems. Derivatives On each major iteration. Once a search direction is chosen. then the Quadratic option can save time by choosing a better initial point. only finite differencing is available.” Note: the Quadratic choice here has no bearing on quadratic programming problems. If you’d like to change these options to improve performance on your model. The Estimates option is concerned with how these estimates are obtained. when On Solve = anything other than No Action). Estimates This option determines the approach used to obtain initial estimates of the basic variable values at the outset of each one-dimensional search. For more information. On each major iteration. Then a search direction (a vector in n-space. The initial estimates for values of the variables that are being varied have a significant impact on the effectiveness of the search. The Quadratic choice extrapolates the minimum (or maximum) of a quadratic fitted to the function at its current point. and in the Premium Solver Platform when On Solve = No Action. the Tangent choice is “slower but surer. the GRG Solver requires values for the gradients of the objective and constraints (i. by solving a set of nonlinear equations for certain variables (the “basic” variables) in terms of others (the “nonbasic” variables). the Jacobian matrix). consult the academic papers on the GRG method listed at the end of the Introduction.Derivatives and Other Nonlinear Options The default values for the Estimates. For more information.e. the Jacobian matrix). varying a step size in an effort to improve the reduced objective. highly accurate derivative values are computed. In the Premium Solver. these derivatives may be computed via automatic differentiation or via finite differencing. The Derivatives option is concerned with how these partial derivatives are computed. which requires fewer subsequent steps in each line search. this section will provide some general background on how they are used by the GRG Solver. a one-dimensional “line search” is carried out along that direction. The Tangent choice uses linear extrapolation from the line tangent to the reduced objective function. automatic differentiation is used. the method used for finite differencing is determined by the setting of the Derivatives choice. In the Premium Solver.” In the Premium Solver Platform. see the section “More on the Parser and Interpreter” in the chapter “Analyzing and Solving Models.

which maintains an approximation to the Hessian matrix. This requires up to twice as much time on each iteration. by computing the Hessian matrix of second partial derivatives of the problem functions. automatic differentiation is much faster than either Forward or Central differencing. The alternative choice Conjugate uses a conjugate gradient method. this would roughly square the number of worksheet recalculations required to solve the problem.) Search It would be expensive to determine a search direction using the pure form of Newton’s method. since the GRG solver is capable of switching automatically between the quasi-Newton and conjugate gradient methods depending on the available storage. as shown below: 142 • Solver Options Solver User Guide . a direction is chosen through an estimation method.) Instead. (In the Premium Solver Platform. Multistart Search Options This section discusses the Global Optimization options group and the Population Size and Random Seed edit boxes that appear in the Solver Options dialog for the GRG Solver in the Premium Solver Platform. this requires more storage (an amount proportional to the square of the number of currently binding constraints) but performs very well in practice. (In the Premium Solver. The default choice Newton uses a quasi-Newton (or BFGS) method. and hence fewer total iterations. which does not require storage for the Hessian matrix and still performs well in most cases. The choice you make here is not crucial. but it may result in a better choice of search direction when the derivatives are rapidly changing.decision variables in opposite directions from that point.

the multistart methods can still be used. which will automatically run the GRG Solver (or certain field-installable Solver engines) from a number of starting points in order to seek the globally optimal solution. If this box is unchecked. Determining the topography takes extra computing time. but because the random sample must be drawn from an “infinite” range of values. so that you will be automatically reminded to include both upper and lower bounds on all of the variables whenever you select Multistart Search. If you do not specify both upper and lower bounds on each of the decision variables. This method uses the objective value computed for the randomly sampled starting points to determine a “topography” of overall “hills” and “valleys” in the search space. a Solver Results dialog like the one shown on the next page will be displayed. The multistart methods generate candidate starting points for the GRG Solver by randomly sampling values between the bounds on the variables that you specify. The multistart methods will generate candidate starting points for the GRG Solver (with randomly selected values between the bounds you specify for the variables). group them into “clusters” using a method called multi-level single linkage. the better the multistart methods are likely to perform. Require Bounds on Variables This box is checked by default.” and their behavior and stopping rules are further described under “GRG Solver with Multistart Methods” in the chapter “Diagnosing Solver Results. The multistart methods are described under “Global Optimization” in the chapter “Solver Models and Optimization. the multistart methods will make use of a “topographic” search method. it is unlikely to effectively cover the possible starting points (and therefore have a good likelihood of finding all of the locally optimal solutions). which will take a very long time. If both the Multistart Search and Require Bounds on Variables boxes are checked.) Hence.These options control the multistart methods for global optimization.” Multistart Search If this box is checked. The tighter the bounds on the variables that you can specify. (This is also true of the Evolutionary Solver. but it comes into play only when the Multistart Search box is checked. unless the GRG Solver is run on a great many subproblems. Solver User Guide Solver Options • 143 . and then run the GRG Solver from a representative point in each cluster. but you have not defined upper and lower bounds on all of the variables. the multistart methods are used to seek a globally optimal solution. This process continues with successively smaller clusters that are increasingly likely to capture each possible locally optimal solution. Topographic Search If this box (and the Multistart Search box) are checked. this option is checked by default. the other options described in this section are ignored. but on some problems this is more than offset by reduced time taken by the GRG Solver on each subproblem. in an effort to find better clusters and start the GRG Solver from an improved point (already in a “hill” or “valley”) in each cluster.

Interval Global Solver Options In the Premium Solver Platform. 144 • Solver Options Solver User Guide . Population Size The multistart methods generate a number of candidate starting points for the GRG Solver equal to the value that you enter in this box.When this message appears. a Solver Options dialog like the one shown on the next page will be displayed. To do this. when the Interval Global Solver is selected from the Solver engine dropdown list in the Solver Parameters dialog. in order to test different GRG Solver options on each search for a locally optimal solution. enter an integer value into this box. you must either add constraints to the Constraints list box (or check the Assume Non-Negative box. but no more than 200. and the Options button is clicked. then click Solve again to allow the Solver to proceed with the solution process. if you supply a value less than 10 in this box. This set of starting points is referred to as a “population. or else uncheck the Require Bounds on Variables box. The minimum population size is 10 points. to add lower bounds on the variables). you may wish to ensure that the same candidate starting points are generated on several successive runs – for example. however. At times. This process uses a random number generator that is normally “seeded” using the value of the system clock – so the random number sequence (and hence the generated candidate starting points) will be different each time you click Solve. this value will then be used to “seed” the random number generator each time you click Solve. or leave it blank.” because it plays a role somewhat similar to the population of candidate solutions maintained by the Evolutionary Solver. the multistart methods use a population size of 10 times the number of decision variables in the problem. Random Seed The multistart methods use a process of random sampling to generate candidate starting points for the GRG Solver.

the Interval Global Solver uses only “first order” methods. Solver User Guide Solver Options • 145 . It is considered the same as an existing solution if either the absolute distance between intervals is less than or equal to the Accuracy value or the relative distance between intervals (taking into account their magnitudes) is less than or equal to the Resolution value. the new point is accepted as a distinct solution. Accuracy This option plays a role conceptually similar to the Precision option in the other Solver engines. The default choices for these options are suitable for most problems. By default. significant speed gains may be achieved via use of the Second Order and Linear Enclosure methods. It is used as a tolerance in the Interval Global Solver to determine whether a “box” has been reduced in size to approximately a “point solution.” whether the “distance” between two intervals is sufficiently small. Resolution When the Interval Global Solver is seeking all real solutions of a system of nonlinear equations. If it is not the same as any existing solution. which are described in this section. the Accuracy and Resolution values are used to distinguish one solution from another. but you should experiment with the Method options group to see which methods are fastest on your problem. A proposed new solution – a “box” consisting of intervals enclosing the decision variables – is compared to all other known solutions. for all decision variables.This dialog contains all of the Common Solver Options discussed earlier. and – in conjunction with the Resolution option below – whether a proposed solution to a system of equations should be treated as distinct from all other known solutions. plus several options specific to the Interval Global Solver.

the Interval Global Solver uses a first-order approximation to the problem functions. If the Assume Stationary box is checked. If this box is unchecked. On each iteration. Eventually.” Absolute vs. Two rather 146 • Solver Options Solver User Guide .” For more information. If this time limit is exceeded. the boxes that remain each enclose a locally optimal solution. starting with a single box determined by the bounds that you specify. Assume Stationary This option can be used to speed up the Interval Global Solver in situations where you know that the globally optimal solution is a “stationary point” and not a point where a decision variable is equal to its lower or upper bound. this means that if the true global optimum is at a point where a decision variable equals a bound. and the best of these is chosen as the globally optimal solution. As described in “Global Optimization” in the chapter “Solver Models and Optimization. If the Abs vs. Relative Stop This option affects the test used to decide whether the globally optimal solution has been found. the Solver will probably “miss” this solution and return another point that is not the true global optimum. using interval values and interval gradients computed by the Interpreter in the Premium Solver Platform. see “Interval Global Solver Stopping Conditions” in the chapter “Diagnosing Solver Results. Relative box is checked (the default). As described in “Global Optimization” in the chapter “Solver Models and Optimization.” the Interval Branch & Bound algorithm processes a list of “boxes” that consist of bounded intervals for each decision variable. the Solver will stop and display the Solver Results dialog with the message “Solver cannot improve the current solution. The Solver stops when it has found a feasible solution whose objective function value is very close to this best known bound.Max Time w/o Improvement The value in this edit box (measured in seconds) is the maximum time that the Interval Global Solver will spend in its search without finding an “improved global solution” (a feasible solution with an objective value better than the currently best known solution). it seeks lower and upper bounds for the objective and the constraints in a given box that will allow it to discard all or a portion of the box (narrowing the intervals for some of the variables). the Solver compares the absolute difference between the objective value and the best bound to the Accuracy value. Method Options Group The Method options group plays a critical role in determining the performance of the Interval Global Solver. by proving that the box can contain no feasible solutions. and the process is repeated. the Solver compares the relative difference (dividing by the objective’s magnitude) to the Accuracy value.” the Interval Global Solver uses an Interval Branch & Bound method that isolates locally optimal solutions and also updates a known best bound on the globally optimal objective function value. Of course. Boxes that cannot be discarded are subdivided into smaller boxes. or that it can contain no objective function values better than a known best bound on the globally optimal objective. To obtain good bounds on function values in a box. the Solver will skip such checks for possible solutions. The Solver can save a significant amount of time if it does not have to check for possible solutions on the “edges of boxes” where a variable equals one of its bounds.

but operating over intervals). and applies Phase I of the Simplex method to this problem. but it computes similar information to completely enclose the function within linearized boundaries. but because it completely encloses the function. the Interval Global Solver uses a variant of the Interval Newton method (analogous to Newton’s method for real numbers. using the linear enclosures of the original problem’s constraints and the bounds on the current box. or to rapidly determine whether a solution to a system of equations exists in the current box. Second Order When this box is checked (and Classic Interval is selected – otherwise it is greyed out). it is Solver User Guide Solver Options • 147 . but it also uses Phase II of the Simplex method to seek an improved bound on the objective function in the current box. Classic Interval (the default) uses methods described in the research literature for a number of years. but these are optional since they require evaluation of the interval Hessian. second order methods can be used as described below. Classic Interval vs. which is computed by the Interpreter via reverse automatic differentiation. the Solver proceeds as just described for the LP Test option. The linear enclosure doesn’t use the interval gradient directly. but it pays to experiment with both forms to see which one performs best on your model. different advanced methods can be used. in the Interval Global Solver. to rapidly find an interval minimum for the objective and shrink or discard the current box. Use of the Krawczyk operator requires the interval Hessian.” so that only one of these two options is selected. Linear Enclosure uses recently published methods that are implemented for the first time. the Solver always uses local constraint propagation methods (also known as hull consistency methods) that narrow intervals at each stage of evaluation of the problem functions. as discussed below.different first-order approximations can be used: The “classic interval” or mean value form and the linear enclosure form. In addition to these first-order approximations. With this form. Linear Enclosure The Classic Interval and Linear Enclosure options form a “radio button group. The “classic interval” form is the default. LP Phase II When this box is checked (and Linear Enclosure is selected – otherwise it is greyed out). When Classic Interval is selected. When Linear Enclosure is selected. This form does not readily lend itself to the classic interval second order methods. the Solver uses the linear enclosure form as a first-order approximation of the problem functions. the Solver internally creates a series of linear programming problems. it can be used to enable the Solver to rapidly discard many boxes. LP Test When this box is checked (and Linear Enclosure is selected – otherwise it is greyed out). If this improved bound is feasible in the original problem. to Frontline Systems’ knowledge. and this box or region can be discarded in the overall Interval Branch & Bound algorithm. then the original problem’s constraints also have no feasible solutions in the current box. With each form. This form is especially useful in tests that enable the Solver to rapidly “shrink” a box. If the Simplex method finds no feasible solutions. employing the Krawczyk operator at its key step. the Solver uses the mean value form (based on the interval gradient) as a first-order approximation of the problem functions.

because the Evolutionary Solver always uses the Max Subproblems and Max Feasible Solutions options on the Limit Options dialog tab. and a new check box. Mutation Rate. and how close to an exact integer value a variable must be to satisfy an integer constraint. when the Evolutionary Solver is selected from the Solver engine dropdown list. In the Premium Solver Platform V5.0. 148 • Solver Options Solver User Guide . In the Premium Solver Platform. which replaces Linear Local Gradient. Evolutionary Solver Options In the Premium Solver V5. (The count of iterations is reset on each new subproblem. It also is used in computing the “penalty” applied to infeasible solutions that are accepted into the population: A smaller Precision value increases this penalty. and Random Seed edit boxes. and the Options button is clicked. Automatic Choice. the Solver Options dialog shown below is displayed. Fix Nonsmooth Variables. the options for each Solver engine are grouped on dialog tabs labeled General. In Version 5. and Problem. the Require Bounds on Variables check box. These dialogs contain all of the Common Solver Options discussed earlier (the Convergence option has a different meaning for the Evolutionary Solver than for the GRG Solver.used to update the known best bound on the globally optimal objective in the overall Interval Branch & Bound algorithm.5. The Iterations option rarely comes into play.5. the Solver Options dialog shown on the next page is displayed for the Evolutionary Solver. the Max Time option determines the maximum amount of time the Evolutionary Solver will run before displaying a dialog box asking whether the user wants to continue. The Precision option plays the same role as it does in the other Solver engines – governing how close a constraint value must be to its bound to be considered satisfied. as discussed below). Limits or Integer. As with the other Solver engines. whether or not the problem includes integer constraints. and the Local Search options group. the Local Search option group includes a new default option. plus the Population Size. so the Iterations limit normally is not reached).

but you may also want to increase the Mutation Rate and/or the Population Size.Convergence As discussed in the chapter “Diagnosing Solver Results. if you supply a value less than 10 for this option. each “fitness” value is a combination of an objective function value and a penalty for infeasibility.” the Evolutionary Solver will stop and display the message “Solver has converged to the current solution” if nearly all members of the current population of solutions have very similar “fitness” values. The minimum population size is 10 members. rather than a “single best solution” so far. Population Size As described in the chapter “Solver Models and Optimization. the comparison begins after the Solver has found a certain minimum number of improved solutions that were generated by the evolutionary process. or leave the edit box blank. Since the population is initialized with trial solutions that are largely chosen at random. in order to increase the diversity of the population of trial solutions. This option sets the number of candidate solutions in the population. Since the population may include members representing infeasible solutions. The stopping condition is satisfied if 99% of the population members all have fitness values that are within the Convergence tolerance of each other. you can make the Convergence tolerance smaller. throughout the solution process. Solver User Guide Solver Options • 149 . the Evolutionary Solver uses a population size of 10 times the number of decision variables in the problem.” the Evolutionary Solver maintains a population of candidate solutions. If you believe that the message “Solver has converged to the current solution” is appearing prematurely. but no more than 200.

The initial population consists of candidate solutions chosen largely at random. depending on its fitness) during each “generation” or subproblem considered by the evolutionary algorithm. but it always includes at least one instance of the starting values of the variables (adjusted if necessary to satisfy the bounds on the variables). There are many possible ways to mutate a member of the population. The Mutation Rate is effectively subdivided between these strategies.” and for many other purposes. Because of these random choices. so increasing or decreasing the Mutation Rate affects the probability that each of the strategies will be used during a given “generation” or subproblem. an optional local search in the vicinity of a newly discovered “best” solution. even if you haven’t changed your model at all. A larger population size may allow for a more complete exploration of the “search space” of possible solutions. However. At times. especially if the population is large and the initial values represent a feasible solution. however. Require Bounds on Variables If the check box “Require Bounds on Variables” is selected. but will attempt to solve the problem without them. including “permutation-preserving” mutation strategies for variables that are members of an “alldifferent” group. and the Evolutionary Solver actually employs five different mutation strategies. and the same choices are made on several successive runs. If this option is not selected. enter an integer value into this box. you may wish to ensure that exactly the same trial points are generated. to choose strategies for mutation and crossover on each “generation. a subproblem consists of a possible mutation step. To do this. this value will then be used to “seed” the random number generator each time you click Solve. experience with genetic and evolutionary algorithms reported in the research literature suggests that a population need not be very large to be effective – many successful applications have used a population of 70 to 100 members. and some of the decision variables do not have upper or lower bounds specified in the Constraints list box (or via the Assume Non-Negative option) at the time you click Solve. the Evolutionary Solver will normally find at least slightly different (and sometimes very different) solutions on each run. Random Seed The Evolutionary Solver makes extensive use of random sampling. to generate trial points for the population of candidate solutions. In the Evolutionary Solver. especially if the mutation rate is high enough to create diversity in the population. a crossover step. the Solver will stop immediately with the message “All variables must have both upper and lower bounds” – as illustrated in the section “Multistart Search Options” earlier in this chapter. the Solver will not require upper and lower bounds on the variables. Note that this box is checked by default. 150 • Solver Options Solver User Guide . and a selection step where a relatively “unfit” member of the population is eliminated. and it may include more than one instance of the starting values. This process uses a random number generator that is normally “seeded” using the value of the system clock – so the random number sequence (and hence trial points and choices made by the Evolutionary Solver) will be different each time you click Solve. Mutation Rate The Mutation Rate is the probability that some member of the population will be mutated to create a new trial solution (which becomes a candidate for inclusion in the population.

It uses a classical optimality test and a “slow progress” test to decide when to halt the local search. an optional local search in the vicinity of a newly discovered “best” solution. Bounds on the variables are also used in the mutation process – where a change is made to a variable value in some member of the existing population – and in several other ways in the Evolutionary Solver. starting from the just-discovered “best” solution and moving in the direction of the gradient of the objective function. a variety of strategies may be employed to transform them into feasible solutions. it pays for you to determine realistic lower and upper bounds for the variables. It uses a classical quasi-Newton method to seek improved points. if found. using a probability distribution for each variable whose parameters are a function of the best and worst members of the current population. An improved point. As noted under the Mutation rate option.Bounds on the variables are especially important to the performance of the Evolutionary Solver. by selecting values at random from the ranges determined by each variable’s lower and upper bounds. you can use Automatic Choice (the default). An improved point. It uses a “slow progress” test to decide when to halt the local search. and enter them in the Constraints list box. a “generation” or subproblem in the Evolutionary Solver consists of a possible mutation step. Local Search This option determines the local search strategy employed by the Evolutionary Solver. Linear Local Gradient Search This local search strategy – available as a user-selected option only in the Premium Solver V5. If you do not specify lower and upper bounds for all of the variables in your problem. Deterministic Pattern Search This local search strategy uses a “pattern search” method to seek improved points in the vicinity of the just-discovered “best” solution. the Evolutionary Solver can still proceed.) Improved points are accepted into the population. Hence. It uses iterations of the Simplex Solver User Guide Solver Options • 151 .0 – makes the assumption that the objective function and the constraints can be approximated locally by linear functions. which selects an appropriate local search strategy automatically based on characteristics of the problem functions.5. For example. Gradient Local Search This local search strategy makes the assumption that the objective function – even if non-smooth – can be approximated locally by a quadratic model. and make it much harder to find “good” solutions. is accepted into the population. The pattern search method is deterministic – it does not make use of random sampling or choices – but it also does not rely on gradient information. Randomized Local Search This local search strategy generates a small number of new trial points in the vicinity of the just-discovered “best” solution. You have a choice of strategies for the local search step. In the Premium Solver Platform V5. and a selection step where a relatively “unfit” member of the population is eliminated. is accepted into the population. in part. the initial population of candidate solutions is created. but the almost-infinite range for these variables may significantly slow down the solution process. a crossover step. so it is effective for non-smooth functions. if found. (If the generated points do not satisfy all of the constraints.

MAX. If this box is checked. only the smooth and linear variables are allowed to vary. if found. and the new default choice. so it often makes sense to vary all of the variables during the search. If this box is unchecked. Since gradients are undefined for nonsmooth variables at certain points. Automatic Choice This option – available as a user-selected option. the threshold is based on the best objective value found so far. which are then tested against the actual problem functions for feasibility and an improved objective. The behavior of the Fix Nonsmooth Variables option on a small group of special functions – currently ABS. and on many nonsmooth problems as well. but is adjusted dynamically as the Solver proceeds. in the Premium Solver Platform V5. is accepted into the population. they are listed roughly in order 152 • Solver Options Solver User Guide . this box is unchecked by default. and the search methods are often able to proceed in spite of some invalid gradient values. the Evolutionary Solver in the Premium Solver Platform V5. Hence. The “distance filter” requires that the new point’s distance from any known locally optimal point (found on a previous local search) be greater than the distance traveled when that locally optimal point was found.5.5 – determines how nonsmooth variable occurrences in the problem will be handled during the local search step. fixing these variables ensures that gradient values used in the local search process will be valid.5 – allows the Solver to select the local search strategy automatically.” When the Require Smooth box is unchecked (the default). Filtered Local Search In the Premium Solver Platform V5. IF. The “merit filter” requires that the objective value of the new point be better than a certain threshold if it is to be used as a starting point for a local search. Using diagnostic information supplied by the Parser and Interpreter. Fix Nonsmooth Variables This option – available only in the Premium Solver Platform V5. all of the variables are allowed to vary. the Solver applies two tests or “filters” to determine whether to perform a local search each time a new point generated by the genetic algorithm methods is accepted into the population. and the distance and merit filters. gradients are defined for nonsmooth variables at most points. as described in “Using Analyzer Advanced Options” in the chapter “Analyzing and Solving Models. The local search methods range from relatively “cheap” to “expensive” in terms of the computing time expended in the local search step. Thanks to its genetic algorithm methods.method to generate new trial points. It also makes limited use of the Randomized Local Search strategy to increase diversity of the points found by the local search step. checking the Fix Nonsmooth Variables box will not fix variables occurring in these special functions. MIN and SIGN – is affected by the setting of the Require Smooth check box in the Solver Model dialog. On the other hand. An improved point. or an improved form of the Nonlinear Gradient Search strategy if the objective function has a mix of nonsmooth and smooth nonlinear variables. improved local search methods. the Solver uses the Linear Local Gradient Search strategy if the problem has a mix of nonsmooth and linear variables. you can experiment with its setting on your problem. the nonsmooth variables are fixed to their current values (determined by genetic algorithm methods) when a Nonlinear Gradient or Linear Local Gradient local search is performed.5 performs exceedingly well on smooth global optimization problems.

For the reasons described in “Using Analyzer Advanced Options” in the chapter “Analyzing and Solving Models. For problems in which a significant number of constraints are smooth nonlinear or even linear. When you click this button. but in other problems.” you should check the Analyzer Sparse box in the Model dialog. Solver User Guide Solver Options • 153 .5. the extra computational effort will “pay off” in terms of improved solutions.0.” are selected dynamically (and automatically) via a set of heuristics. In the Premium Solver Platform V5. corresponding to the four local search methods. which also vary from “cheap” to “expensive. but the hybrid Evolutionary Solver in the Premium Solver products is unusually strong in its ability to deal with a combination of constraints and non-smooth functions.of the computational effort they require. and click Solve again.” if the Evolutionary Solver stops with the message “Solver encountered an error computing derivatives. On some problems. The Limit Options Dialog Tab In the Premium Solver V5. thereby spending relatively more time on the “global search” carried out by the Evolutionary Solver’s mutation and crossover operations. the Solver Options dialog for the Evolutionary Solver includes a Limit Options button. you will be better off using the “cheap” Randomized Local Search method. Dealing with constraints is traditionally a weak point of genetic and evolutionary algorithms. the Evolutionary Solver employs a set of methods. these methods can be highly effective. you can display these options by simply clicking on the Limits tab at the top of the Solver Options dialog. the Limit Options dialog is displayed. In addition to the Local Search options. to transform infeasible solutions – generated through mutation and crossover – into feasible solutions in new regions of the search space. These methods.

the Evolutionary Solver stops and displays the Solver Results dialog. if your model is moderately large or complex. and is subject to the limits set in this dialog tab. even if there are no integer constraints in the model – so these options are always important for the Evolutionary Solver. As with the Max Subproblems option. the “fitness” value is a combination of an objective function value and a penalty for infeasibility. A feasible solution is any solution that satisfies all of the constraints.e. Unlike the other Solver engines.647) may be used. you can either make the Tolerance value smaller 154 • Solver Options Solver User Guide . you may need to increase this limit from its default value. a crossover step. Since the population may include members representing infeasible solutions. If your model is moderately large or complex. the number of subproblems considered so far is shown on the Excel status bar. subject to limits set in the Integer Options dialog tab. the Evolutionary Solver handles integer constraints on its own. stop or restart the solution process. a subproblem consists of a possible mutation step. any 32-bit positive integer value may be used. Max Time without Improvement This option works in conjunction with the Tolerance option to limit the time the evolutionary algorithm spends without making any significant progress. the Evolutionary Solver always works on a series of subproblems. and a selection step where a relatively “unfit” member of the population is eliminated.147. If the relative (i.” unless the evolutionary algorithm has discovered no feasible solutions at all. If the relative (i. any 32-bit positive integer value (up to 2. The message is “Solver cannot improve the current solution. percentage) improvement in the best solution’s “fitness” is less than the Tolerance value for the number of seconds in the Max Time without Improvement edit box. In the Evolutionary Solver. along with the objective of the best feasible solution (if any) found so far.” If you believe that this stopping condition is being met prematurely.Where the other Solver engines use the Branch & Bound method to solve problems with integer constraints. including any integer constraints. During the solution process.483. an optional local search in the vicinity of a newly discovered “best” point.e. you may need to increase this limit. in which case the message is “Solver could not find a feasible solution. stop or restart the solution process. Max Subproblems The value in the Max Subproblems edit box places a limit on the number of subproblems that may be explored by the evolutionary algorithm before the Solver pauses and asks you whether to continue. percentage) improvement in the best solution’s “fitness” is less than the Tolerance value for the number of seconds in the Max Time without Improvement edit box. the Evolutionary Solver stops as described below. Tolerance This option works in conjunction with the Max Time without Improvement option to limit the time the evolutionary algorithm spends without making any significant progress. Max Feasible Solutions The value in the Max Feasible Sols edit box places a limit on the number of feasible solutions found by the evolutionary algorithm before the Solver pauses and asks you whether to continue.

the Preprocessing and Probing option group. This option remains in effect until you uncheck the Solve Without Integer Constraints box. In the Premium Solver Platform V5. you can display these options for the LP/Quadratic. Solve Without Integer Constraints When you click the Solve button (in the Solver Parameters dialog) while this box is checked. The controls below the “Solve Without Integer Constraints” check box appear only in the Premium Solver Platform. the Integer Options dialog is displayed. the Solver Options dialog for the Simplex LP and GRG Solvers includes an Integer Options button. the Solver ignores integer constraints (including alldifferent constraints) and solves the “relaxation” of the problem. and it’s much more convenient to check this box than to delete the integer constraints and add them back again later. the Use Dual Simplex for Subproblems check box. and Interval Global Solvers by simply clicking on the Integer tab at the top of the Solver Options dialog. and the Solver User Guide Solver Options • 155 . when you solve an integer programming problem (without this option) and the Solver finds no feasible integer solution. or increase the number of seconds allowed by the Max Time without Improvement option. you are offered the option of solving the relaxation on a “one-time-only” basis in the Solver Results dialog. When you click this button. This dialog collects all of the options that pertain to the solution of problems with integer constraints.5. The Integer Options Dialog Tab In the Premium Solver V5. As discussed further under “The Integer Options Dialog Tab” below. It is often useful to solve the relaxation.(or even zero). GRG.0.

The objective value of the relaxation forms the initial “best bound” on the objective of the optimal integer solution.647) may be used. (The Branch & Bound method is briefly described in the chapter “Solver Models and Optimization. and it affects only restarting of the current subproblem. the Solver retains the integer solution with the best objective value so far. the Branch & Bound algorithm may find the same integer solution (set of values for the decision variables) more than once.483. the Iterations limit should be set high enough for each of the individual subproblems solved during the Branch & Bound process.147. as this would simply mean discarding the progress that has been made so far. Max Subproblems The value in the Max Subproblems edit box places a limit on the number of subproblems that may be explored by the Branch & Bound algorithm before the Solver pauses and asks you whether to continue or stop the solution process. Integer Tolerance When you solve an integer programming problem. and it keeps the best solution so far as the “incumbent. any 32-bit positive integer value (up to 2. The Integer Tolerance setting may be used to tell the Solver to stop if the best solution it has found so far is “close enough. but this button is meaningful only for the GRG Solver. but will require a great deal of computing time to find (or verify that it has found) the optimal integer solution. in the process of exploring various subproblems with different bounds on the variables. including the integer constraints.Gomory Cuts and Passes and Knapsack Cuts and Passes edit boxes appear only when the LP/Quadratic Solver engine is selected. the Max Subproblems limit should be used in preference to the Iterations limit in the Solver Options dialog. the Max Integer Solutions limit applies to the total number of integer solutions found. the Branch & Bound method finds “candidate” integer solutions. During the optimization process.” It is entirely possible that. In a problem with integer constraints. You can set this limit to any 32-bit positive integer value. called the “incumbent. The Branch & Bound algorithm is never restarted. Each candidate integer solution satisfies all of the constraints. which can be no better than this. For problems with many integer constraints. you may need to increase this limit from its default value. it often happens that the Branch & Bound method will find a good solution fairly quickly.” The Branch & Bound process starts by finding the optimal solution without considering the integer constraints (this is called the relaxation of the integer programming problem). Note: A “Restart” button also appears in the dialog box where the Solver asks you whether you want to continue or stop the solution process. not the number of “distinct” integer solutions.” By 156 • Solver Options Solver User Guide . Max Integer Solutions The value in the Max Integer Solutions edit box places a limit on the number of “candidate” integer solutions found by the Branch & Bound algorithm before the Solver pauses and asks you whether to continue or stop the solution process.”) Each subproblem is a “regular” Solver problem with additional bounds on the variables.

the B&B method also tightens the “best bound” on how good the integer solution can be. Solve Without Integer Constraints When you click the Solve button (in the Solver Parameters dialog) while this box is checked.” If you set the Integer Tolerance to zero. the Solver will stop and report the current integer solution as the optimal result. you must be sure that there is an integer solution with an objective value at least this good: A value that is too large (for maximization problems) or too small (for minimization) may cause the Solver to skip solving the subproblem that would yield the optimal integer solution. and it’s much more convenient to check this box than to delete the integer constraints and add them back again later. This option remains in effect until you uncheck the Solve Without Integer Constraints box. If you enter a value here. In the Premium Solver and Premium Solver Platform. This allows the Branch & Bound process to start with an “incumbent” objective value (as discussed above under Integer Tolerance) and avoid the work of solving subproblems whose objective can be no better than this value. If you know the objective value of a feasible integer solution to your problem – possibly from a previous run of the same or a very similar problem – you can enter this objective value in the Integer Cutoff edit box.eliminating alternatives as its proceeds. When you solve an integer programming problem (without this option) and the Solver finds no feasible integer solution. the Solver Result Message will be “Solver found an integer solution within tolerance. as shown below. you are offered the option of solving the relaxation on a “one-time-only” basis in the Solver Results dialog.Objective of best bound -----------------------------------------------Objective of best bound If the absolute value of this maximum percentage difference is equal to or less than the Integer Tolerance. Each time the Solver finds a new “incumbent” – an improved all-integer solution – it computes the maximum percentage difference between the objective of this solution and the current “best bound” on the objective: Objective of incumbent . This may take a great deal of computing time. Solver User Guide Solver Options • 157 . It is often useful to solve the relaxation. the Solver will continue searching until all alternatives have been explored and the optimal integer solution has been found. Integer Cutoff This option provides another way to save time in the solution of mixed-integer programming problems. the Solver ignores integer constraints (including alldifferent constraints) and solves the “relaxation” of the problem.

Use of this option will often speed up the solution of problems with either general integer (e. 158 • Solver Options Solver User Guide . A1:A5 = integer) and binary integer (e. you can more easily locate and correct the conflicting constraints that make the problem infeasible. which will allow you to produce a Feasibility Report for the relaxation of the problem.When chosen this way. potentially in fewer iterations. When it is cleared. The solution of the relaxation (or of a more direct “parent” of the current subproblem) provides an “advanced basis” which can be used as a starting point for solving the current subproblem. The subproblems of an integer programming problem are based on the relaxation of the problem. When this box is checked – note that it is checked by default – the Solver uses the Dual Simplex method. when you click OK. the Solver uses the Primal Simplex method to solve the subproblems. A1:A5 = binary) variables. The Dual Simplex method proceeds from a dual feasible solution to a dual optimal (and hence primal feasible) solution by dealing with the additional or tighter bounds on the variables.g. starting from an advanced basis. Using the Feasibility Report.5 employs an advanced “boundswapping” Dual Simplex method that becomes faster as the bounds become tighter and apply to more variables. Because of this. The Premium Solver Platform V5.g. you will next see the Solver Results dialog below. but it is always dual feasible. This basis may not be primal feasible due to the additional or tighter bounds on the variables. It is possible that the relaxation of the problem – ignoring the integer constraints – is still infeasible. the Dual Simplex method is usually faster than the Primal Simplex method when starting from an advanced basis. in this case. Use Dual Simplex for Subproblems This option appears only in the Premium Solver Platform. but have additional or tighter bounds on the variables. the option is effective for only one solution attempt. when the LP/Quadratic Solver engine is selected. to solve the subproblems generated by the Branch & Bound method.

Probing allows the Solver to determine this before solving the problem. the Feasibility tests performed as part of Probing will determine that the subproblem is infeasible. Optimality Fixing can lead to further opportunities for Probing and Bounds Improvement. Probing / Feasibility The Probing strategy allows the Solver to derive values for certain binary integer variables based on the settings of others. Any of them may be selected independently. but the best speed gains are often realized when they are used in combination – particularly Probing / Feasibility. your model may have a constraint such as: x1 + x2 + x3 + x4 + x5 ≤ 1 where x1 through x5 are all binary integer variables. With Probing. but they must be avoided in order to use Optimality Fixing. instead of explicit equalities such as A1:A5 = 10. and vice versa. Solver User Guide Solver Options • 159 . But Optimality Fixing will yield incorrect results if you have bounds on variables. Watch out for situations such as A1:A5 >= 10 and A3:D3 <= 10. As the number of binary integer variables increases. Optimality Fixing The Optimality Fixing strategy is another way to fix the values of binary integer variables before the subproblem is solved. before the problem is solved. Use of these options can dramatically improve solution time on problems with many 0-1 or binary integer variables. In many problems. (This is a special case of a “clique” or “Special Ordered Set” (SOS) constraint. the Solver recognizes these constraints in their most general form. this has implications for the values of other binary integer variables that can be discovered through Probing. when the LP/Quadratic Solver engine is selected. For example. Bounds Improvement The Bounds Improvement strategy allows the Solver to tighten the bounds on variables that are not 0-1 or binary integer variables. this strategy can clearly improve solution time. Bounds Improvement and Optimality Fixing. based on the signs of the coefficients of these variables in the objective and the constraints. Implied equalities of this sort are never a good practice. without Probing. the Branch & Bound process might have to generate and solve as many as 25 = 32 subproblems. all of the others are forced to be 0. Tightening the bounds usually reduces the effort required by the Simplex method (or other method) to find the optimal solution.Preprocessing and Probing The Preprocessing and Probing (formerly called Binary Integer Methods) option group appears only in the Premium Solver Platform. and in some cases it leads to an immediate determination that the subproblem is infeasible and need not be solved. which create “implied” equalities.) In a problem with a “clique” of 5 binary integer variables. so it is unnecessary to solve it at all. When the Branch & Bound method creates a subproblem with an additional (tighter) bound on a binary integer variable. prior to actually solving the problem. based on the values that have been derived for the binary variables. Whenever one of these variables is fixed at 1. with different combinations of bounds on these variables. which creates an implied equality constraint on A3. this causes the variable to be fixed at 0 or 1. In some cases. such as A1:A5 >= 10 and A1:A5 <= 10. the number of subproblems is reduced from 32 to 5.

you might have a binary integer variable that determines whether or not a new plant will be built. because they cannot yield an integer solution better than the known incumbent. You may be able to improve performance by manually ordering the variables in the Changing Cells box or Variables list. to find an integer feasible solution. and left to right). In the case of a binary integer variable. Pseudocost branching enables the Solver to automatically choose variables for branching. Branching on an integer variable places tighter bounds on this variable in all subproblems derived from the current branch. the Solver will branch on these variables first.Primal Heuristic When this box is checked. If Branch messages appear without an incumbent value after some delay. It is ignored in the Premium Solver Platform V5. the time spent on the primal heuristic is wasted. you should experiment with this option to see if it yields faster solutions on your problem. it is probably better to uncheck this box. But at the beginning of the solution process. it serves as an “incumbent” that enables the Branch & Bound method to cut off the exploration of other subproblems. then watch the Excel status bar while your problem is being solved. this will eliminate many other possibilities that would otherwise have to be considered during the solution of each subproblem. based on your knowledge of the problem. For example. Of course. 160 • Solver Options Solver User Guide . you would list the plant-building binary integer variable first in the Changing Cells edit box. or in the Variables list box (top to bottom. forcing it to be 0 or 1. In the example above. and other variables that then determine whether certain manufacturing lines will be started up.) The specific method used in the Premium Solver Platform V5. if an integer feasible solution is not found. You may wish to check this box. which uses a better strategy. since the primal heuristic is not proving effective on the problem. Ideally. (A heuristic method is one that has been found to succeed frequently in practice. and note how long the Solver takes before “Branch” messages appear.” at all times. once each integer variable has been branched upon at least once. and thereby save time overall. Hence. so it will be branched upon before any other integer variable. If the Solver branches upon the plantbuilding variable first.5. where it has been found to be quite effective. Variable Reordering and Pseudocost Branching A Variable Reordering option was used in earlier versions of the Premium Solver Platform to improve the order in which the Branch & Bound algorithm chose binary integer variables to “branch” upon. Tighter bounds on certain variables may have a large impact on the values that can be assumed by other variables in the problem. known as “pseudocost branching. the Solver uses heuristic methods to attempt to discover an integer feasible solution early in the Branch & Bound process.5 is derived from the “local search” literature. and whether an “Incumbent: xxx” appears in these messages. branching forces the variable to be 0 or 1 in the subproblems. If an integer feasible solution is found via the primal heuristic. but is not guaranteed to succeed – in this case. the order in which integer variables are chosen for branching is guided overall by the order in which they appear in your Changing Cells edit box (from left or right). especially on 0-1 integer programming problems.

Cut Generation

The Cut Generation options (Gomory Cuts and Passes, and Knapsack Cuts and Passes) are new for the LP/Quadratic Solver in the Premium Solver Platform V5.5. A cut is an automatically generated linear constraint for the problem, in addition to the constraints that you specify. This constraint is constructed so that it “cuts off” some portion of the feasible region of an LP subproblem, without eliminating any possible integer solutions. Cuts add to the work that the LP solver must perform on each subproblem (and hence they do not always improve solution time), but on many integer programming problems, cut generation enables the overall Branch & Bound method to more quickly discover integer solutions, and eliminate subproblems that cannot lead to better solutions than the best one already known. The default values for the Cut Generation options represent a reasonably good tradeoff for many models, but it may well be worthwhile to experiment with values in these edit boxes to find the best settings for your problem.

Gomory Cuts

The value in this edit box is the maximum number of Gomory cuts that the Solver should generate for a given subproblem. When this maximum is reached, or if there are no further cut opportunities, the Solver proceeds to solve the LP subproblem (with the cuts) via the primal or dual Simplex method. Gomory cuts are generated by examining the basis inverse at the optimal solution of a previously solved LP relaxation of the problem. This basis inverse is sensitive to rounding error due to the use of finite precision computer arithmetic. Hence, if you use Gomory cuts, you should take extra care to ensure that your worksheet model is well scaled, and check the Use Automatic Scaling box. You can use the Report: Scaling Problems option in the Solver Model dialog to analyze your model for poor scaling, as described in “Analyzing Model Exceptions” in the chapter “Analyzing and Solving Models.” If you have trouble finding the integer optimal solution with the default settings for Gomory cuts, you may want to enter 0 in this edit box, to eliminate Gomory cuts as a possible source of problems due to rounding.

Gomory Passes

The value in this edit box is the number of “passes” the Solver should make over a given subproblem, looking for Gomory cuts. When cuts are generated and added to the model, the new model may present opportunities to generate further cuts. In fact, it’s possible to solve an LP/MIP problem to optimality by generating Gomory cuts in multiple passes, without any branching via Branch & Bound; however, experience has shown that this is usually less efficient than using Branch & Bound. The default value of 1 pass is best for many models, but you may find that increasing this value improves solution time for your model.

Knapsack Cuts

The value in this edit box is the maximum number of Knapsack cuts that the Solver should generate for a given subproblem. When this maximum is reached, or if there are no further cut opportunities, the Solver proceeds to solve the LP subproblem (with the cuts) via the primal or dual Simplex method. Knapsack cuts, also known as lifted cover inequalities, can be generated only for groups of binary integer variables, whereas Gomory cuts can be generated for any integer variables. But when knapsack cuts can be generated, they are often very effective in cutting off portions of the LP feasible region, and improving the speed of the solution process.

Solver User Guide

Solver Options • 161

Knapsack Passes

The value in this edit box is the number of “passes” the Solver should make over a given subproblem, looking for Knapsack cuts. As for Gomory cuts, when Knapsack cuts are generated and added to the model, the new model may present opportunities to generate further cuts; but time spent on additional passes could otherwise be spent solving LP subproblems. The default value of 1 pass is best for many models, but you may find that increasing this value improves solution time for your model.

**The Problem Dialog Tab
**

In the Premium Solver Platform V5.5, each Solver Options dialog includes a Problem tab. Clicking on this tab displays statistics on the size of the current problem and the corresponding Solver engine size limits, including the number of decision variables, number of constraints, number of bounds on the variables, and number of integer variables. These edit controls are “read-only” – the current problem sizes are computed automatically, and the Solver engine size limits are obtained automatically from both built-in and field-installable Solver engines.

In the Premium Solver V5.0, this problem size information is shown in the Limit Options dialog or the Integer Options dialog, depending on the currently selected Solver engine.

**Loading, Saving and Merging Solver Models
**

The Solver Options dialogs also include Load Model... and Save Model... buttons, which allow you to save and restore the specifications (variable, constraint and objective cell selections plus option settings) of a Solver model on the worksheet. The model specifications are stored as formulas in cells, which include references to

162 • Solver Options

Solver User Guide

the variable, constraint and objective cells and values for the Solver options. Since the Solver stores the “current” Solver model in hidden defined names on the worksheet, it is not necessary to use this feature to keep track of a single Solver model – the last set of specifications you defined will be saved automatically when the workbook is saved, and restored when it is re-opened. But the Load Model... and Save Model... buttons can be used to save more than one Solver model on the same worksheet, to transfer models between worksheets or even between different spreadsheet programs, and to merge two models into one.

**Using Multiple Solver Models
**

It is possible – and often useful – to define more than one Solver model based on the same worksheet formulas. An example of this is provided in the “Portfolio of Securities” worksheet in the SOLVSAMP.XLS workbook that is included with Microsoft Excel. This worksheet defines a portfolio optimization model, where the Solver must determine what percentage of available funds to invest in four different stocks (A, B, C and D) and Treasury bills. The worksheet formulas calculate the portfolio rate of return, and the portfolio risk as measured by the statistical variance of returns. There are two possible approaches to solving this model: (1) Find the maximum rate of return, subject to an upper limit on the portfolio’s risk, or (2) Find the minimum risk (variance), subject to a lower limit on the portfolio’s return. The “default” or predefined Solver problem on this worksheet is the one that maximizes return, subject to a constraint on portfolio risk. But both Solver problems (“Maximize Return” and “Minimize Risk”) have been set up and their specifications saved in the lower part of this worksheet, starting at row 21. If you click the Load Model... button in the Solver options dialog, select cells D21:D29, and click OK, you will load the specifications for the problem that minimizes risk subject to a constraint on return. In portfolio optimization problems like this one, portfolio return is a linear function (a simple weighted average of stock returns) whereas portfolio variance is a quadratic function of the variables. The Solver problem that minimizes risk is a QP (quadratic programming) problem, since it has a quadratic objective and a linear constraint. But the Solver problem that maximizes return is not a QP, since it has a quadratic constraint (and a linear objective) – it can only be solved by a method such as the nonlinear GRG Solver.

**Transferring Models Between Spreadsheets
**

Another application of Load Model... and Save Model... is to transfer Solver model specifications from one worksheet to another. You can do this, not only between Excel worksheets, but between worksheets created in Excel 97, 2000, XP or 2003 – or created with a Premium Solver product – and worksheets created in Lotus 1-2-3 97 or Millenium Edition – which features a Solver designed by Frontline Systems. When you open a Lotus 1-2-3 worksheet in Excel, most or all of the formulas and cell formats will be converted automatically – but information about the “default” Solver model is not transferred or converted. With the Save Model... and Load Model... functions, however, you can transfer the specifications of the Solver model as formulas on the worksheet. You can do this in either direction, as outlined below.

From 1-2-3 to Excel

1. Starting from the Solver Options dialog, click the Save Model button and save your Solver model specifications in a cell range.

Solver User Guide

Solver Options • 163

2. 3. 4. 5.

Choose File Save As... and save the workbook with the Solver model specifications in 1-2-3 Release 5 (WK4) format. Open the saved WK4 file in Excel. Choose Tools Solver to display the Solver Parameters dialog. Click the Options button to display the Solver Options dialog. Click Load Model, and select the cell range containing the model specifications.

From Excel to 1-2-3

1. First, choose File Save As... and save your Excel workbook in WK4 format. This step gives a “hint” to the Excel Solver to use a model specification format that can be read by both Excel and 1-2-3. Starting from the Solver Options dialog, click the Save Model button to save your Solver model specifications in a cell range. Choose File Save to save the WK4 file with the Solver model specifications. Open the saved WK4 file in 1-2-3. Choose Range Analyze Solver to display the Solver Parameters dialog. Click the Options button to display the Solver Options dialog. Click Load Model, and select the cell range containing the model specifications.

2. 3. 4. 5. 6.

**Merging Solver Models
**

In the standard Microsoft Excel Solver and early versions of the Premium Solver products, loading a model’s specifications through Load Model... causes any existing specifications for the “current” Solver model to be erased. You are prompted before this happens with the alert box shown below.

In recent versions of the Premium Solver products, you have another choice: You can merge the model specifications being loaded with the current model specifications. Where the specifications necessarily overlap – as in the selection of the objective (and the “maximize” or “minimize” setting) and in the settings of Solver options – the newly loaded specifications take precedence. But the variable cell selections and the constraint left hand sides, relations and right hand sides being loaded are merged into the current model. You are prompted to choose between replacing the current model specifications and merging in the new specifications with the dialog box shown below:

164 • Solver Options

Solver User Guide

you could create two planning models for a manufacturing firm.Merging model specifications can be quite useful. for it allows you to build and test smaller. Then you could combine them with the Merge function. and test the resulting production-distribution model as a whole. one based on the Product Mix example and the other based on the Shipping Routes example in SOLVSAMP. and test them individually. Solver User Guide Solver Options • 165 .XLS. For example. simpler Solver models and then combine them into a larger model.

166 • Solver Options Solver User Guide .

When properly interpreted. and with all equality constraints (a system of equations) or all inequality constraints (a system of inequalities). For a system of inequalities. For a system of nonlinear equations. this report will tell you a great deal about your model and its optimal solution. Linearity and Feasibility Reports. Population. Solutions Report The Solutions Report is specific to the Interval Global Solver in the Premium Solver Platform. but we recommend that you focus on the Sensitivity Report. which can be produced when the Solver finds a solution – or when it fails to find a solution. Using the Sensitivity Report. Dependents and Scaling Reports In addition to the seven types of reports described in this chapter. the Premium Solver Platform offers two additional reports that are produced by the new Parser and Interpreter: The Dependents Report and the Scaling Report. you can determine what would happen if you changed your model in various ways and re-ran the Solver. they give you additional information about the solution and its range of applicability.Solver Reports Introduction This chapter will help you use the information in the Solver Reports. and instead reports that the linearity conditions are not satisfied. where we’ll use a simple but historically interesting nonlinear equation. It is available for problems with no objective function to be maximized or minimized. Sensitivity and Limits Reports. or that your model is infeasible. without your having to actually carry out these steps. but the Solutions Report shows you all real solutions. These reports are described and illustrated in the section “Analyzing Model Exceptions” in the chapter “Analyzing and Solving Models. Sensitivity and Limits Reports are available when the Solver finds an optimal solution for your model. available in the standard Excel Solver and the Premium Solver products – and how to use the new Solutions. We’ll explain how to interpret the values in the Answer. we’ll use the linear Product Mix model on the EXAMPLE1 worksheet in EXAMPLES. To illustrate the reports. the Answer Report again shows you Solver User Guide Solver Reports • 167 . which you could not easily determine by simply inspecting the final solution values on the worksheet. Sensitivity and Limits Reports The Answer.XLS – except for one variant of the Solutions Report.” Answer. All three reports can be useful. the Answer Report shows only a single solution. which are unique to the Premium Solver and Premium Solver Platform.

the Reports list box will appear with the choices that would otherwise have been available. you can request outlined reports. with grid lines and row and column headings turned off. perform calculations on the numbers in the reports. you can pinpoint the constraints that interact to make your model infeasible. If the solution process was terminated prematurely. or create graphs directly from the report data. you can copy and edit the report information. Linearity and Feasibility Reports The Linearity and Feasibility Reports help you diagnose problems in your models. and selecting the View tab in the resulting dialog. Population Report The Population Report is specific to the Evolutionary Solver.only a single feasible point. Where the Answer Report gives you detailed information about the single “best solution” returned by the Solver.” If you checked the Bypass Solver Reports box in the Solver Options dialog. if desired. With the Linearity Report. eliminate nonlinear functions from your model. by choosing Tools Options. so that it can be solved with a faster and more reliable linear Solver. This makes the Premium Solver Platform’s reports considerably more useful than those produced by standalone optimization software packages. if you wish. the Reports list box in the dialog above will be replaced by the legend “No reports available... which are worksheets where certain rows are grouped together in an outline structure that you can expand or collapse as you wish. Selecting the Reports When the Solver finds the solution to an optimization problem. the Reports list box includes only the Answer Report – the Sensitivity and Limits Reports are not meaningful in this situation. the Solver Results dialog is displayed. but the Solutions Report shows you an “inner solution” – a region or set of points where all of the constraints are satisfied. as shown below. When the Interval Global Solver solves 168 • Solver Reports Solver User Guide . you can pinpoint and. With the Feasibility Report. and correct them as needed. When the Interval Global Solver finds the solution to a global optimization problem. but they will be greyed out and you will unable to select them. the Population Report gives you summary information about the entire population of candidate solutions maintained by the Evolutionary Solver at the time the solution process was terminated. Because the reports are worksheets. or when the solution process is terminated prematurely due to some error condition (or your own intervention). All of the reports are Microsoft Excel worksheets. In the Premium Solver products. You can turn the grid lines and headings back on.

linearity or even feasibility. but your model contains nonlinear functions of the decision variables. it displays a Solver Results dialog like the one shown on the next page. If you have selected the Simplex LP or LP/Quadratic Solver engine. Solver User Guide Solver Reports • 169 . the Solver will report the error via the Solver Results dialog shown below: The only report you can select in this situation is. the Linearity. which can help you locate the source of the problem with your model. Limits and Sensitivity Reports are not available with this Solver engine. An example of the Linearity Report is shown later in this chapter. of course. when the solution process is terminated – for any reason – you’ll see a Solver Results dialog like the one below: Since the Evolutionary Solver always maintains a population of candidate solutions. including a “best” solution found so far. Feasibility. But since the Evolutionary Solver has no strict test for optimality. the Linearity Report. If the Solver finds that your model is infeasible.a system of nonlinear equations or a system of inequalities. it offers the Answer and Population Reports in all cases – even if it has not found a feasible solution. the Reports list includes the Answer Report and the new Solutions Report: If you are using the Evolutionary Solver.

If you uncheck this box. and more). Comments for constraint blocks are entered in the Add Constraint and Change Constraint dialogs. the reports always list information for all of the variables and constraints in the model. the set of variables or constraints defined in this dialog will not appear in the reports. the reports can become very large worksheets themselves. but the “Feasibility” report contains all of the information in the “Feasibility-Bounds” version. to find the smallest possible subset of these constraints that is still infeasible. Population. Outlining groups the variables and constraints in the reports into “blocks. then click the Add or Change buttons to display the Add Variable or Change 170 • Solver Reports Solver User Guide . you can select either version of the Feasibility Report (you are allowed to select both.” just as you entered them in the Solver Parameters dialog. “Feasibility” performs a complete analysis of your model. to produce the reports you’ve selected in outlined format. you can expand or collapse the groups to see only the information you want. To add comments to blocks of variables. Linearity and Feasibility Reports are in regular format. Outlining. as shown above. but does not attempt to eliminate bounds on the variables. including bounds on the variables. you can control the amount of information presented in the reports with the Reports check box that appears in the Add / Change Constraint and Add / Change Variable dialogs: The Reports box is checked by default. Reports in outlined format can display a descriptive comment on each “block” of variables and constraints. For a large model. “Feasibility-Bounds” performs a similar analysis of the constraints. and the Solutions. displayed when you click the Add and Change buttons in the Solver Parameters dialog. the Answer. and Comments in Reports In the standard Excel Solver. An even better way to control the information you see in reports is to check the box “Outline Reports” in the Solver Results dialog. In the Premium Solver products.In this case. Sensitivity and Limits Reports are in outlined format. In the examples later in this chapter. Block Selection. you can interrupt the analysis and production of the report by pressing the ESC key). click the Variables button to display the Variables list box. This can sometimes take a great deal of computing time (if necessary. to save computing time.

When you click on OK. we will solve the model pictured below.. As shown in the chapter “Building Solver Models. you can select one or more of the reports shown. or solving with different option settings. which is on the worksheet EXAMPLE1 in the workbook EXAMPLES. Once the reports are selected. Using the Solver Results Dialog When the Reports list box is available. Solver User Guide Solver Reports • 171 . An Example Model To illustrate the Solver reports. you can choose one of the options “Keep Solver Solution” or “Restore Original Values. you don’t need to hold down the SHIFT or CTRL key while you click on the report names with the mouse. if you are solving several variations of the same problem. When you check the “Return to Solver Parameters Dialog” box. the reports will be produced.Variable dialog.. button. it remains checked (until you change it) for the duration of your Excel session.. The reports are Microsoft Excel worksheets that are inserted in the current workbook. In this setting.XLS included with your Premium Solver product. or press Alt-R and then down-arrow from the keyboard. Comments such as “Inventory Constraints” above appear in the examples of outlined reports later in this chapter. just before the sheet containing the Solver model. or uncheck this box in the Solver Results dialog.” This check box saves you the effort of selecting Tools Solver. the Solver will return to worksheet Ready mode unless you have checked the box “Return to Solver Parameters Dialog. over and over. After the reports (if any) are produced. you can either click the Close button in the Solver Parameters dialog.” this model has three decision variables at D9:F9 and five constraints of the form C11:C15 <= B11:B15. plus bounds on the variables.” and optionally save the decision variable values in a named scenario by clicking on the Save Scenario.. Simply click on the report names to select the reports you want. Clicking on Cancel instead will cancel generation of the reports. To return to worksheet Ready mode.

(In the standard Microsoft Excel Solver. we’ll solve the model using the Evolutionary Solver. First shown are the objective function (Set Cell) and decision variables (adjustable cells).9 term to make the model linear. A binding constraint. we receive the message “Solver could not find a feasible solution. When we attempt to solve this model with the Simplex LP or LP/Quadratic Solver. which is available whenever a solution has been found. We’ll then make the Set Cell blank. Sensitivity and Limits Reports. provides basic information about the decision variables and constraints in the model. with information about which constraints are “binding” at the solution. and which constraints have slack. a “status” column showing whether the constraint was binding or non-binding at the solution.” The Answer Report The Answer Report. we’ll deliberately introduce a nonlinear function into the model. and the name of the Solver engine that was used to solve the problem. Returning to the unmodified version of EXAMPLE1. When we solve this model with the LP/Quadratic and GRG Solvers. and produce Answer. we will remove the ^0.9.” To illustrate the Solutions Report for a system of equations. which is not very informative. waiting until we receive the message “Solver cannot improve the current solution. Next are the constraints. In the Premium Solver products. an exception to this occurs when the 172 • Solver Reports Solver User Guide .” and we can produce the report shown below in the section “The Feasibility Report. In brief. using the LP/Quadratic and GRG Solvers. But when we solve it with the Interval Global Solver. we’ll receive the message “The linearity conditions required by this Solver engine are not satisfied. with their final cell values. but we’ll also change the available inventory of Chassis at cell B11 to -1. will always have a slack of zero. What remains is a set of <= constraints – a system of inequalities (and bounds on the variables).” and we can produce the report shown below in “The Linearity Report. a formula representing the constraint. while all other variables are held fixed at their solution values. And the Limits Report shows you the largest and smallest value each decision variable can assume and still satisfy the constraints. the Answer Report includes the Solver Result Message that appeared in the Solver Results dialog.” Next.” This allows us to produce the report shown below in “The Population Report. we get an “inner solution” – an entire region of feasible solutions – as shown in the section “The Solutions Report. When we attempt to solve. removing the objective function from this model. the Answer Report summarizes the original and final values of the decision variables and constraints. with their original value and final values. which is satisfied with equality.$D$9:$F$9)^0. It also gives you a quick way to determine which constraints are “binding” or satisfied with equality at the solution. and the slack value – the difference between the final value and the lower or upper bound imposed by that constraint. we’ll solve this model in its original form. by editing the formula at cell C11 to read =SUMPRODUCT(D11:F11. The Sensitivity Report provides information about how the solution would change for small changes in the constraints or the objective function. we’ll introduce the simple but historically interesting nonlinear equation mentioned in the Introduction. An example Answer Report for the worksheet model EXAMPLE1 (when there are no upper bounds on the decision variables) is shown on the next page.” Next. we find only a single feasible solution.First.

the Solver constructs the entries in the Name column by searching for the first text cell to the left and the first text cell above each variable (changing) cell and each constraint cell. which you can select via the “Outline Reports” check box in the Solver Results dialog. Also note that the formatting for the Original Value.) This example shows the effect of automatic outlining of the Solver reports. and the slack value for a binding constraint will always be zero. In the Premium Solver products. with text labels in the leftmost column and topmost row.right hand side of a constraint is itself a function of the decision variables. If you lay out your Solver model in tabular form. they are visible whether the outline is expanded or collapsed. Solver User Guide Solver Reports • 173 . Final Value and Cell Value is “inherited” from the formatting of the corresponding cell in the Solver model. Comments entered in the Add Constraint and Add Variable dialogs for each block appear in the Answer Report. this special case is handled differently. The outline groups correspond directly to the blocks of variables and constraints you entered in the Solver Parameters dialog – one group per row in the Constraints or Variables list box. these entries will be most useful – as in the example above. When creating a report.

conversely. Moving the variable’s value away from the bound will worsen the objective function’s value. Moving the constraint left hand side’s value away from the bound will worsen the objective function’s value. a nonzero Reduced Cost or Reduced Gradient for that variable will appear in the “Adjustable Cells” section of the report. which has been rounded up to -3. In the example Sensitivity Report on the next page. and its value was driven to the bound during the optimization process. The dual value measures the increase in the objective function’s value per unit increase in the constraint’s bound. In the example Sensitivity Report below. Note: The formatting of cells in the Sensitivity Report is “inherited” from the corresponding cells in the Solver model. Constraints which are simple upper and lower bounds on the variables. The dual value for a variable is nonzero only when the variable’s value is equal to its upper or lower bound (usually zero) at the optimal solution. The dual values for binding constraints are called Shadow Prices for linear programming problems. and Lagrange Multipliers for nonlinear problems. Since the report is a worksheet. you’ll see that the actual value is -2. this is normally the same as a Lagrange Multiplier or Shadow Price for the upper or lower bound. our total profit would decrease by $2. and will not appear in the Constraints section of the Sensitivity report. are handled specially (for efficiency reasons) by both the linear and nonlinear Solver algorithms. including dual values (in both cases) and range information (for linear problems only). When an upper or lower bound on a variable is binding at the solution.5. This can make a significant difference in how the Reduced Gradient. the dual value for producing speakers is -2. conversely. you can always change the cell formatting with the Format menu. so the entries in the report are formatted the same way. Note that it includes only the solution values and the dual values: Reduced Gradients for variables and Lagrange Multipliers for 174 • Solver Reports Solver User Guide . Lagrange Multiplier.50. that you enter in the Constraints list box of the Solver Parameters dialog. Reduced Cost and Shadow Prices are displayed. If you select the cell displayed as -3 on the next page (the Reduced Gradient for Speakers).. meaning that if we were to build one speaker (and therefore less of something else). increasing the number of electronics units from 600 to 601 will allow the Solver to increase total profit by $25.The Sensitivity Report The Sensitivity Report provides classical sensitivity analysis information for both linear and nonlinear programming problems. The dual value measures the increase in the objective function’s value per unit increase in the variable’s value. and its value was driven to the bound during the optimization process.5. the various cells in the EXAMPLE1 model were formatted to display as integers (0 decimal places). and Reduced Gradients for nonlinear problems. This is called a binding constraint. “loosening” the bound will improve the objective. This is called a nonbasic variable. An example of a Sensitivity Report generated for EXAMPLE1 when the Solver engine is the nonlinear GRG solver (and there are no upper bounds on the variables) is shown on the next page. In the example Sensitivity Reports to follow. “loosening” the bound will improve the objective.. Interpreting Dual Values Dual values are the most basic form of sensitivity analysis information. Bear this in mind when designing your model and when reading the report. The dual values for (nonbasic) variables are called Reduced Costs in the case of linear programming problems. The dual value for a constraint is nonzero only when the constraint is equal to its bound.

which we’d use to Solver User Guide Solver Reports • 175 . A Sensitivity Report for EXAMPLE1 when the Solver engine is the standard Simplex or LP/Quadratic Solver (and there are no upper bounds on the decision variables) is shown on the next page. the report will also appear in this format. we’d still build 200 TV sets even if the profitability of TV sets decreased up to $5 per unit. the report shows its coefficient in the objective function. If you solve a quadratic programming problem with the LP/Quadratic Solver. unlike nonlinear problems. the dual values begin to change (along with the constraint gradients) as soon as you move away from the optimal solution. the report shows the constraint right hand side. and the amount by which this coefficient could be increased or decreased without changing the dual value. For each decision variable. Interpreting Range Information In linear programming problems.50 – rounded for display purposes to $3 – we’d start building speakers. or if the unit profit of speakers increased by more than $2. The Sensitivity Report for linear programming problems includes this range information. In the example below. this report provides information about the range over which these values will remain valid. Shadow Prices for constraints).constraints. the dual values are constant over a range of possible changes in the objective function coefficients and the constraint right hand sides. In this example. In addition to the dual values (Reduced Costs for variables. In the case of linear problems. respectively. and the amount by which the RHS could be increased or decreased without changing the dual value. Beyond that point. For each constraint. you should bear in mind that the dual values are valid only at the single point of the optimal solution – if there is any curvature involved. the dual values remain constant over the range of Allowable Increases and Decreases in the variables’ objective coefficients and the constraints’ right hand sides. If you are not accustomed to analyzing sensitivity information for nonlinear problems. we could use up to 50 more electronics units.

Beyond 650 units. The Limits Report The Limits Report was designed by Microsoft to provide a specialized kind of “sensitivity analysis” information. An example of the Limits Report for EXAMPLE1 is shown below. we wouldn’t build any speakers regardless of how much the profit per speaker were decreased. A value of 1E+30 in these reports represents “infinity:” In the example below.” which is the largest value the variable can take under these circumstances. increasing our profits by $25 per unit. and all other variables held fixed. which is the smallest value that a variable can take while satisfying the constraints and holding all of the other variables constant. and an “upper limit. Hence. It is created by re-running the Solver model with each decision variable (or Changing Cell) in turn as the objective (both maximizing and minimizing).build more TV sets instead of stereos. 176 • Solver Reports Solver User Guide . it shows a “lower limit” for each variable. we would switch to building speakers at an incremental profit of $20 per unit (a new dual value).

E9 and F9 are 0. we get a solution where all three variables are 75. For a system of equations. and with all equality constraints (a system of equations) or all inequality constraints (a system of inequalities). but it’s not very informative. the Solver will simply find a solution that satisfies the constraints. If we solve EXAMPLE1with a blank Set Cell using the LP/Quadratic Solver. This is certainly a feasible solution. but it’s also not very informative. If we make the Set Cell blank in EXAMPLE1.” when there is no objective. Solver User Guide Solver Reports • 177 . we get a solution where all three variables are 100 (equal to the starting values of the variables).The Solutions Report The Solutions Report is specific to the Interval Global Solver in the Premium Solver Platform. what remains is a set of <= constraints – a system of inequalities (and bounds on the variables). Can we learn something more about the range of feasible solutions? If we solve the model with the Interval Global Solver. we get a solution where all three variables D9. As explained in “Elements of Solver Models” in the chapter “Solver Models and Optimization. If we select the Solutions Report from the Reports list in the Solver Results dialog and click OK. removing the objective function from the model. It is available for problems with no objective function to be maximized or minimized. the report is available only if the number of variables and the number of constraints are equal. a report like the one below will appear. If we solve the model with the GRG Solver. This too is a feasible solution.

” It is unlikely that there will ever be such a routine. An inner solution is always a “box” with a dimension for each decision variable (in general. using an example in Section 2. Dennis and Robert B. the questions of existence and uniqueness … are beyond the capabilities one can expect of algorithms that solve nonlinear problems. In general. Schnabel. f2(x) = x4 – 12x3 +47x2 – 60x + 24. f3(x) has no real roots. It relies on the unique ability of the Interval Global Solver to find all real solutions of a system of nonlinear equations.1. This classic (and still popular) textbook – a key learning resource for the designers of the Microsoft Excel Solver at Frontline Systems in 1990 – describes the capabilities and limitations of methods for nonlinear optimization and solution of nonlinear equations. by Jack E. The Solutions Report for a system of equations can be considerably more valuable than the Answer Report or the Solutions Report for a system of inequalities. the real roots of f2(x) are x =1 and x ≈ 0. It does not usually enclose all of the feasible points – which can form an arbitrary multidimensional “shape” – and it is also not unique (there can be many possible inner solutions).” 178 • Solver Reports Solver User Guide . such that all points within these ranges satisfy the system of inequalities. and this box lies entirely within the feasible region. titled “What Is Not Possible:” “Consider the problem of finding the real roots of each of the following nonlinear equations in one unknown: f1(x) = x4 – 12x3 +47x2 – 60x. But it will give you a much better idea of the range of feasible solutions than you can get from the Answer Report.The report tells us that the problem has an infinite number of solutions. 3. and it gives us an “inner solution” – a set of ranges or intervals for each decision variable.1. and 5. It would be wonderful if we had a general-purpose computer routine that would tell us: “The roots of f1(x) are x = 0. the ranges for each variable may be different). We can illustrate the Solutions Report for a system of equations with the simplest case of a single equation – drawn from the 1983 textbook Numerical Methods for Unconstrained Optimization and Nonlinear Equations. 4. f3(x) = x4 – 12x3 +47x2 – 60x + 24.888.

a report like the one below appears: These are exactly the solutions x = 0. click Solve. enter 0 in cell A1 for x. and enter A3 as the Set Cell with Value Of 0. If we now set A2 = 24. we are solving f1(x).Note that f1(x). 24 and 24. or else leave the Set Cell blank and enter A3 = 0 in the Constraints list box. Let’s try to solve these equations (for zero roots) in Microsoft Excel. Since the Interval Global Solver requires bounds on the variables. and 5 listed for f1(x) in the textbook. Using A2 = 0 initially.60*A1 + A2.1. 0 in cell A2 for the constant term. f2(x) and f3(x) differ only in the constant term – 0. Starting with a blank worksheet. click Solve. enter A1as the Changing Cell. a report like the one below appears. 4. and select the Solutions Report in the Solver Results dialog. also add constraints A1 <= 100 and A1 >= -100. 3. If you select the Interval Global Solver. and select the Solutions Report in the Solver Results dialog.12*A1^3 + 47*A1^2 . with the solutions for f2(x) = 0: Solver User Guide Solver Reports • 179 . In the Solver Parameters dialog. and in cell A3 enter the equation as =A1^4 .

combined with interval methods for global optimization.” 180 • Solver Reports Solver User Guide . For example. the Population Report gives you summary information about the entire population of candidate solutions maintained by the Evolutionary Solver at the end of the solution process. The Population Report Where the Answer Report gives you detailed information about the single “best solution” returned by the Solver. However. and if the Standard Deviations are small. For each variable and constraint. you can see that the Best Values of the variables are far from the Mean Values across the whole population.” As this example illustrates. How you interpret these values depends in part on your knowledge of the problem. the real roots of f2(x) are x =1 and x ≈ 0. small Standard Deviations might indicate a lack of diversity in the population.1 and click Solve. the Population Report shows the best value found by the Evolutionary Solver. and help you decide whether additional runs of the Evolutionary Solver are likely to yield even better solutions. Dennis and Schnabel’s pessimistic prediction that “It is unlikely that there will ever be such a routine” was probably correct for classical nonlinear optimization methods that evaluate functions only over real numbers. standard deviation. 4. has made such a general-purpose computer routine not only possible. and the mean (average) value. and past experience solving it with the Evolutionary Solver or with other Solver engines. but practical and easy to use. and since the optimization process tends to drive variable values to extremes. These values will give you an idea of the diversity of solutions represented by the population. the Solver Results dialog appears with “Solver could not find a feasible solution. maximum value. The Population Report can give you insight into the performance of the Evolutionary Solver as well as the characteristics of your model. 3.” And this capability is not limited to polynomial functions – it is effective for all continuously differentiable functions. and minimum value of that variable or constraint across the entire population of candidate solutions at the end of the solution process.If we set A2 = 24. The Standard Deviations are relatively large. this may indicate that we have found a globally optimal solution (which is true in this case).888. if the Best Values are similar from run to run. and to the Minimum Value of cell F9. if the Best Values vary from run to run. But the ability of the Premium Solver Platform to evaluate Excel formulas over intervals. but they are equal to the Maximum Values for cells D9 and E9.” indicating that the points in the population have not yet converged to the point where we would receive “Solver has converged to the current solution. this may be reason for confidence that your solution is close to the global optimum. f3(x) has no real roots. and 5. In the example Population Report below. Since the solution is feasible. suggesting that you should increase the Mutation Rate and run the Evolutionary Solver again. but this is not too surprising since we received the message “Solver cannot improve the current solution. the Interval Global Solver is “a general-purpose computer routine” that will tell us: “The roots of f1(x) are x = 0.

cells D9 and E9 are shown as occurring nonlinearly in the model. as expected. with its cell reference. Solver User Guide Solver Reports • 181 .9 – hence this cell is shown in the report as a nonlinear function. and a column containing “Yes” (the objective or constraint is a linear function. any “No” entries appear in boldface.$D$9:$F$9)^0. or the variable occurs linearly throughout the model) or “No” (the function is nonlinear. In the example Linearity Report on the next page. the coefficient of F9 in this formula (at cell F11) is 0 – hence cell F9 does not participate in this function. or whether there is an alternative. a “name” as described in “The Answer Report. you can use the Solver Model dialog to produce a Dependents Report that will pinpoint the exact cell formulas throughout your model that are nonlinear. linear formulation of your problem (see the chapter “Building Large-Scale Models” for ideas). where a constraint such as C11 may depend on many other cell formulas. The format of the Linearity Report is similar to that of the Answer Report: It lists each decision variable and constraint on a separate row. and only cells D9 and E9 are shown as occurring nonlinearly in the model. In the Premium Solver Platform. Since you are normally interested in the nonlinearities. Recall that we edited the formula at cell C11 to read =SUMPRODUCT(D11:F11. determine whether they are correct for your problem. and the constraint at cell C11 is a nonlinear function of the variables. it is easy to pinpoint the formula at C11 as the source of the nonlinearity. Although the formula at C11 refers to all three variable cells D9:F9. In real-world models.” the cell’s original and final values. or the variable occurs nonlinearly). and decide whether they can be rewritten as linear functions.The Linearity Report The purpose of the Linearity Report is to help you pinpoint nonlinear formulas in your model. your next step will be to locate the specific formulas that are nonlinear. With this information.

make the problem infeasible. but with the property that if any one of the constraints or bounds is removed from the IIS. Often. some of these subsets have many fewer constraints than others. the problem becomes feasible. producing a 182 • Solver Reports Solver User Guide . we receive the message “Solver could not find a feasible solution. This process ultimately leads to a so-called “Irreducibly Infeasible System” (IIS) of constraints and variable bounds which. The Solver attempts to find an IIS containing as few constraints as possible. By isolating the infeasibility to a small subset of the constraints. trying first to eliminate “formula” constraints and then to eliminate simple variable bounds – since it is usually easier to understand the effects of variable bounds on the infeasibility of the resulting IIS. an infeasible result simply means that you’ve made a mistake in formulating your model. we know only that the problem is somewhere in the set of five constraints (C11:C15 <= B11:B15) and three bounds on the variables. the Solver may test many different variations of your model. there may be many possible subsets of the constraints and bounds that constitute an IIS. However. such as specifying a <= relation when you meant to use >=. In a model with many constraints that “interact” with each other in complex ways. if your model contains hundreds of constraints. If we attempt to solve EXAMPLE1 with cell B11 (the right hand side of the constraint C11 <= B11) set to -1. taken together.” At this point.The Feasibility Report The purpose of the Feasibility Report is to help you isolate the source of infeasibilities in your model. the Feasibility Report can show you where to look. To produce the Feasibility Report. we select Feasibility from the Reports list box. each one with different combinations of your original constraints. and hence save you a good deal of time. Most often. To pinpoint the problem. it can be quite challenging to locate an error of this type.

which analyzes both the constraints and variable bounds in your model and attempts to eliminate as many of them as possible. of course. The Feasibility Report narrows the full set of constraints to the single constraint C11 <= B11 and bounds on variables D9 and E9. This report may be sufficient to isolate the source of the infeasibility. and the fact that it is infeasible will probably tell you something important about the situation you are modeling. you can produce the “Feasibility-Bounds” version of the report. and you can always interrupt the process by pressing ESC (in which case no report appears). Instead of the full Feasibility Report. Even in such cases. which analyzes only the constraints while keeping the variable bounds in force. there may be no error in your model – it may correctly describe the real-world situation. but you must take into account the bounds on all of the variables when reading it. Solver User Guide Solver Reports • 183 . In some cases.report like the one shown below. computing the IIS may take a good deal of time. and what you can do about them. the Feasibility Report can help you focus on the aspects of the real-world situation that contribute to the infeasibility. If your model is very large. The Solver displays an estimated “% Done” on the Excel status bar as it solves variations of your model.

” and within this section open “Functions. In Excel 2000. Then click Microsoft Excel Visual Basic Reference. with a worksheet containing a Solver model and a VBA module. In Excel 184 • Programming the Solver Solver User Guide . one easy way to see how to use the Solver functions is to turn on the Macro Recorder (select Tools Macro Record New Macro…) and then set up a Solver model interactively. You can create this Solver model interactively if you wish. check whether an optimal solution was found. You do this by calling a set of Solver-specific functions from a macro program you write in Visual Basic Applications Edition (VBA). all you need to do in your code is activate the worksheet and call the function SolverSolve in VBA.Programming the Solver Controlling the Solver’s Operation You can control every aspect of the Solver’s operation programmatically.) Running Predefined Solver Models Controlling the Solver can be as simple as adding one line to your macro program code! Each worksheet in a workbook may have a Solver problem defined. (Note: In the Premium Solver products. and double-click the entry under Microsoft Excel Visual Basic Reference to bring up the Visual Basic Help dialog. You can then edit and customize this macro. and incorporate it into your application. Using Microsoft Excel Help You can learn about the standard Solver functions in Excel’s online Help. Open the section “Programming Information. choose the Contents tab from the Help dialog. In Excel 97. If you distribute such a workbook. Microsoft Excel will record a macro in VBA that calls the Solver functions to mimic the actions you perform. Solverspecific functions for the old Excel macro language are no longer supported.” This will display the Solver function names. and produce reports. and finally the letter S to display the Solver function names. Using the Macro Recorder If you want to set up a Solver model “from scratch” programmatically. variables (Changing Cells) and constraints. which is saved automatically with the workbook. then Functions. open Help and choose the Contents tab. create or modify the choices of objective (Set Cell). You can display or completely hide the Solver dialog boxes.

The second group (Premium VBA Functions) consists of functions that are available only in the Premium Solver products. If you want to write VBA code that will work with both the standard Solver and the Premium Solver products. If the arguments you supply are invalid. Of particular interest is the return value of the SolverSolve function. see the chapter “Diagnosing Solver Results. depending on the arguments you supply. on the active sheet or any other worksheet whose name you supply. string or array values. indicating that the function succeeded. you should limit yourself to functions in the first group. select Help . and consult the notes on each function call to determine which arguments are supported by the standard Solver. Some of these functions have extra arguments Solver User Guide Programming the Solver • 185 .XP. Other possible return values are given in the descriptions of the individual functions.” One group of functions can return a variety of numeric.” starting with the subsection “Standard Solver Result Messages. These functions are a compatible superset of the function calls available in the standard Excel Solver. first select Tools Solver… to ensure that the Premium Solver or Premium Solver Platform add-in is open. Standard VBA Functions The VBA functions in this section are available in both the standard Excel Solver and the Premium Solver products.) may be used to “read” the settings of the current Solver model. an error condition can be raised. These functions (SolverGet. etc.XLA is checked. which you would have to handle via an On Error VBA statement.. The third group (Solver Model VBA Functions) consists of functions that are available only in the Premium Solver Platform. open the Visual Basic Editor (Alt-F11).XLA add-in. Checking Function Return Values The Solver functions generally return integer values. which describes the result of the actual optimization step. Then (after closing the Solver dialog) press Alt-F11 to open the Visual Basic Editor. In Microsoft Excel. The first group consists of functions available in both the standard Excel Solver and the Premium Solver products. Referencing Functions in Visual Basic To use the VBA functions. and make sure that the box next to SOLVER. with additional values starting at 1000 for the Premium Solver Platform’s Interval Global Solver and field-installable Solver engines. which you should check in your VBA code. but for a comprehensive discussion. These integer values are summarized in the description of the SolverSolve function below. SolverOkGet. The normal return value is 0. logical. choose Tools References. Model and Premium Macro Functions The following sections describe each of the VBA function calls supported by the Premium Solver products. Standard. click on the Index tab.Microsoft Visual Basic Help. and type ‘Solver’ to display an index list of function names. your Visual Basic module must include a reference to the SOLVER. The return value can range from -1 to 21 in the Premium Solver products.. The functions are listed alphabetically in three groups.

int. Report:=) CellRef is a reference to a cell or a range of cells on the active worksheet and forms the left hand side of the constraint. Relation:=. Adds a constraint to the current problem. 186 • Programming the Solver Solver User Guide . =. FormulaText:=. and CellRef must be a subset of the Changing Cells. For example. or whether CellRef must have an integer value at the solution. Relation specifies the arithmetic relationship between the left and right hand sides. Comment:=. This takes the place of selecting the appropriate constraint in the Solver Parameters dialog box. from the Tools menu and pressing the Add button in the Solver Parameters dialog box. Remarks The SolverAdd. If FormulaText is a reference to a range of cells. CellRef could be a row and FormulaText could refer to a column. Comment is a string corresponding to the Comment field in the Add Constraint dialog. 5 or 6. but it may be a formula (as text) or a reference to a range of cells. If TRUE or omitted. If Relation is 4. as noted in each function description. VBA Syntax SolverAdd (CellRef:=. however. FormulaText is ignored..that are supported only in the Premium Solver products. SolverChange and SolverDelete functions correspond to the Add. Relation 1 2 3 4 5 6 Relationship <= = >= int (CellRef is an integer variable) bin (CellRef is a binary integer variable) dif (CellRef is an alldifferent group) FormulaText is the right hand side of the constraint and will often be a single number. you may find it more convenient to load the problem in a single step using the SolverLoad function. the constraints will not be included in the reports. the block of constraints will be included in reports generated when you call SolverFinish or SolverFinishDialog. SolverAdd (Form 1) Equivalent to choosing Solver. the number of cells in the range must match the number of cells in CellRef. Change. Report is a logical value corresponding to the Report check box in the dialog. as long as the number of cells is the same. only in the Premium Solver Platform. You use these functions to define constraints. although the shape of the areas need not be the same. You can manipulate constraints with SolverChange and SolverDelete. and Delete buttons in the Solver Parameters dialog box.. For many macro applications. bin or dif) between its left and right sides. >=. Each constraint is uniquely identified by the combination of the cell reference on the left and the relationship (<=. If FALSE. only in the Premium Solver Platform.

Report:=) CellRef is a reference to a cell or a range of cells on the active worksheet and forms a set of decision variables. Report:=) For an explanation of the arguments and selection of constraints. however. and then pressing the Add button in the Solver Parameters dialog box. VBA Syntax SolverChange (CellRef:=. SolverChange (Form 2) Equivalent to choosing Solver.. only in the Premium Solver Platform. For many macro applications. pressing the Variables button. Adds a set of decision variable cells to the current problem.. Comment:=. This form is supported only by the Premium Solver products. SolverChange (Form 1) Equivalent to choosing Solver. VBA Syntax SolverAdd (CellRef:=. from the Tools menu and pressing the Change button in the Solver Parameters dialog box. To change the CellRef or Relation of an existing constraint. use SolverDelete to delete the old constraint and then use SolverAdd to add the constraint in the form you want. Relation:=. Note that SolverOk defines the first entry in the By Changing Variable Cells list box. see SolverAdd. SolverChange and SolverDelete functions correspond to the Add. from the Tools menu. Changes the right hand side of an existing constraint.SolverAdd (Form 2) Equivalent to choosing Solver. In this form. pressing the Variables button. Comment:=.. Use SolverAdd to define additional entries in the Variables Cells list box. you can use these functions to add or change sets of decision variables. Remarks The SolverAdd. Do not call SolverOk with a different ByChange:= argument after you have defined more than one set of variable cells. If TRUE or omitted. Change. Report is a logical value corresponding to the Report check box in the dialog. and Delete buttons in the Solver Parameters dialog box.. Changes a Solver User Guide Programming the Solver • 187 .. Comment is a string corresponding to the Comment field in the Add Variable Cells dialog. and then pressing the Change button in the Solver Parameters dialog box. Remarks If the combination of CellRef and Relation does not match any existing constraint. you may find it more convenient to load the problem in a single step using the SolverLoad function. only in the Premium Solver Platform. the variables will not be included in the reports. the block of variables will be included in reports generated when you call SolverFinish or SolverFinishDialog. FormulaText:=. the function returns the value 4 and no action is taken. from the Tools menu.. If FALSE.

from the Tools menu and pressing the Delete button in the Solver Parameters dialog box. pressing the Variables button. Relation:=. If the constraint is found.. Remarks If CellRef does not match any existing set of variable cells. but if present. VBA Syntax SolverDelete (CellRef:=) CellRef is a reference to a cell or a range of cells on the active worksheet. Remarks If CellRef does not match any existing set of variable cells. Remarks If the combination of CellRef and Relation does not match any existing constraint. SolverDelete (Form 2) Equivalent to choosing Solver. currently defined in the Variable Cells list box as a set of decision variable cells. it is used to confirm that the correct constraint block is being deleted. VBA Syntax SolverChange (CellRef:=. Deletes an existing constraint.. from the Tools menu. the function returns the value 4 and no action is taken. it is deleted. SolverDelete (Form 1) Equivalent to choosing Solver. and the function returns the value 0. they are deleted. which will replace CellRef as a new set of variable cells. This form is supported only by the Premium Solver products. Relation is a reference to a different cell or range of cells on the active worksheet. If the variable cells are found. and the function returns the value 0. currently defined in the Variable Cells list box as decision variable cells. 188 • Programming the Solver Solver User Guide . The dialog box will not be displayed... Comment:=. FormulaText:=) For an explanation of the arguments and selection of constraints. Deletes an existing set of variable cells.set of decision variable cells. SolverFinish Equivalent to selecting options and clicking OK in the Solver Results dialog that appears when the solution process is finished. Relation:=. the function returns the value 1 and no action is taken. and then pressing the Delete button in the Solver Parameters dialog box. the function returns the value 1 and no action is taken. Report:=) CellRef is a reference to a cell or a range of cells on the active worksheet. This form is supported only by the Premium Solver products. VBA Syntax SolverDelete (CellRef:=. The FormulaText argument is optional. see SolverAdd.

and its return value will be one of the integer values ordinarily returned by SolverSolve. KeepFinal is the number 1. 2 or 3 and specifies whether to keep or discard the final solution. OutlineReports:=) The ReportDesc and OutlineReports arguments are available only in the Premium Solver products. you can produce an Answer Report when SolverSolve returns 0. If you are using the Interval Global Solver engine. the Solver will create an Answer Report and a Sensitivity Report. if ReportArray = Array(1. If the Solver found a solution. In this case. solve a Solver User Guide Programming the Solver • 189 . the final solution values are kept in the variable cells. If KeepFinal is 3 – which can occur only if you are solving a problem with integer constraints which has no feasible integer solution – Solver will immediately re-solve the “relaxation” of the problem. If KeepFinal is 1 or omitted. it may produce some or all of the reports mentioned above and/or its own custom reports. the final solution values are discarded and the former values of the variable cells are restored. To determine what you should use for the ReportArray argument. temporarily ignoring the integer constraints. For example. it may have any of the following values: If ReportArray is Array(1) Array(2) Array(3) The Solver creates An Answer Report A Sensitivity Report A Limits Report A combination of these values produces multiple reports. If KeepFinal is 2. you can produce an Answer Report or a Population Report unless SolverSolve returns 18. and a Solutions Report if you successfully solve a system of inequalities or a square system of equations: If ReportArray is Array(1) Array(2) The Solver creates An Answer Report A Solutions Report If you are using the Evolutionary Solver engine. ReportArray:=. ReportDesc:=.2). ReportArray is an array argument specifying what reports should be produced. SolverFinish will return when the solution process is complete. which means that the Solver returned an error at the outset before a population was formed: If ReportArray is Array(1) Array(2) The Solver creates An Answer Report A Population Report If the Solver found that the linearity conditions for the selected Solver engine were not satisfied (SolverSolve returns 7). you can produce either version of the Feasibility Report: If ReportArray is Array(1) Array(2) The Solver creates A Feasibility Report A Feasibility-Bounds Report If you are using the Premium Solver Platform and a field-installable Solver engine.VBA Syntax SolverFinish (KeepFinal:=. 19 or 20. you can produce a Linearity Report: If ReportArray is Array(1) The Solver creates A Linearity Report If the Solver could not find a feasible solution (SolverSolve returns 5).

The dialog box will be displayed. If OutlineReports is TRUE. if it is FALSE.problem interactively with this Solver engine. Then use the ordinal position of the report you want: If ReportArray is Array(1) Array(2) The Solver creates The first report listed The second report listed (and so on) ReportDesc is an array of character strings that allows you to select reports by their names. If it is TRUE. SolverGet Returns information about the current Solver problem. ReportDesc:=. the reports will be produced in “regular” format. as described above. Values of the TypeNum:= argument from 1 to 18 are supported by the standard Excel Solver. “Sensitivity”). VBA Syntax SolverFinishDialog (KeepFinal:=. comments (if any) associated with each block of variables and constraints will be included in the report. any reports you select will be produced in outlined format. For programmatic control of new features and options included in Version 5 of the Premium Solver products. SolverFinishDialog Equivalent to selecting options in the Solver Results dialog that appears when the solution process is finished. and the user will be able to change the options that you initially specify. ReportArray:=. rather than their ordinal positions in the Reports list. see the dialogspecific “Get” functions in the sections “Solver Model VBA Functions” and “Premium VBA Functions. and examine the Reports list box in the Solver Results dialog. The settings are specified in the Solver Parameters and Solver Options dialog boxes. or with the other Solver functions described in this chapter. The possible strings are: “Answer” “Sensitivity” “Limits” “Solutions” “Population” “Linearity” “Feasibility” “Feasibility-Bounds” Answer Report Sensitivity Report Limits Report” Solutions Report Population Report Linearity Report Feasibility Report (full version) Feasibility Report (w/o bounds) The report names you can include in the array depend on the currently selected Solver engine and the integer value returned by SolverSolve. only. or both the Answer Report and the Sensitivity Report with Array (“Answer”. see SolverFinish. SolverGet is provided for compatibility with the standard Excel Solver and earlier versions of the Premium Solver products. the setting of the Report argument or check box in each block of variables and constraints determines whether that block will be included in the report.” 190 • Programming the Solver Solver User Guide . In the Premium Solver products. For example. you can select an Answer Report with Array (“Answer”). OutlineReports is a logical value corresponding to the Outline Reports check box. OutlineReports:=) For an explanation of the arguments of this function.

FALSE if any other Solver is selected TRUE if the Show Iteration Result check box is selected. FALSE otherwise A number corresponding to the type of Estimates: 1 = Tangent 2 = Quadratic A number corresponding to the type of Derivatives: 1 = Forward 2 = Central A number corresponding to the type of Search: 1 = Newton 14 15 16 17 18 Solver User Guide Programming the Solver • 191 . In the Premium Solvers: TRUE if the linear Simplex or LP/Quadratic Solver is selected. The following settings are specified in the Solver Parameters dialog box. FALSE otherwise. or the #N/A error value if Solver has not been used on the active document A 1 2 3 number corresponding to the Equal To option = Max = Min = Value Of 2 3 4 The value in the Value Of box The reference in the Changing Cells box (in the Premium Solvers. only the first entry in the Variables list box) The number of entries in the Constraints list box An array of the left hand sides of the constraints as text An array of numbers corresponding to the relations between the left and right hand sides of the constraints: 1 = <= 2 = = 3 = >= 4 = int 5 = bin 6 = dif An array of the right hand sides of the constraints as text 5 6 7 8 The following settings are specified in the Solver Options dialog box: TypeNum 9 10 11 12 13 Returns The Max Time value (as a number in seconds) The Iterations value (max number of iterations) The Precision value (as a decimal number) The integer Tolerance value (as a decimal number) In the standard Solver: TRUE if the Assume Linear Model check box is selected. TypeNum 1 Returns The reference in the Set Cell box. SheetName:=) TypeNum is a number specifying the type of information you want.VBA Syntax SolverGet (TypeNum:=. FALSE otherwise TRUE if the Use Automatic Scaling check box is selected.

2 = Conjugate The following settings are supported by the Premium Solver products: TypeNum 19 Returns The Convergence value (as a decimal number) in the nonlinear GRG Solver TRUE if the Assume Non-Negative check box is selected. and Large-Scale LP Solvers The Coefficient Tolerance (as a decimal number) in the Large-Scale LP Solver The Solution Tolerance (as a decimal number) in the Large-Scale LP Solver TRUE if the Estimates option in the GRG Solver is set to Tangent. Loads Solver model specifications that you have previously saved on the worksheet. and Large-Scale LP Solvers The Reduced Cost Tolerance (as a decimal number) in the Simplex.. choosing the Options button from the Solver Parameters dialog box.0 or later of the Premium Solver products. FALSE otherwise An array of the entries in the Variables list box as text A number corresponding to the Solver engine dropdown list for the currently selected Solver engine: 1 = Nonlinear GRG Solver 2 = Simplex or LP/Quadratic Solver 3 = Evolutionary Solver 4 = Interval Global Solver In the Premium Solver Platform. and choosing the Load Model. SolverLoad Equivalent to choosing Solver. FALSE if the Estimates option is set to Quadratic A number corresponding to the type of Scaling in the Large-Scale LP Solver: 1 = None 2 = Row Only 3 = Row & Col 20 21 22 23 24 25 26 27 28 29 30 SheetName is the name of a worksheet that contains the Solver problem for which you want information. from the Tools menu. VBA Syntax SolverLoad (LoadArea:=.. LP/Quadratic. FALSE otherwise The Integer Cutoff value (as a decimal number) TRUE if the Bypass Solver Reports check box is selected. The Merge argument is supported only in Version 3. LP/Quadratic. If SheetName is omitted.. button in the Solver Options dialog box.. it is assumed to be the active sheet. other values may be returned for field-installable Solver engines The Pivot Tolerance (as a decimal number) in the Simplex. Merge:=) 192 • Programming the Solver Solver User Guide .

See the EngineDesc argument for an alternative way of selecting the Solver “engine. EngineDesc:=) SetCell corresponds to the Set Cell box in the Solver Parameters dialog box (the objective function in the optimization problem). the current model specifications and options are erased (equivalent to a call to the SolverReset function) before the new specifications are loaded.LoadArea is a reference on the active worksheet to a range of cells from which you want to load a complete model specification. other values for Engine may be specified to select field-installable Solver engines.. MaxMinVal corresponds to the options Max. Engine:=. If FALSE. If you enter a cell. from the Tools menu and specifying options in the Solver Parameters dialog. The dialog box will not be displayed. it need not be the current selection. ByChange indicates the changing cells (decision variables). MaxMinVal:=. these values depend on the ordinal Solver User Guide Programming the Solver • 193 . Specifies basic Solver options. you can add more changing cell references using Form 2 of the SolverAdd function. SolverOk Equivalent to choosing Solver. In the Premium Solver prodicts. as entered in the By Changing Variable Cells edit box. subsequent cells contain additional variable selections and constraints in the form of logical formulas.. SetCell must be a reference to a cell on the active worksheet. Although LoadArea must be on the active worksheet. ByChange:=. The final cells optionally contain an array of Solver option values (see SolverOptions). The first cell in LoadArea contains a formula for the Set Cell edit box. However. VBA Syntax SolverOk (SetCell:=. Merge is a logical value corresponding to either the Merge button or the Replace button in the dialog that appears after you select the LoadArea reference and click OK. Valueof:=. Min and Value Of in the Solver Parameters dialog box. Use this option only if you entered a reference for SetCell.” Engine Solver engine specified 1 Nonlinear GRG Solver 2 Simplex or LP/Quadratic Solver 3 Evolutionary Solver 4 Interval Global Solver In the Premium Solver Platform. ByChange must be a cell reference (usually a cell range or multiple reference) on the active worksheet. ValueOf is ignored if the cell is being maximized or minimized. the second cell contains a formula for the changing cells. MaxMinVal 1 2 3 Option specified Maximize Minimize Value Of ValueOf is the number that becomes the target for the cell in the Set Cell box if MaxMinVal is 3. If it is TRUE. the variable cell selections and constraints from the LoadArea are merged with the currently defined variables and constraints. you must enter a value for MaxMinVal. Engine corresponds to the engine dropdown list in the Solver Parameters dialog.

position of the Solver engine in the dropdown list, which may change when additional Solver engines are installed. EngineDesc, which is supported only by Version 3.0 and later of the Premium Solver products, provides an alternative way to select the Solver engine from the dropdown list in the Solver Parameters dialog. EngineDesc allows you to select a Solver engine by name rather than by ordinal position in the list: EngineDesc “Standard GRG Nonlinear” “Standard Simplex LP” “Standard LP/Quadratic” “Standard Evolutionary” “Standard Interval Global” “Large-Scale LP Solver” “Large-Scale GRG Solver” “Large-Scale SQP Solver” “KNITRO Solver” “XPRESS Solver Engine” “LGO Global Solver” “OptQuest Solver” Solver engine specified Nonlinear GRG Solver Simplex LP Solver LP/Quadratic Solver Evolutionary Solver Interval Global Solver Large-Scale LP Solver Large-Scale GRG Solver Large-Scale SQP Solver KNITRO Solver XPRESS Solver Engine LGO Global Solver OptQuest Solver

SolverOkDialog

Equivalent to choosing Solver... from the Tools menu and specifying options in the Solver Parameters dialog. The Solver Parameters dialog box will be displayed, and the user will be able to change the options you initially specify. VBA Syntax SolverOkDialog (SetCell:=, MaxMinVal:=, Valueof:=, ByChange:=, Engine:=, EngineDesc:=) For an explanation of the arguments of this function, see SolverOk.

SolverOptions

Equivalent to choosing Solver... from the Tools menu, then choosing the Options button in the Solver Parameters dialog box. Specifies Solver algorithmic options. Arguments supported by the standard Excel Solver include MaxTime, Iterations, Precision, AssumeLinear, StepThru, Estimates, Derivatives, SearchOption, IntTolerance, Scaling, Convergence and AssumeNonNeg. SolverOptions is provided for compatibility with the standard Excel Solver and earlier versions of the Premium Solver products. For programmatic control of new features and options included in Version 3.0 and above of the Premium Solver products, see the dialog-specific functions in the sections “Solver Model VBA Functions” and “Premium VBA Functions.” VBA Syntax SolverOptions (MaxTime:=, Iterations:=, Precision:=, AssumeLinear:=, StepThru:=, Estimates:=, Derivatives:=, SearchOption:=, IntTolerance:=, Scaling:=, Convergence:=, AssumeNonNeg:=, IntCutoff:=, BypassReports:=, PivotTol:=, ReducedTol:=, CoeffTol:=, SolutionTol:=, Crash:=, ScalingOption:=) The arguments correspond to the options in the Solver Options dialog box. If an argument is omitted, the Solver maintains the current setting for that option. If any of the arguments are of the wrong type, the function returns the #N/A error value. If

194 • Programming the Solver

Solver User Guide

all arguments are of the correct type, but an argument has an invalid value, the function returns a positive integer corresponding to its position. A zero return value indicates that all options were accepted. MaxTime must be an integer greater than zero. It corresponds to the Max Time edit box. Iterations must be an integer greater than zero. It corresponds to the Iterations edit box. Precision must be a number between zero and one, but not equal to zero or one. It corresponds to the Precision edit box. AssumeLinear is a logical value corresponding to the Assume Linear Model check box. This argument is included for compatibility with the standard Microsoft Excel Solver. It is ignored by the Premium Solver products, which use the Engine or EngineDesc argument of SolverOk or SolverOkDialog instead. StepThru is a logical value corresponding to the Show Iteration Results check box. If TRUE, Solver pauses at each trial solution; if FALSE it does not. If you have supplied SolverSolve with a valid VBA function argument, your function will be called each time Solver pauses; otherwise the standard Show Trial Solution dialog box will appear. Estimates is the number 1 or 2 and corresponds to the Estimates option: 1 for Tangent and 2 for Quadratic. Derivatives is the number 1 or 2 and corresponds to the Derivatives option: 1 for Forward and 2 for Central. SearchOption is the number 1 or 2 and corresponds to the Search option: 1 for Newton and 2 for Conjugate. IntTolerance is a number between zero and one, corresponding to the Tolerance edit box. This argument applies only if integer constraints have been defined. Scaling is a logical value corresponding to the Use Automatic Scaling check box. If TRUE, then Solver rescales the objective and constraints internally to similar orders of magnitude. If FALSE, Solver uses values directly from the worksheet. In the standard Excel 5.0 and 7.0 Solver, this option affects the nonlinear GRG Solver only; in Excel 97, 2000, XP and Excel 2003 and the Premium Solver products, this option affects all Solver engines. In the Large-Scale LP Solver, if ScalingOption is omitted, Scaling = TRUE implies ScalingOption = 3. Convergence is a number between zero and one, but not equal to zero or one. It corresponds to the Convergence box. AssumeNonNeg is a logical value corresponding to the Assume Non-Negative check box. If TRUE, Solver supplies a lower bound of zero for all variables without explicit lower bounds in the Constraint list box. If FALSE, no action is taken. IntCutoff is a number corresponding to the Integer Cutoff edit box. This argument applies only if integer constraints have been defined. BypassReports is a logical value corresponding to the Bypass Solver Reports check box. If TRUE, the Solver will skip preparing the information needed to create Solver Reports. If FALSE, the Solver will prepare for the reports. For large models, bypassing the Solver Reports can speed up the solution process considerably. PivotTol is a number between zero and one, corresponding to the Pivot Tolerance edit box for the Simplex, LP/Quadratic and Large-Scale LP Solvers.

Solver User Guide

Programming the Solver • 195

ReducedTol is a number between zero and one, corresponding to the Reduced Cost Tolerance edit box for the Simplex, LP/Quadratic and Large-Scale LP Solvers. CoeffTol is a number between zero and one, corresponding to the Coefficient Tolerance edit box for the Large-Scale LP Solver. SolutionTol is a number between zero and one, corresponding to the Solution Tolerance edit box for the Large-Scale LP Solver. Crash is a logical value corresponding to the Crash Artificial Variables check box in the Large-Scale LP Solver. If TRUE, the Solver employs a sophisticated “crashing” procedure to choose a basis that is as well conditioned and as close to feasibility and triangularity as possible. If FALSE, the Solver creates an initial basis using “artificial variables,” as in the classical Simplex method. ScalingOption is the number 1, 2 or 3 and corresponds to the Scaling option in the Large-Scale LP Solver: 1 for None, 2 for Row Only and 3 for Row & Col.

SolverReset

Equivalent to choosing Solver... from the Tools menu and choosing the Reset All button in the Solver Parameters dialog box. Erases all cell selections and constraints from the Solver Parameters dialog box, and restores all the settings on the Solver Options, Limit Options and Integer Options dialog tabs to their defaults. The SolverReset function may be automatically performed when you call SolverLoad. VBA Syntax SolverReset

SolverSave

Equivalent to choosing Solver... from the Tools menu, choosing the Options button from the Solver Parameters dialog box, and choosing the Save Model... button in the Solver Options dialog box. Saves the model specifications on the worksheet. VBA Syntax SolverSave (SaveArea:=) SaveArea is a reference on the active worksheet to a range of cells or to the upperleft corner of a column of cells into which you want to save the current model’s specifications. SaveArea must be on the active worksheet, but it need not be the current selection. Remarks If you specify only one cell for SaveArea, the area is extended downwards for as many cells as are required to hold the model specifications. If you specify more than one cell and the area is too small for the problem, the model specifications will not be saved, and the function will return the value 2.

SolverSolve

Equivalent to choosing Solver... from the Tools menu and choosing the Solve button in the Solver Parameters dialog box. If successful, returns an integer value indicating the condition that caused the Solver to stop, as described below.

196 • Programming the Solver

Solver User Guide

VBA Syntax SolverSolve (UserFinish:=, ShowRef:=) UserFinish is a logical value specifying whether to show the standard Solver Results dialog box. If UserFinish is TRUE, SolverSolve returns its integer value without displaying anything. Your VBA code should decide what action to take (for example, by examining the return value or presenting its own dialog box); it must call SolverFinish in any case to return the worksheet to its proper state. If UserFinish is FALSE or omitted, Solver displays the standard Solver Results dialog box, allowing the user to keep or discard the final solution values, and optionally produce reports. ShowRef is a VBA function to be called in place of displaying the Show Trial Solution dialog box. It is used when you want to gain control whenever Solver finds a new “Trial Solution” value, the user presses the ESC key, or a limit on the solution process is exceeded. Here is an example of defining and using the argument ShowRef: Sub Test answer = SolverSolve(True, ″ShowTrial″) End Sub Function ShowTrial(Reason As Integer) Msgbox Reason ShowTrial = 1 End Function The argument Reason, which must be present, is an integer value from 1 to 5: 1. Function called (on every iteration) because the Show Iteration Results box in the Solver Options dialog was checked, or function called because the user pressed ESC to interrupt the Solver. Function called because the Max Time limit in the Solver Options dialog was exceeded. Function called because the Max Iterations limit in the Solver Options dialog was exceeded. Function called because the Max Subproblems limit on the Integer Options or Limit Options dialog tab was exceeded (Premium Solver products only). Function called because the Max Integer Sols limit on the Integer Options dialog tab or the Max Feasible Sols limit on the Limit Options dialog tab was exceeded (Premium Solver products only).

2. 3. 4.

5.

The function must return 0 if the Solver should stop (same as the Stop button in the Show Trial Solution dialog), 1 if it should continue running (same as the Continue button), or 2 if it should restart the solution process (same as the Restart button). Note: In the standard Excel Solver and the Premium Solver prior to V5, the function should return FALSE instead of 0 to stop, or TRUE instead of 1 to continue running; the restart alternative is not available. Your VBA function can inspect the current solution values on the worksheet, or take other actions such as saving or charting the intermediate values. However, it should

Solver User Guide

Programming the Solver • 197

the Premium Solver products return values from –1 to 21. are satisfied. All constraints and optimality conditions are satisfied. or alter the formulas in the objective and constraint cells. as this could adversely affect the solution process. The Set Cell values do not converge. SolverSolve returns the #N/A error value. Value -1 Stopping Condition A licensing problem was detected. Solver found a solution. constraints are satisfied. Solver converged in probability to a global solution. 16 17 18 19 20 198 • Programming the Solver Solver User Guide . All 8 9 10 11 12 13 14 15 Stop chosen when the maximum number of feasible [integer] solutions was reached. Error in model. and the problem specifications are passed to it. Variable bounds conflict in binary or alldifferent constraint. Remarks If a Solver problem has not been completely defined. Solver has converged to the current solution. Solver cannot improve the current solution. The linearity conditions required by this Solver engine are not satisfied. The problem is too large for Solver to handle.not alter the values in the variable cells. Otherwise the Solver engine is started. Solver stopped at user’s request. Please verify that all cells and constraints are valid. Stop chosen when the maximum time limit was reached. SolverSolve returns an integer value indicating the stopping condition. Solver found an integer solution within tolerance. Solver could not find a feasible solution. Lower and upper bounds on variables allow no feasible solution. Solver encountered an error value in a target or constraint cell. starting at 1000. the Premium Solver Platform may return engine-specific values for custom stopping conditions. Stop chosen when the maximum number of feasible [integer] subproblems was reached. When the Interval Global Solver or field-installable Solver engines are used. There is not enough memory available to solve the problem. satisfied. or your trial license has expired. All variables must have both upper and lower bounds. The standard Excel Solver returns values from 0 to 13. All constraints 0 1 2 All constraints are 3 4 5 6 7 Stop chosen when the maximum iteration limit was reached. Error condition at cell address (Premium Solver Platform only). When the solution process is complete.

DependentsReport:=. FastSetup:=. the Solver produces the Dependents Report when the SolverDependents function is called. the Solver maintains the current setting for that option. Engines:=. 1000 1001 1002 Solver Model VBA Functions The VBA functions in this section are available only in the Premium Solver Platform. If any of the arguments are of the wrong type. the Solver does not produce the Dependents Report. You will need to use these functions to control the features of the Parser and Interpreter. ReqSmooth:=. DependentsReport is a logical value corresponding to the Report: Dependent Problems check box. VBA Syntax SolverModel (ScalingReport:=. OnSolve:=. Interval Global Solver requires On Solve Automatic and strictly smooth functions (Premium Solver Platform only). the function returns the #N/A error value.21 Solver encountered an error computing derivatives (Premium Solver Platform only). SolverModel Equivalent to choosing Solver. If FALSE. and clicking OK. produce the Scaling Report and Dependents Report. AssumeModel is a number corresponding to the option button selected in the Assume Model option group: AssumeModel 1 2 3 4 Assumed Model Type Linear Quadratic Nonlinear Nonsmooth OnSolve is a number corresponding to the option button selected in the On Solve option group: Solver User Guide Programming the Solver • 199 .. If TRUE. You can use them to analyze model formulas. from the Tools menu. Solution found. Function cannot be evaluated for given real or interval arguments (Premium Solver Platform only). the Solver produces the Scaling Report when the SolverDependents function is called. Specifies options for the Parser and Interpreter. the Solver does not produce the Scaling Report. but an argument has an invalid value. but not proven globally optimal (Premium Solver Platform only).. ActiveOnly) The arguments correspond to the options in the Solver Model dialog box. and control Interpreter advanced options. perform a dependents analysis. If an argument is omitted. If all arguments are of the correct type. If FALSE. Sparse:=. If TRUE. A zero return value indicates that all options were accepted. obtain model statistics. determine whether and how the Parser and Interpreter will be used when you call SolverSolve. the function returns a positive integer corresponding to its position. then choosing the Model button in the Solver Parameters dialog box. AssumeModel:=. ScalingReport is a logical value corresponding to the Report: Scaling Problems check box.

If FALSE. the Solver treats these functions as smooth nonlinear. this option is ignored and the Solver will always attempt to use old-style Fast Problem Setup. the Solver treats the special functions ABS. If TRUE. IF. These settings are entered in the Solver Model dialog. FastSetup is a logical value corresponding to the Fast Setup check box in the Analyzer options group. SheetName:=) TypeNum is a number specifying the type of information you want. TypeNum 1 2 3 4 5 6 Returns The All Variables value (as a decimal number) The Smooth Variables value (as a decimal number) The Linear Variables value (as a decimal number) The Bounds value (as a decimal number) The Integers value (as a decimal number) The All Functions value (as a decimal number) 200 • Programming the Solver Solver User Guide . SolverModelGet Returns Solver Model option settings for the current Solver problem on the specified sheet. and SIGN as nonsmooth. the Parser and Interpreter will operate internally in their own Sparse mode. the Solver uses the Parser and Interpreter directly. MIN.OnSolve 1 2 3 4 Action on SolverSolve No Action Formulas Dependents Automatic Engines is a number corresponding to the option button selected in the Engines option group: Engines 1 2 3 4 Engines Shown in List All Valid Good Best ReqSmooth is a logical value corresponding to the Req Smooth check box in the Analyzer options group. If FALSE. The following settings are specified in the Solver Model dialog box. the Solver attempts to use old-style Fast Problem Setup before using the Parser and Interpreter. the Parser and Interpreter will analyze objective and constraint function formulas only on the active sheet. If FALSE the Parser and Interpreter operate in Dense mode. ActiveOnly is a logical value corresponding to the Active Only check box in the Analyzer options group. most of these values are available only after the SolverDependents function is called. If TRUE. If TRUE. the Parser and Interpreter analyze all objective and constraint function formulas in the workbook. Sparse is a logical value corresponding to the Sparse check box in the Analyzer options group. VBA Syntax SolverModelGet (TypeNum:=. If the On Solve option is No Action. If TRUE. MAX. The available settings include the “read-only” edit boxes in the upper left part of the Solver Model dialog. If FALSE.

15 16 17 18 19 20 21 22 TRUE if the Req Smooth check box is selected. For more information. Uses the Parser to analyze the formulas making up the objective and constraints in the current Solver model. and choosing the Dependents button in the Solver Model dialog box. FALSE otherwise TRUE if the Sparse check box is selected. or 4 for Automatic A number corresponding to the Engines option: 2 for Valid. or 4 for Nonsmooth A number corresponding to the On Solve option: 1 for No Action. FALSE otherwise TRUE if the Fast Setup check box is selected.. 2 for Formulas. FALSE otherwise TRUE if the Active Only check box is selected. "NSP".. FALSE otherwise A number corresponding to the Assume Model option: 1 for Linear.” Solver User Guide Programming the Solver • 201 . Uses the Parser to analyze the formulas making up the objective and constraints in the current Solver model. and choosing the Formulas button in the Solver Model dialog box.. choosing the Model button from the Solver Parameters dialog box. 3 for Nonlinear. FALSE otherwise TRUE if the Report: Dependent Problems check box is selected.. 3 for Dependents.7 8 9 10 11 12 13 14 The Smooth Functions value (as a decimal number) The Linear Functions value (as a decimal number) The All Dependents value (as a decimal number) The Smooth Dependents value (as a decimal number) The Linear Dependents value (as a decimal number) The Dependent % value (as a decimal number) The Total Cells value (as a decimal number) TRUE if the Report: Scaling Problems check box is selected. "NLP". see the chapter “Analyzing and Solving Models. choosing the Model button from the Solver Parameters dialog box. FALSE otherwise A string corresponding to the type of model: "LP". or "Unknown" 23 SolverDependents Equivalent to choosing Solver.” VBA Syntax SolverDependents SolverFormulas Equivalent to choosing Solver. then uses the Interpreter to perform a dependents analysis of the model formulas. 2 for Quadratic. For more information. "QP". from the Tools menu. from the Tools menu. or 4 for Best 1 for All. 3 for Good. see the chapter “Analyzing and Solving Models.

To control some of the new features and options included in the Premium Solver products. or 4 for Automatic Choice 8 9 10 11 12 13 202 • Programming the Solver Solver User Guide . VBA Syntax SolverEVGet (TypeNum:=.VBA Syntax SolverFormulas Premium VBA Functions The VBA functions in this section were first introduced in Version 3. FALSE otherwise The Random Seed value (as a decimal number) A number corresponding to the Local Search option: 1 for Randomized Local Search. SheetName:=) TypeNum is a number specifying the type of information you want.” SolverEVGet Returns Evolutionary Solver option settings for the current Solver problem on the specified sheet. FALSE otherwise TRUE if the Bypass Solver Reports check box is selected. SolverIGOptions. These settings are entered in the Solver Options dialog when the Evolutionary Solver is selected in the Solver Engine dropdown list. The following settings are specified in the Evolutionary Solver Options dialog box. you will need to use these functions (notably. 2 for Deterministic Pattern Search. FALSE otherwise TRUE if the Assume Non-Negative check box is selected. FALSE otherwise TRUE if the Use Automatic Scaling check box is selected.0 of the Premium Solver products and expanded in later versions. TypeNum 1 2 3 4 5 6 7 Returns The Max Time value (as a number in seconds) The Iterations value (max number of iterations) The Precision value (as a decimal number) The Convergence value (as a decimal number) The Population Size value (as a decimal number) The Mutation Rate value (as a decimal number) TRUE if the Require Bounds on Variables check box is selected. you should use only functions in the section “Standard VBA Functions. FALSE otherwise TRUE if the Show Iteration Result check box is selected. 3 for Gradient Local Search. However. if you want to write VBA code that can be used with both the standard Solver and the Premium Solver products. SolverLimOptions and SolverIntOptions functions). the SolverEVOptions.

the Evolutionary Solver will return immediately from a call to the SolverSolve function with a value of 18 if any of the variables do not have both lower and upper bounds defined. otherwise the standard Show Trial Solution dialog box will appear. It corresponds to the Random Seed edit box. Specifies options for the Evolutionary Solver. It corresponds to the Convergence box. If all arguments are of the correct type. RandomSeed must be an integer greater than zero. from the Tools menu and then choosing the Options button in the Solver Parameters dialog box when the Evolutionary Solver is selected in the Solver Engine dropdown list. AssumeNonNeg:=. It corresponds to the Mutation Rate edit box. If FALSE. but not equal to zero or one. it is assumed to be the active sheet. BypassReports:=. If TRUE. SolverEVOptions Equivalent to choosing Solver. If TRUE. A zero return value indicates that all options were accepted. then Solver rescales the objective and constraints internally to similar orders of magnitude. StepThru is a logical value corresponding to the Show Iteration Results check box. Scaling:=. the Evolutionary Solver will attempt to solve the problem without bounds on all of the variables. If FALSE. PopulationSize:=. Iterations must be an integer greater than zero. StepThru:=. Scaling is a logical value corresponding to the Use Automatic Scaling check box. MaxTime must be an integer greater than zero. but not equal to zero or one. RequireBounds is a logical value corresponding to the Require Bounds on Variables check box. MutationRate:=. Convergence is a number between zero and one. If you have supplied SolverSolve with a valid VBA function. Iterations:=. It corresponds to the Precision edit box. the Solver maintains the current setting for that option. Precision must be a number between zero and one.14 TRUE if the Fix Nonsmooth Variables check box is selected. but an argument has an invalid value. the function returns a positive integer corresponding to its position. If TRUE. Precision:=. but not equal to zero or one. FALSE otherwise SheetName is the name of a worksheet that contains the Solver problem for which you want information. PopulationSize must be an integer greater than or equal to zero. It corresponds to the Iterations edit box. MutationRate must be a number between zero and one. Solver pauses at each trial solution. Solver uses values directly from the worksheet. If SheetName is omitted. If an argument is omitted. RequireBounds:=.. your function will be called each time Solver pauses.. It corresponds to the Max Time edit box. VBA Syntax SolverEVOptions (MaxTime:=. if FALSE it does not. Solver User Guide Programming the Solver • 203 . LocalSearch:= FixNonSmooth:=) The arguments correspond to the options in the Solver Options dialog box. RandomSeed:=. It corresponds to the Population Size edit box. If any of the arguments are of the wrong type. Convergence:=. the function returns the #N/A error value.

AssumeNonNeg is a logical value corresponding to the Assume Non-Negative check box. If TRUE, Solver supplies a lower bound of zero for all variables without explicit lower bounds in the Constraint list box. If FALSE, no action is taken. BypassReports is a logical value corresponding to the Bypass Solver Reports check box. If TRUE, the Solver will skip preparing the information needed to create Solver Reports. If FALSE, the Solver will prepare for the reports. For large models, bypassing the Solver Reports can speed up the solution considerably. LocalSearch is a number corresponding to the option button selected in the Local Search option group: LocalSearch 1 2 3 4 Local Search Strategy Randomized Local Search Deterministic Pattern Search Gradient Local Search Automatic Choice

In earlier versions of the Premium Solver Platform, a value of 4 for Local Search selected the Linear Local Gradient Search option. In the Premium Solver Platform V5.5, a value of 4 selects the Automatic Choice option; this allows the Solver to choose a local search method automatically – Randomized Local Search, Gradient Local Search, or Linear Local Gradient Search, depending on the characteristics of the problem. FixNonSmooth is a logical value corresponding to the Fix Nonsmooth Variables check box. If TRUE, the Solver will fix the nonsmooth variables to their current values during each local search, and allow only smooth and linear variables to be varied. If FALSE, the Solver will allow all of the variables to be varied.

SolverGRGGet

Returns GRG Solver option settings for the current Solver problem on the specified sheet. These settings are entered in the Solver Options dialog when the GRG Solver is selected in the Solver Engine dropdown list. VBA Syntax SolverGRGGet (TypeNum:=, SheetName:=) TypeNum is a number specifying the type of information you want. The following settings are specified in the GRG Solver Options dialog box.

TypeNum 1 2 3 4 5 Returns The Max Time value (as a number in seconds) The Iterations value (max number of iterations) The Precision value (as a decimal number) The Convergence value (as a decimal number) TRUE if the Show Iteration Result check box is selected; FALSE otherwise TRUE if the Use Automatic Scaling check box is selected; FALSE otherwise TRUE if the Assume Non-Negative check box is selected; FALSE otherwise TRUE if the Bypass Solver Reports check box is selected; FALSE otherwise

6

7

8

204 • Programming the Solver

Solver User Guide

9

TRUE if the Recognize Linear Variables check box is selected; FALSE otherwise A number corresponding to the type of Estimates: 1 = Tangent 2 = Quadratic A number corresponding to the type of Derivatives: 1 = Forward 2 = Central A number corresponding to the type of Search: 1 = Newton 2 = Conjugate The Population Size value (as a decimal number) The Random Seed value (as a decimal number) TRUE if the Multistart Search check box is selected; FALSE otherwise TRUE if the Topographic Search check box is selected; FALSE otherwise TRUE if Require Bounds on Variables check box is selected; FALSE otherwise

10

11

12

13 14 15

16

17

The return values for TypeNum = 13 through 17 are supported only for the Premium Solver Platform. SheetName is the name of a worksheet that contains the Solver problem for which you want information. If SheetName is omitted, it is assumed to be the active sheet.

SolverGRGOptions

Equivalent to choosing Solver... from the Tools menu and then choosing the Options button in the Solver Parameters dialog box when the GRG Nonlinear Solver is selected in the Solver Engines dropdown list. Specifies options for the GRG Solver. VBA Syntax SolverGRGOptions (MaxTime:=, Iterations:=, Precision:=, Convergence:=, PopulationSize:=, RandomSeed:=, StepThru:=, Scaling:=, ,AssumeNonNeg:=, BypassReports:=, RecognizeLinear:=, MultiStart:=, TopoSearch:=, RequireBounds:=, Estimates:=, Derivatives:=, SearchOption:=) The arguments correspond to the options in the Solver Options dialog box. If an argument is omitted, the Solver maintains the current setting for that option. If any of the arguments are of the wrong type, the function returns the #N/A error value. If all arguments are of the correct type, but an argument has an invalid value, the function returns a positive integer corresponding to its position. A zero return value indicates that all options were accepted. MaxTime must be an integer greater than zero. It corresponds to the Max Time edit box. Iterations must be an integer greater than zero. It corresponds to the Iterations edit box. Precision must be a number between zero and one, but not equal to zero or one. It corresponds to the Precision edit box. Convergence is a number between zero and one, but not equal to zero or one. It corresponds to the Convergence box.

Solver User Guide

Programming the Solver • 205

PopulationSize must be an integer greater than or equal to zero. It corresponds to the Population Size edit box. RandomSeed must be an integer greater than zero. It corresponds to the Random Seed edit box. StepThru is a logical value corresponding to the Show Iteration Results check box. If TRUE, Solver pauses at each trial solution; if FALSE it does not. If you have supplied SolverSolve with a valid VBA function, your function will be called each time Solver pauses; otherwise the standard Show Trial Solution dialog box will appear. Scaling is a logical value corresponding to the Use Automatic Scaling check box. If TRUE, then Solver rescales the objective and constraints internally to similar orders of magnitude. If FALSE, Solver uses values directly from the worksheet. AssumeNonNeg is a logical value corresponding to the Assume Non-Negative check box. If TRUE, Solver supplies a lower bound of zero for all variables without explicit lower bounds in the Constraint list box. If FALSE, no action is taken. BypassReports is a logical value corresponding to the Bypass Solver Reports check box. If TRUE, the Solver will skip preparing the information needed to create Solver Reports. If FALSE, the Solver will prepare for the reports. For large models, bypassing the Solver Reports can speed up the solution considerably. RecognizeLinear is a logical value corresponding to the Recognize Linear Variables check box. If TRUE, the Solver will recognize variables whose partial derivatives are not changing during the solution process, and assume that they occur linearly in the problem. If FALSE, the Solver will not make any assumptions about such variables. See the chapter “Solver Options” for a further discussion of this option. MultiStart is a logical value corresponding to the Multistart Search check box. If TRUE, the Solver will use Multistart Search, in conjunction with the GRG Solver, to seek a globally optimal solution. If FALSE, the GRG Solver alone will be used to search for a locally optimal solution. TopoSearch is a logical value corresponding to the Topographic Search check box. If TRUE, and if Multistart Search is selected, the Solver will construct a topography from the randomly sampled initial points, and use it to guide the search process. RequireBounds is a logical value corresponding to the Require Bounds on Variables check box. If TRUE, the Solver will return immediately from a call to the SolverSolve function with a value of 18 if any of the variables do not have both lower and upper bounds defined. If FALSE, then Multistart Search (if selected) will attempt to find a globally optimal solution without bounds on all of the variables. Estimates is the number 1 or 2 and corresponds to the Estimates option: 1 for Tangent and 2 for Quadratic. Derivatives is the number 1 or 2 and corresponds to the Derivatives option: 1 for Forward and 2 for Central. SearchOption is the number 1 or 2 and corresponds to the Search option: 1 for Newton and 2 for Conjugate.

SolverIGGet

Returns Interval Global Solver option settings for the current Solver problem on the specified sheet. These settings are entered in the Solver Options dialog when the Interval Global Solver is selected in the Solver Engine dropdown list.

206 • Programming the Solver

Solver User Guide

VBA Syntax SolverIGGet (TypeNum:=, SheetName:=) TypeNum is a number specifying the type of information you want. The following settings are specified in the Interval Global Solver Options dialog box.

TypeNum 1 2 3 4 5 6 Returns The Max Time value (as a number in seconds) The Iterations value (max number of iterations) The Accuracy value (as a decimal number) The Resolution value (as a decimal number) The Max Time w/o Improvement value (as a decimal number) TRUE if the Show Iteration Result check box is selected; FALSE otherwise TRUE if the Assume Non-Negative check box is selected; FALSE otherwise TRUE if the Bypass Solver Reports check box is selected; FALSE otherwise TRUE if the Abs vs. Relative Stop check box is selected; FALSE otherwise TRUE if the Assume Stationary check box is selected; FALSE otherwise A number corresponding to the type of Method: 1 = Classic Interval 2 = Linear Enclosure TRUE if the Second Order check box is selected; FALSE otherwise TRUE if the LP Test check box is selected; FALSE otherwise TRUE if the LP Phase II check box is selected; FALSE otherwise

7

8

9

10

11

12 13 14

SolverIGOptions

Equivalent to choosing Solver... from the Tools menu and then choosing the Options button in the Solver Parameters dialog box when the Interval Global Solver is selected in the Solver Engines dropdown list. Specifies options for the Interval Global Solver. VBA Syntax SolverIGOptions (MaxTime:=, Iterations:=, Accuracy:=, Resolution:=, MaxTimeNoImp:=, StepThru:=, AssumeNonNeg:=, BypassReports:=, AbsRelStop:=, AssumeStationary:=, Method:=, SecondOrder:=, LPTest:=, LPPhaseII:=) The arguments correspond to the options in the Solver Options dialog box. If an argument is omitted, the Solver maintains the current setting for that option. If any of the arguments are of the wrong type, the function returns the #N/A error value. If all arguments are of the correct type, but an argument has an invalid value, the function returns a positive integer corresponding to its position. A zero return value indicates that all options were accepted.

Solver User Guide

Programming the Solver • 207

It corresponds to the Accuracy edit box. If FALSE. the Solver will not use this procedure. If you have supplied SolverSolve with a valid VBA function. including those where variables are at their bounds. If TRUE. Relative Stop check box. the Solver will use a Simplex method Phase I test to eliminate boxes that contain no feasible solutions. the Solver will prepare for the reports. If FALSE. If TRUE. Accuracy must be a number between zero and one. This option is used only if the Method option is 2. Solver pauses at each trial solution. It corresponds to the Iterations edit box. If FALSE. For large models. If TRUE. bypassing the Solver Reports can speed up the solution considerably. BypassReports is a logical value corresponding to the Bypass Solver Reports check box. If TRUE. the Solver will search for optimal solutions at all points. LPTest is a logical value corresponding to the LP Test check box. AssumeNonNeg is a logical value corresponding to the Assume Non-Negative check box. but not equal to zero or one. It corresponds to the Max Time edit box. your function will be called each time Solver pauses. If FALSE. no action is taken. the Solver will assume that the optimal solution is a stationary point and is not at a decision variable bound. If FALSE. If TRUE. the Solver will skip preparing the information needed to create Solver Reports.” StepThru is a logical value corresponding to the Show Iteration Results check box. 208 • Programming the Solver Solver User Guide . Solver supplies a lower bound of zero for all variables without explicit lower bounds in the Constraint list box. Method is the number 1 or 2 and corresponds to the Method option: 1 for Classic Interval and 2 for Linear Enclosure. LPPhaseII is a logical value corresponding to the LP Phase II check box. If FALSE. AbsRelStop is a logical value corresponding to the Abs vs. SecondOrder is a logical value corresponding to the Second Order check box. If TRUE. If FALSE. the Solver will use the absolute difference when comparing the current solution’s objective to the best bound. Iterations must be an integer greater than zero. Resolution is a number greater than zero.MaxTime must be an integer greater than zero. AssumeStationary is a logical value corresponding to the Assume Stationary check box. MaxTimeNoImp is a number corresponding to the Max Time w/o Improvement edit box. the Solver will use second order (Interval Newton) methods. This option is used only if the Method option is 1. the Solver will use a Simplex method Phase II procedure to seek an improved bound on the objective in a box. if FALSE it does not. the Solver will not use this test. the Solver will use the relative difference when making the comparison. It corresponds to the Resolution box. the Solver will use only first order methods. This argument determines when the Interval Global Solver will stop with the message “Solver cannot improve the current solution. otherwise the standard Show Trial Solution dialog box will appear. If TRUE. If TRUE.

. FALSE otherwise TRUE if the Bounds Improvement check box is selected. ProbingFeasibility:=. IntCutoff:=. MaxIntegerSols:=. TRUE if the Use Dual Simplex for Subproblems check box is selected. If SheetName is omitted. VariableReordering:=. SolverIntOptions Equivalent to choosing Solver. FALSE otherwise TRUE if the Probing / Feasibility check box is selected. VBA Syntax SolverIntGet (TypeNum:=. TypeNum 1 2 3 4 5 Returns The Max Subproblems value (as a decimal number) The Max Integer Sols value (as a decimal number) The Integer Tolerance value (as a decimal number) The Integer Cutoff value (as a decimal number) TRUE if the Solve Without Integer Constraints check box is selected. OptimalityFixing:=. Solver User Guide Programming the Solver • 209 . UseDual:=. TRUE if the Primal Heuristic check box is selected. FALSE otherwise. These settings are entered on the Integer Options dialog tab for any of the Solver engines. The Gomory Cuts value (as a decimal number) The Gomory Passes value (as a decimal number) The Knapsack Cuts value (as a decimal number) The Knapsack Passes value (as a decimal number) 6 7 8 9 10 11 12 13 14 The return value for TypeNum = 10 through 14 is supported only for the Premium Solver Platform. FALSE otherwise TRUE if the Optimality Fixing check box is selected. IntTolerance:=. it is assumed to be the active sheet. FALSE otherwise. SolveWithout:=. BoundsImprovement:=. SheetName is the name of a worksheet that contains the Solver problem for which you want information. choosing the Options button in the Solver Parameters dialog box. then choosing the Integer Options button in the Solver Options dialog..SolverIntGet Returns integer (Branch & Bound) option settings for the current Solver problem on the specified sheet. The following settings are specified on the Integer Options dialog tab box. from the Tools menu. Specifies options for the integer (Branch & Bound) Solver. SheetName:=) TypeNum is a number specifying the type of information you want. VBA Syntax SolverIntOptions (MaxSubproblems:=. FALSE otherwise.

If TRUE. MaxIntegerSols must be an integer greater than zero. the Solver attempts to tighten the bounds of non-binary integer variables. UseDual is a logical value corresponding to the Use Dual Simplex for Subproblems check box. the Solver uses the integer constraints in solving the problem. If TRUE. the Solver does not employ this strategy. IntCutoff is a number (any value is possible) corresponding to the Integer Cutoff edit box. It corresponds to the Max Integer Sols (Solutions) edit box. If TRUE. the Solver uses the Dual Simplex method. based on the initial or derived settings of binary integer variables in the subproblem. ProbingFeasibility is a logical value corresponding to the Probing / Feasibility check box. from the subproblem’s bounds on binary integer variables. KnapsackPasses:=) The arguments correspond to the options on the Integer Options dialog tab. 210 • Programming the Solver Solver User Guide . MaxKnapsackCuts:=. It corresponds to the Gomory Cuts edit box. and implications for feasibility of the subproblem. GomoryPasses:=. OptimalityFixing is a logical value corresponding to the Optimality Fixing check box. the Solver does not employ this strategy. starting from an advanced basis. If TRUE. the Solver maintains the current setting for that option. corresponding to the Tolerance edit box. If all arguments are of the correct type. the function returns the #N/A error value. the Solver uses the Primal Simplex method to solve the subproblems. the Solver does not employ this strategy. If TRUE. SolveWithout is a logical value corresponding to the Solve Without Integer Constraints check box. MaxSubproblems must be an integer greater than zero. this option is no longer used and its value is ignored. If FALSE. It corresponds to the Max Subproblems edit box. and on the initial or derived settings of other binary integer variables. the Solver does not employ these strategies. to solve the subproblems generated by the Branch & Bound method. the function returns a positive integer corresponding to its position. If FALSE. MaxGomoryCuts must be an integer greater than or equal to zero. A zero return value indicates that all options were accepted. If FALSE. the Solver attempts to derive settings for binary integer variables. In Version 5 of the Premium Solver products. the Solver uses heuristic methods to attempt to discover an integer feasible solution at the beginning of the Branch & Bound process. MaxGomoryCuts:=. UsePrimalHeuristic is a logical value corresponding to the Primal Heuristic check box. If an argument is omitted. the Solver attempts to fix the values of binary integer variables based on their coefficients in the objective function and constraints. but an argument has an invalid value. IntTolerance is a number between zero and one. the Solver ignores any integer constraints and solves the “relaxation” of the mixed-integer programming problem.UsePrimalHeuristic:=. If FALSE. If TRUE. If any of the arguments are of the wrong type. VariableReordering is a logical value corresponding to the Variable Reordering check box. If FALSE. BoundsImprovement is a logical value corresponding to the Bounds Improvement check box. If FALSE.

MaxKnapsackCuts must be an integer greater than or equal to zero. MaxTimeNoImp:=. GomoryPasses. from the Tools menu.. If all arguments are of the correct type. TypeNum 1 2 3 4 5 Returns The Max Subproblems value (as a decimal number) The Max Feasible Sols value (as a decimal number) The Tolerance value (as a decimal number) The Max Time w/o Improvement value (as a decimal number) TRUE if the Solve Without Integer Constraints check box is selected. FALSE otherwise SheetName is the name of a worksheet that contains the Solver problem for which you want information. VBA Syntax SolverLimOptions (MaxSubproblems:=. MaxFeasibleSols:=. It corresponds to the Knapsack Cuts edit box.. The arguments UseDual. It corresponds to the Gomory Passes edit box. it is assumed to be the active sheet. Specifies Limit Options for the Evolutionary Solver. Solver User Guide Programming the Solver • 211 . BoundsImprovement. the Solver maintains the current setting for that option. but an argument has an invalid value. the function returns a positive integer corresponding to its position. SolverLimGet Returns Limit Option settings for the Evolutionary Solver problem (if any) defined on the specified sheet. SolverLimOptions Equivalent to choosing Solver. If any of the arguments are of the wrong type. If an argument is omitted.GomoryPasses must be an integer greater than or equal to zero. VariableReordering. UsePrimalHeuristic. and KnapsackPasses are supported only for the Premium Solver Platform. ProbingFeasibility. SheetName:=) TypeNum is a number specifying the type of information you want. A zero return value indicates that all options were accepted. The following settings are specified on the Limit Options dialog tab. If SheetName is omitted. then choosing the Limit Options button in the Solver Options dialog. Tolerance:=. KnapsackPasses must be an integer greater than or equal to zero. These settings are entered on the Limit Options dialog tab for the Evolutionary Solver. MaxKnapsackCuts. MaxGomoryCuts. choosing the Options button in the Solver Parameters dialog box when the Evolutionary Solver is selected in the Solver Engine dropdown list. the function returns the #N/A error value. VBA Syntax SolverLimGet (TypeNum:=. It corresponds to the Knapsack Passes edit box. OptimalityFixing. SolveWithout:=) The arguments correspond to the options on the Limit Options dialog tab.

This argument works in conjunction with the Tolerance argument above to determine when the Evolutionary Solver will stop with the message “Solver cannot improve the current solution. FALSE otherwise TRUE if the Assume Non-Negative check box is selected. corresponding to the Tolerance edit box. The following settings are specified in the Simplex LP or LP/Quadratic Solver Options dialog box. the Evolutionary Solver ignores any integer constraints and solves the “relaxation” of the problem. These settings are entered in the Solver Options dialog when the Simplex LP or LP/Quadratic Solver is selected in the Solver Engine dropdown list. MaxFeasibleSols must be an integer greater than zero. TypeNum 1 2 3 4 5 6 Returns The Max Time value (as a number in seconds) The Iterations value (max number of iterations) The Precision value (as a decimal number) The Pivot Tolerance (as a decimal number) The Reduced Cost Tolerance (as a decimal number) TRUE if the Show Iteration Result check box is selected. It corresponds to the Max Feasible Sols (Solutions) edit box. If TRUE. Tolerance is a number between zero and one. A number corresponding to the Derivatives group selection: 1 = Forward 2 = Central 7 8 9 10 SheetName is the name of a worksheet that contains the Solver problem for which you want information. FALSE otherwise TRUE if the Bypass Solver Reports check box is selected. 212 • Programming the Solver Solver User Guide . SheetName:=) TypeNum is a number specifying the type of information you want. FALSE otherwise TRUE if the Use Automatic Scaling check box is selected. it is assumed to be the active sheet. If FALSE. If SheetName is omitted.MaxSubproblems must be an integer greater than zero.” SolveWithout is a logical value corresponding to the Solve Without Integer Constraints check box. VBA Syntax SolverLPGet (TypeNum:=. MaxTimeNoImp is a number corresponding to the Max Time w/o Improvement edit box. FALSE otherwise. SolverLPGet Returns Simplex LP or LP/Quadratic Solver option settings for the current Solver problem on the specified sheet. It corresponds to the Max Subproblems edit box. This argument works in conjunction with the MaxTimeNoImp argument below. the Solver uses the integer constraints in solving the problem.

ReducedTol:=. If all arguments are of the correct type. If TRUE. Solver pauses at each trial solution. It corresponds to the Reduced Cost Tolerance edit box for the Simplex LP and LP/Quadratic Solvers.. MaxTime must be an integer greater than zero. no action is taken. the function returns the #N/A error value. StepThru:=. ReducedTol is a number between zero and one. but not equal to zero or one. AssumeNonNeg:=. If you have supplied SolverSolve with a valid VBA function. AssumeNonNeg is a logical value corresponding to the Assume Non-Negative check box. For large models. BypassReports:=. bypassing the Solver Reports can speed up the solution considerably. VBA Syntax SolverLPOptions (MaxTime:=. Solver uses values directly from the worksheet. your function will be called each time Solver pauses. the Solver will skip preparing the information needed to create Solver Reports. but an argument has an invalid value. PivotTol is a number between zero and one. from the Tools menu and then choosing the Options button in the Solver Parameters dialog box when the Simplex LP or LP/Quadratic Solver is selected in the Solver Engine dropdown list. Scaling is a logical value corresponding to the Use Automatic Scaling check box. Solver User Guide Programming the Solver • 213 . PivotTol:=. BypassReports is a logical value corresponding to the Bypass Solver Reports check box. If any of the arguments are of the wrong type. Precision:=. but not equal to zero or one. It corresponds to the Precision edit box. Iterations must be an integer greater than zero. It corresponds to the Iterations edit box. Iterations:=. Specifies options for the Simplex LP and LP/Quadratic Solvers. Precision must be a number between zero and one. Derivatives:=) The arguments correspond to the options in the Solver Options dialog box. Scaling:=. otherwise the standard Show Trial Solution dialog box will appear. If FALSE. It corresponds to the Pivot Tolerance edit box for the Simplex LP and LP/Quadratic Solvers. If FALSE. StepThru is a logical value corresponding to the Show Iteration Results check box.. but not equal to zero or one. the Solver maintains the current setting for that option. If TRUE. If TRUE. It corresponds to the Max Time edit box. if FALSE it does not. Derivatives is the number 1 or 2 and corresponds to the Derivatives option group for the LP/Quadratic Solver: 1 for Forward and 2 for Central. A zero return value indicates that all options were accepted. Solver supplies a lower bound of zero for all variables without explicit lower bounds in the Constraint list box. the Solver will prepare for the reports. the function returns a positive integer corresponding to its position. If an argument is omitted. If TRUE. If FALSE. then Solver rescales the objective and constraints internally to similar orders of magnitude.SolverLPOptions Equivalent to choosing Solver.

only the first entry in the Variables list box) The number of entries in the Constraints list box An array of the left hand sides of the constraints as text An array of numbers corresponding to the relations between the left and right hand sides of the constraints: 1 = <= 2 = = 3 = >= 4 = int 5 = bin 6 = dif An array of the right hand sides of the constraints as text An array of the entries in the Variables list box as text A number corresponding to the Solver engine dropdown list for the currently selected Solver engine: 1 = Nonlinear GRG Solver 2 = Simplex or LP/Quadratic Solver 3 = Evolutionary Solver 4 = Interval Global Solver In the Premium Solver Platform. VBA Syntax SolverOkGet (TypeNum:=. SheetName:=) TypeNum is a number specifying the type of information you want: TypeNum 1 Returns The reference in the Set Cell box. or the #N/A error value if Solver has not been used on the active document A 1 2 3 number corresponding to the Equal To option = Max = Min = Value Of 2 3 4 The value in the Value Of box The reference in the Changing Cells box (in the Premium Solvers.SolverOkGet Returns variable. constraint and objective selections and settings for the current Solver problem on the specified sheet. These settings are entered in the Solver Parameters dialog. other values may be returned for field-installable Solver engines A string identifying the currently selected Solver engine: "Standard GRG Nonlinear" = Nonlinear GRG Solver "Standard Simplex LP" = Simplex LP Solver "Standard LP/Quadratic" = LP/Quadratic Solver "Standard Evolutionary" = Evolutionary Solver "Standard Interval Global" = Interval Global Solver "Large-Scale LP Solver" = Large-Scale LP Solver "Large-Scale GRG Solver" = Large-Scale GRG Solver "Large-Scale SQP Solver" = Large-Scale SQP Solver "KNITRO Solver" = Large-Scale SQP Solver "XPRESS Solver Engine" = XPRESS Solver Engine "LGO Global Solver" = LGO Global Solver "OptQuest Solver" = OptQuest Solver An array of strings corresponding to the comments associated with each block of constraints 5 6 7 8 9 10 11 12 214 • Programming the Solver Solver User Guide .

it is assumed to be the active sheet. FALSE otherwise) 14 15 SheetName is the name of a worksheet that contains the Solver problem for which you want information. FALSE otherwise) An array of strings corresponding to the comments associated with each block of variables An array of logical values corresponding to the Report check box associated with each block of variables (TRUE if the box is checked. If SheetName is omitted. Solver User Guide Programming the Solver • 215 .13 An array of logical values corresponding to the Report check box associated with each block of constraints (TRUE if the box is checked. If SheetName is omitted. The following settings are “read-only” and generally appear on the Limit Options or Integer Options dialog tabs for each Solver engine. it is assumed to be the active sheet. SolverSizeGet Returns statistics about the size of the currently defined Solver problem. SheetName:=) TypeNum is a number specifying the type of information you want: TypeNum 1 2 3 4 5 Returns The number of decision variables in the current problem The number of constraints in the current problem The number of variable bounds in the current problem The number of integer variables in the current problem The maximum number of decision variables supported by the currently selected Solver engine The maximum number of constraints supported by the currently selected Solver engine The maximum number of variable bounds supported by the currently selected Solver engine The maximum number of integer variables supported by the currently selected Solver engine 6 7 8 SheetName is the name of a worksheet that contains the Solver problem for which you want information. and the problem size limits supported by the currently selected Solver engine. VBA Syntax SolverSizeGet (TypeNum:=.

.

..... 145 Branch & Bound ...... 63..... 15 Bayesian test .... 154................. 27 algebraic form.. 59 built-in functions.......................... 183 constraint propagation.............................. 135.......26.............91 Barrier method............. 146 Cliff Ragsdale ................ 43.. 59..... 156 Best Values .... 168 Comments in reports .43....................................... 124......................................................... 96 binding constraints .................. 20...... 155... 95....... 134 Assume Model option group .............................. 98........... 24............................................................................................................................ 20............63............... 67. 171 concave function ......................... 68.................................................................................. 55................................... 166 C candidate solutions......34................... 140 basis selection . 118...... 133....... 41.............................................................................. 54 books about optimization ....... 158 bounds on the variables.............. 141................................................ 127.... Kenneth ................ 41. 38 adding................................................................................ 183 constraints .. 96 B Baker.. 52..................................................... 170................... 51... 156 Analysis Toolkit ................. 119......... 80 absolute cell references....... 165........... 52. 90 balance constraints.................................51 ............................................. 42.....17 Analyzer option group.. 69.................74 Assume Non-Negative option ..... 67 constraint handling methods ................13 Accuracy option...................................................................157 Albright............ 66......... 17..................145 Automatic Choice .....71 Answer Report......................................................... 119....................... 146 constraint right hand side 38....................................................... 26. 186 array form ......... 169..............35 advanced basis ... 142 coefficient ..............26......................... 25................ 47 constant right hand sides.... 52................................................66 add-in function ................................... 173 Comment edit box...................... 142.............................. 24............................ 175 Allan Waren .... 172 biological organisms ..102 array formulas...................................41....................... 18. 100........................................................ 177 BFGS method (Search) ......................... 67............... 99............................Index A ABS function .................................... 85.......... 27 circular reference .............................................................................. 137..... 56................................... 93.............................. 117 classic interval methods ....................... 42.... S....17..... 123 conflicting constraints... 12... 140 basic variable ....45. 157 binary integer variable .......................... 91 conflicting ....... 128..... 21... 86.........................34........................................ 134 Assume Stationary option................... 38............................................. 13.... 170.....................13............. 148 CEILING function .................... 51................ 137............................... 147 automatic differentiation...........82 Add Constraint dialog............. 69......... 141 Binary Integer Methods options...... Relative Stop option ....................................... 101 Assume Linear Model check box .....................79......................... 157............................... 60......... 99 array form of DOTPRODUCT ........................ 93........................................... 158 clustering. 133..................................... Christian... 38 CHOOSE function .... 100. 99 Absolute vs... 68............................................... 67.. 41...................................... 89 Building Solver Models ...................... 45..145 academic textbooks . 158......... 141 constant derivative .... 91....................... 26 Bounds Improvement option.......... 44.............................. 124 best bound ......11................................................ 159 Building Large-Scale Models ................................ 172....... 60 Add-In Manager ......................................... 86 Bypass Solver Reports option .... 172 boxes ............. 52 Classic Interval option ....................... 53.......... 68........... 47.............................................27 alldifferent constraint............ 141 Changing Cells.......... 66 either-or................... 51.................... 171......... 52................... 20............ 139........................ 45 Central choice (Derivatives) ............................ 149................................... 103.......... 149.........48.......... 27 clique.................62 Add Variable Cells dialog ............................... 100....... 117...................................................79 Analyzing and Solving Models ........................... 100 all real solutions.....127........... 66 Conjugate choice (Search) .82 active worksheet . 144 Active Only option ....... 56............ 141 conjugate gradient method ......... 93 balance . 172............................................................................................ 68............................................ 152 constraint left hand side 38...... 45 Christian Albright ............................. 113..

..................... 72................. 117 D Dash Optimization ......................... 53............. 157 Dual Simplex method............. 25.............. 24 cut generation ............................................................................................. 46 second ..................................................... 128 Evolutionary Solver ..... 74........................ 107.. 54 directed rounding.. 98.............XLS .............................................................. 14 cycling .... 99...................................................... 15 data sources........................................... 139...................................................... 171 During the Solution Process............................... 15 degenerate problem............... 165....................... 68.......... 37 defined names .... 59.... 96 Elements of Solver Models .................. 24.......... 132............................. 113........... 125 Deterministic Pattern Search ......... 135 external data sources . 44.. 83........................................................................ 95 inequalities . 116 Error in model ............................................................................. 186 Feasibility-Bounds Report ........................................ 167. 23............................ 181 convergence in probability .............. 53................... 26 Engines option group ........................... 170.......... 34.... 166............................ 73.... 100... 119...... 101 dual feasible ........................... 25........ 108. 81 dense representation .... 19... 151 finite differencing..... 101 DOTPRODUCT function ...12.. 20.................. 137 deterministic methods ... 47................... 45............ 127.. 25................ 22...................................................................................... 140 evaluation license ..... 44.. 111 degeneracy... 51.............. 37 email.................... 111.............. 18...... 38 Decision Variables and Parameters .... 25 external name .......................... 18.......... 179 derivative ....... 47 first....................... 74............ 132............ 40 overlapping .... 21............................. 92 Dealing with poor scaling................ 24...................................... 149.......... 55 diversity of population ...................................... 127.......... 65 contiguous cells ............. 25 direct search method .............................. 139.............................. 73............. 54.... 43................................................ 42.......... 44 degeneracy . 135 Estimates option .... 121 decision variables .............. 55... 84................................ 110 evolutionary algorithm ..... 90....................................... 180...... 123.... 157 dual values .. 110................... 80.................................... 45.......... 124 Dense mode . 157................ 159 Cut generation................................................. 194 Controlling the Solver’s Operation.......................... 16................. 65 Continue button ........ 125...... 23................ 63............. 52. 40............... 79....................... 181 Excel recalculator................. 68 either-or constraint ............................................................................................................................ 34........................ 99.................................... 117 error value ....................... 165 Excel Microsoft .................... 137.................................................................. 55............ 48..................................... 52 Convergence option. 125 discontinuous function.....................11.............................................. 14.... 37................. 115....................................................... 79 Dependents button ................. 19..... 150 diagnosing problems... 153 custom result codes................ 49.................................................. 85 Dependents Report ......... 45 crossover.......................................... 116 Dependent % box...................... 80 Feasibility Report ..12......... 14......................... 92............. 128 distance filter ........................................... 43 dependents analysis ................... 115........................... 98.......... 47......... 114 ESC key to stop Solver.............. 112.... 168...... 186 Feasible and Optimal Solutions ............. 124 distance filter..... 41 more about .. 29... 55.............................. 34 E Efficiency of Constraint Forms ................... 190 fill constraints... 165..... 68.equalities ..... 108 Dynamic Link Libraries .. 24................. 51 derivative evaluation......... 53 feasible solution ....................................... 100......... 150...................................... 34......................... 111. 140 ....................... 44....................... 181 Excel macro language ..... 141 for Quadratic Solver ........ 68.. 77 equations ............................. 161 definiteness ........ 123 COUNT function . 41 fixed-charge .................................. 113..................................................................... 166............... 117..... 92 data warehouses........................................................ 83.................. 25.. 110 customized user interface ............ 27.... 129......................................................................... 87 Excel Scenario Manager .... 50....................................... 118................................................... 39............... 12..... 133........ 19... 41................................... 177.......................... 23... 41 Error condition at cell address......................................... 129 DOTPRD32....................... 101 Fast Setup option........ 46................................................ 93.... 66 ratio ................ 129............... 21. 135............ 85...... 48 field-installable Solver engines13................... 81 dependent on the decision variables .. 18............ 57..................... 14........ 39 feasible regions .... 70..... 69....... 97 filtered local search .................. 61......................................... 80 constant ...................... 128 EXAMPLES................................. 94 Constraints button................... 43........ 29............................. nonlinear .... 51........................................ 80....................................................................... 152..................... 34...XLL............. 17 Derivatives.. 179...................... 148 convex function .... 63....... 55 Filtered Local Search ................. 186 Evolutionary Solver Stopping Conditions ............. 151 F fast problem setup ......

..............................61 H H........... 140 genetic algorithm ....................................................... 53........................... 125...... 41...................................................................................................... 93...... 141 Hessian of the Lagrangian ......... 40................ 24...finite precision ............ 112.................. 55.............. 19. 145 Goal Seek.................... 102................. 29 installation program . 105............................137...34 built-in ....... 19......... 132 G Generalized Reduced Gradient......... 40..... 66.. 128 How to Use This Guide...... 31 INT function ...27 Gomory Cuts ................. 52........................................................................Discontinuities................................................. 56 Interior Point method ..........................90 gradient................123..... 51 Internet ....28...........120 functions of the variables.......... 42..... 45.... 126...........89 good solution .... 66....................................................... 13....... 175 Insert Name Create .. 50... 127 If You Aren’t Getting the Solution You Expect .................................. 171 Formulas button.. 54 GRG Method ...... 145 Interval Global Solver.............. 40.................54.................... 194 Interval Global Solver Options ..... 82............ 119.................... 112....................... 44............ 47............................. 85............ 90 Insert Name Define ....................... 120........................................................... 143 Interval Global Solver stopping conditions .. 18.11..... 52....... 165 Hesse.. Williams ..59 function add-in..... 86........ 13........... 122.... 70................. 13.................. 70...... 20.. 140 Interpreting Dual Values........... 17................. 99..........27 ............... 139 Guess button .. 17 index sets. 119..............18............................................................ 145......... 102 Installation ....................... 114............................................................. 145. 51................... 23........ 179 iterations...............................45 Further Reading .26 Fylstra...................................... 120..................... 46....... 85........ 124................ 73 Forward choice (Derivatives) .......... 14.......................... 147 GRG Solver stopping conditions..... 123....................................39................ 39........... 51 GRG Nonlinear Solver ............................. 45............ 67 incumbent........................... 26........... 53.........86 unknown ..... 52.............................115 unsupported ... 45...... 57. 86.................................................... 156 Integer Options dialog.. 45 integer constraint............................ 40 Interval Global Solver11...................... 71...................... 133................................. 49 INDEX function..... 125............38.....................42. 128 GRG Solver Options. 126................... 20 Interval Newton method ........ 153 Fix Nonsmooth Variables.............. 18............... 33 installing the software ... 91 individual selection ....................... 111...... 117............27 Help Solver........................ 166...........................160 good model design.... 160................................................. 81 Implicit Non-Negativity Constraints. 175..................................... 26... 51 heuristic stopping rules ....... command...147 Fix Nonsmooth Variables... 152 I IF function......................145 fitness... 19.................. 48.................................. 119.. 16.... 18.... 51......................................................... 177 Irreducibly Infeasible System .... 96............ 66 Functions to Avoid ............ 51.137........59............. 128 good spreadsheet design .............. 124........... 55.... 145 interval methods...................... 47......... 146 intervals..........................................115 FLOOR function........... 52... 98........ 134 first derivative............................................... 28 Hessian matrix ..................... Richard................ 132............ 141 From Algebra to Spreadsheets.................. 29.... 127.. 83 Gradient Local .....................................50.... 120....... 19.......................46 first order methods...................................................... 170...........................80... 121... 40.............. 172 Interpreting Range Information ... 146 hybrid Evolutionary Solver......... 20.................. 151 fixed-charge constraints................. 41............................................................ 155 Integer Tolerance option ................... 18................................ 116................95 floating point overflow . 111.............. 39............................... 29 installing Solver engines ........45 formatting ..... 47..P............. 205........................................ 139 Iterations option ........... 24............115 Function cannot be evaluated .............. 133 Integer Cutoff option ...................................... 155 integer variables ............... 99..........38 goal seeking ....................................... 107 Ignore nonsmooth variables................ 110...................................19...46..... 124................................................................. 101............... 52....................... 173 interval arithmetic ..................................72.......... 52............. 26 Interpreter..........160 Gomory Passes ...... 81.................. 14............................ 154........... 63.. 40................ 79.............................. 129.... 13................................................. 14.... 13.................79 gradient-based method..................... 137............ 23......... 155....... 128 global optimization13.................... 206 integer programming..................... 125 Interval Branch & Bound......... 148......................... 107........................ 107..... Daniel ................................ 86..... 156 indefinite ...... 90....................11................................. 118. 126 interval gradient .... 102 inequalities . 16............... 59...........27........... 53.................... 143 globally optimal solution 12................... 24 hull consistency......... 129.......... 27................... 41 inner solution .......... 84........

................ 30.................. 92........................................... 80 Max Integer Sols option................................ 103.. 11................................. 34......................................... 25..................... 28............................................................................................. 40...................... 108..... 121....... 146 Kuhn-Tucker conditions .... 147 Max Time w/o Improvement option112............................. 45.. 189 merging Solver models ... 166............ 123 Load Model ............... 94 Minimum Values............ 14 Markowitz refactorization.... 140 K Kenneth Baker ................... 73... 12........ 146 Mean Values ....... 34............ 27 LGO Global Solver...... 30 license record.... 147 Linear Local Gradient Search................................... 80 minimize the maximum.................................. 178 memory ....... 66............... 165............ 155 Max Time option....... 146 LP/Quadratic Solver................. 51....................... 118.......... 25....................... 145.................................. 90 Knapsack Cuts ............................................. 15......................... 29 MIN function .......................... 170... 145 Microsoft Excel27................. 47 linear enclosure form .... 178 mixed-integer programming........................ 150..... 15....... 132... 77................................. 23................. 48................... 129 Lotus 1-2-3...................... 16....................................... 11 Microsoft Office...................... 17................... 47............................................ 112....J Jacobian matrix................ 125 non-smooth optimization . 95 Large-Scale LP Solver......... 17...... 16 M macro language ....... 51 Krawczyk operator .. 69 left hand side constraints ............................... 53....................................... 99............ 48............ 136.... 49... 112..... 162.......................... 110 linear variable ......... 146 Linear Enclosure option.... 151 linear model testing for ................................................... 22.............................. 123................ 39.................................... 133. 95.......... 42 Linear and Nonlinear Programming ...... 21... 51.. 146 LP Test option..... 69........................................ 14..... 74 ...................... 107 management science.. Leon ..................... 181 Macro Recorder.......... 130................................... 99............. 163 merit filter .......... 115 virtual ............. 167............. 129......... 166 Microsoft Excel Help ................. 208 limitations global optimization ......... 30 single user ................. 178 Linear Local Gradient.............. 13. 51.............. 29......................... 186 Linear and Nonlinear Functions .......................... 11.......... 134 Linearity Report....... 114...... 45 loss of diversity ............................................................... 15............................................ 44 linear programming .......... 110 licensing..... 69................ 172.. 161 local search.... 18.. 112.................. 50.................. 86..................................... 151 Method options group ........................................... 118... 123 LOOKUP function ...... 94 Maximum Values ..... 49............... 93..................... 114........... 153 Local Search options..................... 124. 68.................................... 150..... 115 Merge Model function ..................... 153 maximize the minimum.... 17....... 49..... 173 solution ...................................... 25.......................... 55.............. 162 LP Phase II option........................................... 125 license concurrent user.....................23....... 147... 15........................ 60......... 108............ 83...... 81............. 73 linearity conditions not satisfied ....... 48........................ 25 Model button ....... 153 MAX function ..... 43........................................ 101.......................... 196................................................. 197 locally optimal solution........ 155 solution...... 129............... 46................ 181 maintainable models...................... 49 L Lagrange Multipliers .................. 49 Max Feasible Sols option ............ 122 Limits Report ............................. 95 Lasdon................ 25............... 147............... 100.............................. 53. 126................................................. 54 Lipschitz ... 110 MMULT function ..... 49 matrix factorization .. 83...... 118.. 115........................ 26..... 17.............. 53......... 27 layout ............ 29................................................... 114................................39....... 57................. 57...... 15..................... 178....... 38.. 34........................... 86 model diagnosis exceptions................... 113................. 25.............. 49.... 48............................................ 13..................... 160 KNITRO Solver........... 147........... 147...................... 118...... 30 Limit Options dialog............. 50........................... 127 smooth nonlinear optimization ......... 15............ 154................. 100 model analysis. 153................ 72 model diagnosis.................... 45... 155 Max Subproblems option ..... 146 linear function................... 160 Knapsack Passes ... 57 Large-Scale SQP Solver ........................ 145 Locally Versus Globally Optimal Solutions ....... 183 Leon Lasdon ....... 170.............. 26 Markowitz ............... 15.......................................... 69 Layout and Formatting ....... 172 LU decomposition......................................................... 129............ 55. 24..................... 178 mean value form...................... 174...... 128 linearized local gradient method........ 50.................................. 22.............................................. 85................................................ 171 Large-Scale GRG Solver .................. 42... 129.......................................... 51............................ 186 linearity test ........

......................23...78..........140..................... 50 numerical stability .......... 80................ 78.... 49 Nenov.................. 67... 14........................................ 47....122 nonlinear programming .................. 186 Population Size option ............... 74. 155....... 186........................................ 172 nondeterministic methods........ Ivo .... 190................................... 140 partial derivative .....48 solution ........................................ 13....... 78....150 nonlinear GRG Solver ... 69..................... 29...................30 Newton choice (Search) ............ 79 Formulas............................ 110........................54. 134 population of solutions....... 111 nonlinear problems ................17..... 44 Premium Solver for Education.... 137 PivotTables ......................................................... 121.................... 82....28.................................... 22........... 40.......................141 NLP (nonlinear programming problem)..............................................71 model statistics .... 143 Munirpallam Venkataramanan ...... 44................................. 125 orders of magnitude ... 125............................ 104 multiple Solver models. 150......50 non-negativity......... 52.................................... 168 outlining of reports................... 79 On Solve No Action.......50 no feasible solution.................23................54 negative definite ......................... 147 OptQuest Solver...... 123....................................... 43... 182........................ 19... 118...... 19................. 178 Nonlinear Gradient Search ..... 202........... 12..........................29 OFFSET function ......... 107............. 147 Premium Solver ..............model size..................... 87 OLAP databases ................. 136............. 140 permutation ................................... 78.. 133 Precision and Regular Constraints .............................113 nonbasic variable ........................... 121....................... 17.............44.................... 71............ 23...... 171............. 133........ Stephen .....12. 20........................... 172.19............ 127 NSP (non-smooth optimization problem)..............72....... 142................ 71.. 99 Other Nonlinear Options...... 143 Solver . 83....... 175..... 54 Population Report ................... 123................... 119............ 77 operations research................ 111................. 43.. 17. 111......... 46............ 48 non-smooth problems ................... 167........ 111...... 24..... 101...................... 67................................................... 20... 133 Precision option ......................25.............................161 multiple worksheets... 21.................................. 158 Probing/Feasibility option................................................. 37 Parser13................. 93 Multi-area not supported .................25 objective function ......... 170................... 149 N natural selection. 93............................................................. 22............ 25............ 129......... 49 Powell......... 102......... 120...... 92 poorly scaled models............. 13............. 86..........28 network environment.............91 multistart methods14................... 38..................... 93................................................27 mutation................. 42............................................... 139................. 136..............19................ 125......53.............. 158 optimization modeling hints....................................... 26 optimal solution ....... 149.............. 179.............. 124...... 26.. 91 Options global optimization.... 137.................................38 Office Microsoft . 98.......... 93.. 161 positive definite...................... 114 O Object Browser...... 51....... 148 portfolio optimization ...... 51 multiple locally optimal solutions . 71................89 model sparsity.................... 143.. 63........ 157 problem size ... 51.............. 124............. 102. 120....................... 85............... 85...................92 On Solve Automatic ............41... 123..................... 68 non-smooth function..... 79 .. 206 Premium VBA Functions....... 41. 105............... 40.......... 112......... 123..................... 81 On Solve option group................... 52............. 140 Outline Reports ....... 66 P Parameters of your model .... 16.............................................. 55........42.... 119.... 127 non-smooth optimization...... 119.......................................... 157..................... 51................................................... 21... 25........... 47........... 157 primal heuristics.......................................... 73 modeling techniques .. 123 Optimality Fixing option........ 11................ 57. 172 Optimality conditions......................................... 97 Pivot Tolerance ....... 166................................... 79 No Action......... 16.......... 75... 198 Preprocessing & Probing ......... 177.. 122.......... 19.............. 104....... 39.... 12........................... 55 Probing....48 numerical instability . 25........................ 165............ 13... 99....... 116....... 14... 92....... 47.................. 129..131 Dependents.................... 24....... 55...........15 numerical tolerances ... 56 piecewise-linear functions ....... 130.............................................. 115....................... 137......... 121.................................................. 153 Mutation Rate option .................. 90 Precision and Integer Constraints ........48... 104. 134................. 143................ 98.......... 107..... 24.............................. 44............... 143.......... 121.............110.......................... 192 nonlinear optimization.......16 multi-level single linkage ............ 119..... 53.............. 59 Overlapping constraints ..........117 multiextremal models ... 12.....40 multiple selection............ 26 Premium Solver Platform 11..... 44.................... 128.......... 64...... 125 nonlinear function.......... 192 Other Functions for Fast Problem Setup........................................................ 45............ 55 primal feasible..........

......................................... 125 random number generator....... 38 Set Cell values do not converge ...................................................... 185 Reports check box ......................... 89.......................................................................... 171 redundant constraints........ 194 result codes............... 133............. 38............................... 159 pseudocosts........................ 135............................ 186 Sequential Quadratic Programming ..... 176 ROUND function ..... 86............. 16...... 121 progress reporting ................... 98........ 112.......................... 54.................. 44 satisfied constraints ................... 68.................................... 63.............. 69........ 108.............................. 52 Second Order option .................. 93 Reports Solver.... 21 Report Scaling Problems ...... 38................................................................ 11......... 123.. 210 SIGN function ............. 155....................... 192..... 110 Quadratic Solver . 119........................ 103 quadratic approximation ........................ 200................. 183 rigorous global optimization .. 75.... 151 Require Smooth option ..... 54 Shadow Prices ............ 137 Reduced Costs ............................ 63................. 76........... 34... 108................................................................................................................ 23....... 92 relative cell references .................... 136...... 45..................... 14............. 22 scaling . 144 Restart button ........... 75.... 140 quadratic function ................. 21 Selecting the Reports ........................... 166 selection process ...... 75........... 165 scatter search ............ 192.............................. 94 readable models .. 23 of integer problem.................. 54 replacing IF function .......................................................................... 108...... 34................. 137 QUADTERM function ........ 12............................. 150 Range Selector................... 26 sensitivity analysis ............................................... 173 Reduced Gradients.......................................... 121....................... 203.. 169 Require Bounds on Variables option 93.... 146 selecting blocks for reports ................................................ 125 roots of equations ....................................... 21.............................................. 174 Sensitivity Report............................................................ 86......................................... 108.. 20........................... 109 custom ..... 135................................ 205.........................................................................................................................Problem Size and Numerical Stability........... 45 rounding and possible loss of solutions .. 137 quadratic programming14.......................... 168 ... 111 referencing Solver functions in VBA ................. 43.. 171........................................................ 74 report outlining ........25........... 141 second derivative............. 103. 11...... 54......................... 149......... 193................. 143.... 27 random choice....................................................... 161 scalable models ............................. 162.. Cliff .............. 66.......................... 166........... 25.............................. 114 quadratic objective...................................... 125 pseudocost branching ........................ 22.... 25............. 96 Report Dependent Problems ..... 43.......... 80 Resolution option ............ 103........................................................ 55 Scenario Manager ...................... 139 reduced cost fixing................ 141 Reports list box ................ 133................ 107 Reading model settings from VBA.............. 107....... 19....... 48..... 172.......................... 16...................... 173 ratio constraint .................................................. 171..................... 153 semi-definite.................. 23............ 42 constraints ............. 34.......... 55 Reduced Cost Tolerance .... 20................................ 41.. 95.... 55 Q QUADPRODUCT function................... 200 Scaling Report......... 50 Set Cell....................................... 149 Require Smooth............ 48 Problems with Poorly Scaled Models.. 112 Setting Up a Model ................. 170 Save Model ............... 154................... 135 Search option .......................... 171.... 133............. 140.. 169 Richard Hesse ........... 172.. 105 quasi-Newton method.......................... 155 repair of a solution. 49 seminars ....... 14 Show Iteration Results option .... 47 second order methods.......... 172 solution ................................... 149 Randomized Local Search ..... 22 proving optimality .......... 150......................................... 27 right hand side constant .......................... 19...................... 171........................................................................................................................................... 38 Set Cell Value of .. 15.............................108.................. 135............................ 142..... 182 Recognize Linear Variables option ................ 38....................................... 40 proving optimality .......................... 135. 194... 149 Random Seed option............. 103............... 65 ranges for dual values....................................................... 170........ 95 Quadratic choice (Estimates) ........................... 68 scaling .......................... 49.......... 110 Return to Solver Parameters Dialog check box109............................... 80 R Ragsdale................. 165.. 125 S saddle point .... 143..... 170................ 68 relational databases....... 173................... 135 Show Trial Solution dialog ... 37.............. 93......................... 99 relaxation ................ 171... 104............... 113... 137........................ 48.................................................. 59 Setting Up the Add-In Functions .... 35..................................... 34 sexual reproduction ....... 53.......... 44................................................................................ 173 Sharpe ........... 99.............. 182 Relation dropdown list............................................... 52... 15... 100....................... 23............

........... 82 KNITRO Solver .......... 85 system of equations..................................... 205 SolverIntOptions function................................ 91 spreadsheet formulas........................... 77 Solver engine size limits. 175........... 173..... 193 SolverReset function. 210 SolverOptions function .......21.......203 SolverIGOptions function ...184 SolverChange (Form 2) ...182 Solver has converged to the current solution... 193.................. 198 SolverEVGet function ............................ 197 Solver Model VBA Functions ... 81 sparsity ....................... 126 Stopping Solver ESC key ....202 SolverIGGet function .......200 SolverFinish function .................... 26 Standard VBA Functions ............................................183 SolverDelete (Form 1) ....................................... 48....................198 SolverGet function...................................... 20........204 SolverIntGet function............................ 120........................ 107.................................... 199.... 24.......34......................................... 193 SolverAdd (Form 1) .................................................. 90 SQP Method...................................................... 108.. 98.................................................... 24............ 56.......... 99........... 44....114 Solver engine .......................................... 131..... 51 Standard Deviations ............ 62................................................................................. 191.................... 175 ....................................... 196 SolverModelGet function.... 208 SolverLimOptions function . 189.... 190 SolverOkDialog function ...................... 203................... 79.. 129........................ 113............. 156 SUM function ... 179................... 182 steepest-edge pivoting...................................... 194 SOLVSAMP.. 191..............185 SolverDelete (Form 2) ................22....... 139 Interval Global Solver... 25..... 187... 210 Spreadsheet Detective . 60 spreadsheet modeling hints .... 147.................................................................................. 99 SOS constraint .. 197 SolverOk function.201 SolverGRGOptions function . 209 SolverLPOptions function .........183.................................. 50...................... 209 SolverModel function ...................... 194 Stopping conditions GRG Solver... 165.. 170 Solver Results dialog................................................ 203............................................ 48.................................................................. 63......... 156 Solver cannot improve the current solution........................ 69.............................................14........... 135............ 185.... 210 Solver Reports .23................................ 99 swapping ............................. 187...................... 206 SolverLimGet function ........183 SolverAdd function ......... 205.......... 23..... 181......... 49 Stephen Powell ............ 204.................................................................................................. 183.................... 90 Stop button....... 137 Simplex Solver Options...............118 Solver could not find a feasible solution .............. 135................... 169................. 12........... 193 SolverSave function ......... 171.............. 25.........113 Solver dialogs ..... 158 sparse form................................................................. 109............. 123..182.......................................................... 11........................................40.....XLS...... 22..... 12. 73 smooth variable ............... 122.................... 43.... 25...................... 212 SolverSolve function................. 189........... 34............................ 193 SolverSizeGet function .... 60.. 135.......................................... 170............... 23................183 SolverAdd (Form 2) ...... 116 sparse matrix ............154..... 81 Evolutionary Solver ...Simplex LP Solver.................... 209............................................ 11......... 71................111................ 176 Solve Without Integer Constraints option ............... 109......................................197...........................136 slack in constraints................................ 193 subproblem Branch & Bound ......185....61 Solver encountered an error computing derivatives 119 Solver encountered an error value ................................................... 99 SUMIF function .... 48 Solutions Report .......................... 26.............................19.............. 182...............................73 Solution time .. 190 SolverChange (Form 1) ...................................170 smooth convex function ....................................... 114 Solver function return values........................ 80...................... 18........................ 109................ 131 standard Excel Solver Help. 143....................30 Solver engine dropdown list................ 196.......................................... 200.........184 SolverChange function ..................11....................107........ 53..... 54.. 129 Solver Model dialog ................... 135.................. 202..... 48.... 115... 201....... 193 SolverLPGet function ......... 81 Sparse option..........22............................. 210 Solver Parameters dialog ... 111......187 SolverGRGGet function .........................................185 SolverDelete function................. 46 summation notation...187 SolverFormulas function .. 108................................................................................. 69...........................................................62......... 188.............................. 116 symbol table ..........................................37 Solver Options dialog67..... 63...... 100 Sparse mode .... 136............................. 25.............................................. 59................... 13......40....... 158 Speed12..................... 107............................... 71 special functions. 121..14 Solver engine compatibility....................... 185 Solver Result Message ......... 193...................... 178 standard Excel Solver ................................................ 208 SolverLoad function ... 153 Solver converged in probability ......... 132... 45..... 138.. 25............. 196 Solver Models and Optimization .....183 SolverDependents function ........... 126........ 128 Special Ordered Set................ 137........ 201............. 193 SolverFinishDialog function ............... 100 SUMPRODUCT function..................................... 45 smooth function .................. 85.............................. 108.......199 SolverEVOptions function ... 23.......... 41.......... 191 SolverOkGet function ........................................ 39 Simplex method..... 166.....................................

...................... 114 Too many constraints............ 121..................... 15 U unbounded objective value .... 29 Winston....................................................................................................... 153 Tolerance Option and Integer Constraints ......................................... 162 TRANSPOSE function ........................ 176 What You Need.......................... 27 Watson.......... 26 X XPRESS Solver.............. 27 Windows 95/98 .............................. 27 World Wide Web ........................................................ 110 true global optimum........................................................................................ 70 Using Integer Constraints ............. 133.. 120...................... Wayne............................................................................................................... 30.................. 29 Williams.....................................................P............................................. 16 Transferring models between spreadsheets ... 48 undefined identifier................................................................. 13.................................................... 25 testing for linearity........................................................................ 38 Variable Cells list box ................. 181 Using Online Help and the World Wide Web ..... 159 ....................................................... 114 Too many integer adjustable cells ................................. 42 trial license......... 100 Using Defined Names........................ 29 Windows NT/2000/XP....................................... 15 V Value of edit box ................ 114 Tools Macro Record New Macro ... 66................................. H............. 100 Traveling Salesman Problem . 55 Tangent choice (Estimates)............. 24.......................... 182 Venkataramanan................... 181 Tools References ..... 65 Z Ziena Optimization................................... 44 Tolerance option ......... 140 technical support................ 125 Variables and Multiple Selections......................................................... Allan ............ 65........................ 103 Using the Macro Recorder........ 16........................................ 17...................................... 29 Windows Millenium Edition................................................................................ 27 Visual Basic ...... 49.... 23................................................................. 182 topographic search............. 94 XpressMP . 75.......... 158................................................................... 142 Topographic Search option... 181 Using the Premium Solver Platform..................... 73 Tour of New Features ... 112............. 122............................ 142 Total Cells box.............................................. 26 Using QUADPRODUCT .. 111.... 63 Variables button .. 14.................................................. 181 W Waren........................................................................... 129. 25.................. John............ 134 Use Dual Simplex for Subproblems option ........ 175 T tabu search .. 123.................................. Munirpallam.................................. 68 Using Microsoft Excel Help ....................... 117 uninstalling .................... 115 upgrading..... 12.................................................................................. 122 Too many adjustable cells ........... 133................................................ 20........... 27 Wayne Winston....... 27 What Is Not Possible.................. 126 unsupported Excel function ................................. 15....................................................................... 11 Using the Variables Button..................................................... 51................................... 30 Use Automatic Scaling option ................ 20.. 157 user interface improvements.................................. 115 unproven solution ..................................... 183 VBA Function Reference.......................... 17 Using Array Formulas ............................................. 183 Variable Reordering option ... 36 university use...................................................................system of inequalities ............... 13 unknown function .... 22 user-defined functions .................

- 223684932-1439819610-Synthesis.pdf
- Call Solver With Macro
- Effective Methods for Software Testing2
- Information Technology Project Management
- ch02
- Case Studies of Open Source Data Quality Management
- fulfillment_io_integration.pdf
- Arena Basic Edition User's Guide
- MicroStrategy 8 - Advanced Reporting Guide
- Moving Up the CMMI Capability and Maturity Levels Using Simulation
- Laboratorio TIBCO
- 63099526 Business Studio Training Lab Book
- DP Software Requirements Analysis V1 2 1
- 1420084186 Measuring and Improving Performance:Information Technology Applications in Lean Systems
- Advanced Reporting
- Df Power Guide
- DA 86 Gettingstarted
- Consolidated 9.3 Tracker
- HullandOutfitting User Bulletin

Are you sure?

This action might not be possible to undo. Are you sure you want to continue?

We've moved you to where you read on your other device.

Get the full title to continue

Get the full title to continue listening from where you left off, or restart the preview.

scribd