NEOS.jl (and other things)

Similar documents
Introduction to CPLEX. Some very convenient solvers for most students include those with Excel and Matlab.

Solving Scenarios in the Cloud

Using the ODH-CPLEX Python Interface. Alkis Vazacopoulos Robert Ashford Optimization Direct Inc. April 2018

Advanced Use of GAMS Solver Links

AMPL in the Cloud Using Online Services to Develop and Deploy Optimization Applications through Algebraic Modeling

Solving Difficult MIP Problems using GAMS and Condor

The MIP-Solving-Framework SCIP

Exact solutions to mixed-integer linear programming problems

Motivation for Heuristics

Tools for Modeling Optimization Problems A Short Course. Algebraic Modeling Systems. Dr. Ted Ralphs

The Gurobi Optimizer. Bob Bixby

Heuristics in Commercial MIP Solvers Part I (Heuristics in IBM CPLEX)

GAMS. How can I make this work... arrgghh? GAMS Development Corporation

Modeling with COIN-OR Tools

Gurobi Guidelines for Numerical Issues February 2017

An open-source stochastic programming solver. H.I. Gassmann, Dalhousie University J. Ma, JTechnologies R.K. Martin, The University of Chicago

Optimization Services (OS) Jun Ma. -- A Framework for Optimization Software -- A Computational Infrastructure -- The Next Generation NEOS

COMP9334: Capacity Planning of Computer Systems and Networks

A LARGE SCALE INTEGER AND COMBINATORIAL OPTIMIZER

LP SCIP NEOS URL. example1.lp 2.1 LP 1. minimize. subject to, bounds, free, general, binary, end. .lp 1 2.2

The Supporting Hyperplane Optimization Toolkit A Polyhedral Outer Approximation Based Convex MINLP Solver Utilizing a Single Branching Tree Approach

Fundamentals of Integer Programming

Recent enhancements in. GAMS Software GmbH GAMS Development Corporation

State-of-the-Optimization using Xpress-MP v2006

Package Rcplex. February 15, 2013

Solving a Challenging Quadratic 3D Assignment Problem

GAMS. Grid Computing

Solving Large-Scale Energy System Models

Package Rcplex. June 12, 2016

What s New in CPLEX Optimization Studio ?

Assessing Performance of Parallel MILP Solvers

c 2001 Society for Industrial and Applied Mathematics

Modelling. Christina Burt, Stephen J. Maher, Jakob Witzig. 29th September Zuse Institute Berlin Berlin, Germany

IBM ILOG CPLEX Optimization Studio CPLEX Parameters Reference. Version 12 Release 7 IBM

The Heuristic (Dark) Side of MIP Solvers. Asja Derviskadic, EPFL Vit Prochazka, NHH Christoph Schaefer, EPFL

Solving a Challenging Quadratic 3D Assignment Problem

SBB: A New Solver for Mixed Integer Nonlinear Programming

Welcome to the Webinar. What s New in Gurobi 7.5

An introduction to CPLEX And its C++ API

Topics. Introduction. Specific tuning/troubleshooting topics "It crashed" Gurobi parameters The tuning tool. LP tuning. MIP tuning

AMPL Integer Linear Programming And Sensitivity Analysis for LP. ORLAB Operations Research Laboratory. Borzou Rostami. Politecnico di Milano, Italy

Exploiting Degeneracy in MIP

Cloud Branching MIP workshop, Ohio State University, 23/Jul/2014

optlang Documentation

Notes on the IFPRI Spatial Production Allocation NLP Model

The Ascendance of the Dual Simplex Method: A Geometric View

SDDP.jl: a Julia package for Stochastic Dual Dynamic Programming

Benders in a nutshell Matteo Fischetti, University of Padova

Optimization Services Instance Language (OSiL) Part I. Jun Ma. Robert Fourer. Jun Ma. Northwestern University Kipp Martin University of Chicago

An extended supporting hyperplane algorithm for convex MINLP problems

Interactions between a Modeling System and Advanced Solvers. GAMS Development Corporation

LaGO - A solver for mixed integer nonlinear programming

The Gurobi Solver V1.0

Agenda. Understanding advanced modeling techniques takes some time and experience No exercises today Ask questions!

AIMMS Function Reference - GMPInstance Procedures and Functions

LP Graphic Solution & Solver for LP

Optimization Services (OS) Today: open Interface for Hooking Solvers to Modeling Systems

Introduction to Mathematical Programming IE406. Lecture 9. Dr. Ted Ralphs

Primal Heuristics in SCIP

How to use your favorite MIP Solver: modeling, solving, cannibalizing. Andrea Lodi University of Bologna, Italy

OPTIMIZAÇÃO E DECISÃO 09/10

Heuristics in MILP. Group 1 D. Assouline, N. Molyneaux, B. Morén. Supervisors: Michel Bierlaire, Andrea Lodi. Zinal 2017 Winter School

Optimization Services Instance Language (OSiL)

Applied Mixed Integer Programming: Beyond 'The Optimum'

Outline. Modeling. Outline DMP204 SCHEDULING, TIMETABLING AND ROUTING. 1. Models Lecture 5 Mixed Integer Programming Models and Exercises

Gurobi Implementation

cplexapi Quick Start

Modern Benders (in a nutshell)

Tutorial on CPLEX Linear Programming

Parallel and Distributed Optimization with Gurobi Optimizer

Parallel Branch & Bound

An Extension of the Multicut L-Shaped Method. INEN Large-Scale Stochastic Optimization Semester project. Svyatoslav Trukhanov

Using Multiple Machines to Solve Models Faster with Gurobi 6.0

ILOG CPLEX 10.0 File Formats

File formats supported by CPLEX

Linear & Integer Programming: A Decade of Computation

Unit.9 Integer Programming

On the safety of Gomory cut generators

Addressing degeneracy in the dual simplex algorithm using a decompositon approach

GMO: GAMS Next-Generation Model API. GAMS Development Corporation

RENS. The optimal rounding. Timo Berthold

Linking GAMS to Solvers Using COIN-OSI. Michael Bussieck Steve Dirkse GAMS Development Corporation

IBM COGNOS TM1 IBM DO INTEGRATION

3 INTEGER LINEAR PROGRAMMING

George Reloaded. M. Monaci (University of Padova, Italy) joint work with M. Fischetti. MIP Workshop, July 2010

Rounding and Propagation Heuristics for Mixed Integer Programming

Optimization Methods in Management Science

NOTATION AND TERMINOLOGY

Basic Concepts of Constraint Integer Programming

Solving lexicographic multiobjective MIPs with Branch-Cut-Price

Mixed Integer Programming Class Library (MIPCL)

Optimization: beyond the normal

Simulation. Lecture O1 Optimization: Linear Programming. Saeed Bastani April 2016

Conflict Analysis in Mixed Integer Programming

Branch-and-cut implementation of Benders decomposition Matteo Fischetti, University of Padova

LPFML: A W3C XML Schema for Linear and Integer Programming. Robert Fourer Northwestern University

Algorithms II MIP Details

Using ODHeuristics To Solve Hard Mixed Integer Programming Problems. Alkis Vazacopoulos Robert Ashford Optimization Direct Inc.

Utilize Metadata to Custom Report with APIs and Python

KERNEL C.I. USING LINARO S AUTOMATED VALIDATION ARCHITECTURE. Wednesday, September 11, 13

Transcription:

NEOS.jl (and other things) Oscar Dowson Department of Engineering Science, University of Auckland, New Zealand. o.dowson@auckland.ac.nz

Overview 1. The NEOS Server 2. NEOS.jl interface with MPB 3. File Formats

The NEOS Server

The NEOS Server Free internet-based service for solving numerical optimization problems. University of Wisconsin, Madison They provide and XML-RPC API!

Lots of Solvers

Statistics

Statistics 64,618 Jobs/month

We can talk to the API julia> using NEOS julia> s = NEOSServer(); julia> NEOS.ping(s) "NeosServer is alive\n"

We can talk to the API julia> NEOS.printQueue(s) Running: Job # Cat Solver Input Submitted Started Elapsed Host ------------------------------------------------------------------------------------------------ 6139717 go BARON GAMS 06/26 16:39 06/26 16:39 6:37:15 prod-sub-1.neos-server.org 6139718 minco Couenne AMPL 06/26 16:42 06/26 16:42 6:34:39 prod-sub-1.neos-server.org... 6139769 minco Couenne AMPL 06/26 17:30 06/26 17:30 5:46:34 prod-sub-1.neos-server.org 6139991 go scip MPS 06/26 21:05 06/26 21:05 2:11:12 athene.la.asu.edu 6140015 minco scip MPS 06/26 21:05 06/26 21:06 2:10:45 thales.la.asu.edu 6140048 minco BARON GAMS 06/26 23:09 06/26 23:12 0:03:52 prod-sub-1.neos-server.org

MathProgBase

The MPB Interface JuMP MPB MPS File XML JuMP MPB Parse printed output NEOS solve

An Example using JuMP, NEOS solver = NEOSSolver( solver = :CPLEX, format = :MPS, print_level = 2 ) m = Model(solver=solver) @variable(m, x>=1.5, Int) @objective(m, Min, x) solve(m)

An Example ================== NEOS Job submitted number: 6140637 pwd: wdtecumz ================== Job 6140637 dispatched password: wdtecumz ---------- Begin Solver Output ----------- Condor submit: 'neos.submit' Condor submit: 'watchdog.submit' Job submitted to NEOS HTCondor pool. Executing on prod-exec-5.neos-server.org Welcome to IBM(R) ILOG(R) CPLEX(R) Interactive Optimizer 12.7.0.0 with Simplex, Mixed Integer & Barrier Optimizers 5725-A06 5725-A29 5724-Y48 5724-Y49 5724-Y54 5724-Y55 5655-Y21 Copyright IBM Corp. 1988, 2016. All Rights Reserved. Type 'help' for a list of available commands. Type 'help' followed by a command name for more information on commands. CPLEX> New value for default parallel thread count: 4 CPLEX> Selected objective sense: MINIMIZE Selected objective name: OBJ Selected bound name: BOUNDS Warning: Non-integral bound value 1.2 for integer column 'V1'. Warning: Blank RHS name changed to 'rhs'. Problem 'cplex.mps' read. Read time = 0.00 sec. (0.00 ticks) CPLEX> Warning: Non-integral bounds for integer variables rounded. Tried aggregator 1 time. MIP Presolve eliminated 0 rows and 1 columns. All rows and columns eliminated. Presolve time = 0.00 sec. (0.00 ticks) Root node processing (before b&c): Real time = 0.00 sec. (0.00 ticks) Parallel b&c, 4 threads: Real time = 0.00 sec. (0.00 ticks) Sync time (average) = 0.00 sec. Wait time (average) = 0.00 sec. ------------ Total (root+branch&cut) = Solution pool: 1 solution saved. 0.00 sec. (0.00 ticks) MIP - Integer optimal solution: Objective = 2.0000000000e+00 Solution time = 0.00 sec. Iterations = 0 Nodes = 0 Deterministic time = 0.00 ticks (2.11 ticks/sec) CPLEX> MIP - Integer optimal solution: Objective = 2.0000000000e+00 CPLEX> Incumbent solution Variable Name Solution Value V1 2.000000 CPLEX> Not available for mixed integer problems. Use CHANGE PROBLEM to change problem type. CPLEX> Not available for mixed integer problems. Use CHANGE PROBLEM to change problem type. CPLEX>

An Example ================== NEOS Job submitted number: 6140637 pwd: wdtecumz ================== Job 6140637 dispatched password: wdtecumz ---------- Begin Solver Output ----------- Condor submit: 'neos.submit' Condor submit: 'watchdog.submit' Job submitted to NEOS HTCondor pool. Executing on prod-exec-5.neos-server.org Welcome to IBM(R) ILOG(R) CPLEX(R) Interactive Optimizer 12.7.0.0 with Simplex, Mixed Integer & Barrier Optimizers 5725-A06 5725-A29 5724-Y48 5724-Y49 5724-Y54 5724-Y55 5655-Y21 Copyright IBM Corp. 1988, 2016. All Rights Reserved. Type 'help' for a list of available commands. Type 'help' followed by a command name for more information on commands. CPLEX> New value for default parallel thread count: 4 CPLEX> Selected objective sense: MINIMIZE Selected objective name: OBJ Selected bound name: BOUNDS Warning: Non-integral bound value 1.2 for integer column 'V1'. Warning: Blank RHS name changed to 'rhs'. Problem 'cplex.mps' read. Read time = 0.00 sec. (0.00 ticks) CPLEX> Warning: Non-integral bounds for integer variables rounded. Tried aggregator 1 time. MIP Presolve eliminated 0 rows and 1 columns. All rows and columns eliminated. Presolve time = 0.00 sec. (0.00 ticks) Root node processing (before b&c): Real time = 0.00 sec. (0.00 ticks) Parallel b&c, 4 threads: Real time = 0.00 sec. (0.00 ticks) Sync time (average) = 0.00 sec. Wait time (average) = 0.00 sec. ------------ Total (root+branch&cut) = Solution pool: 1 solution saved. 0.00 sec. (0.00 ticks) MIP - Integer optimal solution: Objective = 2.0000000000e+00 Solution time = 0.00 sec. Iterations = 0 Nodes = 0 Deterministic time = 0.00 ticks (2.11 ticks/sec) CPLEX> MIP - Integer optimal solution: Objective = 2.0000000000e+00 CPLEX> Incumbent solution Variable Name Solution Value V1 2.000000 CPLEX> Not available for mixed integer problems. Use CHANGE PROBLEM to change problem type. CPLEX> Not available for mixed integer problems. Use CHANGE PROBLEM to change problem type. CPLEX>

An Example ================== NEOS Job submitted number: 6140637 pwd: wdtecumz ================== Job 6140637 dispatched password: wdtecumz ---------- Begin Solver Output ----------- Condor submit: 'neos.submit' Condor submit: 'watchdog.submit' Job submitted to NEOS HTCondor pool. Executing on prod-exec-5.neos-server.org Welcome to IBM(R) ILOG(R) CPLEX(R) Interactive Optimizer 12.7.0.0 with Simplex, Mixed Integer & Barrier Optimizers 5725-A06 5725-A29 5724-Y48 5724-Y49 5724-Y54 5724-Y55 5655-Y21 Copyright IBM Corp. 1988, 2016. All Rights Reserved. Type 'help' for a list of available commands. Type 'help' followed by a command name for more information on commands. CPLEX> New value for default parallel thread count: 4 CPLEX> Selected objective sense: MINIMIZE Selected objective name: OBJ Selected bound name: BOUNDS Warning: Non-integral bound value 1.2 for integer column 'V1'. Warning: Blank RHS name changed to 'rhs'. Problem 'cplex.mps' read. Read time = 0.00 sec. (0.00 ticks) CPLEX> Warning: Non-integral bounds for integer variables rounded. Tried aggregator 1 time. MIP Presolve eliminated 0 rows and 1 columns. All rows and columns eliminated. Presolve time = 0.00 sec. (0.00 ticks) Root node processing (before b&c): Real time = 0.00 sec. (0.00 ticks) Parallel b&c, 4 threads: Real time = 0.00 sec. (0.00 ticks) Sync time (average) = 0.00 sec. Wait time (average) = 0.00 sec. ------------ Total (root+branch&cut) = Solution pool: 1 solution saved. 0.00 sec. (0.00 ticks) MIP - Integer optimal solution: Objective = 2.0000000000e+00 Solution time = 0.00 sec. Iterations = 0 Nodes = 0 Deterministic time = 0.00 ticks (2.11 ticks/sec) CPLEX> MIP - Integer optimal solution: Objective = 2.0000000000e+00 CPLEX> Incumbent solution Variable Name Solution Value V1 2.000000 CPLEX> Not available for mixed integer problems. Use CHANGE PROBLEM to change problem type. CPLEX> Not available for mixed integer problems. Use CHANGE PROBLEM to change problem type. CPLEX>

An Example ================== NEOS Job submitted number: 6140637 pwd: wdtecumz ================== Job 6140637 dispatched password: wdtecumz ---------- Begin Solver Output ----------- Condor submit: 'neos.submit' Condor submit: 'watchdog.submit' Job submitted to NEOS HTCondor pool. Executing on prod-exec-5.neos-server.org Welcome to IBM(R) ILOG(R) CPLEX(R) Interactive Optimizer 12.7.0.0 with Simplex, Mixed Integer & Barrier Optimizers 5725-A06 5725-A29 5724-Y48 5724-Y49 5724-Y54 5724-Y55 5655-Y21 Copyright IBM Corp. 1988, 2016. All Rights Reserved. Type 'help' for a list of available commands. Type 'help' followed by a command name for more information on commands. CPLEX> New value for default parallel thread count: 4 CPLEX> Selected objective sense: MINIMIZE Selected objective name: OBJ Selected bound name: BOUNDS Warning: Non-integral bound value 1.2 for integer column 'V1'. Warning: Blank RHS name changed to 'rhs'. Problem 'cplex.mps' read. Read time = 0.00 sec. (0.00 ticks) CPLEX> Warning: Non-integral bounds for integer variables rounded. Tried aggregator 1 time. MIP Presolve eliminated 0 rows and 1 columns. All rows and columns eliminated. Presolve time = 0.00 sec. (0.00 ticks) Root node processing (before b&c): Real time = 0.00 sec. (0.00 ticks) Parallel b&c, 4 threads: Real time = 0.00 sec. (0.00 ticks) Sync time (average) = 0.00 sec. Wait time (average) = 0.00 sec. ------------ Total (root+branch&cut) = Solution pool: 1 solution saved. 0.00 sec. (0.00 ticks) MIP - Integer optimal solution: Objective = 2.0000000000e+00 Solution time = 0.00 sec. Iterations = 0 Nodes = 0 Deterministic time = 0.00 ticks (2.11 ticks/sec) CPLEX> MIP - Integer optimal solution: Objective = 2.0000000000e+00 CPLEX> Incumbent solution Variable Name Solution Value V1 2.000000 CPLEX> Not available for mixed integer problems. Use CHANGE PROBLEM to change problem type. CPLEX> Not available for mixed integer problems. Use CHANGE PROBLEM to change problem type. CPLEX>

The MPB Interface JuMP MPB MPS File XML JuMP MPB Parse printed output NEOS solve

The MPB Interface JuMP MPB MPS File XML JuMP MPB Parse printed output NEOS solve

The MPB Interface JuMP MPB MPS File XML JuMP MPB Parse printed output NEOS solve

The MPB Interface JuMP MPB MPS File XML JuMP MPB Parse printed output NEOS solve

The MPB Interface JuMP MPB NL File XML JuMP MPB Parse SOL File NEOS solve

File Formats

Goals for a Format 1. Human-readable 2. Machine-readable 3. Standardized 4. Extensible

1. Human-readable The format should be able to be read and edited by a human.

2. Machine-readable The format should be able to be read by a variety of different programming languages without needing to write custom parsers in each language.

3. Standardized The format should conform to a well described ''standard-form'' that is unambiguous.

4. Extensible The format should be able to be easily extended to incorporate new problem-classes as they arise.

Current Formats Human- Readable Machine- Readable Standardized Extensible MPS LP NL OSiL

Proposal: MathOptFormat

Proposal: MathOptFormat A one-to-one mapping to MOI in JSON Or OSiL, just not in XML

Proposal: MathOptFormat { "author": "Oscar Dowson", "description": "A simple example", "version": 1, "sense": "min", "variables": [{"name": "x", {"name": "y"], "objective": {... "constraints": [... ]

Proposal: MathOptFormat { "author": "Oscar Dowson", "description": "A simple example", "version": 1, "sense": "min", "variables": [{"name": "x", {"name": "y"], "objective": {... "constraints": [... ]

Proposal: MathOptFormat { "author": "Oscar Dowson", "description": "A simple example", "version": 1, "sense": "min", "variables": [{"name": "x", {"name": "y"], "objective": {... "constraints": [... ]

Proposal: MathOptFormat { "author": "Oscar Dowson", "description": "A simple example", "version": 1, "sense": "min", "variables": [{"name": "x", {"name": "y"], "objective": {... "constraints": [... ]

Proposal: MathOptFormat { "author": "Oscar Dowson", "description": "A simple example", "version": 1, "sense": "min", "variables": [{"name": "x", {"name": "y"], "objective": {... "constraints": [... ]

Proposal: MathOptFormat { "author": "Oscar Dowson", "description": "A simple example", "version": 1, "sense": "min", "variables": [{"name": "x", {"name": "y"], "objective": {... "constraints": [... ]

Proposal: MathOptFormat "objective": { "head": "ScalarAffineFunction", "terms": [ { "head": "ScalarAffineTerm", "variable": "x", "coefficient": 2, { "head": "ScalarAffineTerm", "variable": "y", "coefficient": 1 ] "constant": 0

Proposal: MathOptFormat "objective": { "head": "ScalarAffineFunction", "terms": [ { "head": "ScalarAffineTerm", "variable": "x", "coefficient": 2, { "head": "ScalarAffineTerm", "variable": "y", "coefficient": 1 ] "constant": 0

Proposal: MathOptFormat "objective": { "head": "ScalarAffineFunction", "terms": [ { "head": "ScalarAffineTerm", "variable": "x", "coefficient": 2, { "head": "ScalarAffineTerm", "variable": "y", "coefficient": 1 ] "constant": 0

Proposal: MathOptFormat "objective": { "head": "ScalarAffineFunction", "terms": [ { "head": "ScalarAffineTerm", "variable": "x", "coefficient": 2, { "head": "ScalarAffineTerm", "variable": "y", "coefficient": 1 ] "constant": 0

Proposal: MathOptFormat "constraints": [ { "name": "x {0,1", "set": {"head": "ZeroOne", "function": { "head": "SingleVariable", "variable": "x" ]

Proposal: MathOptFormat "constraints": [ { "name": "x {0,1", "set": {"head": "ZeroOne", "function": { "head": "SingleVariable", "variable": "x" ]

Proposal: MathOptFormat "constraints": [ { "name": "x {0,1", "set": {"head": "ZeroOne", "function": { "head": "SingleVariable", "variable": "x" ]

Proposal: MathOptFormat "constraints": [ { "name": "x {0,1", "set": {"head": "ZeroOne", "function": { "head": "SingleVariable", "variable": "x" ]

Things to work on NEOS.jl - update to MOI - link to more NL solvers - https://github.com/odow/neos.jl AmlNLWriter.jl - pull out NL writing from the solver - https://github.com/juliaopt/amplnlwriter.jl MathOptFormat.jl - everything. - https://github.com/odow/mathoptformat.jl

Things to work on NEOS.jl - update to MOI - link to more NL solvers - https://github.com/odow/neos.jl AmlNLWriter.jl - pull out NL writing from the solver - https://github.com/juliaopt/amplnlwriter.jl MathOptFormat.jl - everything. - https://github.com/odow/mathoptformat.jl

Things to work on NEOS.jl - update to MOI - link to more NL solvers - https://github.com/odow/neos.jl AmlNLWriter.jl - pull out NL writing from the solver - https://github.com/juliaopt/amplnlwriter.jl MathOptFormat.jl - everything. - https://github.com/odow/mathoptformat.jl

Things to work on NEOS.jl - update to MOI - link to more NL solvers - https://github.com/odow/neos.jl AmlNLWriter.jl - pull out NL writing from the solver - https://github.com/juliaopt/amplnlwriter.jl MathOptFormat.jl - everything. - https://github.com/odow/mathoptformat.jl