‹header›
‹date/time›
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
‹footer›
‹#›
Open-source is an approach to “publishing” software -- (1) peer-review (2) archived
Sandia, Maximal – contributed code;
Ziena, Frontline – use CLP in their products;
Schneider, GAMS– using COIN-code internally
47 out of 125 coin-discuss subscribers are from company email addresses (this excludes “.com” from yahoo, etc.)
International representation (US, Brazil, Canada, Germany, Italy, Switzerland, …)
Individuals now at Hotchkiss, SAS, US Air force, and Research and Development Division, Electricity de France have contributed to COIN-OR.  University to companies (Examples: Matthew Galatia and Yan Zu worked with COIN-OR at Lehigh U. Now at SAS. Andreas W: CMU to IBM.)
IPOPT is used in the custom micro-processor design
Stefano Gliozzi, Managing Consultant IBM Business Consulting Services.  stefano_gliozzi @ it.ibm.com (1) We are using it on a large Yield Management project for a Railway.  COIN/OSI/CLP Both in the prototyping phase and the production code. (2) We are doing a preliminary study (IBM Internal, yet not signed by the client ) for a Space Allocation / Static and Dynamic balancing of payloads for the European launcher of the ISS. This would be version 2 of an application developed using IBM OSL.. we are using COIN/OSI/CLP/CBC/CGL (3)  Finally as an IBM Asset , we developed a version of EasyModeler, a translator between an Algebraic Language and C, which produces code able to interface the COIN/OSI. Presently I tested it using COIN/OSI/CLP, COIN/OSI/CBC/CGL, COIN/OSI/OSL
Hosted by INFORMS in a “fee for service” arrangement - $1/year – to avoid legal liability.
Projects include (1) frameworks, (2) interfaces, (3) solvers, and (4) “other” utilities and functions.
Frameworks – ALPS, BCP, CBC,  SYMPHONY, OTS (orange)
Interfaces – OSI, NLPAIP, SMI (pink)
Solvers – CLP, DFO, DYLP, IPOPT, VOL (teal)
Others - CGL, Coin, CPPAD, Multifario (light blue)
- ALPS is a framework for implementing parallel graph search algorithms. It generalizes many of the notions present in BCP, allowing the implementation of a wider range of algorithms with a simplified interface. ALPS implements the search handling methods required for implementing large-scale, data-intensive parallel search algorithms, such as those used for solving discrete optimization problems. It is the base layer of a planned hierarchy that will include a library for solving mixed-integer linear programs.
-ALPS is still considered an experimental code, so use at your own risk! There are also two examples of the use of ALPS in the COIN/Examples subdirectory, a generic branch and cut code and a knapsack solver.
(More from Ted)
The goal of ALPS is to
(1) Achieve better parallel scalability by improving on the simple master-worker scheme of SYMPHONY and BCP.
(2) Provide a general C++ class library that supports the implementation of any algorithm based on tree search (not just branch and bound).
(3) Provide support for the generation, storage, and maintenance of huge amounts of data (called "knowledge" in ALPS).
The applications we have in mind are especially those that are "data-intensive," meaning that the description of a node in the search
tree can be very large and there is lots of information generated during the search that must be maintained in various "knowledge pools" (think branch and cut).
The ALPS base layer is meant to support building of the search tree in parallel and to provide a framework to define various specialized search algorithms with associated customized knowledge types (i.e., think cuts and columns in BCP). Additional layers built on top of ALPS define knowledge types and knowledge management policies for particular application. BiCePS is a layer built on top of ALPS that provides
functionality for data handling in any sort of relaxation-based branch and bound algorithm, i.e., it defines the notion of cuts and variables,
etc. BLIS is a layer on top of BiCePS that implements the usual LP-based scheme in BCP.
Check out those matching Linux t-shirts J
Users
Two examples…research and practice
(1)Brady Hunsaker, U of Pgh: Together with a collaborator in my department, I use BCP for an NSF-funded (DMII SEE) research project on determining the regional configuration of the U.S. organ transplantation system.  We are using a branch-and-price implementation based on BCP to solve our current model.
(2) IBM used BCP in a consulting engagement with the FCC, federal communications commission
<from JJHF>
“CBC is at version 0.9.? It is designed to be much more flexible than any commercial solver (e.g. David Wright is using Lot sizing).  When (and if I am allowed to work on it again) it gets to 1.0 it should be a free, good license, code which will outperform any other free code.  The aim is to be a reference  code so that people either compare their codes to Cplex or Cbc.” –JJHF
“I have no idea whom you can talk about.  IBM Japan were using for a steel problem.  Edwin Straver may use it for a free solver version. <edit>  Pierre Bonami at CMU is using it (I think for nonlinear mip).  Michael Bussieck of Gams is also looking at it for the free solver.  Fabrizio Ferrandi is obviously using it for something interesting.  David Wright in Australia seems to be building a product using it.” - JJHF
Users
Fabrizio Ferrandi, Dipartimento di Elettronica e Informazione, Politecnico di Milano. 2 uses. (1) We are currently using CBC in our research aiming at high-level synthesis of C
based specifications. This is an abstract of a paper we are working on:
--------------------------------------------------------------------------------------------------------------- Abstract: Recent research results have seen the application of parallelizing techniques to high-level synthesis. In particular, the effect of speculative code transformation on mixed control-data flow designs has demonstrated effective results on schedule  lengths. In this paper we first analyze the use of control and data dependence graph as  an intermediate representation that provides the possibility of extracting the maximum parallelism. Then we analyze the scheduling problem by formulating an approach based on Integer Linear Programming (ILP) to minimize the number of control steps given the amount of resources. We improve the already proposed ILP scheduling approaches by introducing a new conditional resource sharing constraint which is then extended to the case of speculative computation. To efficiently solve the ILP formulation we use a standard Branch and Cut framework. Experimental results show that this framework gives better results
with respect to well known techniques.
------------------------------------------------------------------------------------------------------------------------- (2) Moreover, we are thinking to port on the COIN-OR framework an old work on logic synthesis based on Lagrangean relaxation. This work has been published and this is the reference:  R. Cordone, F.Ferrandi, D. Sciuto, R. Wolfler Calvo, “An Efficient Heuristic Approach to Solve the Unate Covering Problem”  IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, vol. 20, n. 12, December 2001, pp. 1377 – 1388.  In case of interest this is the abstract: --------------------------------------------------------------------------------------------------------------- Abstract: The paper presents a new approach to solve the unate covering problem based on  exploitation of information provided by  agrangean relaxation. In particular,  main advantages of the proposed heuristic algorithm are the effective choice of elements to be included in the solution, cost-related reductions of the problem, and a good lower bound on the optimum. The results support the effectiveness of this approach: on a wide set of benchmark problems, the algorithm nearly always hits the optimum and in most cases proves it to be such. On the problems whose optimum is actually unknown, the best known result is strongly improved -------------------------------------------------------------------------------------------------------------------------
(3) David Wright (7/24/05)
Hi Robin
Yes, we are using CLP/CBC in our product. Our product is still pre-release and therefore we cannot discuss it in any detail at the moment unfortunately. We expect to make a public release in a matter of months.
We have found Clp/Cbc to be a fantastic toolset for LP and MIP problems. It is very robust and quite mature, though there are clearly significant and very desirable improvements planned for the future and under development.
We use a number of features of CBC which are not universally supported by other solvers and will over time use the tuning features of CBC to improve performance further. In particular we use generalised lot-sizing (more than just semi-continuous variables) and
SOS(n).
The API has been on the whole easy to work with given that we have used it as it has developed. John Forrest has been exemplary in responding to our questions and troubleshooting and we would particularly like to express our gratitude to him.
Our product is designed to be able to support a number of different LP/MIP codes as plug in modules. This is important to us so that we can compare and contrast different codes and pick the best for our needs. At the moment we choose Clp/Cbc as the best for these needs. We will be going through another evaluation cycle before final product release, so this may change of course.
I hope the above is of some use to you, in particular we would like to say that having such a high quality MIP code available for use by startup companies such as our venture is a wonderful enabling technology and I am sure many will follow this path in the future.
Regards
David
--
Dr David Wright
PanLogica Pty Ltd
PO Box 778
Sandy Bay 7006
Australia
Ph: 0412 009 703
mailto:David.Wright@panlogica.com
--------------------------------------------------------------------------------------------------------
(4) GAMS
Robin,
Here is some more information about our work with COIN here at GAMS. Hopefully it helps to prepare your talk for Monday.
About two years ago, GAMS started to build a small object layer to connect the COIN/OSI interface and our GAMS IO library so we could feed OSI with LP and MIP problems generated by GAMS. This small project turned out to be a highly successful. One the one hand we could offer our clients reliable access to open source mathematical programming solvers like Cbc and Glpk. On the other hand with the help of our clients and our rigorous testing facilities, we have been finding and fixing bugs in COIN that hopefully improved the overall quality of COIN.
We have about 100 downloads of the GAMS system a day. Each and everyone contains the COIN solvers. We unfortunately don't have the sales staff to know exactly what our client are doing, but we frequently hear about people working with the COIN solvers (sometime with a description of a bug). For example, in Germany we have a company (I am not allowed to reveal their name) using Cbc on a daily bases to solve medium sized periodic scheduling problems. Moreover, Josef Kallrath created a cutting stock application written in GAMS used in several paper mills that in its core solves several small to medium sized MIPs with Cbc.
We hope that we can intensify the work between GAMS and COIN, e.g. by contributing to a standard way of interfacing with non-linear programming solvers, an area where GAMS has acquired expertise for the last two decades.
Regards,
Michael Bussieck & Steven Dirkse
SYMPHONY Overview (from Ted)
SYMPHONY is a black box solver, callable library, and solver framework
for MILPs that evolved from the COMPSys framework of Ralphs and
Lad\'anyi \cite{ladanyi:96,ralphs:95}. The source code for packaged
releases, with full documentation and examples, is available for
download \cite{download.symphony:04} and is licensed under the Common
Public License (CPL). The latest source is also available from the CVS
repository of the COIN-OR Foundation \cite{coin:04}. SYMPHONY is fully
documented and seven different specialized solvers built with SYMPHONY
are available for download as examples of how to use the code. There is
a step by step example showing how to build a simple branch-and-cut
solver in SYMPHONY for the matching problem \cite{trick.guzelsoy:04},
which is summarized in Section \ref{sec:case-studies}. The core solution
methodology of SYMPHONY is a customizable branch and cut algorithm that
can be executed sequentially or in
parallel~\cite{ralphs.ladanyi.saltzman:03}. SYMPHONY calls on several
other open source libraries for specific functionality, including
COIN-OR's Cut Generation Library, Open Solver Interface, and MPS file
parser components, GLPK's GMPL file parser, and a third-party solver for
linear-programming problems (LPs), such as COIN-OR's LP Solver (CLP).
There are several unique features of SYMPHONY that are worthy of
mention. First, SYMPHONY contains a generic implementation of the WCN
algorithm described in \cite{ralphs.saltzman.wiecek:04} for solving
bicriteria MILPs, and methods for approximating the set of Pareto
outcomes.  The bicriteria solver can be used to examine tradeoffs
between competing objectives, and for solving parametric MILPS, a form
of global sensitivity analysis.  SYMPHONY also contains functions for
local sensitivity analysis based on ideas suggested by Schrage and
Wolsey~\cite{schrage.wolsey:85}.  Second, SYMPHONY has the capability to
warm start the branch-and-bound process from a previously calculated
branch-and-bound tree, even after modifying the problem data.
These capabilities are described in more detail in the paper of Ralphs
and Guzelsoy~\cite{ralphs.guzelsoy:04}. The \textbf{target audience} for
SYMPHONY is similar to that of MINTO---users who require the power of a
sophisticated solver framework, primarily for implementing custom branch
and cut algorithms, with a relatively simple C-style interface, or users
who require other advanced features such as parallelism, the ability to
solve multi-criteria instances, or the ability to warm start solution
procedures.
Symphony Users
Quite a few
 - Cincinnati Children's Hospital Research Foundation's Biomedical  Informatics division.  They have been using SYMPHONY for solving some bioinformatics problems.
 - I know SYMPHONY is being used by at least one airline,
 - a wireless services provider
 - a company that makes routing software,
 - a company that makes scheduling software for the mining industry,
 - and a major pharmaceutical company
Relationship between BCP and SYMPHONy from Ted’s FAQs: 
What is the relationship of SYMPHONY and COIN/BCP?
COIN/BCP is a C++ framework based roughly on an ancestor of SYMPHONY, so they take substantially the same approach and have similar functionality. COIN/BCP was developed at IBM and is currently part of the COIN-OR software repository. Currently, SYMPHONY is easier to use "out of the box" and is a better choice for beginners. It is also more efficient for performing pure branch and cut (without column generation). COIN/BCP has improved on SYMPHONY in some areas, however, such as support for branch and price. SYMPHONY's support for branch and price is limited. COIN/BCP is missing some features that SYMPHONY has, such as an implementation of global cut pools. SYMPHONY and COIN/BCP may be combined into a third-generation framework currently under development.
Here are some things that are unique, or at least beneficial, about OpenTS.
OTS helps you keep focused on your tabu search by providing a logical one-piece-at-a-time structure for defining your tabu lists, neighborhood, solution construct, and evaluation methodology.
- There are Java classes for each major element in a tabu search. By defining solution, tabu list, move, move manager, and objective function classes OTS helps improve development time by providing a robust engine for grinding through tabu search iterations.
- OTS enables you to make reactive, learning, and self-expanding tabu searches without resorting to "spaghetti code" and without losing the clean design of your tabu search.
- OTS can exploit multiprocessor systems by dividing the neighborhood search among multiple threads.
OTS can run embedded in an Enterprise JavaBeans framework to improve automated decision making.
One user who is willing to be mentioned:
> half a year ago I (Fabian Grüning) used OpenTS in my master thesis (computer science) at the university of Oldenburg, Germany.
> The starting point is a given metapopulation model, Meta-X (see http://www.offis.de/ig/publikationen/publikation.php?id=000668), that
> can be used to build a model from a species living in a scattered landscape and is used by biologists and ecologists. I used OpenTS to
> automatically provide allocations of costs to the model's parameters, which correspond to modifications of the environment in reality, that
> maximize the species' viabilty of a modelled landscape and therefore solve an optimization problem. The calculated allocations can be 
> used by experts for decision making in landscaping.
 There are 3 projects on COIN-OR to create standard interfaces.
Matt Saltzman: XPRESS-MP
Tobias Achterberg: CPLEX
Lou Hafer: dylp
Patrick Valente: FortMP
Brady Hunsaker: OSI-GLPK
Laci & Reka: OSL
Menal Guzelsoy: SYMPHONY
<Bo Jensen: Mosek (no picture, yet)>
Users
Brady Hunsaker, U of Pgh: Together with a collaborator at Georgia Tech, I use OSI for an NSF-funded (DMII OR) research project on using software to automate the search for valid inequalities of low Chvatal-Gomory rank.  We are creating an open-source tool that will be usable with any OSI solver.
(as Reka points out…”you too, could implement one of these!”)
2 interfaces – (1) IPOPT (2) Lancelot.
SMI generates the deterministic equivalent of a multiperiod stochastic program for any OSI compatible solver.  It implements the scenario and independent discrete distribution formats of the Stochastic MPS standard.
Users:
It is being used primarily by academics building models to research properties of stochastic programs.
 
A simplex code with dual and primal variants
 A pre-solve capacity in the Coin directory for use by other solvers as well
 An extensible matrix format which allows for specialized formats, e.g.,  an all ones matrix
 Virtual message handlers and event handlers for sophisticated users
 Dual and primal ranging
 An interior point solver
  Three solvers for optimizing a quadratic objective function over a linear constraint set:
 (i)  an interior point solver, (ii)  a simplex solver,  (iii) sequential LP solver
 Extensible matrix formats for more ambitious structures, e.g. a GUB matrix
DFO is a Fortran package for solving general nonlinear optimization problems that have the following characteristics:
they are relatively small scale (less than 100 variables),
their objective function is relatively expensive to compute and derivatives of such functions are not available and
cannot be estimated efficiently.
There also may be some noise in the function evaluation procedures. Such optimization problems arise ,for example, in engineering design, where the objective function evaluation is a simulation package treated as a black box.
1. The "differentiator" of DFO is the absence of "differentiator", hah! :)
Well, it is a code that targets general nonlinear optimization  problems with expensive function evaluations and without derivative computation. This is one of the few (so far) state of the art codes. It is very easy to use (since practically all the user needs is to write a routine that computes a function value). It is also
robust, that is it is often works well without tuning to a specific problem.
Another unique feature is that it handles various kinds of constraints, such as derivative free, or general nonlinear
constraints with derivatives.
2. There is a fair number of users, but what exactly they are doing we do not know, usually. There is a recent paper by Shafer, Karasozen, Uludag, Yapici, Ogur from Middle Eastern Technichal University in Ankara, Turkey on optimization of stirrers (for chemical, biotechnological, pharmaceutical and food processes). They use DFO as their optimization engine. The problems fall into the category that DFO targets. DFO is also used with DEFT - Derivative Free Tuner, a circuit tuning tool that was developed at IBM for tuning of small scale circuits which require high accuracy provided by PowerSpice simulator. This simulator does not compute or approximate derivatives. Deft is the first tool based on mathematical sound optimization tool (DFO) and it works much better than the predecessor. It is OK to talk about this publicly. Specifically DFO was used successfully for tuning clock distribution networks
on chips. The results are confidential, but the fact of use is not.
dylp is designed to be the lp module in an lp-based branch-cut-price mixed-integer linear programming code. Very efficient when reoptimising after small modifications to the problem. (The active system changes slowly and remains minimal.) The dynamic simplex algorithm is also well suited for column generation algorithms.
dylp is designed as a research code, and can provide copious trace output and extensive consistency checks. It's fast with an optimized build, and downright paranoid when all consistency checks are enabled.
A design goal was that it should never die before telling you exactly what went wrong, and where.
Native C implementation, C++ interface via COIN OSI layer.
Can be forced to use the full constraint system and behave like a normal simplex algorithm.
The dynamic simplex algorithm is laid out in Padberg, ``Linear Optimisation and Extensions'' (1991), and likely in lots of other places. The basic idea is to always work with a partial constraint system and dynamically adjust the active system so that it contains only those constraints and variables that are needed for the current extreme point and immediate surroundings. The core of the implementation is two alternating cycles: purge/add variables and reoptimize with primal simplex;  purge/add constraints and  reoptimise with dual simplex.
Differentiators
POOPT is the only interior-point-nlp-solver that’s both open-source and “good”.
Loco and Knitro are good ip-nlp solvers but proprietary.
IPOPT is the only one  that uses a “globally convergent” filter algorithm. (Distinguishes it from Loco). Pennon (Germany) is another interior point solver – they solve *more* general problems but at this point performance lower on IPOPT’s class of problem . 
Users from http://www.coin-or.org/Ipopt/  (see site for links to users)
Currently, IPOPT is/has been used in the following projects/products:
1. Other COIN-OR projects: NLPAPI and DFO
2.  Several research projects in Larry Biegler's group at CMU, including one with Ipopt as optimization engine in the process simulator ROMeoTM (slides)
3. In the IBM-internal circuit tuning tool EinsTuner 4. In ABB's Pulp and Paper Online Production Optimizer
5. Tobias Jockenhövel's OptControlCentre
6. By Ned Nedialkov in the context of solving Differential-Algebraic Equations
7. At the Munich University of Applied Sciences (for the course on "Modeling, Simulation and Optimization" by Dieter Kraft) 8. By Juan Arrieta, in the computation of optimal trajectories for spacecraft and related astronautics problems
- The Volume Algorithm has been very effective at producing approximate solutions to large
linear programs coming from large combinatorial problems.
- What is unique is that it is extremely easy to implement and use.
- A search in Google Scholar found 64 articles that cite the VA. This is relatively high for an article published in 2000.
- There are groups in Italy, Portugal, UK, US, Brazil that have used the VA.
- At IBM the VA was used for (1) set partition problems coming from airlines optimization and (2) later for
the Boston Coach project.
No graphics – but equation/examples:
>You can find some CppAD "graphics" under the Theory section of the manual. > http://www.seanet.com/~bradbell/CppAD/theory.xml
>For example:
> http://www.seanet.com/~bradbell/CppAD/theoryrevnotation.xml
>Or if you are looking for a complex set of equaitons:
> http://www.seanet.com/~bradbell/CppAD/reverseidentity.xml
Users
1. The main groups using multifario are Sandia, where they are looking at parameterized circuits (they have something called Xyce, which is like SPICE). They helped do the interface between LOCA and multifario, but it sits in the LOCA code, so I don't know if that counts. 2.The other group is John Maddocks at EPFL in Lausanne Switzerland who does DNA folding. A former postdoc of his, Sebastien Neukirch used multifario to study a uniform elastic rod, and John has plans to use EPFL's new BlueGene for more complicated models and we have plans to parallelize multifario for that.” - MH
Logo? That’s a beaver! Mascot of Oregon State University.
<trim>
Documentation
- Tends to be nonexistent, sparse and embedded in the code.
- Repository is for other people that like to code, not read about code...not newbies.
- Most other OS s/w early is of this nature. 
- Community sees values as code, not documentation.
- It’s as good as the community provides – improve it! Sample programs, sleazy tricks using CLP, etc.
Ease of Use
- not for novices. typically not even for window users.
- people like Frontline come along and make it easy.
Recognition
- OR/Math community doesn't yet have a way to evaluate and recognize contributions to os, as in the T&P process. In some communities (e.g., CS) they've been thinking about this.
Testing
- Testing is the writers responsibility.
- Provide mechanism they release, and testing modification by others. 
- Not a way we as a community think (or are trained).
Intellectual Property
- What are you giving away? There's a sense that something may have monetary value and you're reducing it. 
- Most people over estimate monetary value in this case.
- There's a heck of a lot of work to market.
- The original author can re-license.
- The money is in the consulting and application space, not in the solver software. 
Maintenance
- Order of magnitude work to maintain than to create. 
- Design for maintainable is different than a one-off for a research paper.