多维优化/寻根/某事的算法
题
我有五个值:A、B、C、D 和 E。
给定约束 A + B + C + D + E = 1 和五个函数 F(A)、F(B)、F(C)、F(D)、F(E),我需要通过以下方式求解 A E 使得 F(A) = F(B) = F(C) = F(D) = F(E)。
为此使用的最佳算法/方法是什么?我不在乎是否必须自己写,我只是想知道在哪里看。
编辑:这些是非线性函数。除此之外,无法对它们进行表征。其中一些最终可能会从数据表中插入。
其他提示
至于其他人已经发布,我们的确需要对功能的一些详细信息。然而,鉴于这一点,我们还可以尝试解决一个标准的非线性规划工具箱下面的放松。
分钟ķ结果 ST。结果 A + B + C + d + E = 1,点击 F1(A) - K = 0,点击 F2(B) - K = 0,点击 F3(C)-k = 0,点击 F4(d) - K = 0,点击 F5(E)-k = 0
现在我们可以在我们希望的任何方式解决这个问题,如罚方法
分钟K +亩*总和(FI(X_I) - K)^ 2 ST结果 A + B + C + d + E = 1
或一个直接的SQP或内点法。
更多细节及我可以帮助建议作为一个好方法。
米
的功能都单调它们的参数增加。除此之外,他们不能定性。该工作的方法被证明是:
1)开始用A = B = C = d = E = 1/5,点击 2)计算F1(A)至F5(E),并重新计算从A到E,使得每个功能等于该总和由5(平均分)。结果 3)到E重新调整新的A,使它们都相加为1,并通过F5重新计算F1。结果 4)重复直到满意为止。
有收敛快得惊人 - 短短的迭代。当然,每次迭代需要5根发现对于步骤2。
方程的一种解决方案
A + B + C + D + E = 1
F(A) = F(B) = F(C) = F(D) = F(E)
是取A,B,C,d和E都等于1/5。不知道是否虽然这是你想要的...
添加约翰的意见后(谢谢!)
假设第二方程应读F1(A)= F2(B)= F3(C)= F4(d)= F5(E),我会使用牛顿 - 拉夫逊方法(参见马亭的答案)。 A - - B - C - D.在你需要解决一个4x4系统迭代的每一步都可以通过设置E = 1消除一个变量。最大的问题可能是从哪里开始的迭代。一种可能性是一个随机点开始,做一些重复的,如果你没有得到任何地方,选择另一个随机点重新开始。
请记住,如果你真的不知道该函数的任何信息则不需要有一个解决方案。
ALGENCAN(TANGO的一部分)是非常好的。有Python绑定,也。
http://www.ime.usp.br/~egbirgin /tango/codes.php - “一般非线性规划是完全不使用矩阵操作和,因此,能够解决中等计算机时间非常大的问题,一般的算法是增广拉格朗日类型的... “
http://pypi.python.org/pypi/ TANGO%20Project%20-%20ALGENCAN / 1.0
谷歌OPTIF9或ALLUNC。我们使用这些通用的优化。
您可以使用标准搜索TECHNIC为他人提及。还有,你可以利用它在做搜索的几个优化。
首先,你只需要解决A,B,C,d,因为1-E = A + B + C + d
其次,你必须F(A)= F(B)= F(C)= F(d),则可以搜索A.一旦你F(A),可以解决B,C,d如果这是可能的。如果这是不可能解决的功能,则需要继续搜索每个变量,但现在你有一个有限的范围以搜索,因为A + B + C + d <= 1
如果搜索是离散和有限的,上述的优化应该工作合理良好。
我先试试粒子群算法。这是很容易实现,而且调整。为它看到维基页面。