在C++中实现Matlab的fmincon函数

Bra*_*don 2 c++ matlab mathematical-optimization

我们目前正在使用Matlab的fmincon函数对我正在进行的项目进行非线性优化.我们需要将项目的这一部分移植到C++中,以便将它与项目的其他部分集成.有没有一种很好的方法可以将fmincon函数编译成我们可以在C++中使用的库?或者,是否已经有一个可以在某处实现fmincon的库?

如果以上都不是一个选项,那么可以使用哪些优化库很容易从fmincon切换到?

背景资料:

我们正在尝试优化无人机的航点飞行路径,以尽可能地沿着地面沿着给定的航点相机路径行进.两条路径之间的航点在时间上对应,因此当UAV到达第i个飞行路径航点时,摄像机万向节将指向第i个摄像机航路点.由于无人机以恒定速度飞行,飞行路径段将全部具有相同的长度.转弯半径也受上限约束.摄像机路径没有任何限制,因此其段可能比飞行路径段更长或更短,并且可能有急转弯.成本函数是相应的飞行航路点和摄像机航点之间的平方和距离(忽略高度差).

Pro*_*cus 5

大多数时候,那里的图书馆不会试图成为像魔术师这样的黑盒子魔术一刀切的优化工具 - 而是他们要求你提供更多细节并自己做出更多选择,对他们来说更简单,并且应该会使您的软件更快.您当然可以使用MATLAB Engine或MATLAB Compiler从您的程序中调用fmincon,但如果您可以使用更多关于结构的知识,那么您的软件很可能会更快地运行(并且您可以避免购买MATLAB编译器).优化问题具有并调用适当的算法.

您的背景信息并未描述您正在做的事情 - 尤其是 你可行的设置是什么 - 显然足以让我能够告诉你使用什么,所以我所能做的只是指向相关资源的方向.

维基百科关于优化软件列表优化链接的页面 -最重要的是,它描述了更具体的优化问题(例如,您能将问题表述为具有线性约束的二次规划吗?)和适合每种情况的软件.

Boyd关于凸优化的书和链接的课程材料和视频是非常好的资源.