我们目前正在使用Matlab的 fmincon 函数对我正在进行的项目进行非线性优化。我们需要将项目的这一部分移植到C ++中,以便将它与项目的其他部分集成。有没有一种很好的方法可以将 fmincon 函数编译成我们可以在C ++中使用的库?或者,是否已经有一个库可用于实现 fmincon ?
如果以上都不是一个选项,那么哪些优化库可以很容易地从 fmincon 切换到?
背景信息:
我们正在尝试优化无人机的航点飞行路径,以尽可能地沿着地面沿着给定的航点相机路径行进。两条路径之间的航点在时间上对应,因此当UAV到达 i 第一飞行路径航路点时,摄像机万向节将指向 i 第一摄像机航路点。由于无人机以恒定速度飞行,飞行路径段将全部具有相同的长度。转弯半径也受上限约束。摄像机路径没有任何限制,因此其段可能比飞行路径段更长或更短,并且可能有急转弯。成本函数是相应的飞行航点和摄像机航点之间的平方距离(忽略高度差)。
答案 0 :(得分:5)
大多数情况下,那里的图书馆不会尝试成为像魔术一样的黑盒子魔术一刀切的优化工具 - 相反,他们会要求你提供更多细节并在你的作品上做出更多选择拥有,这对他们来说更简单,并且应该导致您的软件更快。您当然可以使用MATLAB Engine或MATLAB Compiler从您的程序中调用fmincon,但是如果您可以使用更多关于结构的知识,那么您的软件很可能会更快地运行(并且您可以避免购买MATLAB编译器)。优化问题具有并调用适当的算法。
您的背景信息并未描述您正在做的事情 - 尤其是什么是可行的设置 - 显然足以让我能够告诉你使用什么,所以我所能做的只是指向相关资源的方向。
Wikipedia's page on optimization链接到软件 - 最重要的是,它描述了更具体的种优化问题(例如,你可以制定你的问题,因为线性约束二次规划?)和软件适合于各种情况下优化的名单。
Boyd's book on convex optimization以及相关课程资料&视频是非常好的资源。