问题标签 [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 回答
3604 浏览

java - 用于投资组合选择的纯 Java 开源库(= 受限的非线性优化)?

有没有人知道或有使用纯 Java 库来选择投资组合或进行一些类似的带约束的二次规划的经验?

似乎有很多工具,正如在其他地方已经讨论过 的那样——但我想使用的是纯 Java 实现。由于我想从另一个具有 BSD-ish 许可证的开源软件中调用该库,因此我更喜欢 LGPL 而不是 GPL。

任何帮助表示赞赏。如果您不知道这样的库,您建议实现的最简单的算法是什么?它必须处理不等式约束(所有x_i>= 0)和等式约束(所有的总和x_i= 1)。

0 投票
6 回答
6883 浏览

r - Finding a curve to match data

I'm looking for a non-linear curve fitting routine (probably most likely to be found in R or Python, but I'm open to other languages) which would take x,y data and fit a curve to it.

I should be able to specify as a string the type of expression I want to fit.

Examples:

What I would get out of this is at least the values for the constants (A, B, C, etc.) And hopefully stats about the fitness of the match.

There are commercial programs to do this, but I expected to be able to find something as common as fitting to a desired expression in a language library nowadays. I suspect SciPy's optimization stuff might be able to do this, but I can't see that it lets me define an equation. Likewise, I can't seem to find exactly what I want in R.

Is what I'm looking for out there, or do I need to roll my own? I hate to do it if it's there and I'm just having trouble finding it.


Edit: I want to do this for a bit more control over the process than I get from LAB Fit. The LAB Fit UI is dreadful. I'd also like to be able to break the range into multiple pieces and have different curves represent the different pieces of the range. In the end, the result has to be able to (speed-wise) beat a LUT with linear interpolation or I'm not interested.

In my current set of problems, I have trig functions or exp() and I need to execute them 352,800 times per second in real time (and use only a fraction of the CPU). So I plot the curve and use the data to drive the curve fitter to get less expensive approximations. In the old days, LUTs were almost always the solution, but nowadays skipping the memory lookups and doing an approximation is sometimes faster.

0 投票
4 回答
6639 浏览

r - 非线性整数规划

我想知道R中是否有处理非线性整数优化的包。

“基本上”,我想解决以下问题:

max f(x) s.t x in (0,10) and x is integer.

我知道一些分支算法能够处理这个问题的线性版本,但这里我的函数f()可能更复杂。(我什至不能确定它是形式的二次方f(x)=xQx)。

我想总会有蛮力解决方案来测试所有可能性,只要它们是有界的,但我想知道是否没有更聪明的方法。

0 投票
1 回答
805 浏览

c# - 找到满足不等式约束的离散对 {x,y}

我有一些关于 的不等式{x,y},它们满足以下等式:

请注意,xandy必须是整数。

图形上可以表示如下,蓝色区域是满足上述不等式的区域:

替代文字

现在的问题是,Matlab 中是否有任何函数可以找到每个可接受的对{x,y}?如果有一种算法可以做这种事情,我也会很高兴听到它。

当然,我们总是可以使用的一种方法是蛮力方法,我们测试每种可能的组合{x,y}以查看是否满足不等式。但这是最后的手段,因为它很耗时。我正在寻找一个聪明的算法来做到这一点,或者在最好的情况下,一个我可以立即使用的现有库。

这些x^2+y^2>=100 and x^2+y^2<=200只是示例;实际上f,并且g可以是任何次数的任何多项式函数。

编辑:也欢迎 C# 代码。

0 投票
1 回答
951 浏览

java - 非线性编程示例c,java?

你知道非线性规划的一个很好的例子吗?,我在谷歌上搜索过,但是任何文本都只是制定并不能解决问题,他们提到了术语,甚至擅长解决它。

您能否发布一个示例并解释一下如果?

提前致谢

Pd 你知道这个想法是使用 C、java 来查看一些结果和数字。谢谢

0 投票
1 回答
1502 浏览

matlab - 在 MATLAB 中的 fsolve 每次迭代之间运行一个函数

我正在使用fsolve最小化 MATLAB 中的能量函数。我正在使用的算法将网格拟合到嘈杂的格子数据,并以网格到每个数据点的距离为代价。

目标函数用平方误差项来表示,以允许使用Gauss-Newton 算法。但是,该程序恢复为 Levenberg-Marquardt:

我意识到这可能是因为虽然成本有平方误差,但目标(成本)函数中有一个阶段选择离每个数据点最近的网格中心,从而使算法非平方。

我想要做的是分别执行最近网格中心的分配更新,以评估成本函数的雅可比行列式。我相信这将允许使用 Gauss-Newton,并显着提高算法的速度。

目前,我相信有这样的事情发生:

我想发生的事情是:

有没有办法在不分离整个算法的情况下将这样的函数插入到迭代中fsolve?即使我手动编辑 fsolve,Gauss-Newton 算法的性质是否允许我添加这个额外的步骤?

谢谢

0 投票
2 回答
881 浏览

matlab - 通过更改变量来最小化目标函数 - 在 Matlab 中?

我有一个101x82名为A. 使用这个变量矩阵,我计算了另外两个变量,称为:

1) B,一个1x1标量,和

2) C, 一个50x6矩阵。

我将 1)and2)与它们的类似变量3)and进行比较,它们4)的值是固定的:

3) D,一个1x1标量,和

4) E, 一个50x6矩阵。

现在,我想扰动/改变A矩阵的值,这样:

1)~ 3),即B几乎等于D,并且

2)~ 4),即C几乎等于E

请注意,在扰动ABC会改变,但不会DE

任何想法如何做到这一点?谢谢!

0 投票
1 回答
1450 浏览

r - R / S中的非线性回归

我有一个 R / S / 非线性回归相关问题,我不是 R 程序员,所以我有点需要帮助。

我有两个数组 - tt 和 td。

我需要找到参数 a、b 和 c,因此对于非线性函数,最小二乘之和是最小的:

我不知道该怎么做。我尝试了nls()函数,nls2()但没有运气......

提前致谢。

编辑:

我的数据:

使用下面答案中的方法,我得到随机数据的 ok 值,但我使用的数据返回缺失值或评估模型消息时产生的无穷大。

很抱歉没有尽快提供数据。

0 投票
2 回答
29267 浏览

python - python非线性最小二乘拟合

就我的问题所涉及的数学而言,我有点超出我的深度,所以对于任何不正确的命名法,我深表歉意。

我正在考虑使用 scipy 函数 leastsq,但不确定它是否是正确的函数。我有以下等式:

除了 kd (PLP,p0,l0) 之外,我有所有术语的数据(8 组)。我需要通过上述方程的非线性回归来找到 kd 的值。从我读过的例子来看,leastsq 似乎不允许输入数据来获得我需要的输出。

感谢您的帮助

0 投票
3 回答
604 浏览

matlab - 求解多个方程的多个相位角

我有几个方程,每个方程都有自己的频率和幅度。我想将方程加在一起并调整各个相位,phase1、phase2 和 phase3,以将 eq_total 的总幅度值保持在特定值(例如 0.8)以下。我知道我可以对信号进行归一化或更改垂直偏移,但出于我的目的,我需要通过更改/查找仅相位 1、相位 2 和相位 3 中的相位值来控制幅度,这将限制方程式时的最大幅度相加。

注意:我使用建设性和破坏性相位干扰来调整求和方程的最大幅度。

有没有办法通过调整/查找phase1、phase2和phase3的值来解决phase1、phase2和phase3,使eq_total中的总和信号的幅度永远不会超过0.8?

这是我测试这个想法的 geogebra 小程序的图片。

在此处输入图像描述

这是我用来编辑/测试想法的 geogebra ggb 文件。(我用它来看看我的想法是否可行)如果您想与小程序动态交互,则需要 Java http://dl.dropbox.com/u/6576402/questions/ggb/sin_find_phases_example.ggb

我正在使用 matlab/octave 谢谢