OboeChecklist - coin-or-foundation/tlc GitHub Wiki

Oboe Project Review Checklist

General

  • Project Description: I (Jean-Philippe Vial) want to submit to COIN-OR under CPL license the optimzation code OBOE (Oracle Based Optimization Engine) that has been developed the last 15 years in the University of Geneva under my guidance.

OBOE is an implementation of the Analytic Center Cutting Plane Algorithm (ACCPM) whose goal is to solve convex (non-differentiable) problems using subgradient information only. ACCPM has been used in a variety of applications reported in the literature, either by the Geneva team or by others. I am currently facing several demands of researchers and companies to use our code in their own project. The project is potentially of interest to the OR community.

At present, OBOE is written in C++ and can considered as a production project for use by third parties. The structure complies with the requirements of COIN-OR. I plan to be the Project Manager and have Ms. N. Sawhney, who coded the C++ version, to be the Project Maintainer. I have made a list of initial contributors, including myself and the PhD students and PostDocs who worked on the project. I include the University of Geneva which hosted the research and the private society ORDECSYS who also contributed to the project, though in a much more limited extent. A short account of the method can be found at the following address

  • Contributor:
  • Contact Date: 12/17/2006
  • Handler:
    • Laszlo Ladanyi
    • Matthew Galati
  • Sent instructions: 12/18/2006

Legal

  • Received CSRO: 06/12/07 (added to CoinBoard repository) for JP. Vial, N. Sawhney and L. Drouet
  • Received DOO: 06/12/07 (in the CoinBoard repository). Provided by JP Vial
  • OSI-approved license: (CPL)

Classification

  • Classified (Level 1-5): 3 (see ProjectCategories)

Code and Documentation

  • README/LICENSE files: (exists and reasonable) (3/31/07)
  • Project Roadmap (Level 1): (exists and reasonable) TODO: ? (date checked)
  • AUTHORS/INSTALL files (Level 2 and above): (exists and reasonable) (3/31/07)
  • Code builds (Level 2 and above): (3/31/07)
  • Documentation (Level 3 and above): (exists and reasonable) (3/31/07)
  • Unit test (Level 4 and above): (has one and passed) (date checked)
  • Project binaries (Level 5): (exist and function properly) (date checked)

Accepted

  • (Yes/No): Yes 06/12/07

Establishing Project

  • PM named: Nidhi Sawhney (12/17/2006)
  • PM educated: yes
    • Legal issues
    • Tracking contributions
    • Responding to bugs
    • Using SVN
    • Using Trac
    • Setting up a static Web page
    • Standard practices (versioning and release, build procedures)
  • PM subscribed to mailing list: advised 06/12/07
  • Code imported: 06/12/07
  • PM given write access: 06/12/07
  • Trac page set up: 06/12/07
  • Project announced: TODO (date)
  • Moved this page to ArchivedChecklists: February 28, 2010

General Notes

Notes from Matthew Galati made during review.

  • 3/25/07

The INSTALL file says see README. The README says to see INSTALL. I tried this for about 30 minutes until I became very tired. The apparent infinite loop started to cause me a headache. :)

OBOE requires BLAS/LAPACK/LAPACK++. Most Linux installations have BLAS and LAPCK, not LAPACK++. I had to go to the www site and download manually. Perhaps something can be setup like in IPOPT with Externals to make it a little easier?

The default root install of LAPACK++ puts the headers in /usr/local/include/lapackpp. But, OBOE looks for LAPACKCPP_DIR/include, which doesn’t work for the default install. I was able to make it work by pointing to my local headers. But, you might want to change how that env var is used.

OBOE can also use (a) other LP solvers; (b) boost for serialization. I did not test the installation of either of these (they are optional).

(1) It seems that make install is not copying the parameter and data files over to the Benchmark subdirs.

[magala@ordlnx01 CS]$ pwd
/users/magala/COIN/OBOE-0.1/build/src/Benchmark/CS
[magala@ordlnx01 CS]$ ls
CSTest.o  Makefile  oboeCS

Therefore, there is no data to run the applications on.

(2) Also, after I copy the data over manually.... I am getting Assertion Failures.

[magala@ordlnx01 APS]$ ./oboeAPS param.txt Error starting ./oboeAPS with 2 arguments
Usage: ./oboeAPS <Parameter File> <Rotation File> <explicit formualtion>
[magala@ordlnx01 APS]$ ./oboeAPS param.txt APC_rot.reservoir

Adding Explicit Overcovers
matriceA.size() : 13
************************************************************************
OBOE Version 0.1
(C) 2005 Université de Genève. See Copyright Notification in OBOE
************************************************************************

Outer   Inner   Feasible                Objective               UBound          LBound  RelativeGap
   1       0       1             -800             -800    -1.79769e+306 2.24712e+303
oboeAPS: /users/magala/download/lapackpp-2.5.1/include/lavd.h:274: void LaVectorDouble::resize(int, int): Assertion `n==1 || m==1' failed.
Aborted
  • 03/31/07

I am attaching an updated file which should work with the latest lapack++(2.5.1). I have to find a way to do it cleanly to make it work with other versions of lapack++. If you replace /src/AccpmCore/Method.C with the attached file, it should work with lapackpp-2.5.1. -- Nidhi

The examples QP and TSP now ran fine for me. -- Matt

⚠️ **GitHub.com Fallback** ⚠️