Giter Club home page Giter Club logo

dsp's Introduction

DSP

Release: GitHub tag (latest SemVer) DOI

Documentation: Documentation Status

Status: Build Status codecov


DSP is an open-source and parallel package that implements decomposition methods for structured mixed-integer programming problems. These are structured optimization problems in the following form:

    minimize   c^T x + \sum_{s=1}^S q_s^T y_s
    subject to   A x                              = b
               T_s x +                    W_s y_s = h_s for s = 1, .., S
               some x, y_s are integers

where x and y_s are decision variable vectors with dimensions n_1 and n_2, respectively, A, T_s and W_s are matrices of dimensions m_1 by n_1, m_2 by n_1 and m_2 by n_2, respectively, and c, q_s, b, and h_s are vectors of appropriate dimensions.

DSP Solution Methods:

  • Extensive form solver (global solver)
  • Serial/parallel dual decomposition (dual bounding solver)
  • Serial/parallel Dantzig-Wolfe decomposition (global solver)
  • Serial/parallel Benders decomposition

Problem Types:

  • Two-stage stochastic mixed-integer linear programs
  • Distributionally robust stochastic mixed-integer linear programs
  • Structured mixed-integer linear programs

Problem Input Formats:

  • SMPS file format for stochastic programs (.dro optionally for distributionally robust)
  • MPS and DEC files for generic block-structured optimization problems
  • Julia modeling package DSPopt.jl

Installation

git clone --recursive https://github.com/Argonne-National-Laboratory/DSP.git

Contributors

  • Kibaek Kim, Mathematics and Computer Science Division, Argonne National Laboratory.
  • Victor M. Zavala, Department of Chemical and Biological Engineering, University of Wisconsin-Madison.
  • Christian Tjandraatmadja, Google Research.
  • Yingqiu Zhang, Industrial and Systems Engineering, Virginia Tech.
  • Geunyeong Byeon, Industrial Engineering, Arizona State University.
  • Hideaki Nakao, Mathematics and Computer Science Division, Argonne National Laboratory.

The contributors are listed in chronological order (first-come first-listed).

Key Publications

Acknowledgements

This material is based upon work supported by the U.S. Department of Energy, Office of Science, under contract number DE-AC02-06CH11357.

dsp's People

Contributors

bitdeli-chef avatar cheesecakeball avatar ctjandra avatar gbyeon avatar hideakiv avatar kibaekkim avatar vzavala 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  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  avatar  avatar  avatar  avatar  avatar

dsp's Issues

solver Extensive

Hi,

When I use solve type :Extensive, are you using Smi (Coin-or) for solve it?

Thanks

Slow convergence of DD, BD reports the wrong solution

Hello,

I am trying to solve a two-stage stochastic MIP using DSP and am facing some difficulties in the process.

  1. Dual decomposition seems to be much slower than the solution of the deterministic equivalent problem using SCIP. I am unable to solve problems with 25 scenarios or more in a reasonable time using DD. Further, DD often terminates with the status "StoppedMPI". Any tips on speeding up DD and making its solution more reliable is appreciated.
  2. Benders decomposition doesn't seem to return the same objective value as the solution of DD and DE although this problem only has continuous recourse decisions.

I've attached the source code for the instance I'm trying to solve.

Thanks,
Rohit
stochpool1.zip

Error: Subproblem 0 returns unexpected status 3998

Hi,

I'm running an examples using DSP with descomposition Benders. I would like to know what the following error means

Finding a good lower bound using Dual Decomposition...
OOQP is not available for QP solve.
CPLEX is not available for QP solve.

DUAL DECOMPOSITION ITERATION INFORMATION:

  • master = objective function value of the master problem.

  • primobj = best primal objective function value.

  • dualobj = best dual objective function value.

  • a.gap(%) = Approximate gap between master and dualobj.

  • d.gap(%) = Duality gap between primobj and dualobj.

  • times = wall clock time in seconds.

    iter master primobj dualobj a.gap(%) d.gap(%) time
    D 0 +6.103975e+04 Large +1.386196e+04 77.29 100.00 11.1
    Warning: subproblem 1 solution status is 3002
    1 -4.038858e+04 Large +1.386196e+04 134.32 100.00 12.7
    2 -1.025870e+06 Large +1.386196e+04 101.35 100.00 13.5
    3 -1.028108e+06 Large +1.386196e+04 101.35 100.00 13.8
    4 -1.028109e+06 Large +1.386196e+04 101.35 100.00 14.8
    5 -1.028374e+06 Large +1.386196e+04 101.35 100.00 15.1
    6 -1.028375e+06 Large +1.386196e+04 101.35 100.00 16.3
    7 -1.033255e+06 Large +1.386196e+04 101.34 100.00 16.6
    8 -1.034189e+06 Large +1.386196e+04 101.34 100.00 17.1
    9 -1.034506e+06 Large +1.386196e+04 101.34 100.00 17.5
    The iteration limit is reached.
    Best lower bound 1.386196e+04, time elapsed: 17.86 sec.
    presolving (4 rounds):
    273 deleted vars, 271 deleted constraints, 0 added constraints, 287 tightened bounds, 0 added holes, 0 changed sides, 0 changed coefficients
    0 implications, 1 cliques
    presolved problem has 149 variables (70 bin, 67 int, 0 impl, 12 cont) and 9 constraints

Error: Subproblem 0 returns unexpected status 3998
Error: Subproblem 0 returns unexpected status 3998
Error: Subproblem 0 returns unexpected status 3998
Error: Subproblem 0 returns unexpected status 3998
Error: Subproblem 0 returns unexpected status 3998
Error: Subproblem 0 returns unexpected status 3998
Error: Subproblem 0 returns unexpected status 3998
Error: Subproblem 0 returns unexpected status 3998
Error: Subproblem 0 returns unexpected status 3998
time | node | left |LP iter|LP it/n| mem |mdpt |frac |vars |cons |cols |rows |cuts |confs|strbr| dualbound | primalbound | gap
s 1.6s| 1 | 0 | 5 | - |1152k| 0 | - | 149 | 9 | 149 | 8 | 2 | 0 | 0 | 1.386196e+04 | 1.386196e+04 | 0.00%
1.6s| 1 | 0 | 5 | - |1152k| 0 | - | 149 | 9 | 149 | 8 | 2 | 0 | 0 | 1.386196e+04 | 1.386196e+04 | 0.00%

SCIP Status : problem is solved [optimal solution found]
Solving Time (sec) : 1.56
Solving Nodes : 1
Primal Bound : +1.38619560931190e+04 (1 solutions)
Dual Bound : +1.38619560931190e+04
Gap : 0.00 %
Error: Subproblem 0 returns unexpected status 3998

13861.95609311904

Thank you

MPI error: MPI_comm_rank invoked MPI_INIT

Hi I'm new at StochJump and DSP solver,

I have just instaled the DSP solver in Ubuntu, I'm trying to solve several examples from the SMPS folder. Im using the smps_dd.jl example following the instructions on Readme file.

Benders Decomposition and the DE are working perfectly, but if I try using DD MPI prompts the next error:

"The MPI_COMM_RANK() function was called before MPI_INIT was invoked"
"This disalowed the MPI standard"

Is that problem related to my MPI version?

Sincerely,

Juan Torres

When using --algo de, only 1 thread is used.

CPLEX inherently supports multi-threading. But when we want to solve an SMPS instance with 'runDsp --algo de', the CPLEX is running only with a single thread.

It is looking like the CPLEX parameter CPXPARAM_Threads is set to be 1 inside DSP codes.

Segmentation fault (core dumped) error

Hi,

in order to get a bit more familiar with the solver and the smps format I wrote a simple two stage Investment problem for which I have attached the smps files below. However, whenever I try to run the solver it gives me the following error message:
image

I also runned a few of the example problems in the DSP library but for them everything worked just fine. I guess the mistake has to be somewhere in the .stoch file but I compared my stoch file to some of the example ones but was not able to find the mistake.

Inv_ex_stoch.txt
Inv_ex_time.txt
Inv_ex_core.txt

Maybe someone can help.
Regards,
Karan

DSIP instalation: OsiSpxSolverInterface.hpp

Hi Kibaek and Victor,

I'm re-installing DSP to test to evaluate the performance using CPLEX as solver. I'm having problems installing it, I did the following steps on the installation

  • set the path to libcplex.a and cplex.h in USERconfig file
  • made ma27 and pointed the path to the ma27lib
  • made scip-3.1.1 without ZIMPL ,
    -set the path to scip, scip_lib and soplex

I'm having the following problem

image

I hope you can assist me with this issue,

Best regards,

Juan José

failed to compile

Hello

I tried to compile DSP today and the compilation failed. The output is below. The system is Linux Mint 17 (based on Ubuntu 14.04)


[ 83%] Building CXX object src/CMakeFiles/Dsp.dir/Solver/DualDecomp/DdDriverMpi.cpp.o
/tmp/DSP/src/Solver/DualDecomp/DdDriverMpi.cpp: In constructor ‘DdDriverMpi::DdDriverMpi(DspParams_, DecModel_, MPI_Comm)’:
/tmp/DSP/src/Solver/DualDecomp/DdDriverMpi.cpp:22:36: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘MPI_Comm {aka ompi_communicator_t_}’ [-Wformat=]
DSPdebugMessage("comm %d\n", comm_);
^
[ 84%] Building CXX object src/CMakeFiles/Dsp.dir/Solver/DualDecomp/DdMWAsync.cpp.o
[ 85%] Building CXX object src/CMakeFiles/Dsp.dir/Solver/DualDecomp/DdMWPara.cpp.o
/tmp/DSP/src/Solver/DualDecomp/DdMWPara.cpp: In member function ‘DSP_RTN_CODE DdMWPara::createGroups()’:
/tmp/DSP/src/Solver/DualDecomp/DdMWPara.cpp:150:80: error: ‘MPI_Comm_create_group’ was not declared in this scope
MPI_Comm_create_group(comm_, subcomm_group_, DSP_MPI_TAG_GROUP_SUB, &subcomm_);
^
/tmp/DSP/src/Solver/DualDecomp/DdMWPara.cpp:193:87: error: ‘MPI_Comm_create_group’ was not declared in this scope
ierr = MPI_Comm_create_group(comm_, subcomm_group_, DSP_MPI_TAG_GROUP_SUB, &subcomm_);
^
make[2]: *_* [src/CMakeFiles/Dsp.dir/Solver/DualDecomp/DdMWPara.cpp.o] Error 1
make[1]: *** [src/CMakeFiles/Dsp.dir/all] Error 2
make: *** [all] Error 2

Cuts infeasibility

Hi,

I think I've found the problem, the feasibility cuts are not generating them well, that's why the algorithm does not finish solving the problem. I sent you a small example to test it. The optimal solution should be 30.94

using Dsp, JuMP

NS= 4;
xi = [4 4;4 8;6 4;6 8]; # combine the two xi together w.s.t probability 1/4

probability = [1/4, 1/4, 1/4, 1/4]; # probability


# CREATE STOCHASTIC MODEL
m = Model(NS);

@variable(m,x[1:2]>=0);
@objective(m,Min,3*x[1]+2*x[2]);

for s in blockids()
    Sb = Model(m, s, probability[s])

    @variable(Sb, y[1:2]>=0);

    @objective(Sb, Min, -15*y[1] -12*y[2]);

    # RHS updating x_hat in the constraints during the iterations
    @constraint(Sb, constr1, 3*y[1]+2*y[2] <=x[1]);
    @constraint(Sb, constr2, 2*y[1]+5*y[2] <=x[2]);

    @constraint(Sb, constr3, y[1] >=0.8*xi[s,1]);
    @constraint(Sb, constr4, y[2] >=0.8*xi[s,2]);
    @constraint(Sb, constr5, y[1] <=xi[s,1]);
    @constraint(Sb, constr6, y[2] <=xi[s,2]);
end

# Dsp solve types
solve_types = [:Dual, :Benders, :Extensive]

# Default parameter file
myparam = "default.txt";

solve(m, solve_type = solve_types[2], param = myparam)

output

Finding a good lower bound using Dual Decomposition...
CPLEX is not available for QP solve.
Warning: Cut generation supports only SCIP.
Warning: Cut generation supports only SCIP.
Warning: Cut generation supports only SCIP.
Warning: Cut generation supports only SCIP.

DUAL DECOMPOSITION ITERATION INFORMATION:
* master   = objective function value of the master problem.
* primobj  = best primal objective function value.
* dualobj  = best dual objective function value.
* a.gap(%) = Approximate gap between master and dualobj.
* d.gap(%) = Duality gap between primobj and dualobj.
* times    = wall clock time in seconds.

  iter         master        primobj        dualobj  a.gap(%)  d.gap(%)    time
 D   0  +5.400000e+01          Large  +9.200000e+00     82.96    100.00     0.0
Warning: subproblem 0 solution status is 3002
     1  -8.560000e+01          Large  +9.200000e+00    110.75    100.00     0.0
Warning: subproblem 0 solution status is 3002
     2  +4.000000e+00          Large  +9.200000e+00    130.00    100.00     0.0
Warning: subproblem 0 solution status is 3002
     3  +1.832000e+02          Large  +9.200000e+00     94.98    100.00     0.0
Warning: subproblem 0 solution status is 3002
     4  -6.544000e+02          Large  +9.200000e+00    101.41    100.00     0.0
Warning: subproblem 0 solution status is 3002
     5  -2.960000e+02          Large  +9.200000e+00    103.11    100.00     0.0
Warning: subproblem 0 solution status is 3002
     6  +4.208000e+02          Large  +9.200000e+00     97.81    100.00     0.0
Warning: subproblem 0 solution status is 3002
     7  -2.929600e+03          Large  +9.200000e+00    100.31    100.00     0.0
Warning: subproblem 0 solution status is 3002
     8  -1.496000e+03          Large  +9.200000e+00    100.61    100.00     0.0
Warning: subproblem 0 solution status is 3002
     9  +1.371200e+03          Large  +9.200000e+00     99.33    100.00     0.0
Warning: subproblem 0 solution status is 3002
The iteration limit is reached.
Best lower bound 9.200000e+00, time elapsed: 0.00 sec.
presolving (1 rounds):
 0 deleted vars, 0 deleted constraints, 0 added constraints, 0 tightened bounds, 0 added holes, 0 changed sides, 0 changed coefficients
 0 implications, 0 cliques
presolved problem has 3 variables (0 bin, 0 int, 0 impl, 3 cont) and 2 constraints

 time | node  | left  |LP iter|LP it/n| mem |mdpt |frac |vars |cons |cols |rows |cuts |confs|strbr|  dualbound   | primalbound  |  gap   
* 0.0s|     1 |     0 |     1 |     - | 170k|   0 |   - |   3 |   2 |   3 |   1 |   2 |   0 |   0 | 9.200000e+00 | 9.200000e+00 |   0.00%

SCIP Status        : problem is solved [optimal solution found]
Solving Time (sec) : 0.01
Solving Nodes      : 1
Primal Bound       : +9.19999999999099e+00 (2 solutions)
Dual Bound         : +9.19999999999099e+00
Gap                : 0.00 %

my code output
================== Iteration 4 ==================
Lower Bound: 30.939999999999998
Upper Bound: 30.939999999999998
Cuts Fac: 8
Cuts Opt: 4
Gap = 0.0
Elapsed Time: 7.207221031188965 seconds

libDsp.so file not found

After I cloned and installed DSP, I tried solving one of the examples using julia package Dsp and I got this error:

ERROR: LoadError: LoadError: error compiling Type: could not load library "libDsp"
libDsp.so: cannot open shared object file: No such file or directory
Stacktrace:
[1] include_from_node1(::String) at ./loading.jl:576
while loading /home/gavelasq/.julia/v0.6/Dsp/src/Dsp.jl, in expression starting on line 23
while loading /home/gavelasq/Documents/structJuMP_example.jl, in expression starting on line 1

Also, I checked the lib folder and the only file there is README.md.

Problem to get the variables of the first stage

Dear,

I have a problem with the first stage solution,
when I solve the problem in an extended way I get a solution that is different when using the bender decomposition.
It seems that the solution obtained with DB is equal to solving only the problem of the first stage (without the subproblems).
Also, it says that the solution found is optimal, however, when I solve the subproblems with the variables of the first stage the solution
is infeasible.

Example

Solve with :Extensive

solve_types = [:Dual, :Benders, :Extensive];

Default parameter file

myparam = "default.txt";

status = solve(modelo, solve_type = solve_types[3], param = myparam)

getobjectivevalue(modelo)

Clp0000I Optimal - objective value 13854.998
13854.997577081438

Var1

Solve with :Benders

solve_types = [:Dual, :Benders, :Extensive];

Default parameter file

myparam = "default.txt";

status = solve(modelo, solve_type = solve_types[2], param = myparam)

getobjectivevalue(modelo)

SCIP Status : problem is solved [optimal solution found]
Solving Time (sec) : 1.51
Solving Nodes : 1
Primal Bound : +1.38358758615197e+04 (1 solutions)
Dual Bound : +1.38358758615197e+04
Gap : 0.00 %
13835.875861519673

var2

Solve problem with var in firts stage.

modelo = Model(solver = ClpSolver());

7053.561000201029
Optimal

var3

then var1 is different to var2 and var2 is equal to var3

I'm working with non-numeric indexes in both variables and restrictions, will Julia JuMP not support string indexes?

What I can do?

Thank you
https://github.com/Esnilg/SES_MEAN.git

DD Terminates with StoppedMPI status

@kibaekkim I am trying to solve a variant of the problem I posted earlier which includes mixed-binary first-stage variables and continuous second stage variables. Both DE and BD give the correct solution, but DD terminates with the status "StoppedMPI" after a few iterations even for a small number of scenarios.

I've attached the source code for the instance I'm trying to solve.

Thanks,
Rohit

stochpool1_conts.zip

SimpleVector.C:(.text+0xbc4): referencia a `daxpy_' sin definir

Hi,

model name : Intel(R) Xeon(R) CPU E5-2640 v2 @ 2.00GHz
stepping : 4
microcode : 0x42c
cpu MHz : 1253.515
cache size : 20480 KB
physical id : 0
siblings : 16
core id : 0
cpu cores : 8
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes

I have this problem before make

[esnil@localhost build]$ cmake ..
-- The system information: Linux-3.10.0-693.21.1.el7.x86_64.x86_64
-- A library with BLAS API found.
-- A library with BLAS API found.
-- A library with LAPACK API found.
-- Configuring done
WARNING: Target "Dsp" requests linking to directory "/usr/local/lib". Targets may link only to libraries. CMake is dropping the item.
WARNING: Target "Dsp" requests linking to directory "/usr/local/lib". Targets may link only to libraries. CMake is dropping the item.
WARNING: Target "runDsp" requests linking to directory "/usr/local/lib". Targets may link only to libraries. CMake is dropping the item.
WARNING: Target "runDsp" requests linking to directory "/usr/local/lib". Targets may link only to libraries. CMake is dropping the item.
-- Generating done
-- Build files have been written to: /home/esnil/DSP/build
[esnil@localhost build]$ make
[ 8%] Built target CoinUtils
[ 16%] Built target Osi
[ 25%] Built target Clp
[ 33%] Built target OOQP
[ 41%] Built target Smi
[ 94%] Built target DspCore
Linking CXX shared library libDsp.so
../lib/libCoinUtils.a(CoinFactorization2.o): En la función CoinFactorization::factorDense()': CoinFactorization2.cpp:(.text+0x465): referencia a dgetrf_' sin definir
../lib/libCoinUtils.a(CoinFactorization3.o): En la función CoinFactorization::updateColumnL(CoinIndexedVector*, int*) const': CoinFactorization3.cpp:(.text+0xe1a): referencia a dgetrs_' sin definir
../lib/libCoinUtils.a(CoinFactorization4.o): En la función CoinFactorization::updateColumnTransposeL(CoinIndexedVector*) const': CoinFactorization4.cpp:(.text+0x2efa): referencia a dgetrs_' sin definir
../lib/libCoinUtils.a(CoinDenseFactorization.o): En la función CoinDenseFactorization::updateColumn(CoinIndexedVector*, CoinIndexedVector*, bool) const': CoinDenseFactorization.cpp:(.text+0x799): referencia a dgetrs_' sin definir
../lib/libCoinUtils.a(CoinDenseFactorization.o): En la función CoinDenseFactorization::updateTwoColumnsFT(CoinIndexedVector*, CoinIndexedVector*, CoinIndexedVector*, bool)': CoinDenseFactorization.cpp:(.text+0xe30): referencia a dgetrs_' sin definir
../lib/libCoinUtils.a(CoinDenseFactorization.o): En la función CoinDenseFactorization::updateColumnTranspose(CoinIndexedVector*, CoinIndexedVector*) const': CoinDenseFactorization.cpp:(.text+0x1841): referencia a dgetrs_' sin definir
../lib/libCoinUtils.a(CoinDenseFactorization.o): En la función CoinDenseFactorization::factor()': CoinDenseFactorization.cpp:(.text+0x1f8c): referencia a dgetrf_' sin definir
../lib/libooqpdense.a(DenseSymMatrix.o): En la función DenseSymMatrix::mult(double, double*, int, double, double*, int)': DenseSymMatrix.C:(.text+0x6d1): referencia a dsymv_' sin definir
../lib/libooqpdense.a(DenseSymMatrix.o): En la función DenseSymMatrix::mult(double, OoqpVector&, double, OoqpVector&)': DenseSymMatrix.C:(.text+0x7ad): referencia a dsymv_' sin definir
../lib/libooqpdense.a(DeSymIndefSolver.o): En la función DeSymIndefSolver::matrixChanged()': DeSymIndefSolver.C:(.text+0x261): referencia a dsytrf_' sin definir
../lib/libooqpdense.a(DeSymIndefSolver.o): En la función DeSymIndefSolver::solve(OoqpVector&)': DeSymIndefSolver.C:(.text+0x331): referencia a dsytrs_' sin definir
../lib/libooqpdense.a(DenseGenMatrix.o): En la función DenseGenMatrix::mult(double, double*, int, double, double*, int)': DenseGenMatrix.C:(.text+0x798): referencia a dgemv_' sin definir
../lib/libooqpdense.a(DenseGenMatrix.o): En la función DenseGenMatrix::mult(double, OoqpVector&, double, OoqpVector&)': DenseGenMatrix.C:(.text+0x8ea): referencia a dgemv_' sin definir
../lib/libooqpdense.a(DenseGenMatrix.o): En la función DenseGenMatrix::transMult(double, double*, int, double, double*, int)': DenseGenMatrix.C:(.text+0x9de): referencia a dgemv_' sin definir
../lib/libooqpdense.a(DenseGenMatrix.o): En la función DenseGenMatrix::transMult(double, OoqpVector&, double, OoqpVector&)': DenseGenMatrix.C:(.text+0xb30): referencia a dgemv_' sin definir
../lib/libooqpdense.a(DenseStorage.o): En la función DenseStorage::atAddOuterProductOf(int, int, double, double*, int, int)': DenseStorage.C:(.text+0xe38): referencia a dsyr_' sin definir
../lib/libooqpdense.a(DenseStorage.o): En la función DenseStorage::addToDiagonalAt(double, double*, int, int, int)': DenseStorage.C:(.text+0xf4f): referencia a daxpy_' sin definir
../lib/libooqpbase.a(SimpleVector.o): En la función SimpleVector::scale(double)': SimpleVector.C:(.text+0xb0e): referencia a dscal_' sin definir
../lib/libooqpbase.a(SimpleVector.o): En la función SimpleVector::axpy(double, OoqpVector&)': SimpleVector.C:(.text+0xbc4): referencia a daxpy_' sin definir
collect2: error: ld devolvió el estado de salida 1
make[2]: *** [src/libDsp.so] Error 1
make[1]: *** [src/CMakeFiles/Dsp.dir/all] Error 2
make: *** [all] Error 2

Can you help me?
thanks

seg fault with runDSP --soln

runDSP segfaults when running either deterministic equivalent form or Benders decomposition with the option --soln.

env->solver_->getDualSolution() returns 0 in getDualSolution in DspCInterface.cpp leading to the segfault when the copy is attempted.

graceful termination

Sometimes when a time limit is set, DD returns status 3999 with wrong primal bounds. This must be related to the termination status.

Dual Decomposition Never Terminates

Hi,

I was trying to solve the problem in attachment using dual decomposition. The upper bound and lower bound were found, which are the same as the optimal value, but dd never terminated. Any idea why this happens? I appreciate your help.

Example.zip

./lib/libooqpmehrotra.a(MehrotraSolver.o): Relocation R_X86_64_32S can not be used against `_ZTV14MehrotraSolver 'when a shared object is made; recompile with -fPIC

hello I do not know what to do to repair the problem

[100%] Linking CXX shared library libDsp.so
/usr/bin/ld: ../lib/libooqpmehrotra.a(MehrotraSolver.o): no se puede usar la reubicación R_X86_64_32S contra `_ZTV14MehrotraSolver' cuando se hace un objeto compartido; recompile con -fPIC
../lib/libooqpmehrotra.a: error adding symbols: Valor erróneo
collect2: error: ld returned 1 exit status
src/CMakeFiles/Dsp.dir/build.make:1445: fallo en las instrucciones para el objetivo 'src/libDsp.so'
make[2]: *** [src/libDsp.so] Error 1
CMakeFiles/Makefile2:296: fallo en las instrucciones para el objetivo 'src/CMakeFiles/Dsp.dir/all'
make[1]: *** [src/CMakeFiles/Dsp.dir/all] Error 2
Makefile:129: fallo en las instrucciones para el objetivo 'all'
make: *** [all] Error 2

Thank you

Is SCIP required for Benders Decomposition?

Hi,

I am using Benders decomposition in DSP with CPLEX 12.9 installed. I got following error:
Benders decomposition has been disabled because SCIP was not available. Error: Null solver pointer.
Is SCIP required for Benders Decomposition?

when I have two scenarios the algorithm does not end

Hello,

I finally understood what is happening with the DSP, what I did was create a model with a single scenario in SMPS format and another model in SMPS format with two identical scenarios, apparently with a single scenario the bender method works and generates so many the cuts as the iterations, when I solve it with two identical scenarios, it only calculates the lower level and then after 2 cuts and 2 iterations the algorithm ends, why is this happening?

example one scen

Creating DSP environment
Reading SMPS files: ses_main-1
Coin0001I At line 1 NAME          JuMPModel
Coin0001I At line 2 ROWS
Coin0001I At line 3602 COLUMNS
Coin0001I At line 27600 RHS
Coin0001I At line 31199 BOUNDS
Coin0001I At line 34127 ENDATA
Coin0002I Problem JuMPModel has 3598 rows, 2920 columns and 20765 elements
Coin0001I At line 2 TIME          JuMPModel
Coin0001I At line 3 PERIODS       IMPLICIT
Coin0001I At line 6 ENDATA

Coin0001I At line 2 STOCH         JuMPModel
Coin0001I At line 3 SCENARIOS     DISCRETE
Coin0001I At line 5 ENDATA
Read SMPS files: 0.023822 sec.
Finding a good lower bound using Dual Decomposition...
Warning: Cut generation supports only SCIP.

DUAL DECOMPOSITION ITERATION INFORMATION:
* master   = objective function value of the master problem.
* primobj  = best primal objective function value.
* dualobj  = best dual objective function value.
* a.gap(%) = Approximate gap between master and dualobj.
* d.gap(%) = Duality gap between primobj and dualobj.
* times    = wall clock time in seconds.

  iter         master        primobj        dualobj  a.gap(%)  d.gap(%)    time
 D   0  +1.398931e+04          Large  +1.398931e+04      0.00    100.00     1.0
Tr  STOP with gap tolerance +0.000000e+00 (0.00%).
Best lower bound 1.398931e+04, time elapsed: 0.96 sec.
presolving (2 rounds):
 273 deleted vars, 271 deleted constraints, 0 added constraints, 285 tightened bounds, 0 added holes, 0 changed sides, 0 changed coefficients
 0 implications, 0 cliques
presolved problem has 151 variables (0 bin, 0 int, 0 impl, 151 cont) and 8 constraints

 time | node  | left  |LP iter|LP it/n| mem |mdpt |frac |vars |cons |cols |rows |cuts |confs|strbr|  dualbound   | primalbound  |  gap   
* 237s|     1 |     0 |  3262 |     - |2071k|   0 |   - | 151 |   8 | 151 | 710 | 704 |   0 |   0 | 1.398931e+04 | 1.398931e+04 |   0.00%

SCIP Status        : problem is solved [optimal solution found]
Solving Time (sec) : 236.92
Solving Nodes      : 1
Primal Bound       : +1.39893133936256e+04 (1 solutions)
Dual Bound         : +1.39893133936256e+04
Gap                : 0.00 %
Status: 3000
Primal Bound: 13989.3
Dual Bound  : 13989.3
Deleting DSP environment

example two identical scen

Creating DSP environment
Reading SMPS files: ses_main-2
Coin0001I At line 1 NAME          JuMPModel
Coin0001I At line 2 ROWS
Coin0001I At line 3602 COLUMNS
Coin0001I At line 27600 RHS
Coin0001I At line 31199 BOUNDS
Coin0001I At line 34127 ENDATA
Coin0002I Problem JuMPModel has 3598 rows, 2920 columns and 20765 elements
Coin0001I At line 2 TIME          JuMPModel
Coin0001I At line 3 PERIODS       IMPLICIT
Coin0001I At line 6 ENDATA

Coin0001I At line 2 STOCH         JuMPModel
Coin0001I At line 3 SCENARIOS     DISCRETE
Coin0001I At line 8 ENDATA
Read SMPS files: 0.047627 sec.
Finding a good lower bound using Dual Decomposition...
Warning: Cut generation supports only SCIP.
Warning: Cut generation supports only SCIP.

DUAL DECOMPOSITION ITERATION INFORMATION:
* master   = objective function value of the master problem.
* primobj  = best primal objective function value.
* dualobj  = best dual objective function value.
* a.gap(%) = Approximate gap between master and dualobj.
* d.gap(%) = Duality gap between primobj and dualobj.
* times    = wall clock time in seconds.

  iter         master        primobj        dualobj  a.gap(%)  d.gap(%)    time
 D   0  +1.398931e+04          Large  +1.398931e+04      0.00    100.00     1.8
Tr  STOP with gap tolerance +0.000000e+00 (0.00%).
Best lower bound 1.398931e+04, time elapsed: 1.80 sec.
presolving (2 rounds):
 273 deleted vars, 271 deleted constraints, 0 added constraints, 285 tightened bounds, 0 added holes, 0 changed sides, 0 changed coefficients
 0 implications, 0 cliques
presolved problem has 151 variables (0 bin, 0 int, 0 impl, 151 cont) and 8 constraints

 time | node  | left  |LP iter|LP it/n| mem |mdpt |frac |vars |cons |cols |rows |cuts |confs|strbr|  dualbound   | primalbound  |  gap   
* 2.4s|     1 |     0 |     2 |     - |1096k|   0 |   - | 151 |   8 | 151 |   7 |   2 |   0 |   0 | 1.398931e+04 | 1.398931e+04 |   0.00%

SCIP Status        : problem is solved [optimal solution found]
Solving Time (sec) : 2.41
Solving Nodes      : 1
Primal Bound       : +1.39893133936256e+04 (1 solutions)
Dual Bound         : +1.39893133936256e+04
Gap                : 0.00 %
Status: 3000
Primal Bound: 13989.3
Dual Bound  : 13989.3
Deleting DSP environment

thanks for all

QP extension to SMPS reader

We first need to know whether or not Smi can read files for QP. We can create a small SMIQP problem instance in SMPS format and have SMI to read and solve it.

This requires the OSI interface #56.

Build errors

I am trying to build DSP on a Mac, but am having issues with MPI.

I followed the steps in PREREQUISITES.md and INSTALL.md and installed mpich 3.3.2 via brew which seems to be recognized according to the cmake output.
However I am getting
.../DSP/src/Utility/DspMpi.h:43:3: error: use of undeclared identifier 'MPI'
and a couple of similar errors from that file and finally

In file included from /Users/admin/DSP/src/Solver/DantzigWolfe/DwBranchInt.cpp:10:
In file included from /Users/admin/DSP/src/Solver/DantzigWolfe/DwBranchInt.h:11:
In file included from /Users/admin/DSP/src/Solver/DantzigWolfe/DwBranch.h:11:
In file included from /Users/admin/DSP/src/Solver/DantzigWolfe/DwModel.h:11:
In file included from /Users/admin/DSP/src/TreeSearch/DspModel.h:14:
In file included from /Users/admin/DSP/src/Solver/DecSolver.h:22:
/Users/admin/DSP/src/Utility/DspParams.h:12:10: fatal error: 'tr1/unordered_map' file not found

Attached you find my cmake logs
CMakeError.log
CMakeOutput.log

solution return

  • Check if a best-known primal solution is returned from DD.
  • Implement it, if not.

execution error

vzavala@krylov64:/opt/DSP/examples/farmer$ julia farmer_run.jl
ERROR: LoadError: LoadError: UndefVarError: dsp not defined
Stacktrace:
[1] freeModel(::Dsp.DspCInterface.DspModel) at /home/vzavala/.julia/v0.6/Dsp/src/DspCInterface.jl:18
[2] JuMP.Model(::Int64) at /home/vzavala/.julia/v0.6/Dsp/src/Dsp.jl:34
[3] include_from_node1(::String) at ./loading.jl:569
[4] include(::String) at ./sysimg.jl:14
[5] include_from_node1(::String) at ./loading.jl:569
[6] include(::String) at ./sysimg.jl:14
[7] process_options(::Base.JLOptions) at ./client.jl:305
[8] _start() at ./client.jl:371
while loading /opt/DSP/examples/farmer/farmer_model.jl, in expression starting on line 23
while loading /opt/DSP/examples/farmer/farmer_run.jl, in expression starting on line 6
error in running finalizer: UndefVarError(var=:dsp)

A required library with BLAS API not found

Dear,

Again try to install everything step by step and this is the problem I presented:

[esnil@localhost DSP]$ mkdir build
[esnil@localhost DSP]$ cd build/
[esnil@localhost build]$ cmake ..
-- The C compiler identification is GNU 4.8.5
-- The CXX compiler identification is GNU 4.8.5
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/g++
-- Check for working CXX compiler: /usr/bin/g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- The system information: Linux-3.10.0-693.21.1.el7.x86_64.x86_64
-- Looking for sgemm_
-- Looking for sgemm_ - not found
-- Looking for include file pthread.h
-- Looking for include file pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
CMake Error at /usr/share/cmake/Modules/FindBLAS.cmake:594 (message):
A required library with BLAS API not found. Please specify library
location.
Call Stack (most recent call first):
CMakeLists.txt:21 (find_package)

-- Configuring incomplete, errors occurred!
See also "/home/esnil/DSP/build/CMakeFiles/CMakeOutput.log".
See also "/home/esnil/DSP/build/CMakeFiles/CMakeError.log".

What I can do?
The lib are in:

[esnil@localhost build]$ ls -l /usr/lib64/liblapack*
lrwxrwxrwx. 1 root root 19 mar 23 13:42 /usr/lib64/liblapacke.so -> liblapacke.so.3.4.2
lrwxrwxrwx. 1 root root 19 mar 21 11:58 /usr/lib64/liblapacke.so.3 -> liblapacke.so.3.4.2
lrwxrwxrwx. 1 root root 19 mar 21 11:58 /usr/lib64/liblapacke.so.3.4 -> liblapacke.so.3.4.2
-rwxr-xr-x. 1 root root 1965960 ago 2 2017 /usr/lib64/liblapacke.so.3.4.2
lrwxrwxrwx. 1 root root 18 mar 23 13:42 /usr/lib64/liblapack.so -> liblapack.so.3.4.2
lrwxrwxrwx. 1 root root 18 mar 21 11:58 /usr/lib64/liblapack.so.3 -> liblapack.so.3.4.2
lrwxrwxrwx. 1 root root 18 mar 21 11:58 /usr/lib64/liblapack.so.3.4 -> liblapack.so.3.4.2
-rwxr-xr-x. 1 root root 5638352 ago 2 2017 /usr/lib64/liblapack.so.3.4.2
[esnil@localhost build]$ ls -l /usr/lib64/libblas*
lrwxrwxrwx. 1 root root 16 mar 23 13:42 /usr/lib64/libblas.so -> libblas.so.3.4.2
lrwxrwxrwx. 1 root root 16 mar 21 11:58 /usr/lib64/libblas.so.3 -> libblas.so.3.4.2
lrwxrwxrwx. 1 root root 16 mar 21 11:58 /usr/lib64/libblas.so.3.4 -> libblas.so.3.4.2
-rwxr-xr-x. 1 root root 364800 ago 2 2017 /usr/lib64/libblas.so.3.4.2

[esnil@localhost build]$ ls -l /usr/local/lib/libblas*
-rw-r--r--. 1 root root 805542 mar 21 15:49 /usr/local/lib/libblas.a
[esnil@localhost build]$ ls -l /usr/local/lib/liblapack*
-rw-r--r--. 1 root root 12372712 mar 21 15:51 /usr/local/lib/liblapack.a

file CMakeError.log

Determining if the function sgemm_ exists failed with the following output:
Change Dir: /home/esnil/DSP/build/CMakeFiles/CMakeTmp

Run Build Command:/usr/bin/gmake "cmTryCompileExec3121734220/fast"
/usr/bin/gmake -f CMakeFiles/cmTryCompileExec3121734220.dir/build.make CMakeFiles/cmTryCompileExec3121734220.dir/build
gmake[1]: se ingresa al directorio /home/esnil/DSP/build/CMakeFiles/CMakeTmp' /usr/bin/cmake -E cmake_progress_report /home/esnil/DSP/build/CMakeFiles/CMakeTmp/CMakeFiles 1 Building C object CMakeFiles/cmTryCompileExec3121734220.dir/CheckFunctionExists.c.o /usr/bin/gcc -DCHECK_FUNCTION_EXISTS=sgemm_ -o CMakeFiles/cmTryCompileExec3121734220.dir/CheckFunctionExists.c.o -c /usr/share/cmake/Modules/CheckFunctionExists.c Linking C executable cmTryCompileExec3121734220 /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec3121734220.dir/link.txt --verbose=1 /usr/bin/gcc -DCHECK_FUNCTION_EXISTS=sgemm_ CMakeFiles/cmTryCompileExec3121734220.dir/CheckFunctionExists.c.o -o cmTryCompileExec3121734220 -rdynamic /usr/local/lib/libblas.a /usr/local/lib/libblas.a(xerbla.f.o): En la función xerbla_':
xerbla.f:(.text+0x79): referencia a _gfortran_st_write' sin definir xerbla.f:(.text+0x90): referencia a _gfortran_string_len_trim' sin definir
xerbla.f:(.text+0xb3): referencia a _gfortran_transfer_character_write' sin definir xerbla.f:(.text+0xd1): referencia a _gfortran_transfer_integer_write' sin definir
xerbla.f:(.text+0xe0): referencia a _gfortran_st_write_done' sin definir xerbla.f:(.text+0xef): referencia a _gfortran_stop_string' sin definir
collect2: error: ld devolvió el estado de salida 1
gmake[1]: *** [cmTryCompileExec3121734220] Error 1
gmake[1]: se sale del directorio `/home/esnil/DSP/build/CMakeFiles/CMakeTmp'
gmake: *** [cmTryCompileExec3121734220/fast] Error 2

Determining if the pthread_create exist failed with the following output:
Change Dir: /home/esnil/DSP/build/CMakeFiles/CMakeTmp

Run Build Command:/usr/bin/gmake "cmTryCompileExec4280868081/fast"
/usr/bin/gmake -f CMakeFiles/cmTryCompileExec4280868081.dir/build.make CMakeFiles/cmTryCompileExec4280868081.dir/build
gmake[1]: se ingresa al directorio /home/esnil/DSP/build/CMakeFiles/CMakeTmp' /usr/bin/cmake -E cmake_progress_report /home/esnil/DSP/build/CMakeFiles/CMakeTmp/CMakeFiles 1 Building C object CMakeFiles/cmTryCompileExec4280868081.dir/CheckSymbolExists.c.o /usr/bin/gcc -o CMakeFiles/cmTryCompileExec4280868081.dir/CheckSymbolExists.c.o -c /home/esnil/DSP/build/CMakeFiles/CMakeTmp/CheckSymbolExists.c Linking C executable cmTryCompileExec4280868081 /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec4280868081.dir/link.txt --verbose=1 /usr/bin/gcc CMakeFiles/cmTryCompileExec4280868081.dir/CheckSymbolExists.c.o -o cmTryCompileExec4280868081 -rdynamic CMakeFiles/cmTryCompileExec4280868081.dir/CheckSymbolExists.c.o: En la función main':
CheckSymbolExists.c:(.text+0x16): referencia a pthread_create' sin definir collect2: error: ld devolvió el estado de salida 1 gmake[1]: *** [cmTryCompileExec4280868081] Error 1 gmake[1]: se sale del directorio /home/esnil/DSP/build/CMakeFiles/CMakeTmp'
gmake: *** [cmTryCompileExec4280868081/fast] Error 2

File /home/esnil/DSP/build/CMakeFiles/CMakeTmp/CheckSymbolExists.c:
/* */
#include <pthread.h>

int main(int argc, char** argv)
{
(void)argv;
#ifndef pthread_create
return ((int*)(&pthread_create))[argc];
#else
(void)argc;
return 0;
#endif
}

Determining if the function pthread_create exists in the pthreads failed with the following output:
Change Dir: /home/esnil/DSP/build/CMakeFiles/CMakeTmp

Run Build Command:/usr/bin/gmake "cmTryCompileExec3343838150/fast"
/usr/bin/gmake -f CMakeFiles/cmTryCompileExec3343838150.dir/build.make CMakeFiles/cmTryCompileExec3343838150.dir/build
gmake[1]: se ingresa al directorio /home/esnil/DSP/build/CMakeFiles/CMakeTmp' /usr/bin/cmake -E cmake_progress_report /home/esnil/DSP/build/CMakeFiles/CMakeTmp/CMakeFiles 1 Building C object CMakeFiles/cmTryCompileExec3343838150.dir/CheckFunctionExists.c.o /usr/bin/gcc -DCHECK_FUNCTION_EXISTS=pthread_create -o CMakeFiles/cmTryCompileExec3343838150.dir/CheckFunctionExists.c.o -c /usr/share/cmake/Modules/CheckFunctionExists.c Linking C executable cmTryCompileExec3343838150 /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec3343838150.dir/link.txt --verbose=1 /usr/bin/gcc -DCHECK_FUNCTION_EXISTS=pthread_create CMakeFiles/cmTryCompileExec3343838150.dir/CheckFunctionExists.c.o -o cmTryCompileExec3343838150 -rdynamic -lpthreads /usr/bin/ld: no se puede encontrar -lpthreads collect2: error: ld devolvió el estado de salida 1 gmake[1]: *** [cmTryCompileExec3343838150] Error 1 gmake[1]: se sale del directorio /home/esnil/DSP/build/CMakeFiles/CMakeTmp'
gmake: *** [cmTryCompileExec3343838150/fast] Error 2

Linking issue during Installation

Hey everyone,

I am currently trying to install the DSP Solver and am stuck at one certain point during the installation. Somehow it is not able to link the cxx executable.

The following is the error message I am getting. Can somebody help me with the issue?

Regards

image

convergence issue

In dev-coin branch, the dual decomposition sometimes stalls at a child branch-and-bound node. Below is the log for the case.

Alps0240I Proc: 1, Part: 2, Cand: 0, Best N: 1077.0236, Best S: 1e+10
Alps0240I Proc: 2, Part: 1, Cand: 2, Best N: 1077.0236, Best S: 1e+10
Appended dynamic columns in the master (69 / 1960 cols).
Generated 24 initial columns. Initial dual bound 1.077023621864e+03
Iteration   0: DW Bound +1.797693e+308, Dual +1.797693e+308, Approx +1.119809e+03, Best Dual +1.077024e+03 (gap Large %), nrows 93, ncols 5454, timing (total 1.20, master 0.00, gencols 1.20), statue 3000
  predicted ascent +4.278544e+01, |p| +7.215900e+02, alpha +8.556083e+01, linerr -8.791729e-04, eps +1.720751e-01, u +1.000000e+03, counter 0
Iteration   1: DW Bound +1.797693e+308, Dual +9.045319e+02, Approx +1.080081e+03, Best Dual +1.077024e+03 (gap Large %), nrows 114, ncols 5454, timing (total 2.55, master 0.18, gencols 2.26), statue 3000
  predicted ascent +3.057856e+00, |p| +2.302012e+02, alpha +5.104757e+00, linerr +1.857955e+02, eps +1.720751e-01, u +1.000000e+03, counter -1
Iteration   2: DW Bound +1.797693e+308, Dual +1.053180e+03, Approx +1.077611e+03, Best Dual +1.077024e+03 (gap Large %), nrows 136, ncols 5454, timing (total 3.81, master 0.41, gencols 3.30), statue 3000
  predicted ascent +5.877911e-01, |p| +1.252422e+02, alpha +9.500119e-01, linerr +2.710747e+01, eps +1.720751e-01, u +1.000000e+03, counter -2
Iteration   3: DW Bound +1.797693e+308, Dual +1.069471e+03, Approx +1.077143e+03, Best Dual +1.077024e+03 (gap Large %), nrows 160, ncols 5454, timing (total 5.31, master 0.65, gencols 4.56), statue 3000
  predicted ascent +1.196354e-01, |p| +5.293496e+01, alpha +1.408368e-01, linerr +7.863126e+00, eps +1.720751e-01, u +1.000000e+03, counter -3
Iteration   4: DW Bound +1.797693e+308, Dual +1.076378e+03, Approx +1.077074e+03, Best Dual +1.077024e+03 (gap Large %), nrows 182, ncols 5454, timing (total 6.70, master 0.91, gencols 5.69), statue 3000
  predicted ascent +5.036083e-02, |p| +5.927577e+01, alpha +7.593918e-02, linerr +7.487997e-01, eps +1.720751e-01, u +1.000000e+03, counter -4
Iteration   5: DW Bound +1.797693e+308, Dual +1.076571e+03, Approx +1.077034e+03, Best Dual +1.077024e+03 (gap Large %), nrows 205, ncols 5454, timing (total 8.38, master 1.20, gencols 7.07), statue 3000
  predicted ascent +9.961186e-03, |p| +7.327926e+01, alpha +1.254935e-02, linerr +5.637253e-01, eps +1.720751e-01, u +1.000000e+04, counter -1
Iteration   6: DW Bound +1.797693e+308, Dual +1.076990e+03, Approx +1.077032e+03, Best Dual +1.077024e+03 (gap Large %), nrows 226, ncols 5454, timing (total 9.38, master 1.52, gencols 7.75), statue 3000
  predicted ascent +8.467914e-03, |p| +6.993434e+01, alpha +1.180155e-02, linerr +4.543581e-02, eps +1.720751e-01, u +1.000000e+04, counter -2
Iteration   7: DW Bound +1.797693e+308, Dual +1.076998e+03, Approx +1.077019e+03, Best Dual +1.077024e+03 (gap Large %), nrows 246, ncols 5454, timing (total 11.05, master 1.77, gencols 9.18), statue 3000
  predicted ascent -4.828621e-03, |p| +1.431351e+02, alpha +9.584318e-04, linerr +3.982326e-02, eps +1.720751e-01, u +1.000000e+04, counter -3
Iteration   8: DW Bound +1.797693e+308, Dual +1.076989e+03, Approx +1.077019e+03, Best Dual +1.077024e+03 (gap Large %), nrows 261, ncols 5454, timing (total 12.59, master 2.08, gencols 10.40), statue 3000
  predicted ascent -4.441549e-03, |p| +1.385345e+02, alpha +9.470962e-04, linerr +5.276829e-02, eps +1.720751e-01, u +1.000000e+04, counter -4
Iteration   9: DW Bound +1.797693e+308, Dual +1.077008e+03, Approx +1.077019e+03, Best Dual +1.077024e+03 (gap Large %), nrows 276, ncols 5454, timing (total 13.99, master 2.34, gencols 11.54), statue 3000
  predicted ascent -4.987199e-03, |p| +1.403058e+02, alpha +4.504306e-04, linerr +2.493867e-02, eps +1.720751e-01, u +1.000000e+04, counter -5
Iteration  10: DW Bound +1.797693e+308, Dual +1.077016e+03, Approx +1.077017e+03, Best Dual +1.077024e+03 (gap Large %), nrows 284, ncols 5454, timing (total 15.42, master 2.73, gencols 12.58), statue 3000
  predicted ascent -6.303033e-03, |p| +1.296214e+02, alpha -1.593408e-03, linerr +9.209464e-03, eps +1.720751e-01, u +1.000000e+04, counter -6
Iteration  11: DW Bound +1.797693e+308, Dual +1.077015e+03, Approx +1.077021e+03, Best Dual +1.077024e+03 (gap Large %), nrows 291, ncols 5454, timing (total 17.10, master 3.08, gencols 13.91), statue 3000
  predicted ascent -2.497849e-03, |p| +7.797403e+01, alpha -6.568394e-04, linerr +1.352330e-02, eps +1.720751e-01, u +1.000000e+04, counter -7
Iteration  12: DW Bound +1.797693e+308, Dual +1.077019e+03, Approx +1.077017e+03, Best Dual +1.077024e+03 (gap Large %), nrows 296, ncols 5454, timing (total 18.43, master 3.49, gencols 14.82), statue 3000
  predicted ascent -7.015085e-03, |p| +1.344580e+02, alpha -1.914140e-03, linerr +6.229382e-03, eps +1.720751e-01, u +1.000000e+04, counter -8
Iteration  13: DW Bound +1.797693e+308, Dual +1.077017e+03, Approx +1.077016e+03, Best Dual +1.077024e+03 (gap Large %), nrows 301, ncols 5454, timing (total 19.95, master 3.74, gencols 16.09), statue 3000
  predicted ascent -7.312220e-03, |p| +1.371101e+02, alpha -2.039247e-03, linerr +7.564085e-03, eps +1.720751e-01, u +1.000000e+04, counter -9
Iteration  14: DW Bound +1.797693e+308, Dual +1.077017e+03, Approx +1.077017e+03, Best Dual +1.077024e+03 (gap Large %), nrows 304, ncols 5454, timing (total 21.88, master 4.09, gencols 17.67), statue 3000
  predicted ascent -6.959003e-03, |p| +1.332285e+02, alpha -2.013508e-03, linerr +7.646251e-03, eps +1.720751e-01, u +1.000000e+04, counter -10
Iteration  15: DW Bound +1.797693e+308, Dual +1.077017e+03, Approx +1.077017e+03, Best Dual +1.077024e+03 (gap Large %), nrows 306, ncols 5454, timing (total 23.32, master 4.44, gencols 18.76), statue 3000
  predicted ascent -6.697979e-03, |p| +1.317165e+02, alpha -1.822873e-03, linerr +7.379023e-03, eps +1.720751e-01, u +1.000000e+04, counter -11
Iteration  16: DW Bound +1.797693e+308, Dual +1.077018e+03, Approx +1.077017e+03, Best Dual +1.077024e+03 (gap Large %), nrows 306, ncols 5454, timing (total 24.66, master 4.75, gencols 19.79), statue 3000
  predicted ascent -6.697979e-03, |p| +1.317165e+02, alpha -1.822873e-03, linerr +7.029601e-03, eps +1.720751e-01, u +1.000000e+04, counter -12
Iteration  17: DW Bound +1.797693e+308, Dual +1.077018e+03, Approx +1.077017e+03, Best Dual +1.077024e+03 (gap Large %), nrows 306, ncols 5454, timing (total 25.81, master 5.07, gencols 20.61), statue 3000
  predicted ascent -6.697979e-03, |p| +1.317165e+02, alpha -1.822873e-03, linerr +7.029601e-03, eps +1.720751e-01, u +1.000000e+04, counter -13
Iteration  18: DW Bound +1.797693e+308, Dual +1.077018e+03, Approx +1.077017e+03, Best Dual +1.077024e+03 (gap Large %), nrows 306, ncols 5454, timing (total 27.27, master 5.33, gencols 21.81), statue 3000
  predicted ascent -6.697979e-03, |p| +1.317165e+02, alpha -1.822873e-03, linerr +7.029601e-03, eps +1.720751e-01, u +1.000000e+04, counter -14
Iteration  19: DW Bound +1.797693e+308, Dual +1.077018e+03, Approx +1.077017e+03, Best Dual +1.077024e+03 (gap Large %), nrows 306, ncols 5454, timing (total 28.66, master 5.68, gencols 22.86), statue 3000
  predicted ascent -6.697979e-03, |p| +1.317165e+02, alpha -1.822873e-03, linerr +7.029601e-03, eps +1.720751e-01, u +1.000000e+04, counter -15
Iteration  20: DW Bound +1.797693e+308, Dual +1.077018e+03, Approx +1.077017e+03, Best Dual +1.077024e+03 (gap Large %), nrows 306, ncols 5454, timing (total 29.98, master 5.95, gencols 23.90), statue 3000
  predicted ascent -6.697979e-03, |p| +1.317165e+02, alpha -1.822873e-03, linerr +7.029601e-03, eps +1.720751e-01, u +1.000000e+04, counter -16
Iteration  21: DW Bound +1.797693e+308, Dual +1.077018e+03, Approx +1.077017e+03, Best Dual +1.077024e+03 (gap Large %), nrows 306, ncols 5454, timing (total 31.70, master 6.30, gencols 25.27), statue 3000
  predicted ascent -6.697979e-03, |p| +1.317165e+02, alpha -1.822873e-03, linerr +7.029601e-03, eps +1.720751e-01, u +1.000000e+04, counter -17
Iteration  22: DW Bound +1.797693e+308, Dual +1.077018e+03, Approx +1.077017e+03, Best Dual +1.077024e+03 (gap Large %), nrows 306, ncols 5454, timing (total 32.83, master 6.64, gencols 26.06), statue 3000
  predicted ascent -6.697979e-03, |p| +1.317165e+02, alpha -1.822873e-03, linerr +7.029601e-03, eps +1.720751e-01, u +1.000000e+04, counter -18
Iteration  23: DW Bound +1.797693e+308, Dual +1.077018e+03, Approx +1.077017e+03, Best Dual +1.077024e+03 (gap Large %), nrows 306, ncols 5454, timing (total 34.33, master 7.00, gencols 27.20), statue 3000
  predicted ascent -6.697979e-03, |p| +1.317165e+02, alpha -1.822873e-03, linerr +7.029601e-03, eps +1.720751e-01, u +1.000000e+04, counter -19
Iteration  24: DW Bound +1.797693e+308, Dual +1.077018e+03, Approx +1.077017e+03, Best Dual +1.077024e+03 (gap Large %), nrows 306, ncols 5454, timing (total 35.69, master 7.36, gencols 28.20), statue 3000
  predicted ascent -6.697979e-03, |p| +1.317165e+02, alpha -1.822873e-03, linerr +7.029601e-03, eps +1.720751e-01, u +1.000000e+04, counter -20
Iteration  25: DW Bound +1.797693e+308, Dual +1.077018e+03, Approx +1.077017e+03, Best Dual +1.077024e+03 (gap Large %), nrows 306, ncols 5454, timing (total 37.01, master 7.70, gencols 29.18), statue 3000
  predicted ascent -6.697979e-03, |p| +1.317165e+02, alpha -1.822873e-03, linerr +7.029601e-03, eps +1.720751e-01, u +1.000000e+04, counter -21
Iteration  26: DW Bound +1.797693e+308, Dual +1.077018e+03, Approx +1.077017e+03, Best Dual +1.077024e+03 (gap Large %), nrows 306, ncols 5454, timing (total 38.27, master 8.00, gencols 30.13), statue 3000
  predicted ascent -6.697979e-03, |p| +1.317165e+02, alpha -1.822873e-03, linerr +7.029601e-03, eps +1.720751e-01, u +1.000000e+04, counter -22
Iteration  27: DW Bound +1.797693e+308, Dual +1.077018e+03, Approx +1.077017e+03, Best Dual +1.077024e+03 (gap Large %), nrows 306, ncols 5454, timing (total 39.67, master 8.31, gencols 31.22), statue 3000
  predicted ascent -6.697979e-03, |p| +1.317165e+02, alpha -1.822873e-03, linerr +7.029601e-03, eps +1.720751e-01, u +1.000000e+04, counter -23
Iteration  28: DW Bound +1.797693e+308, Dual +1.077018e+03, Approx +1.077017e+03, Best Dual +1.077024e+03 (gap Large %), nrows 306, ncols 5454, timing (total 40.90, master 8.61, gencols 32.15), statue 3000
  predicted ascent -6.697979e-03, |p| +1.317165e+02, alpha -1.822873e-03, linerr +7.029601e-03, eps +1.720751e-01, u +1.000000e+04, counter -24
Iteration  29: DW Bound +1.797693e+308, Dual +1.077018e+03, Approx +1.077017e+03, Best Dual +1.077024e+03 (gap Large %), nrows 306, ncols 5454, timing (total 41.90, master 8.88, gencols 32.88), statue 3000
  predicted ascent -6.697979e-03, |p| +1.317165e+02, alpha -1.822873e-03, linerr +7.029601e-03, eps +1.720751e-01, u +1.000000e+04, counter -25
Iteration  30: DW Bound +1.797693e+308, Dual +1.077018e+03, Approx +1.077017e+03, Best Dual +1.077024e+03 (gap Large %), nrows 306, ncols 5454, timing (total 43.08, master 9.24, gencols 33.70), statue 3000
  predicted ascent -6.697979e-03, |p| +1.317165e+02, alpha -1.822873e-03, linerr +7.029601e-03, eps +1.720751e-01, u +1.000000e+04, counter -26

Failed to solve SMPS test problems

Hi Victor and Kibbaek,

I'm having problems trying to solve SMPS test problems in serial and parallel (sslp and dcap libraries) using the default solver settings (:Dual), most of the time I'm getting the following output:

image

After many iterations the duality gap is constant. Futhermore, it also failed to solve the farmer test problem:

image

Sincerely,

Juan

could not load library "libDsp" in Julia

Hi I'm new at StructJump and DSP,

I have just instaled the DSP solver in Ubuntu, I'm trying to solve several examples

when I do

using DSP

I get this error

ERROR: LoadError: compiling error Type: could not load library "libDsp"
libDsp.so: Unable to open shared object file: File or directory does not exist
Stacktrace:
[1] include_from_node1 (:: String) at ./loading.jl:576
[2] eval (:: Module, :: Any) at ./boot.jl:235
[3] _require (:: Symbol) at ./loading.jl:490
[4] require (:: Symbol) at ./loading.jl:405
while loading /home/esnil/.julia/v0.6/Dsp/src/Dsp.jl, in expression starting on line 23

I also made environment variable set (DY) LD_LIBRARY_PATH

export LD_LIBRARY_PATH=$Home/esnil/DSP/lib

I was seeing some of the cases already closed in relation to the MPI vesion using. I show these in the list but I do not know which of them to erase or uninstall

rm: can not delete 'libmpichcxx.so.12': Permission denied
rm: can not delete 'libmpichfort.so.12': Permission denied
rm: can not delete 'libmpich.so.12': Permission denied
rm: can not delete 'libmpicxx.so': Permission denied
rm: can not delete 'libmpif77.so': Permission denied
rm: can not delete 'libmpif90.so': Permission denied
rm: can not delete 'libmpifort.so': Permission denied
rm: can not delete 'libmpi.so': Permission denied
rm: can not delete 'libmpi ++. so': Permission denied

Thank you

remove unused files and directories

There are files and directories that are not really used:

./lib
./parameters
get.essentials.*

and ./experiments does not need to be in master branch.

Also make sure that the documentation is updated.

Compile issue with SCIP version 4 or higher

I have confirmed that DSP cannot be compiled with SCIP version 4 of higher, because of the significant changes made in SOPLEX.

TODO: This can be resolved by updating Coin-Osi or not using SOPLEX.

cmake issues

-- The system information: Linux-4.18.0-25-generic.x86_64
-- A library with BLAS API found.
-- A library with LAPACK API found.
-- Found OpenMP_C: -fopenmp
-- Found OpenMP_CXX: -fopenmp
-- Found OpenMP: TRUE
CMake Error at UserConfig.cmake:13 (message):
Please complete the user-specific settings in UserConfig.cmake
Call Stack (most recent call first):
CMakeLists.txt:28 (include)

-- Configuring incomplete, errors occurred!
See also "/home/ed/anl/DSP/build/CMakeFiles/CMakeOutput.log".
See also "/home/ed/anl/DSP/build/CMakeFiles/CMakeError.log".

Solver/DecDdMasterDSB.cpp not included

Hi,

I get the following error when I try to compile the current master using cmake in the project root folder:

CMake Error at src/CMakeLists.txt:35 (add_library):
Cannot find source file:
Solver/DecDdMasterDSB.cpp

Here is the current list of files in the Solver directory

src/Solver
├── DecDdMaster.h
├── DecDdMasterSubgrad.cpp
├── DecDdMasterSubgrad.h
├── DecDdMpi.cpp
├── DecDdMpi.h
├── DecDdPrimalMaster.cpp
├── DecDdPrimalMaster.h
├── DecDdSub.cpp
├── DecDdSub.h
├── DecDe.cpp
├── DecDe.h
├── DecSolver.cpp
├── DecSolver.h
├── DecTssSolver.h
├── StoParam.h
├── TssBd.cpp
├── TssBd.h
├── TssBdSub.cpp
├── TssBdSub.h
├── TssEval.cpp
├── TssEval.h
├── TssSolver.cpp
└── TssSolver.h

Can you please add this file to the repo? Thanks

Wrong behavior of DW with Gurobi

This is ready to review, but I have some issues here.

In the param_grb.txt, if I set the parameter DW/MASTER/SOLVER to 0 as in the file, I can pass the test. However, if I am using Gurobi to solve DW master problem, i.e., DW/MASTER/SOLVER 4, I could not pass the test. I got the following result

Creating DSP environment
Reading SMPS files: farmer
Coin0001I At line 2 NAME          FARMER
Coin0001I At line 3 ROWS
Coin0001I At line 9 COLUMNS
Coin0001I At line 22 RHS
Coin0001I At line 25 BOUNDS
Coin0001I At line 30 ENDATA
Coin0002I Problem FARMER has 4 rows, 9 columns and 12 elements
Coin0001I At line 2 TIME          FARMER
Coin0001I At line 3 PERIODS       IMPLICIT
Coin0001I At line 6 ENDATA

Coin0001I At line 2 STOCH         FARMER
Coin0001I At line 3 SCENARIOS
Coin0001I At line 16 ENDATA
Read SMPS files: 0.000808 sec.
First stage: 1 rows, 3 cols, 3 integers
Second stage: 3 rows, 6 cols, 0 integers
Number of scenarios: 3
Reading parameter files: /Users/yingqiuzhang/Documents/DSPtest/DSP/test/params_grb.txt
Initializing subproblems ... 
Academic license - for non-commercial use only
Warning: parameter changes on this environment will not affect existing models.
Initializing master problem ... 
Initializing ALPS framework ... 
DwModelSmip constructor.
Created BRANCH_NONANT2 rule.
==  Welcome to the Abstract Library for Parallel Search (ALPS) 
==  Copyright 2000-2017 Lehigh University and others 
==  All Rights Reserved. 
==  Distributed under the Eclipse Public License 1.0 
==  Version: Trunk (unstable) 
==  Build Date: Jun  2 2020
Alps0250I Starting search ...
Generated 3 initial columns. Initial dual bound -1.153999994455e+05
Iteration   0: DW Bound +1.797693e+308, Best Dual -1.154000e+05 (gap Large %), nrows 6, ncols 12, timing (total 0.01, master 0.00, gencols 0.01), statue 3000
Iteration   1: DW Bound +1.797693e+308, Best Dual -1.129653e+05 (gap Large %), nrows 9, ncols 12, timing (total 0.01, master 0.00, gencols 0.01), statue 3000
Iteration   2: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 11, ncols 12, timing (total 0.02, master 0.00, gencols 0.01), statue 3000
Iteration   3: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.02, master 0.00, gencols 0.02), statue 3000
Iteration   4: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.02, master 0.00, gencols 0.02), statue 3000
Iteration   5: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.03, master 0.00, gencols 0.02), statue 3000
Iteration   6: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.03, master 0.00, gencols 0.03), statue 3000
Iteration   7: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.03, master 0.00, gencols 0.03), statue 3000
Iteration   8: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.04, master 0.00, gencols 0.03), statue 3000
Iteration   9: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.04, master 0.00, gencols 0.04), statue 3000
Iteration  10: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.05, master 0.01, gencols 0.04), statue 3000
Iteration  11: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.05, master 0.01, gencols 0.04), statue 3000
Iteration  12: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.06, master 0.01, gencols 0.05), statue 3000
Iteration  13: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.06, master 0.01, gencols 0.05), statue 3000
Iteration  14: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.06, master 0.01, gencols 0.05), statue 3000
Iteration  15: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.07, master 0.01, gencols 0.06), statue 3000
Iteration  16: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.08, master 0.01, gencols 0.07), statue 3000
Iteration  17: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.08, master 0.01, gencols 0.07), statue 3000
Iteration  18: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.08, master 0.01, gencols 0.07), statue 3000
Iteration  19: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.08, master 0.01, gencols 0.07), statue 3000
Iteration  20: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.09, master 0.01, gencols 0.07), statue 3000
Iteration  21: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.09, master 0.01, gencols 0.08), statue 3000
Iteration  22: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.09, master 0.01, gencols 0.08), statue 3000
Iteration  23: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.10, master 0.01, gencols 0.08), statue 3000
Iteration  24: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.10, master 0.01, gencols 0.09), statue 3000
Iteration  25: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.11, master 0.01, gencols 0.09), statue 3000
Iteration  26: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.11, master 0.01, gencols 0.10), statue 3000
Iteration  27: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.12, master 0.01, gencols 0.10), statue 3000
Iteration  28: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.12, master 0.01, gencols 0.11), statue 3000
Iteration  29: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.13, master 0.01, gencols 0.11), statue 3000
Iteration  30: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.13, master 0.01, gencols 0.11), statue 3000
Iteration  31: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.14, master 0.01, gencols 0.12), statue 3000
Iteration  32: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.14, master 0.01, gencols 0.12), statue 3000
Iteration  33: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.14, master 0.01, gencols 0.13), statue 3000
Iteration  34: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.15, master 0.01, gencols 0.13), statue 3000
Iteration  35: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.15, master 0.01, gencols 0.13), statue 3000
Iteration  36: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.15, master 0.01, gencols 0.13), statue 3000
Iteration  37: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.15, master 0.01, gencols 0.14), statue 3000
Iteration  38: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.16, master 0.01, gencols 0.14), statue 3000
Iteration  39: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.16, master 0.01, gencols 0.14), statue 3000
Iteration  40: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.17, master 0.01, gencols 0.15), statue 3000
Iteration  41: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.17, master 0.01, gencols 0.15), statue 3000
Iteration  42: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.17, master 0.01, gencols 0.15), statue 3000
Iteration  43: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.17, master 0.02, gencols 0.16), statue 3000
Iteration  44: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.18, master 0.02, gencols 0.16), statue 3000
Iteration  45: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.18, master 0.02, gencols 0.16), statue 3000
Iteration  46: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.19, master 0.02, gencols 0.17), statue 3000
Iteration  47: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.19, master 0.02, gencols 0.17), statue 3000
Iteration  48: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.20, master 0.02, gencols 0.18), statue 3000
Iteration  49: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.20, master 0.02, gencols 0.18), statue 3000
Iteration  50: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.20, master 0.02, gencols 0.18), statue 3000
Iteration  51: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.21, master 0.02, gencols 0.18), statue 3000
Iteration  52: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.21, master 0.02, gencols 0.19), statue 3000
Iteration  53: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.21, master 0.02, gencols 0.19), statue 3000
Iteration  54: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.22, master 0.02, gencols 0.20), statue 3000
Iteration  55: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.22, master 0.02, gencols 0.20), statue 3000
Iteration  56: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.22, master 0.02, gencols 0.20), statue 3000
Iteration  57: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.23, master 0.02, gencols 0.20), statue 3000
Iteration  58: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.23, master 0.02, gencols 0.21), statue 3000
Iteration  59: DW Bound +1.797693e+308, Best Dual -1.120503e+05 (gap Large %), nrows 12, ncols 12, timing (total 0.24, master 0.02, gencols 0.21), statue 3000
Found new primal solution: -1.072400e+05
[0.240335] curLb 1.79769313e+308, bestUb -1.07239999e+05, bestLb 1.79769313e+308
The current node is fathomed.
Alps0240I Proc: 1, Part: 0, Cand: 0, Best N: 1e+75, Best S: -107240

Alps0208I Search completed.
Alps0260I Best solution found had quality -107240
Alps0264I Number of nodes processed:                1
Alps0267I Number of nodes branched:                 0
Alps0268I Number of nodes pruned before processing: 0
Alps0270I Number of nodes left:                     0
Alps0272I Tree depth: 0
Alps0274I Search CPU time: 0.19 seconds
Alps0278I Search wall-clock time: 0.24 seconds
Time spent in heuristics: 0.00 seconds
Status: 3000
Primal Bound: -107240
Dual Bound  : -107240
Gap (%)     : 0
Deleting DSP environment

So I believe the Gurobi is not solving the master problem correctly.
I was trying to solve this problem for several days. I located where the iterations is printed, it turns out it is in Alps library. From my understanding, all models and solvers' information are passed into Alps library for DW algorithm. More specifically, it is in the rootsearch() function, and the rootsearch() function called the function solveMaster ().
However, I still cannot figure out why I cannot get the optimal solution, why this error happens.

By the way, in the information printed in each iteration, should it be state 3000 instead of statue 3000?

Originally posted by @cheesecakeball in #63 (comment)

Benders doesn't work correctly for all problems

Test on the NEOS-Server with dcap233_200 gives wrong optimal objective value with Benders.
Using SCIP
SCIP Status : problem is solved [optimal solution found]
Solving Time (sec) : 1.77
Solving Nodes : 1 (total of 2 nodes in 2 runs)
Primal Bound : +8.82615182183168e+02 (4 solutions)
Dual Bound : +8.82615182183168e+02
Gap : 0.00 %

while dual decomposition gives the correct result
86 +1.833403e+03 +1.835343e+03 +1.833403e+03 0.00 0.11 6777.5
D 87 +1.833403e+03 +1.835343e+03 +1.833403e+03 0.00 0.11 6796.7
Tr STOP with gap tolerance +4.914982e-05 (0.00%).
Status: 3000
Primal Bound: 1835.34
Dual Bound : 1833.4

So if Benders is not applicable for the dcap test problem, the code should detect that and issue a corresponding message instead of pretending to have solved the problem.

See Neos jobs
#8227684
#8226078
#8228073

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.