Use optimization and simulation models in your desktop, Web or mobile application

Use Solver SDK from C/C++, VBA, C#, VB.Net, Java, or MATLAB -- or from PHP or JavaScript as a Web Service
Define models entirely in code  •  Upload Excel workbook models  •  Define and solve high-level RASON models

 

  • Solve the full range of optimization problems
  • Solve huge models with best-of-breed Solvers
  • Run high-speed Monte Carlo simulations
  • Solve stochastic optimization problems
  • Run on 32-bit or 64-bit Windows or Linux
  • Exploit multiple cores without extra programming
  • Run on Amazon Web Services or Microsoft Azure
  • Use as a Web Service via a SOAP or REST API

Everything You Need to Develop and Deploy Powerful Optimization and Simulation Applications

 

Common, Easy-to-Use Object-Oriented API Use the same high-level objects (like Problem, Solver, Variable and Function), collections, properties and methods across different programming languages.
Web Service API for
PHP and JavaScript
The same object-oriented API is exposed "over the wire" through Web Services WS-* standards to remote clients in PHP, JavaScript, C# and other languages.
Procedural API for
C and FORTRAN
Procedural languages can use conventional calls that correspond naturally to the properties and methods of the Object-Oriented API.
Solve linear, nonlinear, non-smooth problems Linear and quadratic programming, mixed-integer programming, smooth nonlinear optimization, global optimization, and non-smooth evolutionary and tabu search are all included.
8 Plug-in Large-Scale Solver Engines The world's best optimizers, from Gurobi™, XPRESS™ and MOSEK™ for linear, quadratic and conic models to KNITRO™, SQP and GRG methods for nonlinear models "plug into" Solver SDK.
Fast Monte Carlo Simulation Engine Easily define uncertain variables with sampling from 50 continuous, discrete and custom distributions, rank-order correlation of dissimilar distributions, and distribution fitting.
Large-Scale Sparse Matrix Objects Easily create a sparse DoubleMatrix object with 1 million rows and columns, and use it in your code with high performance and minimal memory use.
Parallelized Solver Algorithms Exploit multiple processor cores for optimization and Monte Carlo simulation using Solver SDK's built-in parallelized algorithms, without having to write parallel code yourself.
Thread-safe for Multi-user Applications Call Solver SDK on multiple concurrent threads -- making it easy to build Web server and other applications that handle multiple clients concurrently.
Solver Server Handles Multiple Client Apps Our Solver Server that supports a WS-* standard Web Services API is included with Solver SDK -- use it support to multiple remote clients concurrently.
Load, Update, Solve Excel Workbook Models Solver SDK can read Excel workbooks, interpret Excel formulas, and run Excel-based optimization and simulation model -- while running on a server without Excel itself.
Load, Update, Solve RASON Models Solver SDK can interpret models in our high-level RASON modeling language, bind to external data sources, and run RASON optimization and simulation models.
Load and Solve LP, MPS, OSiL Files Solver SDK can load and solve linear and mixed-integer programming models defined in these traditional file formats.
Example Applications in Multiple Languages Source code is included in each supported programming language for over 35 example applications, illustrating how to set up and solve every type of problem.
Help and Support Our 344-page SDK User Guide, 723-page SDK Reference Guide, 183-page Solver Engines User Guide, and our highly-regarded technical support supports your efforts.
Straightforward Runtime Licensing Obtain licenses to distribute Solver SDK with your application, or use it on your on-premise or cloud-based server(s), with simple terms that work for your application.

You can write optimization and simulation models entirely in code -- but you don't have to!

Solver SDK Platform can load, update and solve models created in Excel, or in our high-level RASON™ modeling language.
  • Work with Excel-literate business analysts
  • Update data in an Excel model and re-solve
  • Easily access Excel model results in code
  • Run your app on Linux servers without Excel
  • Quickly create new models in RASON
  • Update data in a RASON model and re-solve
  • Easily access RASON model results in code
  • Use RASON REST API to create thin client apps

About the RASON™ Language and REST API

RASON is a mini-language you can use to quickly and easily create and solve analytic models -- currently optimization and simulation/risk analysis models, soon to include data mining and predictive analytics models. You can use RASON tools on Windows and Linux desktops and servers, but the RASON service is especially useful if you are building Web or mobile applications, and you’re familiar with RESTful web services.

RASON stands for Restful Analytic Solver™ Object Notation. It offers many benefits compared to using a traditional modeling language, using Excel to create analytic models, or writing analytic models in a programming language. Solver SDK supports RASON models, but you can also create them independently and solve them using Frontline's REST API service -- sign up for a free account at Rason.com.

An Example Model

Below is an example RASON optimization model. Its purpose is to find the optimal location for an airline hub that serves six cities. The cities are located at the (simplified x-y) coordinates given by the dx and dy parameters in the data section. Our goal is to find the x, y coordinates of the airline hub that will minimize the distance flown to any of the cities.

{
    engineSettings : { engine : "GRG Nonlinear" },
    variables :
    {
        x : { value: 1.0, finalValue: [] },
        y : { value: 1.0, finalValue: [] },
        z : { value: 1.0, finalValue: [] }
    },
    data :
    {
        dx : { dimensions: [6], value: [1, 0.5, 2, 2, 2, 0.5] },
        dy : { dimensions: [6], value: [4,   3, 4, 2, 5,   6] }
    },
    constraints :
    {
        c : { dimensions: [6], upper: 0, formula: "sqrt((x - dx)^2 + (y - dy)^2) - z" }
    },
    "objective" :
    {
        "z" : { "type": "minimize", "finalValue": [] }
    }
}

Web developers will recognize the overall syntax as that of JSON, JavaScript Object Notation -– except that identifiers and keywords are not surrounded by double quotes, outside the “objective” section which shows an example of writing “strict JSON”. The RASON Interpreter doesn’t require the quotes in a model, but the result -– the optimal solution to this nonlinear model -– is always valid JSON:

{
    "status" : { "code" : 0 },
    "variables" : {
         "x" : { "finalValue" : 1.250000 },
         "y" : { "finalValue" : 4.000000 },
         "z" : { "finalValue" : 2.136001 }
    },
    "objective" : {
         "z" : { "finalValue" : 2.136001 }
    }
} 
RASON Models vs. Alternatives

How do RASON™ models compare to alternative ways of building analytic applications?

  • Compared to a modeling language such as AMPL or GAMS for optimization, or ARENA for simulation, RASON models have similar expressive power, and are easy to understand. But as you’ll see below, it is much easier to use a RASON model in a Web, mobile or server application.
  • Compared to Excel as a modeling language, RASON models can use essentially all of Excel’s operators and built-in functions, but it is much easier to build “dimensionally flexible” RASON models, and to use a RASON model in a Web, mobile or server application.
  • Compared to writing a model in programming language code, RASON models are “higher level” – much easier to create, modify and understand. But as you’ll see below, RASON models are so easy to manipulate in code that you don’t give up any flexibility.

If you aren’t familiar with modeling languages, you may not realize how much the RASON language is doing for you. Note that the expression "sqrt((x - dx)^2 + (y - dy)^2) - z" is an array expression operating over all six cities. The RASON™ Interpreter computes not just the values of this expression, but its partial derivatives with respect to x and y – used by the nonlinear optimizer to guide the search for a solution.

Server-Based Applications

What if you want to define and solve this model in an application on a corporate server or Web server? That's easy: Since the RASON Interpreter is embedded in Solver SDK Platform, you can simply load and run a RASON model from a text file on the server:

Problem prob = new Problem();
prob.Load("model.json");
prob.Solver.Optimize();
MessageBox.Show(prob.FcnObjective.FinalValue[0].ToString());

This C# example just hints at how you can easily access RASON model elements from code, to update data, optimize or simulate, modify the model, or monitor the solver’s progress.

Web and Mobile Applications

What if you want to define and solve a model in a mobile application written in JavaScript? Solver SDK and plug-in Solver Engines (or other optimizers) won't run directly on a mobile device, nor would they be the best solution. But it’s simple to send a model to the RASON™ REST Server, and get the optimal solution:

    var request = { "variables" : { ...
    "z" : { "type": "minimize", "finalValue": [] } } };
    $.post("https://rason.net/optimize", JSON.stringify(request)
    .done(function(response){
    alert(response.objective.z.finalValue);
    });

Since RASON is JSON, we can write the entire model as an object constant in JavaScript, assigned to the variable request. Then (using JQuery syntax) we make an AJAX request to the RASON Server’s REST API endpoint optimize, which means “optimize this model and immediately return the result.” When the server returns a response, the “done” function is called, and it can easily reference the final value of the objective, since the response is also JSON.

What about a mixed-integer or global optimization model that might take 30 minutes – or overnight - to run? That’s easy: With a POST to rason.net/model, you can create a “model resource,” then start an optimization via GET rason.net/model/id/optimize, check on its progress at any time with GET rason.net/model/id/status, and obtain results when finished with GET rason.net/model/id/result.

Compare Solver SDK Platform and Solver SDK Pro

The comparison chart below summarizes the differences between Solver SDK Platform and Solver SDK Pro.
We're happy to assist with any questions, to help make sure you find the right product for your unique needs.
Compare Solver SDK Platform and SDK Pro

We’re Here To Help You

Whichever product you buy, we offer a full range of support internally and through external partners to help you succeed. Whether you are looking for pre-sales support on your problem and our product line, Technical Support on using our tools, or personalized Consulting Services, we are here to help you. We offer a full range of online support resources you can access anytime.

Very Cost Effective Pricing

Development licenses and runtime (deployment) licenses for Solver SDK Platform and Solver SDK Pro are an amazing value compared to enterprise software alternatives, or the cost and effort of "rolling your own" solution.

Download a FREE Trial Right Now

You can download and run the SDKSetup program that installs the full-power Solver SDK Platform with a free 15-day trial license. You can use every feature of the software, examine and solve 35 working examples -- in your favorite programming language -- illustrating various features of the SDK, solve real problems, examine the full User Guide and Help, and get expert technical support -- all without any obligation.

Just enter your name and email address, company and phone, pick the closest "User Type," and click the Register for Download button.  You can download immediately after registering, or return later anytime -- just login with your email address.

Download Solver SDK Platform
(All fields are required)

At least 7 printable characters that you can remember.

Ready to order, or just want to know more about prices and support?
Click here for more information.