1

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

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

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

如果有帮助,问题是我想找到最大 r

r1 = s1 * m1

r2 = s2 * m2

并且有一些约束和公式来定义变量之间的关系。Excel Solver 可以很好地解决这个问题。我让 LPSolve 工作得很好,但是这个问题需要 s 和 m 的乘法,所以我理解 LPSolve 无能为力,因为这会使问题成为非线性问题。

4

2 回答 2

1

我最近将无导数非线性约束优化代码 COBYLA2 移植到 Java。由于它不明确依赖导数,因此该算法可能需要相当多的迭代来解决更大的问题。尽管如此,您可以使用非线性目标函数和(可能的)非线性约束来制定您的问题。

您可以阅读有关它的更多信息并从此处下载源代码。

于 2012-06-14T08:42:28.480 回答
0

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

我有两个建议给你解决你的非线性程序:

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

以下是使用 Excel 解决 NLP 的两个链接:示例 1 -涵盖 NLP 的逐步求解器演练和示例 2 - Excel 中的一般神经网络示例

同样对于 Excel,我喜欢 Paul Jensen 的 (utexas) ORMM Add-in's . 他有一个名为Teach NLP的模块。他的书第 10 章涉及 NLP,可从他的网站获得。

2.. 如果你要做一些数据分析,那么我建议你花几个小时下载和学习 R 的基础知识。R 有许多用于优化的包和库optim()并且与nlme解决非线性程序相关。

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

希望这些指点有所帮助。

于 2012-02-04T18:04:53.923 回答