问题标签 [nonlinear-optimization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
897 浏览

python - 以最小的误差求解非线性方程组

我有一些非线性优化问题(最好在 python 中解决):

给定的是 2D 平面中的 3 个圆(中心 x1..3,y1..3,半径 d1..3)。

公共点 (x/y) 是需要的,在这种情况下可以通过 fsolve (scipy.optimize) 计算。但是,如果半径 r1..3 的不确定性分别为 u1..3 ,如何解决这个问题呢?即圆的真实半径在区间 ru ... r+u 内。

如何找到包含半径不确定性的最佳点 (x/y)?

0 投票
2 回答
139 浏览

c++ - 将对象信息传递给成本函数

这是问题所在。我使用 minpack 进行非线性优化。成本函数具有以下签名:

n - 初始点的大小 m - 函数向量的大小 p - 初始点 x - 函数向量

我有 for 循环,我在其中迭代对象数组。每个对象都包含优化功能的输入信息。

但在成本函数中,我需要与当前对象相关的特定值。如果成本函数是类成员,那么指针的类型就会错误,并且不可能将此指针传递给 lmdif1_。

所以现在我有一个临时解决方案,使用全局对象。

然后 cost_function 使用这个全局对象来接收需要的信息。但这并不好。这个问题的正确解决方案是什么?谢谢。

0 投票
2 回答
1716 浏览

apache - apache数学优化示例

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

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

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

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

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

0 投票
1 回答
320 浏览

math - 如何处理来自运动优化/捆绑调整的结构中的缺失数据

我正在研究来自运动应用程序的结构,并且我正在跟踪放置在对象上的许多标记以确定对象的刚性结构。

该应用程序本质上是在多个相机视图上使用标准的 Levenberg-Marquardt 优化,并最大限度地减少预期标记点与从每个视图以 2D 获得的标记点之间的差异。

对于每个标记点和每个视图,以下功能被最小化:

其中计算出的 XY 值取决于需要通过优化找到的许多未知参数,observedXY 是 2D 中的标记点位置。总的来说,我有(标记点 * 视图)我希望最小化的上述功能的数量。

我已经编写了一个摄像机的模拟代码,可以看到所有标记点,但我想知道如何处理在运行过程中由于光照、遮挡或不在摄像机视图中而导致点不可见的情况。在应用程序的实际运行中,我将使用网络摄像头查看对象,因此很可能并非所有标记都会立即可见,并且取决于我的计算机视觉算法的稳健程度,我可能无法检测到一直标记。

我想在无法观察到标记点的情况下将 diff 值设置为 0(sigma 平方差 = 0),但是这会扭曲结果吗?

我注意到的另一件事是,当呈现太多视图时,算法并没有那么好。当视图太多时,更有可能估计一个糟糕的解决方案。这是捆绑调整的一个常见问题,因为当呈现太多视图时会增加达到局部最小值的可能性?

0 投票
1 回答
6391 浏览

python - 欠约束系统的 SciPy 优化

我经常不得不解决变量数量超过约束数量(或有时相反)的非线性问题。通常,某些约束或变量以复杂的方式是多余的。有没有办法解决这些问题?

大多数 scipy 求解器似乎假设约束的数量等于变量的数量,并且雅可比矩阵是非奇异的。 leastsq有时有效,但当约束少于变量数量时,它甚至不会尝试。我意识到我可以继续运行fminlinalg.norm(F)但这比任何使用雅可比行列式的方法效率低得多。

这是一个问题示例,它演示了我在说什么。它显然有一个解决方案,但leastsq给出了一个错误。当然,这个例子很容易手动解决,我只是把它放在这里来演示问题。

我得到的错误信息是:

我在网上搜索了答案,甚至在 SciPy 邮件列表上询问过,但没有得到任何回复。现在我破解了 SciPy 源,以便newton_krylov求解器使用pinv(),但我认为这不是最佳解决方案。

0 投票
0 回答
1077 浏览

r - 非线性回归/曲线拟合 L-infinity norm

我目前正在研究时间序列数据压缩。

这个想法是在 n 个点的时间序列上拟合一条曲线,以便任何点上的最大偏差不大于给定阈值。换句话说,曲线在定义时间序列的点处所取的值都不应该比实际值的某个阈值“更远”。

到目前为止,我已经发现了如何使用 R(nls 函数)和其他语言中的最小二乘估计方法进行非线性回归,但我还没有找到任何使用 L-infinity 范数实现非线性回归的包。

我找到了关于这个主题的文献:

http://www.jstor.org/discover/10.2307/2006101?uid=3737864&uid=2&uid=4&sid=21100693651721

或者

http://www.dtic.mil/dtic/tr/fulltext/u2/a080454.pdf

例如,我可以尝试在 R 中实现这一点,但我首先要看看这是否还没有完成,我是否可以重用它。

我找到了一个我认为不是“非常科学”的解决方案:我使用非线性最小二乘回归来找到参数的起始值,我随后将这些参数用作 R“优化”函数中的起始点,以最小化最大值曲线与实际点的偏差。

任何帮助,将不胜感激。这个想法是能够找出这种类型的曲线拟合是否可能在给定的时间序列序列上,并确定允许它的参数。

我希望还有其他人已经遇到过这个问题并且可以帮助我;)

谢谢你。

0 投票
0 回答
346 浏览

matlab - Error using fmincon, hack fixes it but I'm uneasy about it

I'm having a strange error when using fmincon. The details about the objective function and the nonlinear constraint functions are many, so I'm going to try to ask this question without describing those if possible.

The minimization requires a single input. For some but not all inputs, I get the following error:

When I check to see the value of ACTIND, the error is thrown when it equals [0], hence the indexing error. Similar to the hack that the OP of this thread used, before the line (in qpsub)

I put the if statement:

From preliminary testing this seems to "Fix" the problem. It is giving sensible results for inputs that used to throw the error (in that it is returning a good minimum value and the constraints are satisfied to within tolerance), and is returning the same results it always did for inputs that didn't have the error (obviously, as the if statement won't be invoked). So my question is, for people that know the inner workings of these functions, how bad is this? Am I sidestepping a horrible issue that results in ACTIND being [0] that I shouldn't be?

0 投票
1 回答
1676 浏览

algorithm - 检查非线性函数 f 是否始终为正的算法

是否有一种算法来检查给定的(可能是非线性的)函数 f 是否总是正的?

我目前的想法是找到函数的根(使用 newton-raphson 算法或类似技术,请参阅http://en.wikipedia.org/wiki/Root-finding_algorithm)并检查导数,或找到最小值f,但它们似乎不是这个问题的最佳解决方案,而且求根算法也存在很多收敛问题。

比如在 Maple 中,function verify可以做到这一点,但是我需要在自己的程序中实现。Maple 验证帮助:http ://www.maplesoft.com/support/help/Maple/view.aspx?path=verify/function_shells Maple 示例:assume(x,'real'); 验证(x^2+1,0,'大于');--> 返回真,因为对于每个 x 我们都有 x^2+1 > 0

[编辑] 问题的一些背景:函数 $f$ 是电路的右手边微分非线性模型。非线性电路可以通过应用修正节点分析 (MNA) 建模为一组常微分方程,为简单起见,我们只考虑一维系统,因此 $x' = f(x)$ 其中 $f$ 描述电路,例如 $f$ 可以是 $f(x) = 10x - 100x^2 + 200x^3 - 300x^4 + 100x^5$ (非线性隧道二极管的模型)或 $f=10 - 2sin (4x)+ 3x$(约瑟夫森结的模型)。

$x$ 是有界的,$f$ 只在区间 $[a,b] \in R$ 中定义。$f$ 是连续的。我也可以假设 $f$ 是 Lipschitz 且 Lipschitz 常数 L>0,但我不想这样做,除非我必须这样做。

0 投票
1 回答
1908 浏览

c# - 你知道 Gauss Newton 和 Levenberg Marquardt 方法的 C# 实现吗?

我正在寻找 Gauss Newton 和 Levenberg Marquardt 算法的 C# 实现。那里已经有任何“受托人”C# 库了吗?

0 投票
2 回答
817 浏览

erlang - 如何在 Erlang 中制作可变参数的函数?

我有一个算法可以在 Rn 上找到函数/n 的最小值。我有一个约束流形,它以奇异立方体图像的形式给出。将奇异立方体内部空间映射到 Rn,更重要的是反之亦然,这非常简单,可以通过将 unar 函数 from_R_to_01 应用于每个坐标来完成。

所以我想要做的是获取我的目标函数 F 的某个元数,并制作另一个具有相同元数的函数,这将是相同的 F,除了它的坐标将从 Rn 映射到约束流形 Man。因此,我可以将它提供给我的最小化算法,在 Rn 中获得一对坐标,然后将它们也映射到同一个流形以获得“真实世界”坐标。因此将非线性规划任务减少为无约束优化。

好吧,回到问题。我有这段代码适用于 2-ar 案例。

我怎样才能使它更普遍?最困难的部分是制作一个 Fs 的匿名函数。根本不知道该怎么做。