optimization services: a framework for distributed
TRANSCRIPT
![Page 1: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/1.jpg)
Optimization Services: A FrameworkFor Distributed Optimization
Robert FourerNorthwestern University
Jun MaNorthwestern University
Kipp MartinUniversity of Chicago
November 4, 2007
1
![Page 2: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/2.jpg)
Outline
What is OS?
Downloading the Project
Building From Source Code
The OS Library
Using the API
Using the Solver Service
Examples
2
![Page 3: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/3.jpg)
Web Page
Project Wiki:
projects.coin-or.org/OS
see also
www.optimizationservices.org
3
![Page 4: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/4.jpg)
What Is OS?
I A set of XML-based standards for representing informationrelevant to the practice of optimization, most importantlyoptimization instances (OSiL), optimization results (OSrL),and optimization solver options (OSoL).
I Open source libraries that support and implement many of thestandards.
I A robust API for both solver algorithms and modelingsystems. Corresponding to an OSiL instance representationthere is an in-memory object, OSInstance, along with a setof get(), set(), and calculate() methods for accessingand creating problem instances. The API is for linear, integer,and general nonlinear programs.
4
![Page 5: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/5.jpg)
What Is OS?
I A command line executable OSSolverService for readingproblem instances (in OSiL format, AMPL nl format, or MPSformat) and calling a solver either locally or on a remoteserver.
I Utilities that convert MPS files and AMPL nl files into theOSiL XML-based format.
I Standards that facilitate the communication between clientsand optimization solvers using Web Services and libraries thatsupport these standards.
5
![Page 6: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/6.jpg)
What Is OS?
I An executable program amplClient that is designed to workwith the AMPL modeling language. The amplClient appearsas a “solver” to AMPL and, based on options given in AMPL,contacts solvers either remotely or locally to solve instancescreated in AMPL.
I Server software that works with Apache Tomcat and ApacheAxis. This software uses Web Services technology and acts asmiddleware between the client that creates the instance, andsolver on the server that optimizes the instance and returnsthe result.
6
![Page 7: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/7.jpg)
Downloading the OS Project
1. Binary format
2. Use subversion (SVN) for source code
3. Download the source code in a tarball or zip file
7
![Page 8: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/8.jpg)
Downloading the OS Project Binary
8
![Page 9: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/9.jpg)
Downloading the OS Project Binary
Binary Format Available for:
I Windows with Microsoft Visual Studio cl compiler
I GNU/Linux 32 bit gcc 3.4.6
I Mac OS X (Intel) gcc 4.0.1
9
![Page 10: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/10.jpg)
Downloading the OS Project Binary
Binary Format Also Available For Server Software:
OS-1.0.0-server-distribution.tgz
I os-server-1.0.0 (OS software + Apache Tomcat)
I os.war (OS software)
Contains an OSSolverService for Linux, Windows, and Mac.
More from Jun Ma in session SD29.
10
![Page 11: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/11.jpg)
Downloading the OS Project Source Code
You can checkout the source code using subversion.
Get a release version:
svn co https://projects.coin-or.org/svn/OS/releases/1.0.0 OS
Get a stable version:
svn co https://projects.coin-or.org/svn/OS/stable/1.0 OS
Get a trunk version:
svn co https://projects.coin-or.org/svn/OS/trunk OS
11
![Page 12: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/12.jpg)
Downloading the OS Project Source Code
You can checkout the source code as tarballs or zip files.
12
![Page 13: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/13.jpg)
OS Root
13
![Page 14: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/14.jpg)
OS Project Dependencies
I Buildtools
I CoinUtils
I Cbc
I Cgl
I Clp
I CppAD
I DyLP
I Ipopt
I Osi
I SYMPHONY
I Vol
14
![Page 15: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/15.jpg)
OS Project Root
15
![Page 16: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/16.jpg)
Building the OS Project
Build Flavors:
I Pure Unix
I Hybrid Microsoft-Unix
I Pure Microsoft
16
![Page 17: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/17.jpg)
Building the OS Project – Unix
Project is designed to work with autotools:
After downloading, do:
./configuremakemake testmake install
There is a fairly extensive unitTest.
Note: may wish to build without Ipopt if you don’t haveFORTRAN 95
./configure COIN_SKIP_PROJECTS=Ipopt
17
![Page 18: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/18.jpg)
Building the OS Project - Pure Windows
Use the Version 7 or Version 8 Microsoft Visual Studio Solutionand Project files that download with the project. There areproject files for:
I The OS lib
I The OSSolver Service
I The OS unitTest
Note: Project files do not include any Third Party software(nothing outside of COIN-OR)
18
![Page 19: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/19.jpg)
Building the OS Project - Windows-UnixHybrids
Hybrid in the following sense: we are using the Unix auto tools(which are not Windows native) to do an OS build.
I Cygwin/gcc
I Cygwin/cl
I MINGW/gcc
I MSYS/cl
OS builds on all of the above
19
![Page 20: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/20.jpg)
Platforms
Summary: OS has been built successfully on:
I Various flavors of GNU/Linux
I Windows using Microsoft Visual Studio
I Windows using MSYS and Microsoft cl
I Windows using MINGW and gcc
I Windows using Cygwin and gcc
I Windows using Cygwin and cl (an excellent platform for userswith too much free time)
I Mac OS X (both Intel and Power PC)
20
![Page 21: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/21.jpg)
OS Library Components
I OSAgent
I OSCommonInterfaces
I OSModelInterfaces
I OSParsers
I OSSolverInterfaces
I OSUtils
21
![Page 22: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/22.jpg)
Using the API
The OSCommon library provides in-memory representation of anoptimization instance, OSInstance. It is an API that has threetypes of methods:
I get() methods: a set of methods to get information aboutthe problem instance
I set() methods: a set of methods to create/modify a probleminstance
I calculate() methods: a set of methods for performingAlgorithmic Differentiation (based upon the COIN-OR CppAD– see talk in Session SD29 by Brad Bell).
22
![Page 23: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/23.jpg)
get() Methods
get() methods: a set of methods to get information about theproblem
For example, the CoinSolver class takes and OSInstance objectand creates an instance for an COIN Osi compatible solver.
osinstance->getVariableNumber()
osinstance->getConstraintUpperBounds()
osinstance->getLinearConstraintCoefficientsInColumnMajor()->values
You can also use get() methods to get the problem in postfix orprefix format.
23
![Page 24: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/24.jpg)
set() Methods
set() methods: a set of methods to get information about theproblem
See OS/examples/instanceGenerator for an example of creatinga problem instance using the set() methods
osinstance->setVariableNumber( 2);
osinstance->addVariable(1, "x1", 0, 1, ’B’, OSNAN, "");
24
![Page 25: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/25.jpg)
calculate() Methods
calculate() methods: a set of methods to calculate constraintand objective function
I values
I gradients
I Hessians
sparseJacobian = osinstance->getJacobianSparsityPattern();sinstance->calculateAllConstraintFunctionGradients();
osinstance->getLagrangianHessianSparsityPattern( );osinstance->calculateLagrangianHessian()
25
![Page 26: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/26.jpg)
Using the OSSolverService
The OS build includes the OSSolverService executable. Thisexecutable can be called locally, or on a remote server.
A local call:
26
![Page 27: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/27.jpg)
Using the OSSolverService
Here is the local call
OSSolverService -config../data/configFiles/testlocal.config
where testlocal.config is
-osil ../data/osilFiles/parincLinear.osil-solver ipopt-serviceMethod solve
Options at command line override options in the configure file.
27
![Page 28: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/28.jpg)
Using the OSSolverService
A remote call:
28
![Page 29: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/29.jpg)
Using the OSSolverService
Here is the local call
OSSolverService -config../data/configFiles/testremote.config
where testremote.config is
-serviceLocationhttp://gsbkip.chicagogsb.edu/os/OSSolverService.jws
-osil ../data/osilFiles/parincLinear.osil
29
![Page 30: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/30.jpg)
Using the OSSolverService
A remote call with data solver server and data server:
30
![Page 31: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/31.jpg)
Using the OSSolverService
To have the solver server call a data server for the model instancesend it some OSoL with the
<instanceLocation>
specified
<general><instanceLocation locationType="http">http://www.coin-or.org/OS/parincLinear.osil</instanceLocation></general><optimization>
<other name="os_solver">ipopt</other></optimization>
31
![Page 32: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/32.jpg)
Using the OSSolverService with OShL
32
![Page 33: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/33.jpg)
Solvers
OSSolverService has an interface for the following solvers:
I Clp (COIN-OR Osi Interface)
I Cbc (COIN-OR Osi Interface)
I Cplex (COIN-OR Osi Interface)
I Dylp (COIN-OR Osi Interface)
I Glpk (COIN-OR Osi Interface)
I Ipopt
I Knitro
I Lindo
I SYMPHONY (COIN-OR Osi Interface)
I Vol (COIN-OR Osi Interface)
33
![Page 34: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/34.jpg)
Examples
In the OS directory, there is an examples directory with:
I algorithmicDiff
I amplClient
I fileUpload
I instanceGenerator
34
![Page 35: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/35.jpg)
Examples – amplClient
To invoke a solver locally using AMPL and amplClient:
# take in problem 71 in Hock and Schittkowskimodel hs71.mod;# tell AMPL that the solver is amplClientoption solver amplClient;# now tell amplClient to use Ipoptoption amplClient_options "solver ipopt";# the name of the nl file (this is optional)write gtestfile;# now solve the problemsolve;
35
![Page 36: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/36.jpg)
Examples – amplClient
To invoke a solver remotely using AMPL and amplClient, after thecommand
option amplClient_options "solver ipopt";
Next, set the solver service option to the address of the remotesolver service.
option ipopt_options"service http://gsbkip.chicagogsb.edu/os/OSSolverService.jws";
36
![Page 37: Optimization Services: A Framework For Distributed](https://reader031.vdocument.in/reader031/viewer/2022013000/61c9f00be37f8f327b0a3a8e/html5/thumbnails/37.jpg)
Documentation
I OS User’s Manual in pdf format
I OS User’s Manual online
I Doxygen
I See also www.optimizationservices.org
37