Giter Site home page Giter Site logo

osi's Introduction

Osi

A COIN-OR Project

Projects such as this one are maintained by a small group of volunteers under the auspices of the non-profit COIN-OR Foundation and we need your help! Please consider sponsoring our activities or volunteering to help!

Latest Release

This file is auto-generated from config.yml using the generate_readme script. To make changes, please edit config.yml or the generation scripts here and here.

Osi (Open Solver Interface) provides an abstract base class to a generic linear programming (LP) solver, along with derived classes for specific solvers. Many applications may be able to use the Osi to insulate themselves from a specific LP solver. That is, programs written to the OSI standard may be linked to any solver with an OSI interface and should produce correct results. The OSI has been significantly extended compared to its first incarnation. Currently, the OSI supports linear programming solvers and has rudimentary support for integer programming. Among others the following operations are supported:

  • creating the LP formulation;
  • directly modifying the formulation by adding rows/columns;
  • modifying the formulation by adding cutting planes provided by CGL;
  • solving the formulation (and resolving after modifications);
  • extracting solution information;
  • invoking the underlying solver's branch-and-bound component.

The following is a list of derived Osi classes:

Solver Derived Class Note
Cbc OsiCbc unmaintained
Clp OsiClp
CPLEX OsiCpx
DyLP OsiDylp
GLPK OsiGlpk Glpk
Gurobi OsiGrb
MOSEK OsiMsk
SoPlex OsiSpx SoPlex < 4.0
SYMPHONY OsiSym
Vol OsiVol
XPRESS-MP OsiXpr

Each solver interface is in a separate directory of Osi or distributed with the solver itself.

Within COIN-OR, Osi is used by Cgl, Cbc, and Bcp, among others.

The main project managers are Lou Hafer (@LouHafer) and Matt Saltzmann (@mjsaltzman).

An incomplete list of recent changes to Osi are found in the CHANGELOG

Osi is written in C++ and is released as open source under the Eclipse Public License 2.0.

It is distributed under the auspices of the COIN-OR Foundation.

The Osi development site is https://github.com/coin-or/Osi.

CITE

Code: DOI

CURRENT BUILD STATUS

Windows Builds

Linux and MacOS Builds

DOWNLOAD

What follows is a quick start guide for obtaining or building Osi on common platforms. More detailed information is available here.

Docker image

There is a Docker image that provides Osi, as well as other projects in the COIN-OR Optimization Suite here

Binaries

For newer releases, binaries will be made available as assets attached to releases in Github here. Older binaries are archived as part of Cbc here.

  • Linux (see https://repology.org/project/coin-or-osi/versions for a complete listing):

    • arch:
      $ sudo pacman -S  coin-or-osi
      
    • Debian/Ubuntu:
      $ sudo apt-get install  coinor-osi coinor-libosi-dev
      
    • Fedora/Redhat/CentOS:
      $ sudo yum install  coin-or-Osi coin-or-Osi-devel
      
    • freebsd:
      $ sudo pkg install math/osi
      
    • linuxbrew:
      $ brew install osi
      
  • Windows: The easiest way to get Osi on Windows is to download an archive as described above.

  • Mac OS X: The easiest way to get Osi on Mac OS X is through Homebrew.

    $ brew tap coin-or-tools/coinor
    $ brew install coin-or-tools/coinor/osi
    
  • conda (cross-platform, no Windows for now):

    $ conda install coin-or-osi
    

Due to license incompatibilities, pre-compiled binaries lack some functionality. If binaries are not available for your platform for the latest version and you would like to request them to be built and posted, feel free to let us know on the mailing list.

Source

Source code can be obtained either by

  • Downloading a snapshot of the source code for the latest release version of Osi from the releases page,
  • Cloning this repository from Github, or
  • Using the coinbrew script to get the project and all dependencies (recommended, see below).

Dependencies

Osi has a number of dependencies, which are detailed in config.yml. Dependencies on other COIN-OR projects are automatically downloaded when obtaining the source with coinbrew. For some of the remaining third-party dependencies, automatic download scripts and build wrappers are provided (and will also be automatically run for required and recommended dependencies), while other libraries that are aeasy to obtain must be installed using an appropriate package manager (or may come with your OS by default).

BUILDING from source

These quick start instructions assume you are in a bash shell.

Using coinbrew

To download and build Osi from source, execute the following on the command line.

wget https://raw.githubusercontent.com/coin-or/coinbrew/master/coinbrew
chmod u+x coinbrew
./coinbrew fetch Osi@master
./coinbrew build Osi

For more detailed instructions on coinbrew, see https://coin-or.github.io/coinbrew. The coinbrew script will fetch the additional projects specified in the Dependencies section of config.yml.

Without coinbrew (Expert users)

  • Download the source code, e.g., by cloning the git repo https://github.com/coin-or/Osi
  • Download and install the source code for the dependencies listed in config.yml
  • Build the code as follows (make sure to set PKG_CONFIG_PTH to install directory for dependencies).
./configure -C
make
make test
make install

Doxygen Documentation

If you have Doxygen available, you can build a HTML documentation by typing

make doxygen-docs

in the build directory. If Osi was built via coinbrew, then the build directory will be ./build/Osi/master by default. The doxygen documentation main file is found at <build-dir>/doxydoc/html/index.html.

If you don't have doxygen installed locally, you can use also find the documentation here.

Project Links


Dynamically loading commercial solver libraries

At build time

It is possible to create an osi build that supports cplex, gurobi and xpress even if you don't have (yet) any of these solvers on your machine using lazylpsolverlibs. To do so, follow these steps:

  1. Install lazylpsolverlibs (follow the instructions of the lazylpsolverlibs wiki)
  2. Use the following command line to configure Osi:
./configure --with-cplex-incdir="$(pkg-config --variable=includedir lazycplex)/lazylpsolverlibs/ilcplex" \
            --with-cplex-lib="$(pkg-config --libs lazycplex)" \ 
            --with-gurobi-incdir="$(pkg-config --variable=includedir lazygurobi)/lazylpsolverlibs" \
            --with-gurobi-lib="$(pkg-config --libs lazygurobi)" \
            --with-xpress-incdir="$(pkg-config --variable=includedir lazyxprs)/lazylpsolverlibs" \
            --with-xpress-lib="$(pkg-config --libs lazyxprs)"
  1. Then follow the normal installation process (make, make install)

At run time

Your build should now support cplex, gurobi and xpress, which means that if you install one of these solvers, osi will be able to use it. At run time, you just need to point one of the environment variables LAZYLPSOLVERLIBS_GUROBI_LIB, LAZYLPSOLVERLIBS_CPLEX_LIB or LAZYLPSOLVERLIBS_XPRS_LIB to the full path of the corresponding solver library. For example:

export LAZYLPSOLVERLIBS_CPLEX_LIB=/usr/ilog/cplex121/bin/x86_debian4.0_4.1/libcplex121.so

Troubleshooting

If pkg-config reports errors during the configure step, try modifying the PKG_CONFIG_PATH variable. Most likely, you need to do:

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

osi's People

Contributors

ambros-gleixner avatar arevall avatar bjarnimax avatar bojensen avatar bradyhunsaker avatar h-g-s avatar h-i-gassmann avatar havardaasen avatar jhmgoossens avatar jjhforrest avatar johnjforrest avatar josyoun avatar jpfasano avatar kingaj12 avatar louhafer avatar mjsaltzman avatar rlougee avatar spoorendonk avatar svigerske avatar tkralphs avatar to-st avatar tobiasachterberg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

osi's Issues

message handling in OsiGlpkSolverInterface

Issue created by migration from Trac.

Original creator: @svigerske

Original creation time: 2006-12-18 14:53:09

Assignee: @mjsaltzman

Version: 0.95.2

The OsiGlpkSolverInterface seem to ignore the message handler that is set by passInMessageHandler(...) and the loglevel set in the message handler.
I propose the patch that is attached to this ticket.
It uses the glpk-method lib_set_print_hook() to tell glpk which method to use for printing the output. The printing-method then use the message handler defined for the OsiGlpkSolverInterface.

Stefan

setLogLevel not treated properly

Issue created by migration from Trac.

Original creator: nowozin

Original creation time: 2007-11-26 10:06:59

Assignee: @mjsaltzman

Version: 0.96

In OsiClpSolverInterface, when a lower verbosity is requested, one can issue:

OsiClpSolverInterface* si;
si->messageHandler()->setLogLevel(0);

However, there are two problems I noticed.

  1. If multiple calls to initialSolve() are made, the log level value is forgotten after each call. Hence, one has to call setLogLevel before each call. This is maybe just a problem of the documentation.

  2. When the Clp barrier/interior-point method is used, there are still trivial messages such as "Switching to dense for the last 12 columns" issued, although the log level is set to suppress those.

Thanks for considering,
Sebastian

error in cygwin build of OSI: CoinFinite.hpp:90: error: `_isnan' undeclared

Issue created by migration from Trac.

Original creator: craig_schmidt

Original creation time: 2006-12-05 03:32:24

Assignee: @mjsaltzman

Version: 0.95.0

Hi There,

I am trying to build Osi stable 0.95 using cygwin on Windows XP.
This is with gcc 3.4.4, and the updated version of make 3.81
as directed here[https://projects.coin-or.org/BuildTools/wiki/current-issues]

I did the following steps:

  1. did a new install of cygwin

  2. use subversion to get OSI:

svn co http://www.coin-or.org/svn/Osi/stable/0.95 coin-Osi

  1. did ./configure -C, which worked fine

  2. did make, and got this error:

make[3]: Entering directory `/cygdrive/d/netflix/coin/coin-Osi/Osi/src' 
if /bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I`cygpath -w .` -I../inc  -I`cygpath -w /cygdrive/d/netflix/coin/coin-Osi/CoinUtils/src` -I`cygpath -w /cygdrive/d/netflix/coin/coin-Osi/Osi/../CoinUtils/inc`   -O3 -fomit-frame-pointer -pipe -DNDEBUG -pedantic-errors -Wimplicit -Wparentheses -Wreturn-type -Wcast-qual -Wall -Wpointer-arith -Wwrite-strings -Wconversion   -MT OsiAuxInfo.lo -MD -MP -MF ".deps/OsiAuxInfo.Tpo" -c -o OsiAuxInfo.lo OsiAuxInfo.cpp; \
 then mv -f ".deps/OsiAuxInfo.Tpo" ".deps/OsiAuxInfo.Plo"; else rm -f ".deps/OsiAuxInfo.Tpo"; exit 1; fi
 g++ -DHAVE_CONFIG_H -I. -I. -I../inc -Id:\\netflix\\coin\\coin-Osi\\CoinUtils\\src -Id:\\netflix\\coin\\coin-Osi\\CoinUtils\\inc -O3 -fomit-frame-pointer -pipe -DNDEBUG -pedantic-errors -Wimplicit -Wparentheses -Wreturn-type -Wcast-qual -Wall -Wpointer-arith -Wwrite-strings -Wconversion -MT OsiAuxInfo.lo -MD -MP -MF .deps/OsiAuxInfo.Tpo -c OsiAuxInfo.cpp -o OsiAuxInfo.o
In file included from d:/netflix/coin/coin-Osi/CoinUtils/src/CoinMessageHandler.hpp:15,
                 from OsiSolverInterface.hpp:9,
                 from OsiAuxInfo.cpp:11:
d:/netflix/coin/coin-Osi/CoinUtils/src/CoinFinite.hpp: In function `bool CoinIsnan(double)':
d:/netflix/coin/coin-Osi/CoinUtils/src/CoinFinite.hpp:90: error: `_isnan' undeclared (first use this function)
d:/netflix/coin/coin-Osi/CoinUtils/src/CoinFinite.hpp:90: error: (Each undeclared identifier is reported only once for each function it appears in.)
make[3]: *** [OsiAuxInfo.lo] Error 1
make[3]: Leaving directory `/cygdrive/d/netflix/coin/coin-Osi/Osi/src'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/cygdrive/d/netflix/coin/coin-Osi/Osi/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/cygdrive/d/netflix/coin/coin-Osi/Osi'
make: *** [all-recursive] Error 1

Any suggestions?

Thanks,
Craig Schmidt

--with-osidylp-* options don't work

Issue created by migration from Trac.

Original creator: @LouHafer

Original creation time: 2006-12-01 20:47:49

Assignee: @mjsaltzman

Version: 0.95.0

Keywords: --with-osidylp, OsiDylp options

Specifying any --with-osidylp-* or --without-osidylp-* option has no effect.

OsiGlpk: primal infeasibility not reported if proven infeasible

Issue created by migration from Trac.

Original creator: @svigerske

Original creation time: 2007-09-23 11:36:03

Assignee: @mjsaltzman

Version: 0.96

Hi,

in OsiGlpkSolverInterface.cpp::branchAndBound(), at line 353 (trunk rev.), there is

          case LPX_I_NOFEAS:
 	          { isPrimInfeasible_ = false ;
	            break ; }

I guess this should be isPrimInfeasible_ = true ;.

Best,
Stefan

Problem with OsiGlpk and Glpk Version 4.16

Issue created by migration from Trac.

Original creator: kmartin

Original creation time: 2007-05-13 06:50:46

Assignee: @mjsaltzman

Version: 0.95.2

Problem:

configure.ac in the Osi root directory has the line

AC_COIN_HAS_USER_LIBRARY([Glpk],[GLPK],[glpk.h],[glp_lpx_simplex])

However, in the more recent version of Glpk 4.16 glp_lpx_simplex is replaced with
_glp_lpx_simplex. Hence the configure script crashes. One fix is to simply use

AC_COIN_HAS_USER_LIBRARY([Glpk],[GLPK],[glpk.h],[])

Thanks

Configuring Osi with Gurobi: implicit declaration vs. pedantic errors

When Osi checks if Gurobi is available, a simple source file that calls an implicitly declared function GRBloadenv() to see if that symbol is resolved by linking to libgurobi. Unfortunately, the source file is compiled with -pedantic-errors, which makes compilation fail because of the implicit declaration, although Gurobi is there.
A workaround is to comment out the lines in which -pedantic-errors is added to the compiler flags in the configure script,

checking solution availability in OsiXprSolverInterface

Issue created by migration from Trac.

Original creator: @pobonomo

Original creation time: 2006-06-27 14:56:46

Assignee: somebody

Version:

CC: @pobonomo

In OsiXprSolverInterface::getWarmStart, at the very beginning of the function line 321, there is a test which I think is invalid:

XPRS_CHECKED( XPRSgetintattrib, (prob_,XPRS_PRESOLVESTATE, &pstat) );
if ( pstat != 7 ) return NULL;

I guess that this is trying to test if the solution in Xpress is valid. If so, the bit 7 of pstat should be 1 (and not pstat==7) so the test should be:

if ( (pstat & 128) ==0 ) return NULL;

Osi with soplex 3.1.1.

I have cloned the master branch. Compiling Osi with soplex 3.1.1. resulted in the following error.

In file included from /homes/kibaekkim/scipoptsuite-5.0.1/soplex/src/spxsolver.h:27:0,
                 from /homes/kibaekkim/scipoptsuite-5.0.1/soplex/src/soplexlegacy.h:25,
                 from /homes/kibaekkim/scipoptsuite-5.0.1/soplex/src/soplex.h:2322,
                 from /homes/kibaekkim/Osi/Osi/src/OsiSpx/OsiSpxSolverInterface.cpp:33:
/homes/kibaekkim/scipoptsuite-5.0.1/soplex/src/spxdefines.h:145:21: error: 'thread_local' does not name a type
 #define THREADLOCAL thread_local

I believe that Osi is incompatible to soplex 3.1.1.

Update a few calls and add in a couple of missing methods.

Issue created by migration from Trac.

Original creator: drbrett

Original creation time: 2007-06-21 15:13:50

Assignee: @mjsaltzman

Version: 0.95.2

Allow the solver to correctly solve MIP problems. Remove unneccessary initial call to XPRSinit. Free mem as pointed out by someone earlier (setInteger and setContinuous). Add in a couple of missing methods.

typo in OsiCpxSolverInterface.cpp

Issue created by migration from Trac.

Original creator: fbaumann

Original creation time: 2007-06-21 13:09:53

Assignee: @mjsaltzman

Version: 0.95.3

Keywords: typo

There is a typo in OsiCpxSolverInterface.cpp that prevents OSI from compiling.

In line 1453 it should be indexFirst[i] instead of indexfirst[i].

configure / make problem with OSI

Issue created by migration from Trac.

Original creator: phines

Original creation time: 2006-07-06 18:51:38

Assignee: somebody

Version:

Keywords: Osi DyLP configure make

On a linux machine, the following sequence of commands produces an error:

svn co https://projects.coin-or.org/svn/Osi/trunk Coin-Osi
cd Coin-Osi
./configure
make

The error is the following:
"
In file included from /home/phines/src/COIN/Coin-Osi/DyLP/src/DylpStdLib/dylib_errs.h:34,
from /home/phines/src/COIN/Coin-Osi/DyLP/src/Dylp/dylp.h:62,
from OsiDylpSolverInterface.hpp:31,
from OsiDylpMessages.cpp:9:
/home/phines/src/COIN/Coin-Osi/DyLP/src/DylpStdLib/dylib_std.h:45:25: error: config_dylp.h: No such file or directory
make[3]: *** [OsiDylpMessages.lo] Error 1
make[3]: Leaving directory /home/phines/src/COIN/Coin-Osi/Osi/src/OsiDylp' make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory /home/phines/src/COIN/Coin-Osi/Osi/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/phines/src/COIN/Coin-Osi/Osi'
make: *** [all-recursive] Error 1
"
The following sequence does not produce this error:

svn co https://projects.coin-or.org/svn/Osi/trunk Coin-Osi
cd Coin-Osi
./configure
cd DyLP
./configure
cd ..
make

Apparently DyLP must be configured sepearately. It would probably be better if this step were done automatically.

extension to warm start API --- sync OSI warm start with solver

Issue created by migration from Trac.

Original creator: @LouHafer

Original creation time: 2006-11-21 20:35:27

Assignee: @mjsaltzman

Version: 0.95.0

For the warm start methods, there's an issue that's come up with respect to cbc. Right now, there are three calls:

  • getEmptyWarmStart (returns an empty basis; a sort of specialised clone)
  • getWarmStart (return current warm start object)
  • setWarmStart (set a warm start in the OSI)

What's needed is a way to distinguish the actions 'remove warm start info from the OSI' and 'request the OSI to synchronise its warm start information with the solver'.

The direct impetus comes because John and I have chosen conflicting overloads for setWarmStart(0). I've chosen this for 'remove warm start info', John uses it for 'sync with solver'.

My suggestion would be that setWarmStart(0) is naturally interpreted as 'remove warm start info' and we need a new call for 'sync with solver'. The form of the solution isn't critical, but we need some way to distinguish the two.

Depending on choices, we may need to revisit the default actions for getWarmStart. Right now, it returns an empty warm start if there's no valid information. Depending on the OSI implementation, this could violate the const'ness of the call.

MSVSv8 compiler warnings

Issue created by migration from Trac.

Original creator: @mgalati13

Original creation time: 2007-02-07 15:08:10

Assignee: @mjsaltzman

Version: 0.95.2

CC: @mgalati13

Keywords: warnings

msvsv8 compiler warnings, coin-Cbc stable 1.1

Warning	1	warning C4996: 'strdup' was declared deprecated	c:\cygwin\home\magala\coin\coin-cbc\coinutils\src\coinmodeluseful.hpp	403	
Warning	2	warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)	c:\cygwin\home\magala\coin\coin-cbc\clp\src\clppresolve.hpp	127	
Warning	3	warning C4996: 'strdup' was declared deprecated	c:\cygwin\home\magala\coin\coin-cbc\coinutils\src\coinmodeluseful.hpp	403	
Warning	4	warning C4996: 'fopen' was declared deprecated	c:\cygwin\home\magala\coin\coin-cbc\osi\src\osisolverinterface.cpp	1165	
Warning	5	warning C4996: 'fopen' was declared deprecated	c:\cygwin\home\magala\coin\coin-cbc\osi\src\osisolverinterface.cpp	1240	

Add loglevel control to Osi

Issue created by migration from Trac.

Original creator: @lleeoo

Original creation time: 2006-10-24 22:34:09

Assignee: @mjsaltzman

Version: 1.0

CC: @mjsaltzman

As of v 0.95, there is no direct loglevel control in Osi. Indirectly, one can use passInMessageHandler, but this typically has limited effect, since each solver has its own message handling mechanism in addition to Osi's. Instead, this ticket proposes two enhancements:

  1. make passInMessageHandler virtual, so that solver-specific actions can be taken when the Osi message handler is replaced.

  2. add virtual set/get logLevel(int) methods, which would provide a sufficiently general high-level control of messaging. What the actual int means should be left up to the solver.

OsiCbc forgets message handler

Issue created by migration from Trac.

Original creator: @svigerske

Original creation time: 2008-02-10 19:05:27

Assignee: @LouHafer

Version:

Hi,

when I do a

  OsiCbcSolverInterface::passInMessageHandler(mymsghandler);

before an initialSolve() or branchAndBound(), then output still goes through the default message handler, i.e., to the screen.

For an LP this looks like

Coin0506I Presolve 5 (0) rows, 6 (0) columns and 12 (0) elements
Clp0028I Crash put 0 variables in basis, 0 dual infeasibilities
Clp0006I 0  Obj 0 Primal inf 900 (3) Dual inf 6e+10 (6)
Clp0006I 3  Obj 153.675
Clp0000I Optimal - objective value 153.675
Coin0511I After Postsolve, objective 153.675, infeasibilities - dual 0 (0), primal 0 (0)
Clp0006I 0  Obj 153.675
Clp0006I 0  Obj 153.675
Clp0000I Optimal - objective value 153.675

For a MIP, this looks like

Cbc0031I 8 added rows had average density of 42.875
Cbc0013I At root node, 8 cuts changed objective from 204.368 to 211.666 in 100 passes
Cbc0014I Cut generator 0 (Probing) - 0 row cuts (0 active), 0 column cuts  in 1.188 seconds - new frequency is -100
Cbc0014I Cut generator 1 (Gomory) - 540 row cuts (8 active), 0 column cuts  in 0.036 seconds - new frequency is -100
Cbc0014I Cut generator 2 (Knapsack) - 0 row cuts (0 active), 0 column cuts  in 0.008 seconds - new frequency is -100
Cbc0014I Cut generator 3 (Clique) - 0 row cuts (0 active), 0 column cuts  in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 4 (FlowCover) - 0 row cuts (0 active), 0 column cuts  in 0.024 seconds - new frequency is -100
Cbc0014I Cut generator 5 (MixedIntegerRounding2) - 68 row cuts (0 active), 0 column cuts  in 0.024 seconds - new frequency is -100
Cbc0010I After 0 nodes, 1 on tree, 1e+50 best solution, best possible 211.666 (1.40 seconds)
Cbc0015I Node 1 Obj 211.666 Unsat 7 depth 1
Cbc0015I Node 2 Obj 211.666 Unsat 8 depth 2
Cbc0015I Node 3 Obj 211.674 Unsat 3 depth 3
Cbc0015I Node 4 Obj 211.674 Unsat 3 depth 4
Cbc0015I Node 5 Obj 211.675 Unsat 2 depth 5
Cbc0015I Node 6 Obj 212.173 Unsat 2 depth 6
Cbc0004I Integer solution of 213.711 found after 1037 iterations and 7 nodes (1.42 seconds)
Cbc0015I Node 11 Obj 211.666 Unsat 5 depth 2
Cbc0015I Node 13 Obj 211.983 Unsat 5 depth 3
Cbc0015I Node 14 Obj 213.347 Unsat 2 depth 4
Cbc0015I Node 18 Obj 211.667 Unsat 4 depth 1
Cbc0004I Integer solution of 212.111 found after 1206 iterations and 20 nodes (1.44 seconds)
Cbc0001I Search completed - best objective 212.111, took 1206 iterations and 20 nodes (1.44 seconds)
Cbc0032I Strong branching done 146 times (1634 iterations), fathomed 3 nodes and fixed 5 variables
Cbc0035I Maximum depth 6, 60 variables fixed on reduced cost

I'm using Osi 0.98, Clp 1.6, and Cbc 2.0, all stable.

Best,
Stefan

different understandings of row basis status in Osi interfaces

Issue created by migration from Trac.

Original creator: @svigerske

Original creation time: 2007-08-08 12:05:22

Assignee: @mjsaltzman

Version: 0.96

Hi,

I'm frequently using the trunk versions of OsiClp and OsiGlpk, and would like to use the same method to read the basis status from both classes.

But there seem to be some misunderstanding about when a row is at its lower or its upper bound.
Consider the following LP:

max  obj
s.t. obj <= 1

Since OsiSolverInterface::optimalBasisIsAvailable() reports false, I use getWarmStart() to read the basis status of a solution.
When I run Clp then OsiClp reports CoinWarmStartBasis::atLowerBound for the status of the obj<=1 row, while running Glpk I get CoinWarmStartBasis::atUpperBound as status from OsiGlpk.

Would be nice to have the interfaces follow the same convention.

See also the discussion at http://list.coin-or.org/pipermail/coin-discuss/2007-August/003048.html.

Best,
Stefan

doxygen warnings

Issue created by migration from Trac.

Original creator: @mgalati13

Original creation time: 2007-02-11 21:04:08

Assignee: @mjsaltzman

Version: 0.95.2

CC: @mgalati13

Keywords: doxy

/home/magala/COIN/coin-Decomp/Osi/src/OsiDylp/OsiDylpMessages.hpp:4: Warning: Found unknown command `\legal'
/home/magala/COIN/coin-Decomp/Osi/src/OsiCpx/OsiCpxSolverInterface.hpp:325: Warning: argument `code' of command `@`param is not found in the argument list of OsiCpxSolverInterface::setColSetBounds(const int *indexFirst, const int *indexLast, const double *boundList)
/home/magala/COIN/coin-Decomp/Osi/src/OsiCpx/OsiCpxSolverInterface.hpp:325: Warning: argument `indexfirst' of command `@`param is not found in the argument list of OsiCpxSolverInterface::setColSetBounds(const int *indexFirst, const int *indexLast, const double *boundList)
/home/magala/COIN/coin-Decomp/Osi/src/OsiCpx/OsiCpxSolverInterface.hpp:325: Warning: argument `code' of command `@`param is not found in the argument list of OsiCpxSolverInterface::setColSetBounds(const int *indexFirst, const int *indexLast, const double *boundList)
/home/magala/COIN/coin-Decomp/Osi/src/OsiCpx/OsiCpxSolverInterface.hpp:326: Warning: found </em> tag without matching <em>
/home/magala/COIN/coin-Decomp/Osi/src/OsiCpx/OsiCpxSolverInterface.hpp:326: Warning: found </em> tag without matching <em>
/home/magala/COIN/coin-Decomp/Osi/src/OsiCpx/OsiCpxSolverInterface.hpp:325: Warning: The following parameters of OsiCpxSolverInterface::setColSetBounds(const int *indexFirst, const int *indexLast, const double *boundList) are not documented:
  parameter indexFirst
/home/magala/COIN/coin-Decomp/Osi/src/OsiCpx/OsiCpxSolverInterface.hpp:354: Warning: argument `code' of command `@`param is not found in the argument list of OsiCpxSolverInterface::setRowSetBounds(const int *indexFirst, const int *indexLast, const double *boundList)
/home/magala/COIN/coin-Decomp/Osi/src/OsiCpx/OsiCpxSolverInterface.hpp:354: Warning: argument `indexfirst' of command `@`param is not found in the argument list of OsiCpxSolverInterface::setRowSetBounds(const int *indexFirst, const int *indexLast, const double *boundList)
/home/magala/COIN/coin-Decomp/Osi/src/OsiCpx/OsiCpxSolverInterface.hpp:354: Warning: argument `code' of command `@`param is not found in the argument list of OsiCpxSolverInterface::setRowSetBounds(const int *indexFirst, const int *indexLast, const double *boundList)
/home/magala/COIN/coin-Decomp/Osi/src/OsiCpx/OsiCpxSolverInterface.hpp:355: Warning: found </em> tag without matching <em>
/home/magala/COIN/coin-Decomp/Osi/src/OsiCpx/OsiCpxSolverInterface.hpp:355: Warning: found </em> tag without matching <em>
/home/magala/COIN/coin-Decomp/Osi/src/OsiCpx/OsiCpxSolverInterface.hpp:354: Warning: The following parameters of OsiCpxSolverInterface::setRowSetBounds(const int *indexFirst, const int *indexLast, const double *boundList) are not documented:
  parameter indexFirst
/home/magala/COIN/coin-Decomp/Osi/src/OsiCpx/OsiCpxSolverInterface.hpp:365: Warning: argument `code' of command `@`param is not found in the argument list of OsiCpxSolverInterface::setRowSetTypes(const int *indexFirst, const int *indexLast, const char *senseList, const double *rhsList, const double *rangeList)
/home/magala/COIN/coin-Decomp/Osi/src/OsiCpx/OsiCpxSolverInterface.hpp:365: Warning: argument `indexfirst' of command `@`param is not found in the argument list of OsiCpxSolverInterface::setRowSetTypes(const int *indexFirst, const int *indexLast, const char *senseList, const double *rhsList, const double *rangeList)
/home/magala/COIN/coin-Decomp/Osi/src/OsiCpx/OsiCpxSolverInterface.hpp:365: Warning: argument `code' of command `@`param is not found in the argument list of OsiCpxSolverInterface::setRowSetTypes(const int *indexFirst, const int *indexLast, const char *senseList, const double *rhsList, const double *rangeList)
/home/magala/COIN/coin-Decomp/Osi/src/OsiCpx/OsiCpxSolverInterface.hpp:365: Warning: The following parameters of OsiCpxSolverInterface::setRowSetTypes(const int *indexFirst, const int *indexLast, const char *senseList, const double *rhsList, const double *rangeList) are not documented:
  parameter indexFirst
/home/magala/COIN/coin-Decomp/Osi/src/OsiDylp/OsiDylpSolverInterface.hpp:88: Warning: explicit link request to 'operator' could not be resolved
/home/magala/COIN/coin-Decomp/Osi/src/OsiDylp/OsiDylpWarmStartBasis.hpp:229: Warning: explicit link request to 'diffNdxs_' could not be resolved
/home/magala/COIN/coin-Decomp/Osi/src/OsiDylp/OsiDylpWarmStartBasis.hpp:230: Warning: explicit link request to 'diffVals_' could not be resolved
/home/magala/COIN/coin-Decomp/Osi/src/OsiMsk/OsiMskSolverInterface.hpp:314: Warning: argument `code' of command `@`param is not found in the argument list of OsiMskSolverInterface::setColSetBounds(const int *indexFirst, const int *indexLast, const double *boundList)
/home/magala/COIN/coin-Decomp/Osi/src/OsiMsk/OsiMskSolverInterface.hpp:314: Warning: argument `indexfirst' of command `@`param is not found in the argument list of OsiMskSolverInterface::setColSetBounds(const int *indexFirst, const int *indexLast, const double *boundList)
/home/magala/COIN/coin-Decomp/Osi/src/OsiMsk/OsiMskSolverInterface.hpp:314: Warning: argument `code' of command `@`param is not found in the argument list of OsiMskSolverInterface::setColSetBounds(const int *indexFirst, const int *indexLast, const double *boundList)
/home/magala/COIN/coin-Decomp/Osi/src/OsiMsk/OsiMskSolverInterface.hpp:315: Warning: found </em> tag without matching <em>
/home/magala/COIN/coin-Decomp/Osi/src/OsiMsk/OsiMskSolverInterface.hpp:315: Warning: found </em> tag without matching <em>
/home/magala/COIN/coin-Decomp/Osi/src/OsiMsk/OsiMskSolverInterface.hpp:314: Warning: The following parameters of OsiMskSolverInterface::setColSetBounds(const int *indexFirst, const int *indexLast, const double *boundList) are not documented:
  parameter indexFirst
/home/magala/COIN/coin-Decomp/Osi/src/OsiMsk/OsiMskSolverInterface.hpp:343: Warning: argument `code' of command `@`param is not found in the argument list of OsiMskSolverInterface::setRowSetBounds(const int *indexFirst, const int *indexLast, const double *boundList)
/home/magala/COIN/coin-Decomp/Osi/src/OsiMsk/OsiMskSolverInterface.hpp:343: Warning: argument `indexfirst' of command `@`param is not found in the argument list of OsiMskSolverInterface::setRowSetBounds(const int *indexFirst, const int *indexLast, const double *boundList)
/home/magala/COIN/coin-Decomp/Osi/src/OsiMsk/OsiMskSolverInterface.hpp:343: Warning: argument `code' of command `@`param is not found in the argument list of OsiMskSolverInterface::setRowSetBounds(const int *indexFirst, const int *indexLast, const double *boundList)
/home/magala/COIN/coin-Decomp/Osi/src/OsiMsk/OsiMskSolverInterface.hpp:344: Warning: found </em> tag without matching <em>
/home/magala/COIN/coin-Decomp/Osi/src/OsiMsk/OsiMskSolverInterface.hpp:344: Warning: found </em> tag without matching <em>
/home/magala/COIN/coin-Decomp/Osi/src/OsiMsk/OsiMskSolverInterface.hpp:343: Warning: The following parameters of OsiMskSolverInterface::setRowSetBounds(const int *indexFirst, const int *indexLast, const double *boundList) are not documented:
  parameter indexFirst
/home/magala/COIN/coin-Decomp/Osi/src/OsiMsk/OsiMskSolverInterface.hpp:354: Warning: argument `code' of command `@`param is not found in the argument list of OsiMskSolverInterface::setRowSetTypes(const int *indexFirst, const int *indexLast, const char *senseList, const double *rhsList, const double *rangeList)
/home/magala/COIN/coin-Decomp/Osi/src/OsiMsk/OsiMskSolverInterface.hpp:354: Warning: argument `indexfirst' of command `@`param is not found in the argument list of OsiMskSolverInterface::setRowSetTypes(const int *indexFirst, const int *indexLast, const char *senseList, const double *rhsList, const double *rangeList)
/home/magala/COIN/coin-Decomp/Osi/src/OsiMsk/OsiMskSolverInterface.hpp:354: Warning: argument `code' of command `@`param is not found in the argument list of OsiMskSolverInterface::setRowSetTypes(const int *indexFirst, const int *indexLast, const char *senseList, const double *rhsList, const double *rangeList)
/home/magala/COIN/coin-Decomp/Osi/src/OsiMsk/OsiMskSolverInterface.hpp:354: Warning: The following parameters of OsiMskSolverInterface::setRowSetTypes(const int *indexFirst, const int *indexLast, const char *senseList, const double *rhsList, const double *rangeList) are not documented:
  parameter indexFirst

Make OsiDylp fails on amd64

Issue created by migration from Trac.

Original creator: phines

Original creation time: 2006-08-12 19:03:57

Assignee: @mjsaltzman

Version:

After configuring Osi, and running "make" on my AMD Athalon64 with linux 64 bit, I get the following errors:

OsiDylpSolverInterface.cpp: In member function 'void OsiDylpSolverInterface::detach_dylp()':
OsiDylpSolverInterface.cpp:2085: error: cast from 'OsiDylpSolverInterface*' to 'int' loses precision
OsiDylpSolverInterface.cpp: In member function 'lpret_enum OsiDylpSolverInterface::do_lp(ODSI_start_enum)':
OsiDylpSolverInterface.cpp:4010: error: cast from 'OsiDylpSolverInterface*' to 'int' loses precision
OsiDylpSolverInterface.cpp:4027: warning: enumeration value 'startInvalid' not handled in switch
OsiDylpSolverInterface.cpp: In member function 'virtual void OsiDylpSolverInterface::initialSolve()':
OsiDylpSolverInterface.cpp:4447: error: cast from 'OsiDylpSolverInterface*' to 'int' loses precision
OsiDylpSolverInterface.cpp: In member function 'virtual void OsiDylpSolverInterface::resolve()':
OsiDylpSolverInterface.cpp:5878: error: cast from 'OsiDylpSolverInterface*' to 'int' loses precision
make[3]: *** [OsiDylpSolverInterface.lo] Error 1
make[3]: Leaving directory /home/hines/src/COIN/Coin-Osi/Osi/src/OsiDylp' make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory /home/hines/src/COIN/Coin-Osi/Osi/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/hines/src/COIN/Coin-Osi/Osi'
make: *** [all-recursive] Error 1

Perhaps a cast from OsiDylpSolverInterface* to int causes an error on 64 bit machines

Doxygen doc mistake

Issue created by migration from Trac.

Original creator: fmargot

Original creation time: 2006-11-21 13:35:56

Assignee: @mjsaltzman

Version: 0.95.0

The description of applyCuts() in OsiSolverInterface.hpp
makes reference to ReturnCode.numberInconsistent()
but should be ReturnCode.getNumInconsistent().
Other method names related to ReturnCode are also incorrect.

The CPLEX and XPRESS solver interfaces seem to be missing some files

Issue created by migration from Trac.

Original creator: mjm

Original creation time: 2007-01-24 05:49:22

Assignee: @mjsaltzman

Version: 0.95

In the 0.95.3 distribution I found the following problems

  • Osi-0.95.3/lib does not contain OsiCpx and OsiXpr libraries
  • Osi-0.95.3/include does not contain OsiCpxSolverInterface.hpp (and OsiXprSolverInterface.hpp) though I assume it can be copied from Osi-0.95.3/Osi/src/OsiCpx/OsiCpxSolverInterface.hpp

Have I failed to install properly? Are these interfaces currently complete? Or are the libraries unnecessary? I am new to Osi, so perhaps I am missing something simple.

Michael

(changed by @mjsaltzman at 2007-06-15 17:04:07)

problems with Coin Libraries

Issue created by migration from Trac.

Original creator: anna82

Original creation time: 2007-03-21 17:49:55

Assignee: @mjsaltzman

Version: 0.95.2

when i try to execute a program that uses the Osi solver, i read this message:

cannot find -lCoin

what can i do?
i thaugth i installed correctly osi solver by following the instructions in this site

OsiClpSolverInterface::addCols

Issue created by migration from Trac.

Original creator: San

Original creation time: 2006-09-04 06:57:46

Assignee: @mjsaltzman

Version:

Hi. I'm just wondering if I'm using the following Osi correctly to
add the columns.

void OsiClpSolverInterface::addCols(const int numcols,
                  const CoinPackedVectorBase * const * cols,
                  const double* collb, const double* colub,
                  const double* obj)

I don't want to add rows when I'm calling the addCols method, but when
I pass NULL for the CoinPackedVectorBase parameter, it'll crash in

void CoinPackedMatrix::appendMajorVectors(const int numvecs,
                                   const CoinPackedVectorBase * const * vecs)
{
 ...
 for (i = 0; i < numvecs; ++i)
   nz += CoinLengthWithExtra(vecs[i]->getNumElements(), extraGap_);
 ...
}

as it is accessing vecs[i] without checking to see if vecs is not NULL.

When I changed the addCols method to only append cols when the
CoinPackedVectorBase is not NULL, it seemed to be working ok for small
problems that I was testing.

void OsiClpSolverInterface::addCols(const int numcols,
                              const CoinPackedVectorBase * const * cols,
                              const double* collb, const double* colub,
                              const double* obj)
{
 ...
 if (cols != NULL) // added this check so that it's only appending
cols when it is specified
 {
     modelPtr_->matrix()->appendCols(numcols,cols);
 }
 ...
}

If I don't change the Osi code and just pass in an array with:

       CoinPackedVectorBase ** columns= new CoinPackedVectorBase* [numCol];
           for (unsigned int i = 0; i < numCol; i++)
           {
               columns[i] = new CoinPackedVector(0,static_cast<const
int *>(NULL),static_cast<const double *>(NULL));
           }

it seems to be working ok, but I don't see why I have to do that when
I could get the rest of the code working without appending any
CoinPackedVectorBase.

I'm just wondering if this was a bug or whether I've used the
interface incorrectly.

Thanks.
San

OsiCpx::getBInvRow typo in row flipping

Issue created by migration from Trac.

Original creator: @svigerske

Original creation time: 2007-11-19 17:53:14

Assignee: @mjsaltzman

Version:

Hi,

in line 3352 of OsiCpxSolverInterface.cpp (stable/0.97, rev. 1132) I get an invalid read reported by valgrind.
The code snipet is

3351:	for(int j=0; j<ncol; j++) {
3352:	  z[j] = -z[j];
3353:	}

I think the ncol need to be a nrow.

Maybe similar in getBInvARow (line 3305)?

Best,
Stefan

Checking SYMPHONY pckg

Issue created by migration from Trac.

Original creator: menal

Original creation time: 2006-08-29 11:45:22

Assignee: @mjsaltzman

Version:

OSI configuration script cannot detect SYMPHONY. In the configure.ac input file, the line 'AC_COIN_HAS_PROJECT(Sym)' has to be replaced with 'AC_COIN_HAS_PROJECT(SYMPHONY)'.

Add virtual base methods for solver interface extensions

Issue created by migration from Trac.

Original creator: fmargot

Original creation time: 2006-11-21 22:27:49

Assignee: @mjsaltzman

Version: 0.95.0

CglLandP needs three methods from OsiClpSolverInterface
that are in the Osi/devel branch. These are:

virtual void getBInvARow(int row, CoinIndexedVector * z,
CoinIndexedVector * slack=NULL,
bool keepScaled=false) const;

virtual void getBInvACol(int col, CoinIndexedVector * vec) const ;

virtual void getBInvACol(CoinIndexedVector * rowArray1) const;

OsiGlpk: type in isProvenPrimalInfeasible

Issue created by migration from Trac.

Original creator: @svigerske

Original creation time: 2007-01-25 17:30:46

Assignee: @mjsaltzman

Version: 0.95.2

Hi,

in case that a MIP was solved, the comparision

  lpx_mip_status( model ) == LPX_NOFEAS;

should be changed to

  lpx_mip_status( model ) == LPX_I_NOFEAS;

LPX_NOFEAS is a return of lpx_get_status, not of lpx_mip_status.

Stefan

OsiRowCut infinity definition

Issue created by migration from Trac.

Original creator: @mgalati13

Original creation time: 2006-07-06 15:18:16

Assignee: somebody

Version:

OsiRowCut::sense() uses DBL_MAX as infinity.

(changed by @mjsaltzman at 2006-10-29 19:32:02)

More control over solver behavior requested.

Issue created by migration from Trac.

Original creator: dan.gordon

Original creation time: 2006-08-25 04:18:10

Assignee: @mjsaltzman

Version:

When using OsiXpr, I need to be able to use the Newton barrier solver. It's just that much more efficient with my application.

The present behaviour is to use automatic solver selection for initialSolve() and to use dual simplex for resolve().

There is no means of changing this behaviour in OsiSolverInterface or OsiXprSolverInterface. There is no access to the XPRSprob member _prob. Even if there were, this would not help when calling resolve(). Likewise, there are no parameter(s) in OsiSolverInterface to give this kind of control over the solver behaviour.

At present, I'm forced to produce my own version of OsiXprSolverInterface. It would be neater to avoid this, say, by having a parameter in OsiSolverInterface that allows the selection of a preferred method whenever there is a choice available (say interior point/primal simplex/dual simplex).

Thanks, Dan

Microsoft cl compiler does work with pow(int, double) signature

Issue created by migration from Trac.

Original creator: kmartin

Original creation time: 2007-05-15 23:12:26

Assignee: @mjsaltzman

Version: 0.95.2

Keywords: Microsoft Visual Studio

In OsiDlypPresolve change line 279

{ val *= pow(10,(double) exp) ; }

to

{ val *= pow(10.,(double) exp) ; }

and line 286

{ val *= pow(10,(double) exp) ; }

to

{ val *= pow(10.,(double) exp) ; }

The Microsoft cl complier does not work with the signature pow(int, double)

(changed by @LouHafer at 2007-06-02 02:15:47)

OsiGlpk: check whether time limit has been reached

Issue created by migration from Trac.

Original creator: @svigerske

Original creation time: 2007-06-18 13:45:29

Assignee: @mjsaltzman

Version: 0.95

Hi,

for GLPK it is possible to impose a timelimit, and it would be nice, when it could be checked via the Osi/GLPK interface, whether GLPK stopped because the timelimit was hit.
So my suggestion is to add a method isTimeLimitReached() similar to isIterationLimitReached() to the OsiGlpkSolverInterface.
To keep everything compatible with the general OsiSolverInterface class, isAbandoned() could still report true in this case.

Find attached a patch file which can be applied to OsiGlpk rev. 982 and adds this feature.

Best,

Stefan

OsiCpx::addRow: wrong handling of free rows

Issue created by migration from Trac.

Original creator: @svigerske

Original creation time: 2007-11-30 18:01:36

Assignee: @mjsaltzman

Version: 0.96

Hi,

in OsiCpx latest stable, the check for (rowsen=='R') at the end of OsiCpx::addRow(const CoinPackedVectorBase& vec, const char rowsen, const double rowrhs, const double rowrng) (line 2068) need to be changed into (sense=='R') since if rowsen=='N', then sense is set to 'R' and rhs and rng adapted accordingly.

Best,
Stefan

getDualRays maxNumRays, but only 1 in CLP/CPX

Issue created by migration from Trac.

Original creator: @mgalati13

Original creation time: 2007-04-08 19:00:10

Assignee: @mjsaltzman

Version: 0.95.2

CC: @mgalati13 @tkralphs

Keywords: dual ray

In both OsiClp and OsiCpx, getDualRays takes arg=maxNumRays, but only returns 1 dual ray. Can the solvers provide more than one? If so, can this be implemented (this would be nice)? If not, should there be a maxNumRays argument at all? It seems misleading.

(changed by @LouHafer at 2008-07-18 05:20:29)

Unit test fails with gcc 3.4

Issue created by migration from Trac.

Original creator: menal

Original creation time: 2006-12-19 18:02:50

Assignee: @mjsaltzman

Version: 0.95.2

The Osi unit test currently fails with gcc 3.4, apparently because of a bug in gcc 3.4. The problem is in OsiRowCutTest.cpp through the lines 286-293: the exception handling block (didn't check if there are more in other files). Somehow it terminates instead of catching the exception. It works fine with debugging option enabled, though.

OsiDylp does not take care of objSense in loadProblem call

Issue created by migration from Trac.

Original creator: @svigerske

Original creation time: 2007-08-10 18:57:50

Assignee: @mjsaltzman

Version: 0.96

Hi,

when I first change the objective sense to maximization and then do a load problem call,
then Dylp still seem to do a minimization because when the objective is set in the load problem call it does not take the objective sense into account.

Best,
Stefan

OsiClp crashes on an ILP

Issue created by migration from Trac.

Original creator: soumitra

Original creation time: 2007-04-12 04:05:56

Assignee: @mjsaltzman

Version: 0.95.2

Keywords: IP Solve

I modified the basic.cpp in Osi examples so that it solves my IP. However, it crashes in the call to osi->branchAndBound(). Here is the log.

soumitra$ basic
Coin0506I Presolve 3 (-1) rows, 5 (-1) columns and 7 (-1) elements
Clp0006I 0  Obj 48.5 Primal inf 578.07 (3)
Clp0006I 3  Obj 452.25
Clp0000I Optimal - objective value 452.25
Coin0511I After Postsolve, objective 452.25, infeasibilities - dual 0 (0), primal 0 (0)
Clp0032I Optimal objective 452.25 - 3 iterations time 0.002, Presolve 0.00
Clp0006I 0  Obj 452.25 Primal inf 0.5 (1)
Clp0001I Primal infeasible - objective value 452.25
Clp0006I 0  Obj 452.25 Primal inf 0.5 (1)
Clp0006I 1  Obj 452.75
Clp0000I Optimal - objective value 452.75
Illegal index 6750311 in OsiClpSolverInterface::setColUpper
terminate called after throwing an instance of 'CoinError'
Aborted (core dumped)

To recompile, you need to replace the Osi/examples/basic.cpp with the one in the tar ball.

This is truly a blocker for me. I am developing an application using BCP framework and I can not proceed until I can solve the IP similar to this example.

Misplaced OsiCpxSolverInterface.hpp to erase

Issue created by migration from Trac.

Original creator: @pobonomo

Original creation time: 2006-06-27 14:13:12

Assignee: somebody

Version:

There is an OsiCpxSolverInterface.hpp file in the subdirectory trunk/Osi/src/OsiClp/ which should be erased (there is one also in the good place at trunk/Osi/src/OsiCpx/).

OSI unitTest fails in OsiSolverInterfaceCommonUnitTest, error from CoinMpsIO, Windows 2000, Cygwin

Issue created by migration from Trac.

Original creator: @LouHafer

Original creation time: 2006-07-02 19:59:37

Assignee: somebody

Version:

Keywords: OSI unitTest, cygwin

The OSI unitTest fails in OsiSolverInterfaceCommonUnitTest with an error from CoinMpsIO. Failure occurs for dylp and clp. Environment is Windows 2000 (all updates) and cygwin (installed 06.06.29). This ticket might belong in CoinUtils, or could be a corrupted mps file, hard to say. Logs follow.

Osi unitTest build with dylp only:

Testing OsiColCut with OsiDylpSolverInterface
Testing OsiRowCutDebugger with OsiDylpSolverInterface
Testing OsiCuts
Testing OsiDylpSolverInterface
Starting dylp OSI interface tests ...
dylp0001I This is the us_en test message, eh.
dylp0001I Blimey, this must be the uk_en test message
Calling OsiSolverInterfaceCommonUnitTest for basic tests ...
Coin3002W Bad image at line 291 <  >
Coin6005E Returning as too many errors
make[2]: *** [test] Error 5
make[2]: Leaving directory `/home/lou/Coin-DyLP/Osi/test'
make[1]: *** [test] Error 2
make[1]: Leaving directory `/home/lou/Coin-DyLP/DyLP'
make: *** [test] Error 2
-----------------------------
Osi unitTest build with clp and vol only

<< Lots of output removed between `Testing ... ' lines. >>

Testing OsiRowCut with OsiVolSolverInterface
Testing OsiColCut with OsiVolSolverInterface
Testing OsiRowCut with OsiClpSolverInterface
Testing OsiColCut with OsiClpSolverInterface
Testing OsiRowCutDebugger with OsiClpSolverInterface
Testing OsiCuts
Testing OsiVolSolverInterface
*** volSolverInterface testing issue: getObjValue before solve (OK for vol)
*** volSolverInterface testing issue: column type methods all report continuous
(OK for vol)
*** volSolverInterface testing issue: addCol add columns to null
vol has no OsiSimplexInterface
*** volSolverInterface testing issue: addCol add columns to null
Checked 8 hints x (true, false) at strength OsiForceDo; 16 throws.
Testing OsiClpSolverInterface

 << And finally ... >>

Coin0001I At line 29 NAME          EXAMPLE
Coin0001I At line 30 ROWS
Coin0001I At line 37 COLUMNS
Coin0001I At line 55 RHS
Coin0001I At line 61 RANGES
Coin0001I At line 64 BOUNDS
Coin0001I At line 70 ENDATA
Coin0002I Problem EXAMPLE has 5 rows, 8 columns and 14 elements
Coin0008I EXAMPLE read with 0 errors
Coin0001I At line 1 NAME          E226
Coin0001I At line 2 ROWS
Coin0001I At line 227 COLUMNS
Coin3002W Bad image at line 291 <  >
Coin6005E Returning as too many errors
Coin0008I E226 read with 0 errors

OsiCpx::getBInvRow incorrect rows are flipped

Issue created by migration from Trac.

Original creator: @svigerske

Original creation time: 2007-11-19 20:40:49

Assignee: @mjsaltzman

Version:

Hi,

I am not definitely sure, maybe I just do not know enough the background behind this basis/nonbasis stuff. But I think the way that rows of the basis inverse are flipped in OsiCpx is not correct.
So far, when one asks for row number row_ of the BASIS INVERSE matrix, then the method checks whether row row_ from the ORIGINAL matrix is a greater-equal row! If so, and if the slack corresponding to row row_ is in the basis, then the row is flipped.

However, I think one should check whether row row_ from the basis inverse corresponds to a slack variable. Then, if the row in the original matrix that belongs to this slack is a greater-equal row, the row has to be flipped in the basis inverse.

A code would be

  int *ind_bas = new int[nrow];
  getBasics(ind_bas);
  if (ind_bas[row]>=ncol) { // binv row corresponds to a slack variable
    int Arow=ind_bas[row]-ncol; // Arow is the number of the row in the problem matrix which this slack belongs to
    char sense;
    status = CPXgetsense(env_, lp, &sense, Arow, Arow);
    if(status) {
      printf("### ERROR: OsiCpxSolverInterface::getBInvRow(): Unable to get senses for row %d\n", Arow);
      exit(1);
    }
    if(sense == 'G') { // slack has coeff -1 in Cplex; thus row in binv must be flipped 
    	for(int j=0; j<nrow; j++) {
    	  z[j] = -z[j];
    	}
    }
  }
  delete[] ind_bas;

The same probably in getBInvARow().

Best,
Stefan

OsiCbcSolverInterface.cpp not compiling with MS V7 compiler

Issue created by migration from Trac.

Original creator: @jpfasano

Original creation time: 2007-10-03 23:53:36

Assignee: @mjsaltzman

Version: 0.96

OsiCbcSolverInterface.cpp from trunk is not compiling with MS V7 compiler.
The error message is:

Compiling...
OsiCbcSolverInterface.cpp
d:\COIN\Coin-Cbc-All\trunk\Osi\src\OsiCbc\OsiCbcSolverInterface.cpp(17) : error C2006: '#include' : expected a filename, found 'identifier'

This compile time problem was introduced into the code by changeset 857: https://projects.coin-or.org/CoinUtils/changeset/857.

copyParameters doesn't push to underlying solver

Issue created by migration from Trac.

Original creator: @LouHafer

Original creation time: 2008-02-06 19:37:20

Assignee: @LouHafer

Version: 0.96

Keywords: copy parameters ineffective

The default implementation of copyParameters simply copies the parameter arrays. It needs to do successive calls to the various set/get routines to ensure that parameters actually get pushed to the underlying solvers.

OsiCpxSolverInterface.cpp does not compile

Issue created by migration from Trac.

Original creator: fmargot

Original creation time: 2007-06-08 12:48:12

Assignee: @mjsaltzman

Version:

CC: [email protected]

In Osi/trunk:

line 1456 of OsiCpxSolverInterface.cpp should be

   obj_[indexFirst[i]] = coeffList[i];

instead of

   obj_[indexfirst[i]] = coeffList[i];

Note also that there is a number of warnings of the type:

../../../../Osi/src/OsiCpx/OsiCpxSolverInterface.cpp: In member function 'virtual bool OsiCpxSolverInterface::setIntParam(OsiIntParam, int)':
../../../../Osi/src/OsiCpx/OsiCpxSolverInterface.cpp:353: warning: enumeration value 'OsiNameDiscipline' not handled in switch

bug fix for handling maximization problems properly

Issue created by migration from Trac.

Original creator: fmargot

Original creation time: 2006-06-29 21:01:33

Assignee: somebody

Version:

CC: [email protected]

Keywords: writeLpNative bug fix

In file OsiSolverInterface.cpp in method writeLpNative(),
the line

if(getObjSense() * objSense < 0.0) {

should be replaced by

double locObjSense = (objSense == 0 ? 1 : objSense);
if(getObjSense() * locObjSense < 0.0) {

So that maximization problems are written properly even when
the parameter objsense is 0.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.