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

Far*_*Far 1 machine-learning mathematical-optimization c#-4.0

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

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

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

And*_*son 5

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

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