C# 微软求解器非线性约束优化与Matlab FMICON 可以在微软Sover基金会3中给我展示约束非线性优化的例子或评论吗?它与Matlab的fmincon相比如何?还是有更好的约束非线性优化.net库?谢谢,< p>我自己对微软解决方案基金会没有太多的经验,但是有一篇很好的文章演示了如何使用F ^:< /P> < f >,也有一个嵌入的建模语言——这允许你把你的约束写为普通的F表达式(包含在引文中),并且这个语言的解释器调用微软Sover基金会,创建适当的约束(我认为这非常棒!): 2012年2月25日的重要更新:
MSF 3.1现在通过其NelderMeadSolver解算器支持有界变量的非线性优化: 对于一般线性约束,微软求解器基础只支持线性规划和二次规划,通过其内点求解器。对于这个解算器,请参阅Tomas提到的SVM帖子 MSF有一个通用的非线性规划求解器,有限的内存BFGS,但是它不支持任何约束。该解算器还需要一个显式梯度函数。有关此解算器,请参见: Tomas提到的F#ODSL只支持线性规划。我有一个QP扩展,可在 回到你的问题——用线性约束优化f(x)(类似于C# 微软求解器非线性约束优化与Matlab FMICON 可以在微软Sover基金会3中给我展示约束非线性优化的例子或评论吗?它与Matlab的fmincon相比如何?还是有更好的约束非线性优化.net库?谢谢,< p>我自己对微软解决方案基金会没有太多的经验,但是有一篇很好的文章演示了如何使用F ^:< /P> < f >,也有一个嵌入的建模语言——这允许你把你的约束写为普通的F表达式(包含在引文中),并且这个语言的解释器调用微软Sover基金会,创建适当的约束(我认为这非常棒!): 2012年2月25日的重要更新:,c#,.net,matlab,f#,mathematical-optimization,C#,.net,Matlab,F#,Mathematical Optimization,MSF 3.1现在通过其NelderMeadSolver解算器支持有界变量的非线性优化: 对于一般线性约束,微软求解器基础只支持线性规划和二次规划,通过其内点求解器。对于这个解算器,请参阅Tomas提到的SVM帖子 MSF有一个通用的非线性规划求解器,有限的内存BFGS,但是它不支持任何约束。该解算器还需要一个显式梯度函数。有关此解算器,请参见: Tomas提到的F#ODSL只支持线性规划。我有一个QP扩展,可在 回到你的问题——用线性约束优化f(x)(类似于fmincon),我还没有看到任何
fmincon
),我还没有看到任何免费的库具有这种能力。(商业)似乎有一个。我试着用它来解决一个高度非线性的优化问题,但它对我不起作用。最后,我求助于在DotNumerics中实现的B-LBFGS
我想你也会对以下问题感兴趣:
答案指向
SciPy。优化cobyla
,它似乎类似于fmincon
。但主要信息是,对于您的特定问题,可能fmincon
过于笼统。您可以使用更具体的解算器,例如LBFGS或QP。此外,如果初始值不好,一般解算器有时也不起作用 我最近将Michael Powell的无导数代码COBYLA2(非线性目标函数,非线性约束)和BOBYQA(非线性目标函数,可变边界)移植到C#。当优化问题只包含可变边界时,BOBYQA算法的速度要快得多
我已经公开了这两个代码;您可以在Github上找到它们:和
如果您喜欢基于导数的算法,我还实现了一个适配器。它被调用,也可以从Github获得
这些算法中没有求解器基础接口,我不能说它们与FMICON相比有多好(我本人不是Matlab用户),但希望这些代码对优化工作有帮助。
< P>我意识到这是一个老问题,但是这里的答案是不准确的和/或过时的。以下是有关如何在MSSF中使用约束非线性解算器的权威教程:(不过,我对fmincon不太熟悉,所以我不能这么说。)谢谢你的回答和你的博客。我希望无国界医生可以做禁药LBFGS或类似的。这个答案不再准确。MSF确实支持约束非线性规划。本教程演示了这一点:@kmote你知道MSF是否停止开发了吗?@LayGonzález:不幸的是,这是正确的。内森·布里修斯(负责无国界医生组织的首席工程师)于2012年回国。此后不久,他就离开了微软,所有的工作都停止了。