Jam*_*den 5 java algorithm constraints linear-programming
假设我想构建一个函数,该函数可以在一周内正确安排三个总线驱动程序,并具有以下约束条件:
会用什么样的算法来解决这样的问题?
我浏览了几个网站,发现了这些:
1) Backtracking algorithm (brute force)
2) Genetic algorithm
3) Constraint programming
Run Code Online (Sandbox Code Playgroud)
坦率地说,这些对我来说都是"文化冲击",因为我过去从未学过任何类型的线性编程.我想知道两件事:
1)哪种算法最适合上述情况?
2)解决这个问题最简单的算法是什么?
3)请建议我可以研究的任何其他算法来解决上述问题.
首先,这是一个离散优化问题,因此线性规划可能不是一个好主意(因为它用于连续优化)。您仍然可以使用线性编程来解决这个问题(它将成为整数或混合整数程序),但是这是指数级听到的(如果您的输入大小很小,那么就可以了)。
现在回到比较:
蛮力:最糟糕。
遗传:不能保证最优性。该算法可能无法解决问题。
约束编程:在这种情况下(以及在许多离散优化问题中)绝对是最好的。IBM ILOG CPLEX 求解器中有一个超级高效的实现(但它不是免费的,但对于学术界或测试来说是免费的)。
| 归档时间: |
|
| 查看次数: |
1052 次 |
| 最近记录: |