2012-07-10 134 views

回答

6

一个SQP算法,你可以尝试是DONLP2解决方案。它最初是用Fortran 77编写的,但也有ANSI C版本。它使用密集代数,因此它主要适用于中小型问题。它是免费的学术用途。您需要直接从作者处请求代码,请按照链接中的说明进行操作。

UPDATESequential Quadratic Programming只是解决带约束的非线性目标函数的一种方法,也有例如interior point methods。一个非常好的应用内点方法的大型开源C++替代品是Ipopt(在另一个answer中已经提到过)。还有例如商业包装KNITRO。如果你不能或不想提供目标函数和约束梯度,你也可以看看COBYLA2,其中可以下载一个C版本here

为了获得更多灵感,您也可以参考Decision Tree For Optimization Software,其中列出了适用于各种不同问题的不同优化代码。

+2

@pyCthon我注意到你自己找到了Ipopt。我根据您的发现编辑了我的答案,并且还包含一些其他链接。尽管有点晚,但我希望你仍然会发现它们很有用。 – 2012-07-23 19:41:58