我对数值分析很感兴趣。我一直在使用 DotNumerics 开源应用程序。我的线性系统如下:
1 * x + 3 * y <= 150
2 * x + 1 * y <= 100
在哪里x >= 0, y >= 0
z = 10 * x + 15 * y
我正在尝试解决z
(优化...)
我可以使用 Simplex 方法来解决此链接中的上述问题。我也给作者发了邮件,但他没有回复。
using DotNumerics.Optimization;
using DotNumerics;
namespace App.SimplexCalcLinearProgramming
{
class Program
{
static void Main(string[] args)
{
Simplex simplex = new Simplex();
double[] initialGuess = new double[2];
initialGuess[0] = 0.1;
initialGuess[1] = 2;
double[] minimum = simplex.ComputeMin(AmacFunction, initialGuess);
minimum.ToList().ForEach(q => Console.Write(q.ToString() + "\n"));
Console.ReadKey();
}
static double AmacFunction(double[] x)
{
/*
* 1 * x + 3 * y <= 150
* 2 * x + 1 * y <= 100
*
* where x >= 0, y >= 0
*
* z = 10 * x + 15 * y
*
* Solve for z
*/
double f = 0;
f = 10*x[0]+15*x[1];
return f;
}
}
}