apache数学优化的例子

时间:2012-02-03 15:39:15

标签: apache mathematical-optimization solver quadratic nonlinear-optimization

我有一个简单的优化问题,我正在寻找Java软件。

Apache数学优化软件看起来就像我想要的那样,但我找不到适合我需要的文档(这些需求对初学者/非数学专业人士有用!)

有没有人知道一个有效的,简单的例子?

如果有帮助,问题是我想找到max r where

r1 = s1 * m1

r2 = s2 * m2

并且存在一些用于定义变量之间关系的约束和公式。 Excel解算器适用于此问题。我让LPSolve运行得很好,但这个问题需要s和m的乘法,所以我理解LPSolve无法帮助,因为这会使问题变得非线性。

2 个答案:

答案 0 :(得分:1)

我最近将无衍生的非线性约束优化代码COBYLA2移植到Java。由于它没有明确依赖于导数,因此对于较大的问题,该算法可能需要相当多的迭代。尽管如此,您仍然可以使用非线性目标函数和(可能的)非线性约束来表达您的问题。

您可以阅读更多相关信息并从here下载源代码。

答案 1 :(得分:0)

我不知道一个简单的基于Java的NLP求解器。 (我确实在 Apache Math Works 中找到了二次编程(QP)的示例,但由于您要求使用非数学专业示例,因此它不符合条件。)

我有两条建议可以解决你的非线性程序:

1 .. Excel Solver确实能够解决非线性问题。 (不要使用LPSOLVE。)实际上,NLP是Solver中的默认模式。

以下是使用Excel解决NLP的两个链接:示例1 - Step by step Solver walk-through that covers NLP和 示例2 - A General Neural network example in Excel

同样对于Excel,我喜欢Paul Jensen(utexas) ORMM Add-in's 。 他有一个名为 Teach NLP 的模块。他的书中的 Chapter 10 涉及NLP,可以在他的网站上找到。

2 ..如果您打算进行一些数据分析,那么我建议您花几个小时下载并学习R 的基础知识。 R有numerous packages and libraries for optimizationoptim()nlme是解决非线性程序的相关因素。

为了完整起见,我提及 SAS MATLAB CPLEX 作为其他选项。如果您可以访问其中任何一个,那么他们在解决非线性程序方面都做得很好。

希望这些指针有所帮助。