We've released Analytic Solver V2024 Q2, with new versions of every Frontline Systems product, from Analytic Solver Desktop and Cloud (for Excel users) to Solver SDK (for developers) to our cloud platform RASON. Our overall theme for this release is "Core Performance Improvements" -- indeed we think every user with a model of nontrivial size and complexity should upgrade (at no extra cost), since you're likely to see performance improvements -- especially faster "Setting Up Problem..." -- in this release.

## Solving Outside Excel

The most visible change -- though *not* the one impacting the most users -- is on the menu for the Optimize button on the Ribbon: the last dropdown choice, Run on a Solver Server, has been greatly enhanced (it existed, but was limited in past releases, and was rarely used). In Analytic Solver V2024 Q2, this choice allows you to solve your model (perform the optimization -- which is only part of the work) outside of Excel, on any of three alternatives: (i) A new version of our Solver SDK product with its Solver Server; (ii) our public, Azure-based RASON server; or (iii) a brand-new offering: our Containerized RASON Server -- which brings all the capabilities of RASON to your own PC, another physical or virtual PC on your LAN, or your own cloud account (we'll say more about this in an upcoming blog post). You can actually use Excel for *something else*, typically working on a different workbook, while your long-running is solved *outside *Excel. When the final solution is available, you can (optionally) get a notification in Excel, and your workbook containing the original model will be automatically updated, without disturbing anything else.

## New Versions of Gurobi and OptQuest Solvers

Analytic Solver V2024 Q2 also includes new (minor) releases of the Gurobi Solver and OptQuest Solver, that improve performance on a range of models using these plug-in Solver Engines. The Gurobi Solver (their version 11.0.2) has typical speed improvements of 8% to 18% compared to pre-V11 versions. The OptQuest Solver (their version 9.1.2.9) includes an improved "diversity search" algorithm, among other enhancements.

## PSI Interpreter Improvements

In Analytic Solver V2024 Q2, we expect the biggest impact on performance for most users will come from some deep improvements in the PSI Interpreter, our "Polymorphic Spreadsheet Interpreter". This is the part of Analytic Solver (and RASON) that takes your model as expressed in Excel or RASON formulas, analyzes the model, and converts it into a form usable by the Solver Engines -- whether it's linear or quadratic (for the LSLP or Gurobi Solvers), nonlinear (for the LSGRG, LSSQP and KNITRO Solvers), or "non-smooth / arbitrary" (for the Evolutionary and OptQuest Solvers). The PSI Interpreter is hard at work when you see "Setting Up Problem..." in the Task Pane, but also during the solution of nonlinear and non-smooth models.

In Analytic Solver V2024 Q2, the PSI Interpreter has been re-engineered to use "sparse methods in automatic differentation" (take a look at the Wikipedia article we've linked, if you're curious about the methods from algebra and calculus). The practical impact for users with large models is faster end-to-end solution times for linear models, less time spent in "Setting Up Problem", and big savings in memory use (which translates to faster solutions, or solutions for models that exhausted memory in the past).

All you really need to know is "much better performance", but if you're curious, the rest of this post will seek to explain just some of what the PSI Interpreter does for you.

## More About the PSI Interpreter: The Jacobian

You might be surprised to learn that the Solver Engines, or optimization algorithms, don't work with your Excel formulas at all. They require as input *tables of numbers* (constant or changing) that describe your model, at a rather low level. The PSI Interpreter reads, parses, and interprets your formulas and produces those tables of numbers.

The most fundamental such table is called the Jacobian matrix -- see the Wikipedia article (rather technical) or "A Gentle Introduction to the Jacobian" which comes from machine learning, where the same matrix arises. In optimization models, this matrix has a row for the objective and each constraint, and a column for each decision variable -- so its size grows with variables *times* constraints. Each matrix element is the partial derivative (or *rate of change*) of one constraint (or the objective) with respect to one decision variable.

In linear models, the partial derivatives are all constant numbers and are referred to as "LP coefficients" -- but these numbers may not appear explicitly anywhere in your Excel or RASON model. They are computed by the PSI Interpreter. In nonlinear and non-smooth models, the partial derivatives are not constant -- their values depend on the current values of (potentially many) decision variables. So the PSI Interpreter must re-compute them, and re-supply them to the Solver Engine, each time the Solver Engine tests a new set of values for the decision variables -- and this can happen tens of thousands of times while a model is being solved. So the PSI Interpreter has a lot of work to do.

Let's say your model has 32,000 variables and 32,000 constraints (the upper limits of our *Standard* Large-Scale LP/QP Solver -- the *Extended* version removes the limits). That's not very large by our customers' standards -- but it means the Jacobian matrix has 32,000 x 32,000 = 1,024,000,000 (just over one billion) elements. It takes a *lot* of memory, and a *lot* of computing to calculate a billion different values from your Excel model! The saving grace is that in *most* models, *most* of these matrix elements will be zero: A typical constraint will depend on a small subset of the decision variables, so its rate of change is zero with respect to all the other decision variables. The challenge for the PSI Interpreter is to figure out which elements will be zero (the "sparsity pattern"), without consuming a lot of memory and time just doing this. In V024 Q2, the PSI Interpreter is far better at this!

## Beyond the Jacobian: The Hessian

When your model goes "beyond linear", even with just a quadratic objective (as in portfolio optimization), the Solver Engines will typically require a further large table of numbers, called the Hessian matrix (again see the Wikipedia article if you're interested). The Hessian has as many rows and as many columns as the number of decision variables in your model; it is typically computed for the objective function (at least). When you use the KNITRO Solver Engine, it will ask the PSI Interpreter to compute the Hessian for every nonlinear constraint, as well as for the objective! Each matrix element is the second partial derivative of one function (usually the objective) with respect to a pair of decision variables. To compute this, the PSI Interpreter must do even more work, and it must deal with the same issues of memory and computing time, for perhaps a billion values. Again *some* of these elements will be zero, since the function value may not depend on *all possible pairs* of variable values -- the challenge is figuring out which ones! And again, in V2024 Q2 we've made major progress on this. We've seen some large customer models that formerly would always exhaust memory after running for hours, suddenly solve in a minute or less!

## And There's (Much) More...

There's much more to the PSI Interpreter, that we don't have time or space to fully describe here. Whenever Microsoft adds new built-in functions or formula features (such as "spilled arrays") to Excel, we've been hard at work supporting those new features in the PSI Interpreter. Whenever you use menu options such as "Analyze Original Model" or "Analyze Transformed Model", notice your Model Type (LP for linear, QP for quadratic, etc.) or the counts of model Dependencies in the Task Pane, or create a Structure Report, that's the PSI Interpreter at work. And the PSI Interpreter is also the key to super-fast Monte Carlo simulation in Analytic Solver, usually ten times faster (or more) than other Excel add-ins for simulation. The PSI Interpreter also parses and interprets DMN (Decision Model and Notation) for business rules and decision tables.

You might be surprised to learn how many of our competitors offering Excel add-ins (especially firms that have been acquired by other companies) have been "resting on their laurels" for a decade or more. At Frontline Solvers, *we never rest!* We spend millions each year on real R&D, to bring you the very best in modeling and analytic software tools.