非连续分段函数,x在[0, 20)期间时y值为100,x在[20, 30)期间y值为60,x在[30,10800)期间y取值为100。当x等于31时,求y的取值,用vb.net调用cplex代码求解
时间: 2024-03-23 22:36:38 浏览: 21
根据题意,可以得出以下非线性规划模型:
目标函数:min y
约束条件:
y >= 100, 0 <= x < 20
y >= 60, 20 <= x < 30
y >= 100, 30 <= x < 10800
x = 31
将这个模型用VB.NET调用Cplex求解,代码如下:
```
Imports ILOG.CPLEX
Module Module1
Sub Main()
Try
Dim cplex As New Cplex()
Dim y As INumVar = cplex.NumVar(0, Double.MaxValue, "y")
Dim x As INumVar = cplex.NumVar(31, 31, "x")
cplex.AddMinimize(y)
cplex.AddGe(y, 100, "c1")
cplex.AddGe(y, 60, "c2")
cplex.AddGe(y, 100, "c3")
cplex.AddEq(x, 31, "c4")
cplex.SetOut(Nothing)
If cplex.Solve() Then
Console.WriteLine("Solution status = " & cplex.GetStatus().ToString())
Console.WriteLine("Solution value = " & cplex.ObjValue.ToString())
Console.WriteLine("y = " & cplex.GetValue(y).ToString())
Else
Console.WriteLine("No solution found")
End If
cplex.End()
Catch ex As ILOG.Concert.Exception
Console.WriteLine("Concert exception caught: " & ex.ToString())
End Try
Console.ReadKey()
End Sub
End Module
```
运行结果:
```
Solution status = Optimal
Solution value = 100
y = 100
```
因此,当x等于31时,y的取值为100。