coin-or
Repository for organization-wide discussions and other organization documents.
A solver for mixed integer bilevel programs
License: Eclipse Public License 1.0
Repository for organization-wide discussions and other organization documents.
Hi, I'm using macOS Catalina, and when I build the 1.1.3 version with "--test non", I receive the following error massages in the step of building MibS:
/Users/mac/coinbrew/MibS/src/MibSCutGenerator.cpp:2239:52: error: no member named 'deletePrunedNodes' in 'AlpsParams'; did you mean 'deleteDeadNode'? ...boundModel->AlpsPar()->setEntry(AlpsParams::deletePrunedNodes, true);
/Users/mac/coinbrew/MibS/src/MibSCutGenerator.cpp:2318:40: error: no member named 'getWorkingSubTree' in 'AlpsKnowledgeBrokerSerial' AlpsSubTree *boundProbTree = broker.getWorkingSubTree();
Then the build just failed.
Thank you very much!
Best,
Evans Cai
~/Desktop/MibS/build/bin/mibs -Alps_instance 1.mps -MibS_auxiliaryInfoFile aux.txt
== 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: Mar 27 2018
== Revision Number: 2133
Alps0030I Data file: 1.mps
Coin0001I At line 1 NAME
Coin0001I At line 3 ROWS
Coin0001I At line 25 COLUMNS
Coin0001I At line 125 RHS
Coin0001I At line 141 BOUNDS
Coin0001I At line 157 ENDATA
Coin0002I Problem no_name has 20 rows, 15 columns and 92 elements
LL Data File: aux.txt
Number of LL Variables: 5
Number of UL Variables: 10
Number of LL Variables: 5
Number of UL Rows: 12
Number of LL Rows: 8
Number of integer UL Variables: 10
Number of integer LL Variables: 5
This instance is a pure integer bilevel optimization problem
Since no branching procedure is selected, it is set to 'MibSBranchingStrategyFractional' automatically.
'Pure integer cut' genertor is on.
Branching procedure is set to 'MibSBranchingStrategyFractional'.
'solveSecondLevelWhenXYVarsInt' is true.
'solveSecondLevelWhenLVarsFixed' is true.
'computeBestUBWhenLVarsFixed' is true.
'seenLinkingSolutions' pool is used.
== Bcps Version: Trunk (unstable)
== Bcps Revision Number: 2133
== Blis Version: Trunk (unstable)
Blis0043I Objective coefficients are multiples of 1
Alps0250I Starting search ...
ERROR:Status is unknown or not allowed
from function exploreSubTree
from class AlpsSubTree
It would be very handy if there was an option to write the solution to a file (in a structured manner) instead of printing it to stdout
.
An other error occur in the (final?) step of the installation from the script.
Step executed:
clang++ -DHAVE_CONFIG_H -I. -I/COIN-OR-OptimizationSuite/SYMPHONY/SYMPHONY/include -I../include -I/COIN-OR-OptimizationSuite/SYMPHONY/SYMPHONY/Applications/USER/include -I/COIN-OR-OptimizationSuite/Cgl/Cgl/src -I/COIN-OR-OptimizationSuite/Cgl/Cgl/src/CglAllDifferent -I/COIN-OR-OptimizationSuite/Cgl/Cgl/src/CglClique -I/COIN-OR-OptimizationSuite/Cgl/Cgl/src/CglDuplicateRow -I/COIN-OR-OptimizationSuite/Cgl/Cgl/src/CglFlowCover -I/COIN-OR-OptimizationSuite/Cgl/Cgl/src/CglGMI -I/COIN-OR-OptimizationSuite/Cgl/Cgl/src/CglGomory -I/COIN-OR-OptimizationSuite/Cgl/Cgl/src/CglKnapsackCover -I/COIN-OR-OptimizationSuite/Cgl/Cgl/src/CglLandP -I/COIN-OR-OptimizationSuite/Cgl/Cgl/src/CglLiftAndProject -I/COIN-OR-OptimizationSuite/Cgl/Cgl/src/CglMixedIntegerRounding -I/COIN-OR-OptimizationSuite/Cgl/Cgl/src/CglMixedIntegerRounding2 -I/COIN-OR-OptimizationSuite/Cgl/Cgl/src/CglOddHole -I/COIN-OR-OptimizationSuite/Cgl/Cgl/src/CglPreProcess -I/COIN-OR-OptimizationSuite/Cgl/Cgl/src/CglProbing -I/COIN-OR-OptimizationSuite/Cgl/Cgl/src/CglRedSplit -I/COIN-OR-OptimizationSuite/Cgl/Cgl/src/CglRedSplit2 -I/COIN-OR-OptimizationSuite/Cgl/Cgl/src/CglResidualCapacity -I/COIN-OR-OptimizationSuite/Cgl/Cgl/src/CglSimpleRounding -I/COIN-OR-OptimizationSuite/Cgl/Cgl/src/CglTwomir -I/COIN-OR-OptimizationSuite/Cgl/Cgl/src/CglZeroHalf -I/COIN-OR-OptimizationSuite/3/Cgl/src -I/COIN-OR-OptimizationSuite/Clp/Clp/src/OsiClp -I/COIN-OR-OptimizationSuite/Clp/Clp/src -I/COIN-OR-OptimizationSuite/3/Clp/src -I/COIN-OR-OptimizationSuite/Osi/Osi/src/Osi -I/COIN-OR-OptimizationSuite/3/Osi/src/Osi -I/COIN-OR-OptimizationSuite/CoinUtils/CoinUtils/src -I/COIN-OR-OptimizationSuite/3/CoinUtils/src -I/COIN-OR-OptimizationSuite/Clp/Clp/src/OsiClp -I/COIN-OR-OptimizationSuite/Clp/Clp/src -I/COIN-OR-OptimizationSuite/3/Clp/src -I/COIN-OR-OptimizationSuite/Osi/Osi/src/Osi -I/COIN-OR-OptimizationSuite/3/Osi/src/Osi -I/COIN-OR-OptimizationSuite/CoinUtils/CoinUtils/src -I/COIN-OR-OptimizationSuite/3/CoinUtils/src -I/COIN-OR-OptimizationSuite/Osi/Osi/src/Osi -I/COIN-OR-OptimizationSuite/3/Osi/src/Osi -I/COIN-OR-OptimizationSuite/CoinUtils/CoinUtils/src -I/COIN-OR-OptimizationSuite/3/CoinUtils/src -D__OSI_CLP__ -DSENSITIVITY_ANALYSIS -DUSE_CGL_CUTS -DSIGHANDLER -DHAS_RANDOM -DHAS_SRANDOM -D__NONE__ -D__DARWIN -DCOMPILE_IN_CG -DCOMPILE_IN_CP -DCOMPILE_IN_LP -DCOMPILE_IN_TM -O3 -pipe -DNDEBUG -Wparentheses -Wreturn-type -Wcast-qual -Wall -Wpointer-arith -Wwrite-strings -Wconversion -Wno-unknown-pragmas -Wno-long-long -DSYMPHONY_BUILD -c COIN-OR-OptimizationSuite/SYMPHONY/SYMPHONY/src/LP/lp_genfunc.c -fno-common -DPIC -o .libs/libSym_la-lp_genfunc.o
Last lines with the error:
COIN-OR-OptimizationSuite/CoinUtils/CoinUtils/src/CoinPackedVector.hpp:252:6: note:
in instantiation of function template specialization 'CoinSort_3<double,
int, int, CoinFirstLess_3<double, int, int> >' requested here
{ CoinSort_3(elements_, elements_ + nElements_, origIndices_, indices_,
^
87 warnings and 1 error generated.
make[1]: *** [libSym_la-lp_genfunc.lo] Error 1
make: *** [all-recursive] Error 1
I couldn't find any similar error in the logs, could that be a missing dependency?
I found this very weird behavior on one instance that I wanted to share with you.
When I solve the problem with the auxiliary file presenting the follower as maximization (problem.mps paired with followerasMax.aux), I get an output which I am pretty sure is not bilevel feasible.
Now if I solve the same problem but with the auxiliary file presenting the follower as minimization (testProblem.mps paired with followerasMin.aux), then I get an optimal solution to the problem. Now the only difference between the auxiliary files is OS=1 vs OS=-1 and the same exact coefficients but multiplied by (-1).
Thanks in advance,
Leo
Hi,
I downloaded the Mibs package, and when trying to install on my computer (mac os X) I have the error message :
BuildTools/get.dependencies.sh: line 656: declare: -A: invalid option
Any ideas please about the issue?
Thanks
Hi,
I am testing this solver for my research models. However, I met with the following malloc error:
== Welcome to the Abstract Library for Parallel Search (ALPS)
== Copyright 2000-2019 Lehigh University and others
== All Rights Reserved.
== Distributed under the Eclipse Public License 1.0
== Version: 1.5
== Build Date: Jun 19 2021
Alps0030I Data file: /Users/mac/Downloads/MODEL.mps
Coin0001I At line 1 NAME
Coin0001I At line 2 ROWS
Coin0001I At line 38 COLUMNS
Coin0001I At line 443 RHS
Coin0001I At line 478 BOUNDS
Coin0001I At line 483 ENDATA
Coin0002I Problem no_name has 34 rows, 91 columns and 341 elements
mibs(72078,0x1109cedc0) malloc: Incorrect checksum for freed object 0x7fb22f40ae78: probably modified after being freed.
Corrupt value: 0x2800000027
mibs(72078,0x1109cedc0) malloc: *** set a breakpoint in malloc_error_break to debug
Abort trap: 6
I wonder if it is because the aux or mps file are not matching properly or it is because of other problems?
Thanks very much for your help!
Best,
Evans Cai
Hey Guys,
I am receiving the following error All linking variables should be discrete for a bi-level problem with this structure:
min x_0 + x_1
x_0, x_1 in Z_+
2 <= x_0, x_1 <= 5
y in argmin cy
s.t. x_0 + A_1y <= b_1
x_1 + A_2y <= b_2
A_3y <= b_3
x, y in Z_+^2 * R_+^n
Presumably, x_0, x_1 are linking and they are discrete. What is missing here? Thanks in advance.
Dears,
When I installed MibS, I realized that to solve a mixed integer bilevel linear optimization problem, we must provide both an MPS file and an auxiliary information file that specifies which variables and constraints are associated with the each level.
I would like to know if there is an API (C, C++, Java, etc.) for MibS. If not, how to generate the two files (mps and txt) when we deal with an instance of a problem with thousands or even millions of variables and constraints ?
Best regards,
Kaba
Innovation and Technology Transfer engineer Inria Lille INOCS
I'm running the latest version of MibS on Ubuntu 15.10 to check some properties of small graphs that I express as pure bilevel integer programs. In default settings my instances crash with the aforementioned message.
GraphPebblingInstances.zip
After having the problem with infeasibilities in our bilevel program and posting it on Github (issue #45) you uploaded a new version which fixed this problem for the instance we supplied. We continued working on our model and unfortunately encountered a similar problem with a new instance.
Again, we had a upper level constraint of the form
d <= 0
with a lower level variable d and a lower level problem of the form
d = {max d , s.t. ...}
We tested an infeasible instance (mpsFile_original, auxFile_original). MibS deemed the instance to be feasibly solvable and put out a solution to the problem with d = 0 and corresponding feasible assignments of other upper level and lower level variables which however would lead to the lower level problem not being maximized (log_original). When we fixed the upper level variables to the MibS output and ran MibS again on this instance (mpsFile_fixed_0), MibS correctly detected the infeasibility of the problem. Also, when we changed the upper level constraint to
d <= 1000,
MibS found a solution to the lower level with a positive value (which now of course is feasible for the whole problem), although this was not detected before (log_fixed_1000). As our model essentially has several lower levels, there are several lower level variables that should make the upper level infeasible:
y1,y2,y4,y5,y8. All of these have positive values and should therefore violate the respective <= 0 constraint (Dr14, DR17, DR4, DR6, DR9) in the upper level.
Unfortunately, we were not able to recreate this problem with a small toy example like the last time, so I am not sure whether it is easy to debug without deeper understanding of our BLP model. We checked our model several times and are quite certain that the results should differ from the solution by MibS. Should you need any info on the model or if you detect anything wrong with it which is problematic for MibS, we are happy to further discuss the issue.
Thank you once again for your great work on MibS. We are grateful for any help you can offer on this issue.
Kind regards,
Richard Littmann
auxFile_fixed_0.txt
auxFile_fixed_1000.txt
auxFile_original.txt
log_fixed_1000.txt
log_original.txt
mpsFile_fixed_0.txt
mpsFile_fixed_1000.txt
mpsFile_original.txt
Hi,
I want to use CPLEX instead of SYMPHONY, I changed the config file, but I can't link the solver.
Do you know what needs to be changed to link the solver?
Thank you.
Hi,
For the display of the solution,
1 since I have defined 192 variables, but the solution only gave part of the variable values, and its order is not like they appeared in the .mps file(they all show as x[...] and y[...]), and I don't know how to match these x[...] and y[...] with the variables that I defined
2 also, what about the lower level objective value, I assume I did not see it in the solution.
Thanks a lot and have a nice day!
Best,
Yaheng
When installing on OSX:
./coin.install.sh build --no-prompt --main-proj=MibS CC=gcc-5 CXX=g++-5
./coin.install.sh: line 920: declare: -A: invalid option
Same error appears when running just ./coin.install.sh
or ./coin.install.sh fetch build --no-prompt --main-proj=MibS
Solving any pure LP bilevel program causes MibS to go into an infinite loop with "all linking variables should be discrete."
Hey Guys,
I think the first coefficient of the second lower-constraint in your example is -2. Thanks.
Dears,
I think the optimal solution for the general example in the documentation for creating the MPS and Auxiliary file found here is incorrect. The solution C0 = 10 and C1 = 5 does not fulfills the lower level constraint 2*C0 - C1 <= 7. MibS optimal solution here is C0 = 6 and C1 = 5. Much Thanks!
Best Regards,
Gennesaret Tjusila
Hi,
When I executed the MibS, I got the following error message. The platform is MacOS X and paths are already added to .bashrc. When I check the lib, I only find libCgl.0.dylib file. I wonder what can I do to solve this problem?
dyld: Library not loaded: /Users/luyu/Desktop/MibS/lib/libCgl.1.dylib
Referenced from: /Users/luyu/Desktop/MibS/bin/mibs
Reason: image not found
Abort trap: 6
Thank you very much!
Best,
Lu
I am trying to understand the data file format for specifying the lower level problem.
When I look at example milp_10_20_50_2310.txt, I see that the first LR entry is row 0. However, row 0 is the objective for the HPR. So how does MibS interpret row 0 as a constraint in the lower level problem?
I get the error below when trying to solve my interdiction model. Since my model does not have a binary for each follower variable (all continuous), I am not labeling it as an interdiction model as described here: http://coral.ise.lehigh.edu/wp-content/uploads/2016/02/MibS_inputFile.pdf.
The leader's objective is -y while the follower's objective (to be minimized) is y where y is a continuous follower variable. All follower variables are continuous, but only some have associated leader binary variables. The leader has all binary variables, a knapsack constraint, and additional constraints only involving leader binary variables.
Since y is continuous and appears in the leader's objective, can this problem be solved through MibS?
We are running the latest version of MibS on Windows 10 to model a bilevel optimization problem in the field of auction design.
It would be great if you could help us with a problem which came up. In our model, lower level variables appear in upper level constraints and an optimal solution of the lower level can create infeasibility in the upper level. We are not sure whether this problem conflicts with the definition of bilevel programs or with the models you allow in your algorithm.
Consider the following model as a simple example:
min -x
s.t. y <= 0
y \in argmax {y, s.t. y <= 2, y \in R}
5 >= x >= 0; x \in Z
Here, the only solution which fulfills the second constraint (maximizing y with the single constraint y <= 2) is y = 2, which in turn leads to infeasibility in the upper level in combination with the first constraint (y <= 0). Therefore, as we understand it, the full model is infeasible. Of course, we can make the model more sophisticated, allowing for the lower level variable to not appear alone in an upper level constraint. However, using MibS on this model we get a ‘feasible’ solution with x = 5; y = 0:
We are sorry if we are missing something very fundamental here, like that the upper level constraints need to be respected in the lower level program – however to us the definitions did not force this.
We would be very grateful if you could help us with this problem. Please find attached the input files we use and the complete log.
Best regards,
Richard Littmann
Dear,
I am using MibS solver to tackle my Mixed Integer Bilevel model. However, when I run the model I got strange compiling error.
mibs: malloc.c:2401: sysmalloc: Assertion `(old_top == initial_top (av) && old_size == 0) || ((unsigned long) (old_size) >= MINSIZE && prev_inuse (old_top) && ((unsigned long) old_end & (pagesize - 1)) == 0)' failed.
Abandon (core dumped)
Please can someone help me to know what is wrong!
I attach output, mps and txt files.
Best regards,
Kaba
output.txt
bilevelModel.txt
bilevelModel.mps.txt
Hi
The steps to Configure, Build, Run and Install for Blas 1.4, Lapack 1.5 are completed.
There is an error in Running CoinUtils as follows. Any idea to solve this issue and move further? Thanks in advance.
##################################################
##################################################
Testing CoinFinite ... finite value: ok; infinite value: ok.
Testing CoinIsnan ... finite value: ok; NaN value: ok.
Testing CoinModel
Assertion failed: numErr== 0, file C:/MSYS64/home/DELL/coinbrew/CoinUtils/CoinUtils/test/CoinModelTest.cpp, line 447
make[1]: *** [Makefile:600: test] Error 3
make: *** [Makefile:819: test] Error 2
Build failed, see error output above
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.