# [Coin-bcpdiscuss] Core cuts and vars

Matteo Salani matteo.salani at epfl.ch
Wed Nov 8 10:49:24 EST 2006

Hello,

first of all a (very) small contribution on how I succeeded in compiling
Bcp under Cygwin

be sure to have Make.exe 3.8.0 and not 3.8.1 as pointed out in the wiki
pages

perform configure skipping Cgl and enabling dos compile:

./configure -C COIN_SKIP_PROJECTS="Cgl" --enable-doscompile

from my experience no other ways to compile under cygwin. Trust me, I've
tried several.

so after that I can pose a question hoping that someone will answer...  :)

Within initialize_core I want to set up the core of Bcp having

n+m core cuts and
n core variables

the n core cuts are \geq 1 inequalities
while the m cuts are \leq 1 inequalities

so I decided to have n artificial core variables (one for each \geq 1
cut) in order to always satisfy feasibility of the LP (core vars are
never removed form LP)
I'm pretty sure that I don't need m artificial variables for the m \leq
1 constraints.

Now given that I've both core cuts and variables I should properly fill
a  BCP_lp_relax matrix within initialize_core.

So... declaring objective function, columns upper and lower bounds, rows
upper and lower bounds as following:
double*    obj = new double[ n ];
double*    clb = new double[ n ];
double*    cub = new double[ n ];
double*    rlb = new double[ n + m ];
double*    rub = new double[ n + m ];

then a sparse CoinPackedMatrix to put ones on the main diagonal
then

BCP_lp_matrix matrix;
matrix->assign( mat, obj, clb, cub, rlb, rub );

I'm happy, I compile, I run and then...

I got this error:
Illegal index n in OsiClpSolverInterface::setColumnSetBounds

should I declare and fill also m core variables? But they're not needed!
why the Osi interface tries to access to element n? it shouldn't, it
knows I've only n core variables so indexed from 0 to n-1!

should I allocate n+1 spaces in obj, clb and cub. Maybe, but why?