hlefebvr / idol Goto Github PK
View Code? Open in Web Editor NEWThe Mathematical Optimization Framework
Home Page: https://hlefebvr.github.io/idol
License: GNU General Public License v3.0
The Mathematical Optimization Framework
Home Page: https://hlefebvr.github.io/idol
License: GNU General Public License v3.0
Improvement heuristics
Currently, columns are not loaded from the pool.
For each sub problem, check if columns agree with the bounds of parent and if they agree with the SP model constraints.
Current issues
Is your feature request related to a problem? Please describe.
Currently, all nodes are solved to optimality when they are created. Yet, this is not necessary for correctness. We only need to solve the node optimally if it is selected for branching.
Describe the solution you'd like
Nodes should be solved partially according to some criterion (?) and solved only when needed.
Describe alternatives you've considered
.
Additional context
.
The idea is to deal only with Model-s and to get rid of the esoteric concepts of BlockModel, and thus,
of AbstractModel.
Reason for introducing BlockModel (back then): When introducing column generation, a method was needed to describe the decomposable structure of the problem. Since the branch-and-bound algorithm was written in terms of "models", the idea was to embed the structure within the Model. Doing so led to the creation of BlockModel which embedded the sub-problem's models and their generation patterns. The master problem was then implicitly what the B&B algorithm considered.
Issue:
Proposed solution: The idea would be to deal only with Model-s and to directly embed the structure of the problem inside the backend of the model. We would create two optimizers for doing column generation and dantzig-wolfe decomposition.
Advantages:
Describe the bug
If a problem is solved by branch-and-price and lazy cuts are added in the callback, the lazy cut are not generated in the callback and a potentially wrong solution is submitted.
Expected behavior
The callback should you the same optimizer as the original problem but disabling column generation with master problem being integer.
Divers have draft in dev branch already.
Implement "auto-adaptive" scheme from Automation and Combination of Linear-Programming Based Stabilization Techniques in Column Generation, A. Pessoa, R. Sadykov, E. Uchoa, and F. Vanderbeck, INFORMS Journal on Computing (2018), 30:2, 339-360.
It would be nice to have branching with priorities implemented.
Skeleton:
BranchAndBound()
.with_branching_rule(
BranchingWithPriority()
.add_branching_rule(MostInfeasible::Strategy<NodeVarInfo>(x.begin(), x.end()))
.add_branching_rule(MostInfeasible::Strategy<NodeVarInfo>(y.begin(), y.end()))
)
We should allow to copy optimizer factory. They are generally lightweight objects and this would allow for optimizer "arithmetic".
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.