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

📄 form1.frm

📁 一个用vb编写的一维模糊控制器程序! 简单易懂
💻 FRM
字号:
VERSION 5.00
Begin VB.Form Form1 
   Caption         =   "Form1"
   ClientHeight    =   8565
   ClientLeft      =   60
   ClientTop       =   450
   ClientWidth     =   10665
   LinkTopic       =   "Form1"
   ScaleHeight     =   8565
   ScaleWidth      =   10665
   StartUpPosition =   3  '窗口缺省
   Begin VB.CommandButton Com2 
      Caption         =   "处理"
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   15
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   615
      Left            =   6480
      TabIndex        =   7
      Top             =   5280
      Width           =   1815
   End
   Begin VB.CommandButton Com1 
      Caption         =   "退出"
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   15
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   615
      Left            =   6480
      TabIndex        =   6
      Top             =   6120
      Width           =   1815
   End
   Begin VB.TextBox Text2 
      Height          =   615
      Left            =   1680
      TabIndex        =   5
      Top             =   6000
      Width           =   1455
   End
   Begin VB.TextBox Text1 
      Height          =   615
      Left            =   1680
      TabIndex        =   1
      Top             =   5040
      Width           =   1455
   End
   Begin VB.PictureBox P1 
      Height          =   3135
      Left            =   840
      ScaleHeight     =   3075
      ScaleWidth      =   8835
      TabIndex        =   0
      Top             =   840
      Width           =   8895
   End
   Begin VB.Label Label3 
      Caption         =   "V"
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   12
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   495
      Left            =   3360
      TabIndex        =   9
      Top             =   6120
      Width           =   495
   End
   Begin VB.Label Label1 
      Caption         =   "℃"
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   12
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   495
      Left            =   3360
      TabIndex        =   8
      Top             =   5160
      Width           =   495
   End
   Begin VB.Label L2 
      BorderStyle     =   1  'Fixed Single
      Caption         =   "输出电压"
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   14.25
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   615
      Left            =   600
      TabIndex        =   4
      Top             =   6000
      Width           =   735
   End
   Begin VB.Label Label2 
      BorderStyle     =   1  'Fixed Single
      Caption         =   "所使用的隶属度函数"
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   14.25
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   375
      Left            =   3360
      TabIndex        =   3
      Top             =   240
      Width           =   2775
   End
   Begin VB.Label L1 
      Alignment       =   2  'Center
      BorderStyle     =   1  'Fixed Single
      Caption         =   "输入温度"
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   14.25
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   600
      Left            =   570
      TabIndex        =   2
      Top             =   5040
      Width           =   795
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Sub Com1_Click()
End

End Sub

Private Sub Com2_Click()
Dim r(1 To 11, 1 To 11) As Single       '确定控制规则库
Dim tb(1 To 11) As Single               '温度变化规则

r(1, 1) = 0: r(1, 2) = 0: r(1, 3) = 0: r(1, 4) = 0: r(1, 5) = 0: r(1, 6) = 0: r(1, 7) = 0:  r(1, 8) = 0: r(1, 9) = 0: r(1, 10) = 0.5: r(1, 11) = 1
r(2, 1) = 0: r(2, 2) = 0: r(2, 3) = 0: r(2, 4) = 0: r(2, 5) = 0: r(2, 6) = 0: r(2, 7) = 0:  r(2, 8) = 0: r(2, 9) = 0: r(2, 10) = 0.5: r(2, 11) = 0.5
r(3, 1) = 0: r(3, 2) = 0: r(3, 3) = 0: r(3, 4) = 0: r(3, 5) = 0: r(3, 6) = 0: r(3, 7) = 0.5:  r(3, 8) = 0.5: r(3, 9) = 0.5: r(3, 10) = 0: r(3, 11) = 0
r(4, 1) = 0: r(4, 2) = 0: r(4, 3) = 0: r(4, 4) = 0: r(4, 5) = 0: r(4, 6) = 0: r(4, 7) = 0.5:  r(4, 8) = 1: r(4, 9) = 0.5: r(4, 10) = 0: r(4, 11) = 0
r(5, 1) = 0: r(5, 2) = 0: r(5, 3) = 0: r(5, 4) = 0: r(5, 5) = 0.5: r(5, 6) = 0.5: r(5, 7) = 0.5:  r(5, 8) = 0.5: r(5, 9) = 0.5: r(5, 10) = 0: r(5, 11) = 0
r(6, 1) = 0: r(6, 2) = 0: r(6, 3) = 0: r(6, 4) = 0: r(6, 5) = 0.5: r(6, 6) = 1: r(6, 7) = 0.5:  r(6, 8) = 0: r(6, 9) = 0: r(6, 10) = 0: r(6, 11) = 0
r(7, 1) = 0: r(7, 2) = 0: r(7, 3) = 0.5: r(7, 4) = 0.5: r(7, 5) = 0.5: r(7, 6) = 0.5: r(7, 7) = 0.5:  r(7, 8) = 0: r(7, 9) = 0: r(7, 10) = 0: r(7, 11) = 0
r(8, 1) = 0: r(8, 2) = 0: r(8, 3) = 0.5: r(8, 4) = 1: r(8, 5) = 0.5: r(8, 6) = 0: r(8, 7) = 0:  r(8, 8) = 0: r(8, 9) = 0: r(8, 10) = 0: r(8, 11) = 0
r(9, 1) = 0: r(9, 2) = 0: r(9, 3) = 0.5: r(9, 4) = 0.5: r(9, 5) = 0.5: r(9, 6) = 0: r(9, 7) = 0:  r(9, 8) = 0: r(9, 9) = 0: r(9, 10) = 0: r(9, 11) = 0
r(10, 1) = 0.5: r(10, 2) = 0.5: r(10, 3) = 0: r(10, 4) = 0: r(10, 5) = 0: r(10, 6) = 0: r(10, 7) = 0:  r(10, 8) = 0: r(10, 9) = 0: r(10, 10) = 0: r(10, 11) = 0
r(11, 1) = 1: r(11, 2) = 0.5: r(11, 3) = 0: r(11, 4) = 0: r(11, 5) = 0: r(11, 6) = 0: r(11, 7) = 0:  r(11, 8) = 0: r(11, 9) = 0: r(11, 10) = 0: r(11, 11) = 0
Dim t0 As Single          '设置初始温度
t0 = 20
Dim t As Single             '设置输入的实际温度
t = Val(Text1.Text)
Dim tt As Single                 '温度变化值
tt = t - t0
Dim tj As Single                  '计算论域内的温度变化
tj = 10 * (tt - 30) / 100
If tj <= -4.5 Then
tb(1) = 1: tb(2) = 0.5: tb(3) = 0: tb(4) = 0: tb(5) = 0: tb(6) = 0: tb(7) = 0: tb(8) = 0: tb(9) = 0: tb(10) = 0: tb(11) = 0
End If
If tj > -4.5 And tj <= -1 Then
tb(1) = 0: tb(2) = 0: tb(3) = 0.5: tb(4) = 1: tb(5) = 0.5: tb(6) = 0: tb(7) = 0: tb(8) = 0: tb(9) = 0: tb(10) = 0: tb(11) = 0
End If
If tj > -1 And tj <= 1 Then
tb(1) = 0: tb(2) = 0: tb(3) = 0: tb(4) = 0: tb(5) = 0.5: tb(6) = 1: tb(7) = 0.5: tb(8) = 0: tb(9) = 0: tb(10) = 0: tb(11) = 0
End If
If tj <= 3.5 And tj > 1 Then
tb(1) = 0: tb(2) = 0: tb(3) = 0: tb(4) = 0: tb(5) = 0: tb(6) = 0: tb(7) = 0.5: tb(8) = 1: tb(9) = 0.5: tb(10) = 0: tb(11) = 0
End If
If tj > 3.5 Then
tb(1) = 0: tb(2) = 0: tb(3) = 0: tb(4) = 0: tb(5) = 0: tb(6) = 0: tb(7) = 0: tb(8) = 0: tb(9) = 0: tb(10) = 0.5: tb(11) = 1
End If
Dim i, j, e, f As Integer
Dim qq As Single
Dim vg(1 To 11) As Single     '设置温度变化的值
Dim vv(1 To 11) As Single     'r的列将与tb对应的元素取小赋给vv数组
For j = 1 To 11
  For i = 1 To 11
    If r(i, j) >= tb(i) Then
      vv(i) = tb(i)
    Else
      vv(i) = r(i, j)
    End If
  Next i
     For e = 2 To 11
       For f = 11 To e Step -1
    If vv(f - 1) <= vv(f) Then
    qq = vv(f - 1): vv(f - 1) = vv(f): vv(f) = qq
     End If
    Next f
   Next e
   vg(j) = vv(1)
Next j
Dim va, v0 As Single         '设置计算论域内的温度变化值
v0 = 20
Dim vc, v As Single            'vc是实际论域内的温度变化值
va = (vg(1) * (-5) + vg(2) * (-4) + vg(3) * (-3) + vg(4) * (-2) + vg(5) * (-1) + vg(6) * 0 + vg(7) * 1 + vg(8) * 2 + vg(9) * 3 + vg(10) * 4 + vg(11) * 5) / (vg(1) + vg(2) + vg(3) + vg(4) + vg(5) + vg(6) + vg(7) + vg(8) + vg(9) + vg(10) + vg(11))
vc = va * 50 / 10 + 25
v = v0 + vc
Text2.Text = v

End Sub

Private Sub Form_Activate()
P1.Scale (-6, 1.5)-(6, -1.5)
P1.DrawStyle = 6
P1.DrawWidth = 2
P1.Line (-6, 0)-(6, 0), RGB(255, 0, 0)
P1.Line (0, -1.5)-(0, 1.5), RGB(255, 0, 0)
P1.Line (-6, 1)-(6, 1), RGB(0, 0, 255)
P1.Line (-5, 1)-(-3, 0), RGB(0, 0, 255)
P1.Line (-4, 0)-(-2, 1), RGB(0, 0, 255)
P1.Line (-2, 1)-(0, 0), RGB(0, 0, 255)
P1.Line (-2, 0)-(0, 1), RGB(0, 0, 255)
P1.Line (0, 1)-(2, 0), RGB(0, 0, 255)
P1.Line (0, 0)-(2, 1), RGB(0, 0, 255)
P1.Line (2, 1)-(4, 0), RGB(0, 0, 255)
P1.Line (3, 0)-(5, 1), RGB(0, 0, 255)
End Sub

⌨️ 快捷键说明

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