Capabilities: 
  • Model Creation, Deployment, Management
  • Business Rules, ML, Optimization, Simulation
  • RESTful Decision Services use JSON, OData
  • Easily Incorporate Excel Analytic Models
  • Deep Support for Microsoft Power Platform
  • Create, Manage Multi-Stage Decision Flows
1

Create Models in RASON or Excel

Create models in our high-level RASON modeling language, or use models created in Excel with Analytic Solver. Easily track model versions and multiple runs. Combine RASON and Excel models in a multi-stage decision flow.
2

Run Models as RESTful Services

Your model is an Azure-based cloud service with a REST API. Get results in JSON or OData. Use CDS or 100+ other cloud data sources. Easily use models in Power BI dashboards, Power Apps, and Power Automate process flows.

About the RASON® Language and REST API

RASON is a high-level modeling language you can use to quickly and easily create and solve analytic models. You can use RASON tools on Windows 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. You can create and solve RASON models via a browser, 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”. RASON 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 }
    }
} 

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.

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.

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.

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.

Models in Analytic Solver® for Excel and in RASON®

RASON contains the entire Excel formula language as a subset, and supports nearly all Excel built-in functions. With either RASON or Analytic Solver for Excel, you can create and solve just about any predictive or prescriptive analytics model, using simulation, conventional or stochastic optimization, sensitivity analysis and more.  Here's a simple example of an Airline Crew Schedule optimization problem, solved via linear mixed-integer programming, created in Excel, and automatically translated to RASON.

Airline Crew Scheduling in Excel and RASON

RASON also supports the DMN (Decision Model and Notation) standard for decision tables, including expressions in FEEL (Friendly Enough Express Language) Level 2.

Below is an example decision table - the Loan Strategy application from the DMN standard - expressed in Analytic Solver for Excel, and also as it appears natively in RASON. You can use either the Excel form or the RASON in your RESTful decision service -- both are supported!

Loan Strategy Model in Analytic Solver and RASON

Train and Apply Models Using Text Mining, Forecasting and Machine Learning

RASON enables you to easily build and run multi-stage "data science workflows", that can clean and partition data, training a machine learning model, and use it to score new cases. And that's just the beginning: You can easily build multi-stage "decision flows" that use machine learning, optimization, business rules and decision tables.

RASON Multiple Linear Regression Decision Flow with Text

 

Use data from many sources Draw data from OneDrive spreadsheets and CSV files, SQL Server on Azure, the Common Data Service, or over 100 data sources with CData Cloud Hub.
Analyze text for insights Automatically transform free-form text into structured data, identifying most frequent terms and extracting key concepts with latent semantic indexing [XLMiner Platform].
Clean & transform data Clean and transform your data with a comprehensive set of data handling utilities including categorizing data and handling missing values.
Identify key features Use feature selection to automatically identify columns or variables with the greatest explanatory power for your desired classification or prediction task.
Reduce and cluster data Use principal components to reduce columns, and k-means clustering or hierarchical clustering to group data by rows.
Partition for training Easily partition your data into training, validation, and test datasets, with no limits on dataset size -- even "on the fly" as you build a predictive model.
Forecast time series Apply the most popular exponential smoothing and Box-Jenkins (ARIMA) methods with seasonality to forecast time series, such as sales and inventory, from historical data.
Prediction methods Use powerful multiple linear regression with variable selection, and data mining methods like k-nearest neighbors, and ensembles of regression trees and neural networks.
Classification methods Use classical discriminant analysis and logistic regression, and data mining methods like k-nearest neighbors, naive Bayes, and ensembles of classification trees and neural networks.
Affinity analysis Use market basket analyses and recommender systems with association rules.

Rich Data Connections -- and Analytic Model Results as Queryable Data

RASON makes it easy to use cloud data sources "in-place". For example, you can send an Excel workbook or CSV file from your computer to the RASON Server with your model, but it's easier to just save that file to OneDrive or OneDrive for Business, maintain it there (with multiple versions if you like), and use it directly in your RASON model. Besides OneDrive, the Common Data Service, and OData endpoints, RASON has built-in support for CData Corporation's Cloud Hub, which acts as a gateway to more than 100 different cloud data sources. Here's an example of the Data Connections tab on the RASON My Account page:

RASON Data Connections

Even more significant is the idea of analytic model results as data: As a REST API, RASON accepts analytic models in JSON and returns results of solving these models in JSON. But it also automatically creates an OData endpoint for the results from solving an analytic model. This enables many integration tasks to be done with no code at all. For example, a Power BI user can simply “point” to a RASON OData endpoint URL, then visualize, “slice and dice” analytic model results in a wide range of tables, charts and dashboards.

As another example, suppose you have an optimization model that finds the best way to schedule doctors, nurses and operating rooms by the hour in a hospital. Now you'd like to know, in a mobile app, where James or Sally needs to be on Tuesday at 3pm. You can get that answer via a single URL that queries the OData endpoint for the optimization model results.

Easily Deploy Models and Decision Services in Power BI, Power Apps and Power Automate

Both Analytic Solver for Excel and RASON can automatically create a "custom visual" for Power BI. You can easily insert this custom visual on a Power BI report or dashboard, then drag and drop to connect datasets from Power BI to supply the data your model needs. As soon as you do -- and thereafter, whenever the Power BI data changes -- your model is automatically re-run, and the custom visual displays the new results.

With Microsoft Power Apps, an analyst who isn't a developer can easily create an application that runs a RASON decision model -- like this one that solves a Portfolio Optimization problem -- "point and click" without writing any code. It's equally easy to automate steps of a business process, using Power Automate and calling a RASON decision model -- again "point and click" without writing any code. But a web developer can always step in and enhance this application, working in JavaScript, and using RASON's REST API.

RASON + Power App - Portfolio Optimization