在C#中有没有直接的方法来优化数学函数或最小化表达式中的参数?

时间:2012-08-25 08:09:59

标签: c#-4.0 machine-learning mathematical-optimization

我正在尝试在C#中实现一个算法,里面有一些数学函数,如:

最小化|| xu(i) - Σjaj(i)bj || 2 +β|| a(i)|| 1

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

1 个答案:

答案 0 :(得分:5)

有几个C#绑定的解算器可能适合您的问题,例如:

  • MS Solver Foundation,微软的数学优化平台,为各种各样的问题提供解算器,包括无约束和约束最小二乘。一些努力深入研究API,但反过来衍生物会自动计算等。
  • ALGLIB提供了大量不同的优化工具,可在C#中找到。
  • 上面的Ali的评论中提到了IPOPT。我已经开发了对IPOPT的C#绑定,可以下载here。我当然有偏见,但我个人认为API非常简单。如果您使用 csipopt ,则需要手动提供衍生产品。 (实际上还有一个包含 csipopt和的库提供了自动衍生计算Funclib。)
  • COBYLA2(如果你有非线性约束)和BOBYQA(如果你有约束或没有约束)是Michael Powell开发的无衍生直接搜索方法。我已将这些解算器移植到C#,100%托管代码。 C#COBYLA2项目可用here,C#BOBYQA项目可用here