/*以Beale问题为例 
求如下目标函数的最大值 
f=0.75*x1-20*x2+0.5*x3-6*x4 

其约束条件如下 
0.25*x1-8*x2-x3+9*x4≤0 
0.5*x1-12*x2-0.5*x3+3*x4≤0 
x3≤1 
x1>=0,x2>=0,x3>=0,x4>=0 
*/ 

//下面为线性规划求解示例, 可直接在【代码编辑】窗口的VB.NET模式下运行.


Public Sub test()
    '1 申明4个浮点数变量,它们默认大于等于0
    Dim x1 As New LineProgVar(LineProgVar_E.Float_E)
    Dim x2 As New LineProgVar(LineProgVar_E.Float_E)
    Dim x3 As New LineProgVar(LineProgVar_E.Float_E)
    Dim x4 As New LineProgVar(LineProgVar_E.Float_E)

    '2 新建一个求解器
    Dim s As New LineProgSolver

    '3 添加约束
    s.AddConstraint(0.25*x1 - 8*x2 - x3 + 9*x4, LineProgEquation_E.LessEqual_E, 0)
    s.AddConstraint(0.5*x1 - 12*x2 - 0.5*x3 + 3*x4, LineProgEquation_E.LessEqual_E, 0)
    s.AddConstraint(x3, LineProgEquation_E.LessEqual_E, 1)
    s.AddConstraint(x1, LineProgEquation_E.GreaterEqual_E, 0)
    s.AddConstraint(x2, LineProgEquation_E.GreaterEqual_E, 0)
    s.AddConstraint(x3, LineProgEquation_E.GreaterEqual_E, 0)
    s.AddConstraint(x4, LineProgEquation_E.GreaterEqual_E, 0)

    '4 设置最大化目标
    Dim f As LineProgExpress = 0.75 * x1 - 20 * x2 + 0.5 *x3 - 6 * x4
    s.SetMaxEpress(f)

    If s.Solve() = LineProgResType_E.BestSolution_E Then
        MessageBox.Show("max F:" + f.Value.ToString)
        MessageBox.Show("x1:" + x1.Value.ToString)
        MessageBox.Show("x2:" + x2.Value.ToString)
        MessageBox.Show("x3:" + x3.Value.ToString)
        MessageBox.Show("x4:" + x4.Value.ToString)
    End If
End Sub