-
-
Notifications
You must be signed in to change notification settings - Fork 490
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
Add didactical implementation of tableau cutting planes to interactive_simplex_method #18805
Comments
comment:1
I think this would be great, but the interface should be very clean not to scare students ;-) Various checks and methods like |
comment:2
We now have an implementation of the Gomory fractional and Gomory mixed integer cutting plane methods. This is on top of an old version of #18742, and we'll later of course rebase it on top of the final version of it. https://github.com/pgxiao/sage/blob/Peggy/src/sage/numerical/interactive_simplex_method.py |
Author: Peijun Xiao |
Dependencies: #18742 |
Commit: |
comment:4
It is now rebased on top of current 'develop'. Needs review. Last 10 new commits:
|
Work Issues: doc format |
comment:5
I hope to take a closer look during upcoming Sage Days, but some picks at formatting for now, http://doc.sagemath.org/html/en/developer/coding_basics.html#documentation-strings has a long example docsctring:
While some of these things are convention/taste/style, others are just plain necessary for documentation and testing frameworks to work. As you can see from the patchbot result, the current version does not build. |
Reviewer: Andrey Novoseltsev |
comment:7
Thanks a lot for taking a look and for your comments. I have revised the docstrings. The current version is supposed to build successfully. New commits: | || | | | |
comment:8
The very first change with all the commits::
|
comment:9
I do not understand the comments here. These examples should demonstrate creation of problems and use of parameters, there was no talk about slack variables, sufficient conditions, and their violation. |
comment:10
After all the work for supporting different styles there are now slack variables hard-coded to be x in generic problems that did not use to even have slack variables?! This is not going to work for such a huge patch. Can you please provide a detailed text overview of what exactly should be achieved by this ticket and the plan of how this will be done? It would be great also to have an incremental set of tickets that add new functionality without affecting much existing code. Looking at the commit messages, I am quite puzzled by the move of |
comment:11
Most definitely wrong while constructing either a dual problem or converting to standard form!!! The current code was used by several hundred students for working on individual assignments (i.e. applied to quite different problems some of which exposed corner cases), so it is relatively bug free and easy to use/consistent. With major changes it may be a good idea to use it for your course, make tweaks that surface during the term, and then work on a patch for changing the standard module. |
comment:12
As a possibility to consider - derive new classes like
that will concentrate just on Gomory's cuts. |
comment:13
Thanks for your initial comments. The individual commits on this branch, if you read them in the right order (from oldest to newest -- the commit with the triangle testcase is the last commit before the commits that clean up docstrings), add features gradually and should be easy to review. Making ELLUL available for both LPDictionary and LPRevisedDictionary is motivated by implementing run_dual_simplex_method as a dictionary method. I think this makes a lot of sense because each of the individual methods that ELLUL stands for are available for both dictionary types. We need this as a subroutine for the cutting plane method. (Perhaps run_simplex_method and run_revised_simplex_method can and should be refactored as well and pushed down to become dictionary methods?) |
comment:27
Separate tickets for separate problems are always better ;-) The sensitivity analysis methods require some careful thinking for fitting in into existing framework where:
It probably makes sense to have something like |
Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:
|
Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:
|
comment:30
rebased on top of 7.2.beta3 |
Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:
|
comment:32
So what exactly is going on here? I thought we have reached an agreement that it would be better to keep the simplex method stuff as is and have a separate class/module for dealing with integer variables via Gomory's cuts, changing problems and running simplex method repeatedly. As it stands now, this is a single huge commit changing a lot of code and injecting integer variables directly into |
comment:33
Nothing much going on. The main author is busy with classes. But please take a look at #20500, split out (and cleaned up) from this huge patch. |
comment:36
Rebased on top of #20500; it seems to work again. |
New commits:
|
Branch pushed to git repo; I updated commit sha1. New commits:
|
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:40
A part of this is now split out as #20559. Will rebase on top of that later. |
comment:41
Development of this, based on pjxiao's Aug 24, 2016 version from https://github.com/pgxiao/sage.git, is now taking place at https://github.com/mkoeppe/sage-numerical-interactive-mip The present ticket should be closed. |
We are working on a didactical implementation of the cutting plane method using tableau cutting planes,
such as Gomory's fractional cut and Gomory's mixed integer cut.
This would work with
InteractiveLP
,LPAbstractDictionary
, etc.(Via #18804, one could run the cutting plane method also on a backend tableau.)
To work correctly with mixed integer problems, one would need to remember which variables are real and which are integer.
Would it be acceptable to add a slot such as
._integer_variables
(a set), and a corresponding accessor.integer_variables
() to the various classes of interactive_simplex_method?Depends on #18742
Depends on #19097
Depends on #20500
CC: @novoselt @yuan-zhou @uduse @pgxiao
Component: numerical
Work Issues: doc format
Author: Peijun Xiao
Branch/Commit: u/pjxiao/add_didactical_implementation_of_tableau_cutting_planes_to_interactive_simplex_method @
e7765c2
Reviewer: Andrey Novoseltsev
Issue created by migration from https://trac.sagemath.org/ticket/18805
The text was updated successfully, but these errors were encountered: