Skip to content
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

Implementation for Large-scale MILP problem #103

Open
yongkyung-oh opened this issue Jul 23, 2019 · 3 comments
Open

Implementation for Large-scale MILP problem #103

yongkyung-oh opened this issue Jul 23, 2019 · 3 comments
Assignees
Labels
information Information is requested

Comments

@yongkyung-oh
Copy link

I'm working on a large scale problem written in mps format. (100k variables and constraints)

At this moment, I manually decompose the original problem using python-mip module and solve by using cbc. (Partially, Lagrangian decomposition is implemented)

Is there any suggestion for using DIP instead of cbc or the current approach? How can I adjust DIP settings for problem solving? (ex. max gap, time limit, decomposition setup like linkage constraints)

@tkralphs tkralphs added the information Information is requested label Jul 27, 2019
@tkralphs
Copy link
Member

DIP can automatically decompose the problem and apply decomposition maethods, saving you the manual steps you are describing. If you want to use a modeling language, Dip has an associated Python-based modeling language called DipPy that is an extension of PuLP. You can specify the block structure directly in the modeling language. Some (slightly outdated) documentation is available here.

If you prefer python-mip or something lower level, you can output an MPS file and feed it into Dip. It reads MPS files, along with an auxiliary file that indicates the block structure, as follows:

./dip  --BlockFileFormat List --Instance /FilePath/ABC.mps  --BlockFile /FilePath/ABC.block

Sorry for the lack of detailed documentation, but you should be able to discern the structure from looking at the files here.

Of course, there is much, much more you can do with Dip, but this should get you started. Let me know what other questions you have!

@tkralphs tkralphs assigned tkralphs and unassigned tkralphs Jul 30, 2019
@yongkyung-oh
Copy link
Author

My current approach can generate several mps files. How can I set-up the running time and tolerance in the command? (i.e. time limit, tolerance and so on)

@tkralphs
Copy link
Member

tkralphs commented Aug 8, 2019

Sorry that there isn't better documentation. There is a long list of parameters that can be set either in a parameter file or on the command line. The parameters are mostly listed here:

https://github.com/coin-or/Dip/blob/master/Dip/src/DecompParam.h

To see how to set them in a parameter file, you can look at the various parameter files in the examples here (especially MILPBlock):

https://github.com/coin-or/Dip/tree/master/Dip/examples

To see how to call Dip with a paramter file, see the bash script here:

https://github.com/coin-or/Dip/blob/master/Dip/examples/MILPBlock/test.sh.in

If you have more questions after looking over those links, let me know.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
information Information is requested
Projects
None yet
Development

No branches or pull requests

2 participants