2012-08-25 17 views
1

我想实现在C#中的算法,里面有一些数学函数,如:在C#中有直接的方法来优化数学函数或最小化表达式中的参数吗?

最小化||许(I) - ΣjAJ(我)BJ || 2 +β|| (i)|| 1

但我不确定在C#中是否有任何直接方法用于优化,我在论坛中找不到任何东西,或者您可以提供任何建议来解决此优化问题在C#中!?

+2

(i)您正在寻找一个具有C#接口/ C#绑定的**求解器**。 (ii)我了解你的函数中的第一项(最小二乘法)。我不明白这个词以beta开头。你能解释一下吗? (iii)如果您只需要最小二乘方,那么为此找到/接口特定求解器应该不会太困难。如果你真的需要一般的非线性优化,我会推荐[IPOPT](https://projects.coin-or.org/Ipopt/),但我相信这会对你的情况有所帮助。我不知道IPOPT的C#接口有多好。 – Ali

回答

4

有几个求解器使用C#绑定,可能是适合你的问题,例如:

  • MS Solver Foundation,微软的平台数学优化,提供解决者大范围的问题,包括无约束和约束最小二乘。一些努力挖掘API,但在返回衍生品是自动计算等。
  • ALGLIB提供了一个大范围的不同优化器,可在C#
  • IPOPT在Ali的评论中被提及。我开发了IPOPT的C#绑定,可以下载here。我当然有偏见,但我个人认为API相当简单。如果您使用csipopt,则需要手动提供衍生产品。 (实际上还有一个库合并了csipopt和提供了自动派生计算)由Michael Powell开发。我已经将这些解决方案移植到C#,100%托管代码。 C#COBYLA2项目可用here,C#BOBYQA项目可用here