如何选择整数线性规划求解器?
我是整数线性规划的新手。 我计划使用整数线性规划求解器来解决我的组合优化问题。 我更熟悉 IDE 上的 C++/面向对象编程。 现在,我大部分时间都使用 NetBeans 和 Cygwin 来编写应用程序。
请问是否有适合我的易于使用的 ILP 求解器? 或者这取决于我想解决的问题?我正在尝试做一些资源映射优化。如果需要任何进一步的信息,请告诉我。
非常感谢你,卡西。
I am newbie for integer linear programming.
I plan to use a integer linear programming solver to solve my combinatorial optimization problem.
I am more familiar with C++/object oriented programming on an IDE.
Now I am using NetBeans with Cygwin to write my applications most of time.
May I ask if there is an easy use ILP solver for me?
Or it depends on the problem I want to solve ? I am trying to do some resources mapping optimization. Please let me know if any further information is required.
Thank you very much, Cassie.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
如果您想要的是线性混合整数规划,那么我会指出硬币或(特别是模块 CBC)。它是免费软件(如语音)
您可以将其与特定语言一起使用,也可以使用 C++。
如果您的数据需要大量预处理,或者您想亲自参与求解器(选择枢轴点、列生成、添加切割等...),请使用 C++。
如果您想将求解器用作黑匣子,请使用集成语言(您只对结果感兴趣,并且问题很简单或经典,无需调整即可解决)。
但在标签中您提到了遗传算法和图形算法。也许你应该从更好地解决你的问题开始......
对于图表,我非常喜欢 Boost::Graph
If what you want is linear mixed integer programming, then I would point to Coin-OR (and specifically to the module CBC). It's Free software (as speech)
You can either use it with a specific language, or use C++.
Use C++ if you data requires lots of preprocessing, or if you want to put your hands into the solver (choosing pivot points, column generation, adding cuts and so on...).
Use the integrated language if you want to use the solver as a black box (you're just interested in the result and the problem is easy or classic enough to be solved without tweaking).
But in the tags you mention genetic algorithms and graphs algorithms. Maybe you should start by better defing your problem...
For graphs I like a lot Boost::Graph
我已经在几个上使用了 lp_solve ( http://lpsolve.sourceforge.net/5.5/ )成功的场合。它很成熟,功能丰富,并且有非常详细的文档,如果您的线性编程技能还很生疏,它还可以提供很多好的建议。整数线性规划不仅仅是一个附加功能,而且是这个包中重点强调的。
刚刚注意到你说你是这方面的“新手”。好吧,那么我强烈推荐这个包,因为文档中充满了示例和温和的教程。我尝试过的其他软件包往往会假设很多用户。
I have used lp_solve ( http://lpsolve.sourceforge.net/5.5/ ) on a couple of occasions with success. It is mature, feature rich and is extremely well documented with lots of good advice if your linear programming skills are rusty. The integer linear programming is not a just an add on but is strongly emphasized with this package.
Just noticed that you say you are a 'newbie' at this. Well, then I strongly recommend this package since the documentation is full of examples and gentle tutorials. Other packages I have tried tend to assume a lot of the user.
对于大问题,您可以查看AMPL,它是一个具有许多后端求解器可用。它作为一个单独的进程运行; C++ 将用于写出输入数据。
然后你可以尝试各种最先进的求解器。
For large problems, you might look at AMPL, which is an optimization interpreter with many backend solvers available. It runs as a separate process; C++ would be used to write out the input data.
Then you could try various state-of-the-art solvers.
查看 GLPK。附带一些示例,并与 AMPL 的子集一起使用,尽管恕我直言,当您坚持使用 C/C++ 进行模型设置时效果最好。也能应对相当大的模型。
Look into GLPK. Comes with a few examples, and works with a subset of AMPL, although IMHO works best when you stick to C/C++ for model setup. Copes with pretty big models too.
维基百科的线性编程涵盖了一些不同的算法,您可以深入研究一下哪些算法可以为您提供最好的服务。这有帮助吗?还是您想要更具体的东西?
Linear Programming from Wikipedia covers a few different algorithms that you could do some digging into to see which may work best for you. Does that help or were you wanting something more specific?