SlideShare ist ein Scribd-Unternehmen logo
1 von 36
INFORMS Phoenix – October 2012




  Deploying Optimization Models
 on Servers and Mobile Platforms

           Presented by
        Bjarni Kristjansson
       Maximal Software, Inc.




   Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                 1
Presentation Overview


•   Global IT Trends affecting O.R.
•   MPL Free Development/Academic Program
•   Optimization Component Libraries
•   New version of MPL OptiMax 4.2n
•   MPL OptiMax code examples (Python / CSharp)
•   Exception handling in MPL OptiMax
•   Web API’s and Web Services
•   Optimization on Mobile/Tablet Computers




                Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                              2
Well-Known Killer Applications


What are the two main differences between the applications on the left
column versus the right?


      •   VisiCalc                                             •    Firefox
      •   Lotus 1-2-3                                          •    Napster
      •   Word Perfect                                         •    Google
      •   Harward Graphics                                     •    YouTube
      •   DBase                                                •    Skype
      •   Turbo-Pascal                                         •    Facebook
      •   PageMaker                                            •    Twitter


     We are Now in the Middle of the Web 2.0 Revolution!

                   Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                                 3
Global Trends in IT


Globality
   •   2.3 Billion Internet users in 2011 (+13% Y/Y)
   •   670M 3G Subscribers (+37% Y/Y, 14% penetration)
   •   Facebook 900M Users (+51% Y/Y)
   •   Tenecent [China] 637M Visitors (+31% Y/Y)


Mobile
   •   Mobile Internet (Apple: 120M users, 330K Apps)
   •   Android 59%, iOS 23%, Symbian 7%, RIM 6% (IDC Report)
   •   Mixi Mobile [Japan]: 84% page views vs. 16% Internet




                Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                              4
Current Major Trends in Online IT


1.    Mobile Devices are taking over personal computers
2.    Social Media is replacing traditional news distribution
3.    Social Networking is changing how people work together
4.    Online Collaboration tools are replacing standalone software
5.    Cloud computing is replacing traditional file-based documents
6.    Online Chatting are replacing emails as effective communication tool
7.    Text Messaging is replacing phone calls
8.    Online Video services are replacing television viewing
9.    Online Publishing: Books and published materials are going online
10.   Virtual Education: Education and seminars are going virtual
11.   Web sites are now expected to be personalized and engaging
12.   Software Development: Servers, Mobile, Remote, Web API, Mashups

O.R. needs to adapt to this new changed world and
should effectively leverage these new IT technologies
                     Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                                   5
Free Development Copies of MPL


Maximal is now offering several new special free and
subscription programs for MPL:
   •   Free Development Copies of MPL
   •   Free MPL with Solver Purchase
   •   Free MPL for Conference Participants
   •   Free MPL Software for Academics
   • Pay Maintenance Only
   • Subscription-based Pricing
   • Free Open-source Solvers
   • Affordable Runtime / Floating Licenses
   • Free Model Conversion to MPL

   • To apply, please go to and fill out the application form:

               www.maximalsoftware.com/FreeDev

                  Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                                6
Academic Program from Maximal


Academic Program Highlights
 • Free full-size MPL version for Academic Users
 • Fully functional time-limited versions of MPL
 • Distributed with the full-size open source CoinMP (CBC/CLP) solver
 • Can be used with all other free academic solvers
   supported by MPL (CPLEX, GUROBI, XPRESS)
 • Mainly intended for classroom and research purposes:
    Educational Research
    Classroom Teaching
    Student Projects
 • Includes new Stochastic Programming and Nonlinear extensions

 • To apply, please go to and fill out the application form:

               www.maximalsoftware.com/Academic
                  Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                                7
MPL OptiMax Applications


Phase I - Development
   •   Model Development Environment
   •   Formulating the Model
   •   Connecting to External Data
   •   Solver Testing and Tuning


Phase II - Deployment
   •   End-User Applications
   •   Run-times / Component Libraries
   •   Embedding Optimization into Application
   •   Packaging/Distribution



                 Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                               8
Programming vs. Optimization Modeling


Application Programming
•   Programming Languages (Procedural)
•   Application/User-Interface
•   Database Programming
•   Most programmers tend to know rather little about
    optimization and formulating models



Optimization Modeling
•   Modeling Languages (Declarative)
•   Optimization Packages
•   Most model builders tend to know rather little about
    application/GUI and database programming




              Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                            9
Optimization Component Library


                                        Program
                                         Program




                            OptiMax
                            OptiMax                           DB
                                                              DB

Application
Optimization

                                          ModLang
                                          ModLang




                                            Solver
                                             Solver



                  Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                                10
OptiMax Component Library
      Seamless Integration of Technologies

•   Modeling Language
•   Solver/Optimizers
•   Database/Data Sources
•   Programming Languages
     • Visual Basic/VBA
     • C/C++
     • CSharp/VB.Net
     • Python
     • Java
     • Delphi
     • Web scripting



             Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                           11
MPL/OptiMax Design Overview


                                       VB               C++              Delphi        Java




MPLWIN                        MPLX                             OptiMax




                     MPL Library (C++)




                  MPL Modeling Language




    Solvers                                          Database




          Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                                  12
OptiMax Component Library
   Object Model Hierarchy

OptiMax

   Solvers (Solver)

      SolverOptions (SolverOption)


   MplOptions (MplOption)


   StatusWindow


   Models (Model)


      Matrix

          Variables (Variable)

          Constraints (Constraint)


      Solution

          Variables (Variable)

          Constraints (Constraint)


      Symbols (Symbol)




    Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                  13
OptiMax Component Library
    Object Model - Symbols

OptiMax


   Models (Model)


      Symbols (Symbol)


      IndexSets (IndexSet)


      DataConstants (DataConstant)

      DataVectors (DataVector)

          Subscripts (Subscript)


      Macros (Macro)

      VariableVectors (VariableVector)

          Subscripts (Subscript)


      ConstraintVectors (ConstraintVector)

          Subscripts (Subscript)

      PlainVariables (Variable)

      PlainConstraints (Constraint)




     Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                   14
OptiMax Component Library
           Application Building Features

•   General Model Handling
•   Model Parsing
•   Model Querying
•   Modifying Models / Solving Models
•   Write Standard Output Files
•   Database Import/Export
•   Multiple Models in Memory
•   Multiple Model Runs / Iterations over models
•   Use Solution Values as Input
•   Callbacks/User Exits
•   Access to MPL Internal Indexing Data Structures



              Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                            15
New release of MPL OptiMax


New MPL Release 4.2n:
  • Multiple new objects, methods, and properties for OptiMax
  • Full support for both 32-bit and 64-bit platforms
                 MPL OptiMax for .Net (CSharp / VB.Net)
                 MPL OptiMax for Python (PYD files)
                 MPL Connection for Matlab (MEX files)
  • Seamless integration with native data structures - Add()
  • Full exception handling with detailed error messages
  • ToString() / str() implementation for all classes
  • Lot of new MPL and OptiMax code samples
  • C-API interface with Mpllib42.dll with over 600 functions
  • MPL OptiMax server version with full multi-threaded support

               Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                             16
MPL OptiMax 4.2n for .Net


• Supports both CSharp and Visual Basic (VS 2008/2010 -
  32/64 bit)
• Multiple new objects, methods and properties
• Seamless integration with native .Net data structures
    • Array
    • ArrayList
    • Generic List
    • ICollection
    • IEnumerable
• Iterators for all collection classes to support foreach loops
• ToString() implementation for all classes
• Exception handling with detailed error messages
• Extensive code samples showing the new OptiMax features
• Server version with full multi-threaded support

             Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                           17
MPL OptiMax 4.2n for Python


• Supports Python 2.6, 2.7, 3.1, and 3.2 in both 32-bit and 64-bit
  mode
• Distributed as compiled PYD files for increased speed
• Multiple new objects, methods and properties
• Seamless integration with native python data structures
    • Lists, List of Lists
    • Tuples, Tuples of Tuples
• Iterators for all collection classes to support for loops
• Implementation of magic methods for all classes
               __init__(), __len__(), __iter__(), __getitem__(),
                  __str__()
• Dynamic object attributes for model identifiers
• Exception handling with detailed error messages
• Extensive code samples showing the new OptiMax features
• Server version with full multi-threaded support
             Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                           18
MPL OptiMax 4.2n for Matlab


• Supports MATLAB in both 32-bit and 64-bit mode
• Distributed as compiled MEX files
• Utilizes the new C-API Mpllib42.dll library
• Based on the standard interface of MATLAB Optimization
  Toolbox
   • mpl_initlibrary()
   • mpl_linprog()
   • mpl_bintprog()
   • mpl_mintprog()
   • mpl_freelibrary()
• MPL can be kept in memory through the hmpl library handle
• Solver can be specified through the solverName argument
• Solver options can be set through the option list argument

            Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                          19
MPLLib 4.2n C-API Library


• Full C-API library interface with over 600 functions
• Available in both 32-bit and 64-bit versions
• Utilized by MPL OptiMax Component Libraries
   • MPL OptiMax for .Net
   • MPL OptiMax for Python
   • MPL OptiMax for Matlab
• Supports all functionality of MPL OptiMax from the C language




             Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                           20
Simple MPL OptiMax Example in Python


from mplpy import *

def RunModel(modelName):
   modelFile = mpl.HomeDir + modelName + ".mpl"
   print("MPL file: " + modelFile)
   mod.ReadModel(modelFile)
   print("Variables = " + str(mod.Matrix.Variables.Count))
   print("Constraints = " + str(mod.Matrix.Constraints.Count))
   print("")
   print("Solving " + modelName + " with " + mpl.Solver.Name + " solver:")
   mod.Solve(mpl.coinmp)
   print("")
   print(mod.Solution.ResultString)
   print("ObjectValue = " + str(mod.Solution.ObjectValue))
   for var in mod.Solution.Variables:
         print(var.Name + " = " + str(var.Activity))




                      Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                                    21
Planning Example in CSharp


OptiMax mpl = new OptiMax();
mpl.UseExceptions = false;
Solver solver = mpl.Solvers.Add("CPLEX");
Model model = mpl.Models.Add("Planning");
string modelFile = mpl.HomeDirectory + modelName + ".mpl";
Console.WriteLine("Reading MPL file: " + modelFile);
ResultType result = model.ReadModel(modelFile);
if (result != ResultType.Success)
{
    Console.WriteLine(model.Error.ToString());
}
Console.WriteLine("Solving " + modelName + " with " + solver.Name + " solver");
result = model.Solve(solver);
foreach (Variable var in model.Solution.Nonzeros)
{
    Console.WriteLine(var.Name + " " + var.Activity.ToString());
}
Console.WriteLine(model.Solution.ResultString +
   " ObjectValue = " + model.Solution.ObjectValue);
Console.WriteLine("Nonzeros = " + model.Solution.Nonzeros.Count.ToString());


                   Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                                 22
Portfolio Example - Dynamic Attributes


from mplpy import mpl
from numpy import arange, float32
from matplotlib import pyplot as plot

modelFilename = mpl.HomeDir + "Portfolio.mpl"
result = mpl.model.SolveModel(modelFilename, mpl.cplex)

investVect = mpl.model.Invest
investVect.ZeroTol = 0.001

count = investVect.Nonzeros.Count
investAmount = arange(count, dtype=float32)
stockNames = range(count)

for i, var in enumerate(investVect.Nonzeros):
    investAmount[i] = var.Activity
    stockNames[i] = investVect.stock.ValueStr
    print((stockNames[i] + ":").ljust(8) +
          ("%1.1f%%" % (investAmount[i] * 100.0)).rjust(6))




                   Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                                 23
EFrontier Example - Changing RHS

iterCount = 100
deltaPercent = 0.02
CPLEX_OPTIMAL = 1
targetReturnData = model.TargetReturn
varianceMacro = model.Variance
meetTargetCon = model.MeetTarget
TargetArray = arange(iterCount, dtype=float32)
VarianceArray = arange(iterCount, dtype=float32)

for i in range(iterCount):
    target = targetReturnData.Value * (1 + i * deltaPercent)
    meetTargetCon.RHSValue = target
    model.Solve(mpl.cplex)
    print(str(i) + ") " + str(target) + ", " + str(varianceMacro.Value))
    if model.Solution.ResultCode == CPLEX_OPTIMAL:
        TargetArray[i] = target
        VarianceArray[i] = varianceMacro.Value
    else:
        solCount = i
        print(str(solCount + 1) + ") " +
              model.Solution.ResultString + " (" +
              str(model.Solution.ResultCode) + ")")
        break
                   Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                                 24
CutStock Example – Add() Statements

def LoadModel(self, model, cutNames, patternNames, priceSheet, sheetsAvail,
               cutDemand, cutsInPattern):
    try:
         model.IndexSets.AddNameSet("cuts", cutNames)
         model.IndexSets.AddNameSet("patterns", patternNames)
         model.DataConstants.Add("PriceSheet", priceSheet)
         model.DataConstants.Add("SheetsAvail", sheetsAvail)
         model.DataVectors.AddDense("CutDemand[cuts]", cutDemand)
         model.DataVectors.Add("CutsInPattern[patterns, cuts]", cutsInPattern)
         model.PlainVariables.Add("SheetsCut", "-> T1")
         model.PlainVariables.Add("TotalCost", "-> TC")
         model.VariableVectors.Add("PatternCount[patterns]", "-> """)
         model.VariableVectors.Add("ExcessCuts[cuts]", "-> X")
         model.Objectives.Add("TotalCost", ObjectSense.Minimize)
         model.PlainConstraints.Add("TotCost", "TotalCost = PriceSheet*SheetsCut")
         model.PlainConstraints.Add("RawAvail", "SheetsCut < SheetsAvail")
         model.PlainConstraints.Add("Sheets",
             "SheetsCut = SUM(patterns: PatternCount[patterns])")
         model.ConstraintVectors.Add("CutReq[cuts]",
             "SUM(patterns: CutsInPattern[patterns, cuts] * PatternCount[patterns])
             CutDemand[cuts] + ExcessCuts[cuts]")
    except Exception as ex:
         print(str(ex))
    result = model.LastResult
    return result



                       Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                                     25
Add Statements - IndexSet / DataVectors


Adding IndexSet:

cutNames = ['w1', 'w2', 'w3', 'w4', 'w5', 'w6', 'w7', 'w8']

model.IndexSets.AddNameSet("cuts", cutNames)


Adding DataVectors:

cutDemand = [500, 400, 300, 450, 350, 200, 800, 200]

model.DataVectors.AddDense("CutDemand[cuts]", cutDemand)


cutsInPattern = ['p1', 'w1', 1,
                 'p1', 'w8', 1,
                 'p2', 'w2', 1,
                 'p2', 'w7', 1,
                 . . .
                 'p28', 'w8', 5,
                 'p29', 'w8', 7]

model.DataVectors.Add("CutsInPattern[patterns, cuts]", cutsInPattern)

                      Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                                    26
Exceptions with Detailed Syntax Error Messages

Syntax Error:
    model.PlainConstraints.Add("TotCost", "TotalCost = PriceSheet */ SheetsCut")


Exception Output:

    The PlainConstraints.Add('TotCost', expr='TotalCost = PriceSheet */ SheetsCut') method
    returned 'SyntaxError' (2) with the following error message:

    **** A minor mistake was found in line 1:

    6. I expected to see either a number or a variable, but found instead '/'.

    File: C:MplWin4OptiMaxPythonCutStock
    Line: (line=1, col=43)

    SUBJECT TO TotCost: TotalCost = PriceSheet */ SheetsCut;
                                               ^




                                 Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                                               27
Exceptions with Wrong Data Types

Syntax Error:
     cutNames = ['w1', 'w2', 'w3', 'w4', 'w5', 'w6', 'w7', 'w8']
     model.DataConstants.Add("SheetsAvail", cutNames)



Exception Output:


    The argument 'dataValue' for the 'DataConstants.Add('SheetsAvail', dataValue, dataAttr)' method
    cannot be assigned the value '['w1', 'w2', 'w3', 'w4', 'w5', 'w6', 'w7', 'w8']' of type 'list'.


    Quick fix: Please enter either a numeric or string value.




                                  Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                                                      28
Applications with MPL OptiMax


•   Model written in MPL
•   Data transferred to/from MPL through
    • Excel Ranges
    • Database Connection
    • Text files
•   End-User Application Building
    •   User-Interface done in VB/CSharp/C-API/C++/Java/Phyton
    •   Process Input from User
    •   Control Solver Runs
    •   Process Output from Model
    •   Display graphs
•   Model solved with any supported solver

              No limits on size, speed, or robustness
                   Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                                 29
MPL OptiMax on Optimization Servers


Full support for multi-threaded applications
   •   Optimization Servers
   •   Web Services (REST / SOAP)
   •   Web API’s
   •   Mobile / Tablet Applications


Support for server-side application frameworks
   • ASP.Net
   • Python
   • PHP (not implemented yet)




                 Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                               30
Optimization on Mobile Devices


Optimization on the mobile device (thick clients)
   • Model (device)
   • Solvers (device)
   • Data (device / server)

Example: TSP Concord on iPad



Optimization on the server (thin clients)
   • Model (server)
   • Solvers (server)
   • Data (device / server)



                 Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                               31
MPL OptiMax on Optimization Servers


Client-Side Technologies:
   • AJAX
      • XMLHttpRequest
      • XHTML and CSS
      • Document Object Model (DOM)
      • JavaScript
      • XML and XSLT


   • Mobile / Tablets
      • iPhone / iPad (Objective-C)
      • Android (Java)
      • HTML5

               Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                             32
Cloud-based Optimization


Example:
  Large energy company needs to run 2000 model instances,
    each taking 1-2 hours to solve, within a day
  • Traditional standalone computer approach
     • Maintain large number machines
     • Install optimization and modelling software
     • Run model instances over the network
     • Very expensive fixed costs upfront

  • Cloud-based computing approach
     • Setup account on Cloud, such as Amazon EC2
     • Write script to run the models on cloud
     • Cost is typically calculated per core, per hour.

               Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                             33
Google Web API Toolkits



• Google Drive (Google Apps)
• Google Spreadsheets API
   • Full control of visibility and who can update
   • Built-in Javascript
   • Support SQL types of queries
• Google Query API
• Google Visualization API
   • Bar charts, Pie charts, Line charts and many more
   • Very customizable
   • Data Tables and Data Views
• Google Maps API
   • Add markers, Polylines and Info Windows

            Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                          34
Google Visualization API – Portfolio Opt.




       Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                     35
Google Maps API - Shortest Path Optimization




         Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                       36

Weitere ähnliche Inhalte

Ähnlich wie Maximal: Deploying Optimization Models on Servers and Mobile Platforms - Oct 2012

Maximal: MPL Software Demo - INFORMS Phoenix Oct 2012
Maximal: MPL Software Demo - INFORMS Phoenix Oct 2012Maximal: MPL Software Demo - INFORMS Phoenix Oct 2012
Maximal: MPL Software Demo - INFORMS Phoenix Oct 2012Bjarni Kristjánsson
 
Seminar: Embedding Optimization in Applications with MPL OptiMax - April 2012
Seminar: Embedding Optimization in Applications with MPL OptiMax - April 2012Seminar: Embedding Optimization in Applications with MPL OptiMax - April 2012
Seminar: Embedding Optimization in Applications with MPL OptiMax - April 2012Bjarni Kristjánsson
 
Seminar: Introduction to Maximal Software and the MPL Modeling System - Oct 2012
Seminar: Introduction to Maximal Software and the MPL Modeling System - Oct 2012Seminar: Introduction to Maximal Software and the MPL Modeling System - Oct 2012
Seminar: Introduction to Maximal Software and the MPL Modeling System - Oct 2012Bjarni Kristjánsson
 
Seminar: New Pricing Programs and Free Software Offers by Maximal - Oct 2012
Seminar: New Pricing Programs and Free Software Offers by Maximal - Oct 2012Seminar: New Pricing Programs and Free Software Offers by Maximal - Oct 2012
Seminar: New Pricing Programs and Free Software Offers by Maximal - Oct 2012Bjarni Kristjánsson
 
Introducing MongoDB into your Organization
Introducing MongoDB into your OrganizationIntroducing MongoDB into your Organization
Introducing MongoDB into your OrganizationMongoDB
 
Delivering Mobile Apps to the Field with Oracle
Delivering Mobile Apps to the Field with OracleDelivering Mobile Apps to the Field with Oracle
Delivering Mobile Apps to the Field with OracleSimon Haslam
 
MyAppConverter DroidconUK 2014
MyAppConverter DroidconUK 2014MyAppConverter DroidconUK 2014
MyAppConverter DroidconUK 2014myappconverter
 
RTView - Monitoring Service for SmartCloud Applications
RTView - Monitoring Service for SmartCloud ApplicationsRTView - Monitoring Service for SmartCloud Applications
RTView - Monitoring Service for SmartCloud ApplicationsSL Corporation
 
Open Source AI - News and examples
Open Source AI - News and examplesOpen Source AI - News and examples
Open Source AI - News and examplesLuciano Resende
 
From open data to API-driven business
From open data to API-driven businessFrom open data to API-driven business
From open data to API-driven businessOpenDataSoft
 
Analyze your software assets with Modisco par Frédéric Madiot
Analyze your software assets with Modisco par Frédéric MadiotAnalyze your software assets with Modisco par Frédéric Madiot
Analyze your software assets with Modisco par Frédéric MadiotEclipseDayParis
 
Microservices - How Microservices Have Changed and Why They Matter
Microservices - How Microservices Have Changed and Why They MatterMicroservices - How Microservices Have Changed and Why They Matter
Microservices - How Microservices Have Changed and Why They MatterAlexander Arda
 
Deploying End-to-End Deep Learning Pipelines with ONNX
Deploying End-to-End Deep Learning Pipelines with ONNXDeploying End-to-End Deep Learning Pipelines with ONNX
Deploying End-to-End Deep Learning Pipelines with ONNXDatabricks
 
Proud to be polyglot
Proud to be polyglotProud to be polyglot
Proud to be polyglotTugdual Grall
 
PostgreSQL to Accelerate Innovation
PostgreSQL to Accelerate InnovationPostgreSQL to Accelerate Innovation
PostgreSQL to Accelerate InnovationEDB
 
Running Highly Available Postgres Databases in Containers
Running Highly Available Postgres Databases in ContainersRunning Highly Available Postgres Databases in Containers
Running Highly Available Postgres Databases in ContainersEDB
 
WSO2Con US 2013 - Connected Business - making it happen
WSO2Con US 2013 - Connected Business - making it happenWSO2Con US 2013 - Connected Business - making it happen
WSO2Con US 2013 - Connected Business - making it happenWSO2
 
Effective Application Development with WebSphere Message Broker
Effective Application Development with WebSphere Message BrokerEffective Application Development with WebSphere Message Broker
Effective Application Development with WebSphere Message BrokerAnt Phillips
 
Mobile trends and impressions
Mobile trends and impressionsMobile trends and impressions
Mobile trends and impressionsShafaq Abdullah
 

Ähnlich wie Maximal: Deploying Optimization Models on Servers and Mobile Platforms - Oct 2012 (20)

Maximal: MPL Software Demo - INFORMS Phoenix Oct 2012
Maximal: MPL Software Demo - INFORMS Phoenix Oct 2012Maximal: MPL Software Demo - INFORMS Phoenix Oct 2012
Maximal: MPL Software Demo - INFORMS Phoenix Oct 2012
 
Seminar: Embedding Optimization in Applications with MPL OptiMax - April 2012
Seminar: Embedding Optimization in Applications with MPL OptiMax - April 2012Seminar: Embedding Optimization in Applications with MPL OptiMax - April 2012
Seminar: Embedding Optimization in Applications with MPL OptiMax - April 2012
 
Seminar: Introduction to Maximal Software and the MPL Modeling System - Oct 2012
Seminar: Introduction to Maximal Software and the MPL Modeling System - Oct 2012Seminar: Introduction to Maximal Software and the MPL Modeling System - Oct 2012
Seminar: Introduction to Maximal Software and the MPL Modeling System - Oct 2012
 
Seminar: New Pricing Programs and Free Software Offers by Maximal - Oct 2012
Seminar: New Pricing Programs and Free Software Offers by Maximal - Oct 2012Seminar: New Pricing Programs and Free Software Offers by Maximal - Oct 2012
Seminar: New Pricing Programs and Free Software Offers by Maximal - Oct 2012
 
Introducing MongoDB into your Organization
Introducing MongoDB into your OrganizationIntroducing MongoDB into your Organization
Introducing MongoDB into your Organization
 
Delivering Mobile Apps to the Field with Oracle
Delivering Mobile Apps to the Field with OracleDelivering Mobile Apps to the Field with Oracle
Delivering Mobile Apps to the Field with Oracle
 
MyAppConverter DroidconUK 2014
MyAppConverter DroidconUK 2014MyAppConverter DroidconUK 2014
MyAppConverter DroidconUK 2014
 
RTView - Monitoring Service for SmartCloud Applications
RTView - Monitoring Service for SmartCloud ApplicationsRTView - Monitoring Service for SmartCloud Applications
RTView - Monitoring Service for SmartCloud Applications
 
Eclipse Way
Eclipse WayEclipse Way
Eclipse Way
 
Open Source AI - News and examples
Open Source AI - News and examplesOpen Source AI - News and examples
Open Source AI - News and examples
 
From open data to API-driven business
From open data to API-driven businessFrom open data to API-driven business
From open data to API-driven business
 
Analyze your software assets with Modisco par Frédéric Madiot
Analyze your software assets with Modisco par Frédéric MadiotAnalyze your software assets with Modisco par Frédéric Madiot
Analyze your software assets with Modisco par Frédéric Madiot
 
Microservices - How Microservices Have Changed and Why They Matter
Microservices - How Microservices Have Changed and Why They MatterMicroservices - How Microservices Have Changed and Why They Matter
Microservices - How Microservices Have Changed and Why They Matter
 
Deploying End-to-End Deep Learning Pipelines with ONNX
Deploying End-to-End Deep Learning Pipelines with ONNXDeploying End-to-End Deep Learning Pipelines with ONNX
Deploying End-to-End Deep Learning Pipelines with ONNX
 
Proud to be polyglot
Proud to be polyglotProud to be polyglot
Proud to be polyglot
 
PostgreSQL to Accelerate Innovation
PostgreSQL to Accelerate InnovationPostgreSQL to Accelerate Innovation
PostgreSQL to Accelerate Innovation
 
Running Highly Available Postgres Databases in Containers
Running Highly Available Postgres Databases in ContainersRunning Highly Available Postgres Databases in Containers
Running Highly Available Postgres Databases in Containers
 
WSO2Con US 2013 - Connected Business - making it happen
WSO2Con US 2013 - Connected Business - making it happenWSO2Con US 2013 - Connected Business - making it happen
WSO2Con US 2013 - Connected Business - making it happen
 
Effective Application Development with WebSphere Message Broker
Effective Application Development with WebSphere Message BrokerEffective Application Development with WebSphere Message Broker
Effective Application Development with WebSphere Message Broker
 
Mobile trends and impressions
Mobile trends and impressionsMobile trends and impressions
Mobile trends and impressions
 

Mehr von Bjarni Kristjánsson

New Release 5.0 of MPL and OptiMax Library - OR Vienna 2015
New Release 5.0 of MPL and OptiMax Library - OR Vienna 2015New Release 5.0 of MPL and OptiMax Library - OR Vienna 2015
New Release 5.0 of MPL and OptiMax Library - OR Vienna 2015Bjarni Kristjánsson
 
Maximal: Achieving Optimal Solution Performance for your Optimization Modelin...
Maximal: Achieving Optimal Solution Performance for your Optimization Modelin...Maximal: Achieving Optimal Solution Performance for your Optimization Modelin...
Maximal: Achieving Optimal Solution Performance for your Optimization Modelin...Bjarni Kristjánsson
 
Maximal: Comparison of Optimization Modeling Software for Python - Oct 2012
Maximal: Comparison of Optimization Modeling Software for Python - Oct 2012Maximal: Comparison of Optimization Modeling Software for Python - Oct 2012
Maximal: Comparison of Optimization Modeling Software for Python - Oct 2012Bjarni Kristjánsson
 
Seminar: New Stochastic Programming Features for MPL - Nov 2011
Seminar: New Stochastic Programming Features for MPL - Nov 2011Seminar: New Stochastic Programming Features for MPL - Nov 2011
Seminar: New Stochastic Programming Features for MPL - Nov 2011Bjarni Kristjánsson
 
Seminar: CoinMP - Open Source Solver - Nov 2011
Seminar: CoinMP - Open Source Solver - Nov 2011Seminar: CoinMP - Open Source Solver - Nov 2011
Seminar: CoinMP - Open Source Solver - Nov 2011Bjarni Kristjánsson
 
Seminar: Data Modeling for Optimization with MPL - Oct 2012
Seminar: Data Modeling for Optimization with MPL - Oct 2012Seminar: Data Modeling for Optimization with MPL - Oct 2012
Seminar: Data Modeling for Optimization with MPL - Oct 2012Bjarni Kristjánsson
 
OR Connect: A New Web 2.0 Online Initiative for O.R. - INFORMS Jan 2011
OR Connect: A New Web 2.0 Online Initiative for O.R. - INFORMS Jan 2011OR Connect: A New Web 2.0 Online Initiative for O.R. - INFORMS Jan 2011
OR Connect: A New Web 2.0 Online Initiative for O.R. - INFORMS Jan 2011Bjarni Kristjánsson
 
INFORMS: IT Board Report - April 2011
INFORMS: IT Board Report - April 2011INFORMS: IT Board Report - April 2011
INFORMS: IT Board Report - April 2011Bjarni Kristjánsson
 
INFORMS: IT Committee Report - August 2011
INFORMS: IT Committee Report - August 2011INFORMS: IT Committee Report - August 2011
INFORMS: IT Committee Report - August 2011Bjarni Kristjánsson
 

Mehr von Bjarni Kristjánsson (9)

New Release 5.0 of MPL and OptiMax Library - OR Vienna 2015
New Release 5.0 of MPL and OptiMax Library - OR Vienna 2015New Release 5.0 of MPL and OptiMax Library - OR Vienna 2015
New Release 5.0 of MPL and OptiMax Library - OR Vienna 2015
 
Maximal: Achieving Optimal Solution Performance for your Optimization Modelin...
Maximal: Achieving Optimal Solution Performance for your Optimization Modelin...Maximal: Achieving Optimal Solution Performance for your Optimization Modelin...
Maximal: Achieving Optimal Solution Performance for your Optimization Modelin...
 
Maximal: Comparison of Optimization Modeling Software for Python - Oct 2012
Maximal: Comparison of Optimization Modeling Software for Python - Oct 2012Maximal: Comparison of Optimization Modeling Software for Python - Oct 2012
Maximal: Comparison of Optimization Modeling Software for Python - Oct 2012
 
Seminar: New Stochastic Programming Features for MPL - Nov 2011
Seminar: New Stochastic Programming Features for MPL - Nov 2011Seminar: New Stochastic Programming Features for MPL - Nov 2011
Seminar: New Stochastic Programming Features for MPL - Nov 2011
 
Seminar: CoinMP - Open Source Solver - Nov 2011
Seminar: CoinMP - Open Source Solver - Nov 2011Seminar: CoinMP - Open Source Solver - Nov 2011
Seminar: CoinMP - Open Source Solver - Nov 2011
 
Seminar: Data Modeling for Optimization with MPL - Oct 2012
Seminar: Data Modeling for Optimization with MPL - Oct 2012Seminar: Data Modeling for Optimization with MPL - Oct 2012
Seminar: Data Modeling for Optimization with MPL - Oct 2012
 
OR Connect: A New Web 2.0 Online Initiative for O.R. - INFORMS Jan 2011
OR Connect: A New Web 2.0 Online Initiative for O.R. - INFORMS Jan 2011OR Connect: A New Web 2.0 Online Initiative for O.R. - INFORMS Jan 2011
OR Connect: A New Web 2.0 Online Initiative for O.R. - INFORMS Jan 2011
 
INFORMS: IT Board Report - April 2011
INFORMS: IT Board Report - April 2011INFORMS: IT Board Report - April 2011
INFORMS: IT Board Report - April 2011
 
INFORMS: IT Committee Report - August 2011
INFORMS: IT Committee Report - August 2011INFORMS: IT Committee Report - August 2011
INFORMS: IT Committee Report - August 2011
 

Kürzlich hochgeladen

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMKumar Satyam
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard37
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAnitaRaj43
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 

Kürzlich hochgeladen (20)

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptx
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 

Maximal: Deploying Optimization Models on Servers and Mobile Platforms - Oct 2012

  • 1. INFORMS Phoenix – October 2012 Deploying Optimization Models on Servers and Mobile Platforms Presented by Bjarni Kristjansson Maximal Software, Inc. Copyright © 2012 Maximal Software, Inc. All rights reserved 1
  • 2. Presentation Overview • Global IT Trends affecting O.R. • MPL Free Development/Academic Program • Optimization Component Libraries • New version of MPL OptiMax 4.2n • MPL OptiMax code examples (Python / CSharp) • Exception handling in MPL OptiMax • Web API’s and Web Services • Optimization on Mobile/Tablet Computers Copyright © 2012 Maximal Software, Inc. All rights reserved 2
  • 3. Well-Known Killer Applications What are the two main differences between the applications on the left column versus the right? • VisiCalc • Firefox • Lotus 1-2-3 • Napster • Word Perfect • Google • Harward Graphics • YouTube • DBase • Skype • Turbo-Pascal • Facebook • PageMaker • Twitter We are Now in the Middle of the Web 2.0 Revolution! Copyright © 2012 Maximal Software, Inc. All rights reserved 3
  • 4. Global Trends in IT Globality • 2.3 Billion Internet users in 2011 (+13% Y/Y) • 670M 3G Subscribers (+37% Y/Y, 14% penetration) • Facebook 900M Users (+51% Y/Y) • Tenecent [China] 637M Visitors (+31% Y/Y) Mobile • Mobile Internet (Apple: 120M users, 330K Apps) • Android 59%, iOS 23%, Symbian 7%, RIM 6% (IDC Report) • Mixi Mobile [Japan]: 84% page views vs. 16% Internet Copyright © 2012 Maximal Software, Inc. All rights reserved 4
  • 5. Current Major Trends in Online IT 1. Mobile Devices are taking over personal computers 2. Social Media is replacing traditional news distribution 3. Social Networking is changing how people work together 4. Online Collaboration tools are replacing standalone software 5. Cloud computing is replacing traditional file-based documents 6. Online Chatting are replacing emails as effective communication tool 7. Text Messaging is replacing phone calls 8. Online Video services are replacing television viewing 9. Online Publishing: Books and published materials are going online 10. Virtual Education: Education and seminars are going virtual 11. Web sites are now expected to be personalized and engaging 12. Software Development: Servers, Mobile, Remote, Web API, Mashups O.R. needs to adapt to this new changed world and should effectively leverage these new IT technologies Copyright © 2012 Maximal Software, Inc. All rights reserved 5
  • 6. Free Development Copies of MPL Maximal is now offering several new special free and subscription programs for MPL: • Free Development Copies of MPL • Free MPL with Solver Purchase • Free MPL for Conference Participants • Free MPL Software for Academics • Pay Maintenance Only • Subscription-based Pricing • Free Open-source Solvers • Affordable Runtime / Floating Licenses • Free Model Conversion to MPL • To apply, please go to and fill out the application form: www.maximalsoftware.com/FreeDev Copyright © 2012 Maximal Software, Inc. All rights reserved 6
  • 7. Academic Program from Maximal Academic Program Highlights • Free full-size MPL version for Academic Users • Fully functional time-limited versions of MPL • Distributed with the full-size open source CoinMP (CBC/CLP) solver • Can be used with all other free academic solvers supported by MPL (CPLEX, GUROBI, XPRESS) • Mainly intended for classroom and research purposes: Educational Research Classroom Teaching Student Projects • Includes new Stochastic Programming and Nonlinear extensions • To apply, please go to and fill out the application form: www.maximalsoftware.com/Academic Copyright © 2012 Maximal Software, Inc. All rights reserved 7
  • 8. MPL OptiMax Applications Phase I - Development • Model Development Environment • Formulating the Model • Connecting to External Data • Solver Testing and Tuning Phase II - Deployment • End-User Applications • Run-times / Component Libraries • Embedding Optimization into Application • Packaging/Distribution Copyright © 2012 Maximal Software, Inc. All rights reserved 8
  • 9. Programming vs. Optimization Modeling Application Programming • Programming Languages (Procedural) • Application/User-Interface • Database Programming • Most programmers tend to know rather little about optimization and formulating models Optimization Modeling • Modeling Languages (Declarative) • Optimization Packages • Most model builders tend to know rather little about application/GUI and database programming Copyright © 2012 Maximal Software, Inc. All rights reserved 9
  • 10. Optimization Component Library Program Program OptiMax OptiMax DB DB Application Optimization ModLang ModLang Solver Solver Copyright © 2012 Maximal Software, Inc. All rights reserved 10
  • 11. OptiMax Component Library Seamless Integration of Technologies • Modeling Language • Solver/Optimizers • Database/Data Sources • Programming Languages • Visual Basic/VBA • C/C++ • CSharp/VB.Net • Python • Java • Delphi • Web scripting Copyright © 2012 Maximal Software, Inc. All rights reserved 11
  • 12. MPL/OptiMax Design Overview VB C++ Delphi Java MPLWIN MPLX OptiMax MPL Library (C++) MPL Modeling Language Solvers Database Copyright © 2012 Maximal Software, Inc. All rights reserved 12
  • 13. OptiMax Component Library Object Model Hierarchy OptiMax Solvers (Solver) SolverOptions (SolverOption) MplOptions (MplOption) StatusWindow Models (Model) Matrix Variables (Variable) Constraints (Constraint) Solution Variables (Variable) Constraints (Constraint) Symbols (Symbol) Copyright © 2012 Maximal Software, Inc. All rights reserved 13
  • 14. OptiMax Component Library Object Model - Symbols OptiMax Models (Model) Symbols (Symbol) IndexSets (IndexSet) DataConstants (DataConstant) DataVectors (DataVector) Subscripts (Subscript) Macros (Macro) VariableVectors (VariableVector) Subscripts (Subscript) ConstraintVectors (ConstraintVector) Subscripts (Subscript) PlainVariables (Variable) PlainConstraints (Constraint) Copyright © 2012 Maximal Software, Inc. All rights reserved 14
  • 15. OptiMax Component Library Application Building Features • General Model Handling • Model Parsing • Model Querying • Modifying Models / Solving Models • Write Standard Output Files • Database Import/Export • Multiple Models in Memory • Multiple Model Runs / Iterations over models • Use Solution Values as Input • Callbacks/User Exits • Access to MPL Internal Indexing Data Structures Copyright © 2012 Maximal Software, Inc. All rights reserved 15
  • 16. New release of MPL OptiMax New MPL Release 4.2n: • Multiple new objects, methods, and properties for OptiMax • Full support for both 32-bit and 64-bit platforms MPL OptiMax for .Net (CSharp / VB.Net) MPL OptiMax for Python (PYD files) MPL Connection for Matlab (MEX files) • Seamless integration with native data structures - Add() • Full exception handling with detailed error messages • ToString() / str() implementation for all classes • Lot of new MPL and OptiMax code samples • C-API interface with Mpllib42.dll with over 600 functions • MPL OptiMax server version with full multi-threaded support Copyright © 2012 Maximal Software, Inc. All rights reserved 16
  • 17. MPL OptiMax 4.2n for .Net • Supports both CSharp and Visual Basic (VS 2008/2010 - 32/64 bit) • Multiple new objects, methods and properties • Seamless integration with native .Net data structures • Array • ArrayList • Generic List • ICollection • IEnumerable • Iterators for all collection classes to support foreach loops • ToString() implementation for all classes • Exception handling with detailed error messages • Extensive code samples showing the new OptiMax features • Server version with full multi-threaded support Copyright © 2012 Maximal Software, Inc. All rights reserved 17
  • 18. MPL OptiMax 4.2n for Python • Supports Python 2.6, 2.7, 3.1, and 3.2 in both 32-bit and 64-bit mode • Distributed as compiled PYD files for increased speed • Multiple new objects, methods and properties • Seamless integration with native python data structures • Lists, List of Lists • Tuples, Tuples of Tuples • Iterators for all collection classes to support for loops • Implementation of magic methods for all classes __init__(), __len__(), __iter__(), __getitem__(), __str__() • Dynamic object attributes for model identifiers • Exception handling with detailed error messages • Extensive code samples showing the new OptiMax features • Server version with full multi-threaded support Copyright © 2012 Maximal Software, Inc. All rights reserved 18
  • 19. MPL OptiMax 4.2n for Matlab • Supports MATLAB in both 32-bit and 64-bit mode • Distributed as compiled MEX files • Utilizes the new C-API Mpllib42.dll library • Based on the standard interface of MATLAB Optimization Toolbox • mpl_initlibrary() • mpl_linprog() • mpl_bintprog() • mpl_mintprog() • mpl_freelibrary() • MPL can be kept in memory through the hmpl library handle • Solver can be specified through the solverName argument • Solver options can be set through the option list argument Copyright © 2012 Maximal Software, Inc. All rights reserved 19
  • 20. MPLLib 4.2n C-API Library • Full C-API library interface with over 600 functions • Available in both 32-bit and 64-bit versions • Utilized by MPL OptiMax Component Libraries • MPL OptiMax for .Net • MPL OptiMax for Python • MPL OptiMax for Matlab • Supports all functionality of MPL OptiMax from the C language Copyright © 2012 Maximal Software, Inc. All rights reserved 20
  • 21. Simple MPL OptiMax Example in Python from mplpy import * def RunModel(modelName): modelFile = mpl.HomeDir + modelName + ".mpl" print("MPL file: " + modelFile) mod.ReadModel(modelFile) print("Variables = " + str(mod.Matrix.Variables.Count)) print("Constraints = " + str(mod.Matrix.Constraints.Count)) print("") print("Solving " + modelName + " with " + mpl.Solver.Name + " solver:") mod.Solve(mpl.coinmp) print("") print(mod.Solution.ResultString) print("ObjectValue = " + str(mod.Solution.ObjectValue)) for var in mod.Solution.Variables: print(var.Name + " = " + str(var.Activity)) Copyright © 2012 Maximal Software, Inc. All rights reserved 21
  • 22. Planning Example in CSharp OptiMax mpl = new OptiMax(); mpl.UseExceptions = false; Solver solver = mpl.Solvers.Add("CPLEX"); Model model = mpl.Models.Add("Planning"); string modelFile = mpl.HomeDirectory + modelName + ".mpl"; Console.WriteLine("Reading MPL file: " + modelFile); ResultType result = model.ReadModel(modelFile); if (result != ResultType.Success) { Console.WriteLine(model.Error.ToString()); } Console.WriteLine("Solving " + modelName + " with " + solver.Name + " solver"); result = model.Solve(solver); foreach (Variable var in model.Solution.Nonzeros) { Console.WriteLine(var.Name + " " + var.Activity.ToString()); } Console.WriteLine(model.Solution.ResultString + " ObjectValue = " + model.Solution.ObjectValue); Console.WriteLine("Nonzeros = " + model.Solution.Nonzeros.Count.ToString()); Copyright © 2012 Maximal Software, Inc. All rights reserved 22
  • 23. Portfolio Example - Dynamic Attributes from mplpy import mpl from numpy import arange, float32 from matplotlib import pyplot as plot modelFilename = mpl.HomeDir + "Portfolio.mpl" result = mpl.model.SolveModel(modelFilename, mpl.cplex) investVect = mpl.model.Invest investVect.ZeroTol = 0.001 count = investVect.Nonzeros.Count investAmount = arange(count, dtype=float32) stockNames = range(count) for i, var in enumerate(investVect.Nonzeros): investAmount[i] = var.Activity stockNames[i] = investVect.stock.ValueStr print((stockNames[i] + ":").ljust(8) + ("%1.1f%%" % (investAmount[i] * 100.0)).rjust(6)) Copyright © 2012 Maximal Software, Inc. All rights reserved 23
  • 24. EFrontier Example - Changing RHS iterCount = 100 deltaPercent = 0.02 CPLEX_OPTIMAL = 1 targetReturnData = model.TargetReturn varianceMacro = model.Variance meetTargetCon = model.MeetTarget TargetArray = arange(iterCount, dtype=float32) VarianceArray = arange(iterCount, dtype=float32) for i in range(iterCount): target = targetReturnData.Value * (1 + i * deltaPercent) meetTargetCon.RHSValue = target model.Solve(mpl.cplex) print(str(i) + ") " + str(target) + ", " + str(varianceMacro.Value)) if model.Solution.ResultCode == CPLEX_OPTIMAL: TargetArray[i] = target VarianceArray[i] = varianceMacro.Value else: solCount = i print(str(solCount + 1) + ") " + model.Solution.ResultString + " (" + str(model.Solution.ResultCode) + ")") break Copyright © 2012 Maximal Software, Inc. All rights reserved 24
  • 25. CutStock Example – Add() Statements def LoadModel(self, model, cutNames, patternNames, priceSheet, sheetsAvail, cutDemand, cutsInPattern): try: model.IndexSets.AddNameSet("cuts", cutNames) model.IndexSets.AddNameSet("patterns", patternNames) model.DataConstants.Add("PriceSheet", priceSheet) model.DataConstants.Add("SheetsAvail", sheetsAvail) model.DataVectors.AddDense("CutDemand[cuts]", cutDemand) model.DataVectors.Add("CutsInPattern[patterns, cuts]", cutsInPattern) model.PlainVariables.Add("SheetsCut", "-> T1") model.PlainVariables.Add("TotalCost", "-> TC") model.VariableVectors.Add("PatternCount[patterns]", "-> """) model.VariableVectors.Add("ExcessCuts[cuts]", "-> X") model.Objectives.Add("TotalCost", ObjectSense.Minimize) model.PlainConstraints.Add("TotCost", "TotalCost = PriceSheet*SheetsCut") model.PlainConstraints.Add("RawAvail", "SheetsCut < SheetsAvail") model.PlainConstraints.Add("Sheets", "SheetsCut = SUM(patterns: PatternCount[patterns])") model.ConstraintVectors.Add("CutReq[cuts]", "SUM(patterns: CutsInPattern[patterns, cuts] * PatternCount[patterns]) CutDemand[cuts] + ExcessCuts[cuts]") except Exception as ex: print(str(ex)) result = model.LastResult return result Copyright © 2012 Maximal Software, Inc. All rights reserved 25
  • 26. Add Statements - IndexSet / DataVectors Adding IndexSet: cutNames = ['w1', 'w2', 'w3', 'w4', 'w5', 'w6', 'w7', 'w8'] model.IndexSets.AddNameSet("cuts", cutNames) Adding DataVectors: cutDemand = [500, 400, 300, 450, 350, 200, 800, 200] model.DataVectors.AddDense("CutDemand[cuts]", cutDemand) cutsInPattern = ['p1', 'w1', 1, 'p1', 'w8', 1, 'p2', 'w2', 1, 'p2', 'w7', 1, . . . 'p28', 'w8', 5, 'p29', 'w8', 7] model.DataVectors.Add("CutsInPattern[patterns, cuts]", cutsInPattern) Copyright © 2012 Maximal Software, Inc. All rights reserved 26
  • 27. Exceptions with Detailed Syntax Error Messages Syntax Error: model.PlainConstraints.Add("TotCost", "TotalCost = PriceSheet */ SheetsCut") Exception Output: The PlainConstraints.Add('TotCost', expr='TotalCost = PriceSheet */ SheetsCut') method returned 'SyntaxError' (2) with the following error message: **** A minor mistake was found in line 1: 6. I expected to see either a number or a variable, but found instead '/'. File: C:MplWin4OptiMaxPythonCutStock Line: (line=1, col=43) SUBJECT TO TotCost: TotalCost = PriceSheet */ SheetsCut; ^ Copyright © 2012 Maximal Software, Inc. All rights reserved 27
  • 28. Exceptions with Wrong Data Types Syntax Error: cutNames = ['w1', 'w2', 'w3', 'w4', 'w5', 'w6', 'w7', 'w8'] model.DataConstants.Add("SheetsAvail", cutNames) Exception Output: The argument 'dataValue' for the 'DataConstants.Add('SheetsAvail', dataValue, dataAttr)' method cannot be assigned the value '['w1', 'w2', 'w3', 'w4', 'w5', 'w6', 'w7', 'w8']' of type 'list'. Quick fix: Please enter either a numeric or string value. Copyright © 2012 Maximal Software, Inc. All rights reserved 28
  • 29. Applications with MPL OptiMax • Model written in MPL • Data transferred to/from MPL through • Excel Ranges • Database Connection • Text files • End-User Application Building • User-Interface done in VB/CSharp/C-API/C++/Java/Phyton • Process Input from User • Control Solver Runs • Process Output from Model • Display graphs • Model solved with any supported solver No limits on size, speed, or robustness Copyright © 2012 Maximal Software, Inc. All rights reserved 29
  • 30. MPL OptiMax on Optimization Servers Full support for multi-threaded applications • Optimization Servers • Web Services (REST / SOAP) • Web API’s • Mobile / Tablet Applications Support for server-side application frameworks • ASP.Net • Python • PHP (not implemented yet) Copyright © 2012 Maximal Software, Inc. All rights reserved 30
  • 31. Optimization on Mobile Devices Optimization on the mobile device (thick clients) • Model (device) • Solvers (device) • Data (device / server) Example: TSP Concord on iPad Optimization on the server (thin clients) • Model (server) • Solvers (server) • Data (device / server) Copyright © 2012 Maximal Software, Inc. All rights reserved 31
  • 32. MPL OptiMax on Optimization Servers Client-Side Technologies: • AJAX • XMLHttpRequest • XHTML and CSS • Document Object Model (DOM) • JavaScript • XML and XSLT • Mobile / Tablets • iPhone / iPad (Objective-C) • Android (Java) • HTML5 Copyright © 2012 Maximal Software, Inc. All rights reserved 32
  • 33. Cloud-based Optimization Example: Large energy company needs to run 2000 model instances, each taking 1-2 hours to solve, within a day • Traditional standalone computer approach • Maintain large number machines • Install optimization and modelling software • Run model instances over the network • Very expensive fixed costs upfront • Cloud-based computing approach • Setup account on Cloud, such as Amazon EC2 • Write script to run the models on cloud • Cost is typically calculated per core, per hour. Copyright © 2012 Maximal Software, Inc. All rights reserved 33
  • 34. Google Web API Toolkits • Google Drive (Google Apps) • Google Spreadsheets API • Full control of visibility and who can update • Built-in Javascript • Support SQL types of queries • Google Query API • Google Visualization API • Bar charts, Pie charts, Line charts and many more • Very customizable • Data Tables and Data Views • Google Maps API • Add markers, Polylines and Info Windows Copyright © 2012 Maximal Software, Inc. All rights reserved 34
  • 35. Google Visualization API – Portfolio Opt. Copyright © 2012 Maximal Software, Inc. All rights reserved 35
  • 36. Google Maps API - Shortest Path Optimization Copyright © 2012 Maximal Software, Inc. All rights reserved 36