【发布时间】:2016-06-27 20:31:15
【问题描述】:
我们目前正在使用 Matlab 的 fmincon 函数对我正在处理的项目进行非线性优化。我们需要将项目的这一部分移植到 C++ 中,以便将其与项目的其他部分集成。有没有一种好方法可以将 fmincon 函数编译成我们可以在 C++ 中使用的库?或者,是否已经有一个实现 fmincon 的库可用?
如果以上都不是一个选项,有哪些优化库可以很容易地从 fmincon 切换到?
背景信息:
我们正在尝试优化无人机的航路点飞行路径,以尽可能接近地面上给定的航路点相机路径。两条路径之间的航点在时间上是对应的,所以当无人机到达第i个航路航点时,云台将指向第i个航点。由于无人机以恒定速度飞行,因此飞行路径段的长度都将相同。转弯半径也受到上限的限制。相机路径没有限制,因此它的段可能比飞行路径段长或短,并且可能有急转弯。成本函数是对应的飞行航路点和相机航路点之间的距离平方和(忽略高度差异)。
【问题讨论】:
-
如果你没有得到任何好的答案,你可能想用谷歌搜索“fmincon in c++”,这里有大量的点击!
-
如果有人想知道,我们决定使用麻省理工学院的 NLopt 库。
-
@Brandon,您尝试了 NLopt 中的哪些优化器/哪种最适合您的问题?
-
@Denis 看起来我在尝试 COBYLA,但我们从未在 C++ 中完成所有工作。编写 Matlab 代码的人对 C++ 没有太多经验,并且移植的部分代码崩溃了。我试图帮助他移植优化部分,我认为我们在 NLopt 崩溃时也遇到了一些问题。我不确定这是因为代码其他部分的错误输入,还是我以某种方式错误地使用了它。我们最终使用文件在我的 C++ 和他的 Matlab 代码之间混洗数据。将其集成会更好,但这对我们的研究来说已经足够了。
-
标签: c++ matlab mathematical-optimization