module1.bas

来自「用VB语言编写的解决运筹学0-1规划的程序」· BAS 代码 · 共 53 行

BAS
53
字号
Attribute VB_Name = "Module1"
Option Explicit
Option Base 1
Public m As Integer, n As Integer, A() As Single, C() As Single, B() As Single, max As Single, result() As Integer, x() As Integer, result_num As Integer
Public Sub Branch_Bound1(k As Integer, s() As Single, ByVal z As Single)
    Dim i As Integer, flag As Boolean, l() As Single
    l() = s()
    If k = n + 1 Then Exit Sub
    x(k) = 1
    flag = True
    For i = 1 To m
        l(i) = l(i) + A(i, k) * x(k)
        If l(i) > B(i) Then
            flag = False
        End If
    Next i
    z = z + C(k) * x(k)
    If flag Then
        If max < z Then
            max = z
            result_num = 1
            ReDim result(n, result_num)
            For i = 1 To n
                result(i, 1) = x(i)
            Next i
        ElseIf max = z Then
            result_num = result_num + 1
            ReDim Preserve result(n, result_num)
            For i = 1 To n
                result(i, 2) = x(i)
            Next i
        Else
            Exit Sub
        End If
    Else
        If max < z Then
            Branch_Bound1 k + 1, l(), z
            Branch_Bound0 k + 1, l(), z
        Else
            Exit Sub
        End If
    End If
End Sub

Public Sub Branch_Bound0(k As Integer, s() As Single, z As Single)
    If k = n + 1 Then Exit Sub
    Dim l() As Single
    l() = s()
    x(k) = 0
    Branch_Bound1 k + 1, l(), z
    Branch_Bound0 k + 1, l(), z
 End Sub

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?