SlideShare ist ein Scribd-Unternehmen logo
1 von 35
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

• Server-based and Cloud-based Optimization
• Web API’s and Web Services for Optimization




              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
      •   Harvard 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 1 Billion 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
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
                                                                  12
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
                                                                   13
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
                                                                            14
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/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
                                                                                 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




             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


             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
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
                                                                                    20
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
                                                                                 21
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
                                                                                 22
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
                                                                                 23
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
                                                                                    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.ReadFilePart("Cutstock.mpl", 19);

    except Exception as ex:
        print(str(ex))
    result = model.LastResult
    return result



                 Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                               25
CutStock Example – Add() Statements

def LoadModel(self, model, cutNames, patternNames, priceSheet, sheetsAvail,
              cutDemand, cutsInPattern):
   try:
        . . . # previous model index and data Add() statements

        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
                                                                                 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
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




                 Copyright © 2012 Maximal Software, Inc. All rights reserved
                                                                               29
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
                                                                               30
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
                                                                             31
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
                                                                             32
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
                                                                          33
Google Visualization API – Portfolio Opt.




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




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

Weitere ähnliche Inhalte

Was ist angesagt?

The First Mile - Edge and IoT Data Collection With Apache Nifi and MiniFi
The First Mile - Edge and IoT Data Collection With Apache Nifi and MiniFiThe First Mile - Edge and IoT Data Collection With Apache Nifi and MiniFi
The First Mile - Edge and IoT Data Collection With Apache Nifi and MiniFiDataWorks Summit
 
SparkR best practices for R data scientist
SparkR best practices for R data scientistSparkR best practices for R data scientist
SparkR best practices for R data scientistDataWorks Summit
 
Meet HBase 2.0 and Phoenix-5.0
Meet HBase 2.0 and Phoenix-5.0Meet HBase 2.0 and Phoenix-5.0
Meet HBase 2.0 and Phoenix-5.0DataWorks Summit
 
Apache Spark 2.3 boosts advanced analytics and deep learning with Python
Apache Spark 2.3 boosts advanced analytics and deep learning with PythonApache Spark 2.3 boosts advanced analytics and deep learning with Python
Apache Spark 2.3 boosts advanced analytics and deep learning with PythonDataWorks Summit
 
Best practices and lessons learnt from Running Apache NiFi at Renault
Best practices and lessons learnt from Running Apache NiFi at RenaultBest practices and lessons learnt from Running Apache NiFi at Renault
Best practices and lessons learnt from Running Apache NiFi at RenaultDataWorks Summit
 
Dataflow Management From Edge to Core with Apache NiFi
Dataflow Management From Edge to Core with Apache NiFiDataflow Management From Edge to Core with Apache NiFi
Dataflow Management From Edge to Core with Apache NiFiDataWorks Summit
 
SparkR Best Practices for R Data Scientists
SparkR Best Practices for R Data ScientistsSparkR Best Practices for R Data Scientists
SparkR Best Practices for R Data ScientistsDataWorks Summit
 
Introduction to HDF 3.0
Introduction to HDF 3.0Introduction to HDF 3.0
Introduction to HDF 3.0Timothy Spann
 

Was ist angesagt? (10)

The First Mile - Edge and IoT Data Collection With Apache Nifi and MiniFi
The First Mile - Edge and IoT Data Collection With Apache Nifi and MiniFiThe First Mile - Edge and IoT Data Collection With Apache Nifi and MiniFi
The First Mile - Edge and IoT Data Collection With Apache Nifi and MiniFi
 
SparkR best practices for R data scientist
SparkR best practices for R data scientistSparkR best practices for R data scientist
SparkR best practices for R data scientist
 
Apache Nifi Crash Course
Apache Nifi Crash CourseApache Nifi Crash Course
Apache Nifi Crash Course
 
Meet HBase 2.0 and Phoenix-5.0
Meet HBase 2.0 and Phoenix-5.0Meet HBase 2.0 and Phoenix-5.0
Meet HBase 2.0 and Phoenix-5.0
 
Apache Spark 2.3 boosts advanced analytics and deep learning with Python
Apache Spark 2.3 boosts advanced analytics and deep learning with PythonApache Spark 2.3 boosts advanced analytics and deep learning with Python
Apache Spark 2.3 boosts advanced analytics and deep learning with Python
 
Best practices and lessons learnt from Running Apache NiFi at Renault
Best practices and lessons learnt from Running Apache NiFi at RenaultBest practices and lessons learnt from Running Apache NiFi at Renault
Best practices and lessons learnt from Running Apache NiFi at Renault
 
Dataflow Management From Edge to Core with Apache NiFi
Dataflow Management From Edge to Core with Apache NiFiDataflow Management From Edge to Core with Apache NiFi
Dataflow Management From Edge to Core with Apache NiFi
 
The Avant-garde of Apache NiFi
The Avant-garde of Apache NiFiThe Avant-garde of Apache NiFi
The Avant-garde of Apache NiFi
 
SparkR Best Practices for R Data Scientists
SparkR Best Practices for R Data ScientistsSparkR Best Practices for R Data Scientists
SparkR Best Practices for R Data Scientists
 
Introduction to HDF 3.0
Introduction to HDF 3.0Introduction to HDF 3.0
Introduction to HDF 3.0
 

Ähnlich wie Maximal: MPL Software Demo - INFORMS Phoenix Oct 2012

Maximal: Deploying Optimization Models on Servers and Mobile Platforms - Oct ...
Maximal: Deploying Optimization Models on Servers and Mobile Platforms - Oct ...Maximal: Deploying Optimization Models on Servers and Mobile Platforms - Oct ...
Maximal: Deploying Optimization Models on Servers and Mobile Platforms - Oct ...Bjarni 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
 
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
 
Proud to be polyglot
Proud to be polyglotProud to be polyglot
Proud to be polyglotTugdual Grall
 
IBM Developer Model Asset eXchange
IBM Developer Model Asset eXchangeIBM Developer Model Asset eXchange
IBM Developer Model Asset eXchangeNick Pentreath
 
Meetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech PeopleMeetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech PeopleIT Arena
 
New Approaches to Migrating from Oracle to Enterprise-Ready Postgres in the C...
New Approaches to Migrating from Oracle to Enterprise-Ready Postgres in the C...New Approaches to Migrating from Oracle to Enterprise-Ready Postgres in the C...
New Approaches to Migrating from Oracle to Enterprise-Ready Postgres in the C...EDB
 
PostgreSQL to Accelerate Innovation
PostgreSQL to Accelerate InnovationPostgreSQL to Accelerate Innovation
PostgreSQL to Accelerate InnovationEDB
 
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
 
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
 
Open, Secure & Transparent AI Pipelines
Open, Secure & Transparent AI PipelinesOpen, Secure & Transparent AI Pipelines
Open, Secure & Transparent AI PipelinesNick Pentreath
 
Ibm leads way with hadoop and spark 2015 may 15
Ibm leads way with hadoop and spark 2015 may 15Ibm leads way with hadoop and spark 2015 may 15
Ibm leads way with hadoop and spark 2015 may 15IBMInfoSphereUGFR
 
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
 
2016 August POWER Up Your Insights - IBM System Summit Mumbai
2016 August POWER Up Your Insights - IBM System Summit Mumbai2016 August POWER Up Your Insights - IBM System Summit Mumbai
2016 August POWER Up Your Insights - IBM System Summit MumbaiAnand Haridass
 
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
 
Open source presentation to Cork County Council
Open source presentation to Cork County CouncilOpen source presentation to Cork County Council
Open source presentation to Cork County CouncilTim Willoughby
 
EDB's Migration Portal - Migrate from Oracle to Postgres
EDB's Migration Portal - Migrate from Oracle to PostgresEDB's Migration Portal - Migrate from Oracle to Postgres
EDB's Migration Portal - Migrate from Oracle to PostgresEDB
 

Ähnlich wie Maximal: MPL Software Demo - INFORMS Phoenix Oct 2012 (20)

Maximal: Deploying Optimization Models on Servers and Mobile Platforms - Oct ...
Maximal: Deploying Optimization Models on Servers and Mobile Platforms - Oct ...Maximal: Deploying Optimization Models on Servers and Mobile Platforms - Oct ...
Maximal: Deploying Optimization Models on Servers and Mobile Platforms - Oct ...
 
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
 
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
 
Proud to be polyglot
Proud to be polyglotProud to be polyglot
Proud to be polyglot
 
IBM Developer Model Asset eXchange
IBM Developer Model Asset eXchangeIBM Developer Model Asset eXchange
IBM Developer Model Asset eXchange
 
Meetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech PeopleMeetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech People
 
New Approaches to Migrating from Oracle to Enterprise-Ready Postgres in the C...
New Approaches to Migrating from Oracle to Enterprise-Ready Postgres in the C...New Approaches to Migrating from Oracle to Enterprise-Ready Postgres in the C...
New Approaches to Migrating from Oracle to Enterprise-Ready Postgres in the C...
 
PostgreSQL to Accelerate Innovation
PostgreSQL to Accelerate InnovationPostgreSQL to Accelerate Innovation
PostgreSQL to Accelerate Innovation
 
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
 
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
 
Open, Secure & Transparent AI Pipelines
Open, Secure & Transparent AI PipelinesOpen, Secure & Transparent AI Pipelines
Open, Secure & Transparent AI Pipelines
 
Ibm leads way with hadoop and spark 2015 may 15
Ibm leads way with hadoop and spark 2015 may 15Ibm leads way with hadoop and spark 2015 may 15
Ibm leads way with hadoop and spark 2015 may 15
 
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
 
Eclipse Way
Eclipse WayEclipse Way
Eclipse Way
 
2016 August POWER Up Your Insights - IBM System Summit Mumbai
2016 August POWER Up Your Insights - IBM System Summit Mumbai2016 August POWER Up Your Insights - IBM System Summit Mumbai
2016 August POWER Up Your Insights - IBM System Summit Mumbai
 
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
 
Open source presentation to Cork County Council
Open source presentation to Cork County CouncilOpen source presentation to Cork County Council
Open source presentation to Cork County Council
 
EDB's Migration Portal - Migrate from Oracle to Postgres
EDB's Migration Portal - Migrate from Oracle to PostgresEDB's Migration Portal - Migrate from Oracle to Postgres
EDB's Migration Portal - Migrate from Oracle to Postgres
 

Mehr von Bjarni 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 (8)

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

A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 

Kürzlich hochgeladen (20)

A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 

Maximal: MPL Software Demo - INFORMS Phoenix 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 • Server-based and Cloud-based Optimization • Web API’s and Web Services for Optimization 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 • Harvard 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 1 Billion 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. 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 12
  • 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 13
  • 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 14
  • 15. 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/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 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 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 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. 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 20
  • 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 21
  • 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 22
  • 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 23
  • 24. 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 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.ReadFilePart("Cutstock.mpl", 19); except Exception as ex: print(str(ex)) result = model.LastResult return result Copyright © 2012 Maximal Software, Inc. All rights reserved 25
  • 26. CutStock Example – Add() Statements def LoadModel(self, model, cutNames, patternNames, priceSheet, sheetsAvail, cutDemand, cutsInPattern): try: . . . # previous model index and data Add() statements 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 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. 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 Copyright © 2012 Maximal Software, Inc. All rights reserved 29
  • 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 30
  • 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 31
  • 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 32
  • 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 33
  • 34. Google Visualization API – Portfolio Opt. Copyright © 2012 Maximal Software, Inc. All rights reserved 34
  • 35. Google Maps API - Shortest Path Optimization Copyright © 2012 Maximal Software, Inc. All rights reserved 35