⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 最优控制.frm

📁 自己编写的单纯形法求解最优值
💻 FRM
字号:
VERSION 5.00
Begin VB.Form Form1 
   Caption         =   "Form1"
   ClientHeight    =   4035
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   6525
   LinkTopic       =   "Form1"
   ScaleHeight     =   4035
   ScaleWidth      =   6525
   StartUpPosition =   3  '窗口缺省
   Begin VB.TextBox Textresult 
      Height          =   270
      Left            =   5520
      TabIndex        =   8
      Top             =   1200
      Width           =   975
   End
   Begin VB.CommandButton Commandresult 
      Caption         =   "结果"
      Height          =   375
      Left            =   4800
      TabIndex        =   6
      Top             =   2760
      Width           =   1575
   End
   Begin VB.CommandButton Command3 
      Caption         =   "结束"
      Height          =   375
      Left            =   4800
      TabIndex        =   5
      Top             =   3360
      Width           =   1575
   End
   Begin VB.CommandButton Command1 
      Caption         =   "系数矩阵"
      Height          =   375
      Left            =   4800
      TabIndex        =   4
      Top             =   2160
      Width           =   1575
   End
   Begin VB.TextBox Textlieshu 
      Height          =   285
      Left            =   5520
      TabIndex        =   3
      Top             =   600
      Width           =   975
   End
   Begin VB.TextBox Texthangshu 
      Height          =   285
      Left            =   5520
      TabIndex        =   1
      Top             =   120
      Width           =   975
   End
   Begin VB.Label Label5 
      Caption         =   "结果"
      Height          =   255
      Left            =   4800
      TabIndex        =   7
      Top             =   1200
      Width           =   615
   End
   Begin VB.Label Label4 
      Caption         =   "列数"
      Height          =   255
      Left            =   4800
      TabIndex        =   2
      Top             =   600
      Width           =   615
   End
   Begin VB.Label Label3 
      Caption         =   "行数"
      Height          =   255
      Left            =   4800
      TabIndex        =   0
      Top             =   120
      Width           =   615
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim a(1 To 20, 1 To 20) As Double
Dim c(1 To 10) As Integer

Private Function finminusq(row1 As Integer, column1 As Integer) As Integer

Dim flag As Integer
Dim i As Integer
i = 0
flag = 1
For j% = 1 To column1 - 1
   If a(row1, j) >= 0 Then
     i = i + 1
   End If
Next j
If i = column1 - 1 Then
  flag = 0
End If
finminusq = flag
End Function

Private Function findmincol(row1 As Integer, column1 As Integer) As Integer
Dim min As Integer
Dim j As Integer
Dim temp As Double
temp = a(row1, 1)
min = 1
For j = 1 To column1 - 1
  If a(row1, j) < temp Then
    temp = a(row1, j)
    min = j
  End If
Next j
findmincol = min

End Function

Private Function findminrow(row1 As Integer, sertcol As Integer, column1 As Integer) As Integer
Dim max As Integer
Dim i As Integer
Dim temp As Double

temp = a(1, column1) / a(1, sertcol)
max = 1
For i = 1 To row1 - 1
  If a(i, column1) / a(i, sertcol) < temp Then
    temp = a(i, column1) / a(i, sertcol)
    max = i
  End If
Next i

findminrow = max
End Function
Private Sub gausecancel(deleterow1 As Integer, insertcol1 As Integer, row1 As Integer, column1 As Integer)
 Dim i As Integer
 Dim j As Integer
 Dim temp1 As Double
 temp1 = a(deleterow1, insertcol1)
 For j = 1 To column1
   a(deleterow1, j) = a(deleterow1, j) / temp1
 Next j
 For i = 1 To row1
 If i = deleterow1 Then
 i = i + 1
 End If
  temp1 = a(i, insertcol1)
   For j = 1 To column1
     a(i, j) = a(i, j) - a(deleterow1, j) * temp1
  Next j
  Next i
 For i = 1 To row
   For j = 1 To column
     Print a(i, j);
  Next j
  Print
Next i
End Sub

Private Sub Command1_Click()
Dim column As Integer
Dim row As Integer
column = Val(Textlieshu.Text)
row = Val(Texthangshu.Text)
Open "D:\a1.txt" For Output As #1
For i% = 1 To row
   For j% = 1 To column
  temp$ = InputBox$(ch1$ + "请输入矩阵系数", "输入矩阵的对话框", , 100, 4500)
  a(i, j) = Val(temp$)
  Print #1, a(i, j)
  Next j
Next i
Close #1
End Sub


Private Sub Command3_Click()
End
End Sub

Private Sub Commandresult_Click()

Dim flag As Integer
Dim row  As Integer
Dim column As Integer
Dim insertcol As Integer
Dim deleterow As Integer
Dim cyclenumber As Integer
column = Val(Textlieshu.Text)
row = Val(Texthangshu.Text)
Open "D:\a1.txt" For Input As #1
For i% = 1 To row
   For j% = 1 To column
     Input #1, a(i, j)
     Print a(i, j);
  Next j
  Print
Next i
Close #1
flag = finminusq(row, column)
cyclenumber = 0

Do While flag = 1
   cyclenumber = cyclenumber + 1
   insertcol = findmincol(row, column)
   deleterow = findminrow(row, insertcol, column)
   Call gausecancel(deleterow, insertcol, row, column)
   flag = finminusq(row, column)
Loop
For i% = 1 To row
   For j% = 1 To column
     Print a(i, j);
  Next j
  Print
Next i
Textresult.Text = Str(a(row, column))
End Sub

⌨️ 快捷键说明

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