Dyl*_*lan 8 .net c# mono mathematical-optimization linear-programming
我需要解决一个欠定的线性方程组和约束系统,然后找到最小化成本函数的特定解决方案.这需要在纯粹可移植的托管代码中完成,该代码将在.NET和Mono中运行.我可以使用哪些免费的库来实现它?
我发现免费库提供的所有优化算法都只支持单个变量的区间约束,例如0 < x < 1,不支持约束x + 2y < 4.我还发现通常线性方程求解器仅支持具有一个解的线性系统.
到目前为止我发现的最接近的是DotNumerics,其中包括用于求解欠定线性系统的奇异值分解,但其优化算法仅支持单变量约束(据我所知).
还有其他一些问题涉及线性规划,但我的关键要求是多变量约束和解决欠定系统.我还没有找到一个支持多变量约束的免费库.
And*_*son 10
如果您正在为.NET开发(即不是Windows Store,Windows Phone或Silverlight),那么我肯定会建议您查看适用于大型LP和/或MILP问题的lpsolve.下载包含相应lpsolve DLL 的x86或x64开发档案:s,然后下载包含C#文件的.NET API存档,其中P/Invoke调用lpsolve API 中的所有相关函数.
另一种方法是通过CoinMP预编译二进制文件使用COIN-OR项目中的CLP求解器.有可用的C#包装DLL 这里.
如果你确实需要纯托管代码,ALGLIB可能是你最好的选择(正如上面Marc Gravell所建议的那样),但请注意ALGLIB开源许可使用GPL.如果您想在自己的代码中使用ALGLIB而不将其公开给开源社区,则需要购买商业ALGLIB许可证.
一个快速的互联网搜索还揭示了单纯LP算法的纯C#实现在这里.我无法识别作者,我不知道这个实现是正确的还是任何质量的.即使在Windows Store,Windows Phone,Silverlight和Mono上下文中,代码看起来也非常便携.