我应该用什么样的算法来解决这个问题?
Ore is blended in a particular ratio to produce metal with the desired quality characteristics. The ore is blended in batches of 5, the batches are to be mixed in a particular ratio that will maximize ore utilization as well as produce an output of the desired quality.
1. A batch of ore contains 30 or more minerals
2. The percentage proportion of each mineral within a batch is known
3. Batches blended with each other should produce a product meeting a criteria such as
0.5 < m1 < 0.52
0.2 < m2 < 0.21
a3 < m3 < b3
....
....
a30 < m30 < b30
where m1, m2, m3 ... m30 are percentage presence of ore in the final product and a1,a2...a30;b1,b2...b30 are tolerable limits within which quality is maintained
4. In what order should n batches (n <= 20) be processed to maximize ore output
5. In what ratio should the batches be blended so that quality is maintained
对于有人来说,这听起来足够主流,但它超出了我有限的算法知识。任何解决这个的指针都非常感激。
答案 0 :(得分:2)
这是对混合整数编程(MIP)的渴望,它位于线性编程(LP)之上。 LP部分(实际变量上的线性不等式)通常使用单纯形算法求解。 MIP部分处理整数约束(例如,什么顺序最好?)。这些都不是你想要从头开始实现的东西!在这一领域已有数十年的发展历史,并提供一流的解决方案。考虑CPLEX用于商业解决方案或SOPLEX用于免费解决方案。如果您是.NET类型,请查看Microsoft的Solver Foundation。
希望这有帮助。
答案 1 :(得分:1)
我认为你应该开始关注linear programming。有很多方法可以解决这些问题,Matlab或Mathematica等通用系统也有这些功能,或者你可以用自己喜欢的语言编写自己的代码(如果你感觉很幸运)。
您的问题严格属于线性并不完全清楚,因此您可能需要阅读该主题以外的内容,但这是开始了解优化问题的好地方。
答案 2 :(得分:0)
Simplex方法可以在这里工作(以最佳方式分配资源的方法),
考虑一下: http://www.phpsimplex.com/en/simplex_method_example.htm
和这个(在线示例): http://www.zweigmedia.com/RealWorld/tutorialsf4/framesSimplex.html
或只是使用一些谷歌: - )