1

我正在尝试在 C# 中实现一个算法,其中包含一些数学函数,例如:

最小化 a ||xu( i ) - ∑j aj( i ) bj ||2 + β || 一(一)||1

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

4

1 回答 1

5

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

  • MS Solver Foundation是 Microsoft 的数学优化平台,它为包括无约束和约束最小二乘在内的大量问题提供求解器。一些努力挖掘 API,但作为回报,导数会自动计算等。
  • ALGLIB提供了大量不同的优化器,并且在C#中可用。
  • 阿里在上面的评论中提到了IPOPT。我开发了与 IPOPT 的 C# 绑定,可在此处下载。我当然有偏见,但我个人认为 API 相当简单。如果您使用csipopt ,则需要手动提供衍生产品。(实际上还有一个包含csipopt 并提供自动导数计算的库Funclib。)
  • COBYLA2(如果您有非线性约束)和 BOBYQA(如果您有约束或没有约束)是 Michael Powell 开发的无导数直接搜索方法。我已将这些求解器移植到 C#,100% 托管代码。C# COBYLA2 项目可在此处获得,C# BOBYQA 项目可在此处获得。
于 2012-08-25T12:29:38.197 回答