在.NET中求解方程

时间:2011-09-30 13:51:46

标签: c# .net math conditional-statements mathematical-optimization

我正在尝试在.NET中解决一些简单的方程式。我遇到Math.NET并对其进行评估。 Solver()方法似乎是我需要的方法,但我无法弄清楚如何在这种方法中使用副条件。

为了说明我的问题,我会给你一个样本:

Given:  
0 <= a_i <= 100  
0 <= b <= 100
0 <= c
a_i, b and c are given

x_1, ..., x_n should be optimized

f(x) = x_1*a_1 + x_2*a_2 + ... + x_n*a_n = b

Side conditions:  
g(x) = x_1 + x_2 + ... + x_n = c  
0 <= x_i

是否可以使用求解方法或Math.NET的任何其他组件解决此类问题,或者您是否知道可以用于解决此问题的任何(免费用于商业用途).NET库? 我不想自己为这样一个常见问题写一个算法。

最好的问候&amp;提前谢谢

3 个答案:

答案 0 :(得分:2)

ALGLIB非常适合这些任务。在constrained optimization上查看他们的页面。

编辑:它有免费许可证(GPL)和商业许可证,起价为370美元。

答案 1 :(得分:2)

恕我直言Microsoft Solver Foundation是实现这一目标的方法。 Express版本是免费的AFAIK,功能强大,适用于大多数小型应用程序。

正如我现在看到的那样,Express版本只是为了探索而缩进 - 但是(现在?)有一个用于MSDN订阅者的Standard-Lib,因此我还没有删除此帖子,因为您可能有MSDN订阅。

答案 2 :(得分:1)

您需要一个带有simplex方法或Marquardt非线性优化等约束的优化器。