-
Notifications
You must be signed in to change notification settings - Fork 42
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix isinteger
+ continuous columns if sp has only continuous vars
#551
Conversation
Codecov Report
@@ Coverage Diff @@
## master #551 +/- ##
=======================================
Coverage 86.14% 86.14%
=======================================
Files 47 47
Lines 4685 4685
=======================================
Hits 4036 4036
Misses 649 649
Continue to review full report at Codecov.
|
Guillaume, determination of solution integrality is quite a complex issue. In principle, you should impose integrality constraints only on original variables, but not on columns. In general, columns should be continuous variables. As I remember, the only special case when you can declare columns as integer is when the corresponding subproblem has only binary variables. In other cases (some variables are general integer or continuous), columns should be continuous. Also, in the restricted master heuristic, you should add subproblem representative variables which are integer, even if they are implicit during column generation, and put integrality restrictions on them. Also the constraints linking subproblem representative variables with columns should be added. Again, the only special case when you can just put integrality constraints on columns is when all subproblem variables are binary. Additional complication is to obtain disaggregated solution from a solution which is integer in original variables. In principle, when you verify whether a solution is integer, you should obtain this disaggregated solution. Only if you can do it, the solution is indeed integer. As I remember, one should look at the paper of François for a general (lexicographic) algorithm which obtains a disaggregated solution:
I think François can give a more precise reference. |
Thanks for the feedback ! Yes I took a look at this paper last week after I saw the solution returned by the bin-packing (#547, you can see the disaggregated solution in the second edition of the main message by @laradicp ) The idea here was to set the perennial kind of master variables to integer if the subproblem has integer variables, and continuous otherwise. When I implemented this change, I indeed didn't realize that Besides checking the integrality of the aggregated solutions, we'll have to check the integrality of disaggregated solutions when the subproblem has upper multiplicity greater than 1. Ideally, we would need to implement François' algorithm, but in the meantime, we can just check if master variables with integer perennial kind have integer values (at the price of missing some feasible solutions). It looks like the concept of "integer column" is something very specific that I'm not familiar with. So, the main issue here is how to not enforce integrality of columns from subproblem that has no integer variables. You suggest to make all sp representative variables active with integrality only on those which are integer and create a constraint for each of these variables to link them with columns. Did I understand ? Is it good for performances ? Is it worth it to keep the integer perennial kind for only the "integer column" case you described ? Is it good for performances ? |
I accept this merge request. This version should work ok for cases when subproblem variables are continuous or binary. For the restricted master heuristic, the current behaviour is ok, as we are only restricting feasible solutions (we may miss some integer solutions in the case when subproblem variables are general integer but it is ok). My suggestion to add subproblem representative variables which are integer to the restricted master heuristic would improve efficiency of the restricted master heuristic in some cases, but this change is optional. The current issue that in some cases a solution may be declared integer (because all original variables have integer values), but no disaggregated integer solution exist. This should be addressed in the future. As I understand, this may happen only if there are general integer subproblem variables and subproblems multiplicity is greater than one (although I am not 100% sure). |
fix part of #550