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

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 

Último (20)

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 

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