SlideShare uma empresa Scribd logo
1 de 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

Mais conteúdo relacionado

Mais procurados

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
 

Mais procurados (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
 

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

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

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

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

Último

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
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
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 

Último (20)

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
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
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 

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