高分求VB的一個类转换成ASP语句

ruihuo 2008-12-24 12:17:57
VB类源码:
[code=INIFile]
Public MaxAnts
Public MaxCities

Public Alpha As Double
Public Beta As Double
Public Rou As Double
Public TaoMax As Double
Public TaoMin As Double
Public Tao0 As Double
Public MaxIter As Integer
Public W As Double
Public Sigma As Double
Public CalcTimes As Double
Public Q0 As Double
Public Type Tour_Of_Ant
fromCity As Integer
toCity As Integer
Prob As Double ''''Used to find the reason why this ant choose this path
End Type
Public Type Ant_MMAS
Tour() As Tour_Of_Ant
StartingCity As Integer
CurrentCity As Integer
Visited() As Boolean
LengthOfPath As Double
End Type
Public Type City_Type
x As Double
y As Double
End Type

Public Ant() As Ant_MMAS
Public City() As City_Type
Public Dis() As Double
Public Tao() As Double
Public NTao() As Boolean

Public SignUseNew As Boolean
Public SignComputeAvg As Boolean
Public SignAlwaysCleanResult As Boolean
Public SignDrawBestLen As Boolean
Public SignDrawAvgLen As Boolean
Public SignDrawTogether As Boolean
Public SignDrawPath As Boolean
Public SignDrawTao As Boolean
Public SignShowStep_by_Step As Boolean
Public SignPause As Boolean
Public SignShowNextMove As Boolean
Public SignInitRan As Boolean
Public CityXMax As Double, CityXMin As Double, CityYMax As Double, CityYMin As Double

Public Function Init_MMAS()
Dim TspFile As String
Alpha = Val(frmMMAS.txtAlpha.Text)
Beta = Val(frmMMAS.txtBeta.Text)
Rou = Val(frmMMAS.txtRou.Text)
TaoMax = Val(frmMMAS.txtTaoMax.Text)
TaoMin = Val(frmMMAS.txtTaoMin.Text)
MaxIter = Val(frmMMAS.txtMaxIter.Text)
Tao0 = Val(frmMMAS.txtTao0.Text)
Sigma = Val(frmMMAS.txtSigma)
W = Val(frmMMAS.txtW.Text)
CalcTimes = Val(frmMMAS.txtCalcTime.Text)
Q0 = Val(frmMMAS.txtQ0.Text)
MaxAnts = Val(frmMMAS.txtMaxAnts.Text)
TspFile = frmMMAS.lstCityData.Text + ".txt"
Open TspFile For Input As #1
Input #1, MaxCities
ReDim City(1 To MaxCities)
ReDim Ant(1 To MaxAnts)
ReDim Dis(1 To MaxCities, 1 To MaxCities)
ReDim Tao(1 To MaxCities, 1 To MaxCities)
ReDim NTao(1 To MaxCities, 1 To MaxCities)
For i = 1 To MaxAnts
ReDim Ant(i).Tour(1 To MaxCities)
ReDim Ant(i).Visited(1 To MaxCities)
Next i
For i = 1 To MaxCities
Input #1, a
Input #1, City(i).x
Input #1, City(i).y
Next i
Close #1
'''''''''''''Prepare for init PictureBoxes''''''''''''''''''''
CityXMin = City(1).x: CityXMax = City(1).x
CityYMin = City(1).y: CityYMax = City(1).y
For i = 2 To MaxCities
If City(i).x > CityXMax Then
CityXMax = City(i).x
Else
If City(i).x < CityXMin Then
CityXMin = City(i).x
End If
End If
If City(i).y > CityYMax Then
CityYMax = City(i).y
Else
If City(i).y < CityYMin Then
CityYMin = City(i).y
End If
End If
Next i
[/code]
...全文
145 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
success000 2008-12-29
  • 打赏
  • 举报
回复
ding
fairyprince 2008-12-29
  • 打赏
  • 举报
回复
因为vbs 全部是自动类型,所以变理和函数,过程示需要类型说明


vbs 函数不用声明, 直接写
Public Function PhUpdate(ByVal n As Integer) As Integer
写成
Function PhUpdate(n)

end function
'''''''''''''''''''''''''''''''
Sub Show_Ant_Move(n)

end sub


变理不用public 等声明,dim MaxAnts
dim MaxCities

dim Alpha
dim Beta
dim Rou
dim TaoMax
.........

ruihuo 2008-12-24
  • 打赏
  • 举报
回复
以上连接起来是完整代码。
是一个蚁群算法的VB类,想转成ASP可用的,请高手帮忙,如果有熟悉蚁群算法的,可以直接跟我联系,QQ:990688,
RMB酬谢
ruihuo 2008-12-24
  • 打赏
  • 举报
回复


Public Function CalcLen(ByVal n As Integer) As Double
Dim aa As Integer, bb As Integer, cc As Double
For i = 1 To MaxCities
aa = Ant(n).Tour(i).fromCity
bb = Ant(n).Tour(i).toCity
cc = cc + Dis(aa, bb)
Next i
CalcLen = cc
End Function

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''The following code is for outputing of the result'''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Public Sub Draw_XOY()
Dim StepX As Double, StepY As Double
frmMMAS.AxisBestLenX.ScaleX (Val(frmMMAS.txtBestLenXMax.Text) - Val(frmMMAS.txtBestLenXMin.Text))
frmMMAS.AxisBestLenY.ScaleY (Val(frmMMAS.txtBestLenYMax.Text) - Val(frmMMAS.txtBestLenYMin.Text))
If Val(frmMMAS.txtBestLenNX.Text) > 0 And Val(frmMMAS.txtBestLenNY.Text) > 0 Then
StepX = frmMMAS.AxisBestLenX.Width / Val(frmMMAS.txtBestLenNX.Text)
StepY = frmMMAS.AxisBestLenY.Height / Val(frmMMAS.txtBestLenNY.Text)
For i = 1 To Val(frmMMAS.txtBestLenNX.Text) - 1
frmMMAS.AxisBestLenX.Line (StepX * i, 0)-(StepX * i, frmMMAS.AxisBestLenX.Height)
Next i
For i = 1 To Val(frmMMAS.txtBestLenNY.Text) - 1
frmMMAS.AxisBestLenY.Line (0, StepY * i)-(frmMMAS.AxisBestLenY.Width, StepY * i)
Next i
End If
frmMMAS.AxisAvgLenX.ScaleX (Val(frmMMAS.txtAvgLenXMax.Text) - Val(frmMMAS.txtAvgLenXMin.Text))
frmMMAS.AxisAvgLenY.ScaleY (Val(frmMMAS.txtAvgLenYMax.Text) - Val(frmMMAS.txtAvgLenYMin.Text))
If Val(frmMMAS.txtAvgLenNX.Text) > 0 And Val(frmMMAS.txtAvgLenNY.Text) > 0 Then
StepX = frmMMAS.AxisAvgLenX.Width / Val(frmMMAS.txtAvgLenNX.Text)
StepY = frmMMAS.AxisAvgLenY.Height / Val(frmMMAS.txtAvgLenNY.Text)
For i = 1 To Val(frmMMAS.txtAvgLenNX.Text) - 1
frmMMAS.AxisAvgLenX.Line (StepX * i, 0)-(StepX * i, frmMMAS.AxisAvgLenX.Height)
Next i
For i = 1 To Val(frmMMAS.txtAvgLenNY.Text) - 1
frmMMAS.AxisAvgLenY.Line (0, StepY * i)-(frmMMAS.AxisAvgLenY.Width, StepY * i)
Next i
End If

End Sub

Public Sub Draw_Best_Graph(ByVal i As Integer, ByVal k As Double)
'i Iteration;k LBest
If i = 1 Then
frmMMAS.picBestLen.PSet (i, k)
Else
frmMMAS.picBestLen.Line -(i, k)
End If
End Sub
Public Sub Draw_Avg_Graph(ByVal i As Integer, ByVal k As Double, ByVal DrawTogether As Boolean)
If DrawTogether = False Then
If i = 1 Then
frmMMAS.picAvgLen.PSet (i, k)
Else
frmMMAS.picAvgLen.Line -(i, k)
End If
Else
End If
End Sub

Public Sub Init_Pic()
frmMMAS.picBestLen.ScaleTop = Val(frmMMAS.txtBestLenYMax.Text)
frmMMAS.picBestLen.ScaleHeight = (Val(frmMMAS.txtBestLenYMin.Text) - Val(frmMMAS.txtBestLenYMax.Text))
frmMMAS.picBestLen.ScaleLeft = Val(frmMMAS.txtBestLenXMin.Text)
frmMMAS.picBestLen.ScaleWidth = Val(frmMMAS.txtBestLenXMax.Text) - Val(frmMMAS.txtBestLenXMin.Text)
frmMMAS.picAvgLen.ScaleTop = Val(frmMMAS.txtAvgLenYMax.Text)
frmMMAS.picAvgLen.ScaleHeight = Val(frmMMAS.txtAvgLenYMin.Text) - Val(frmMMAS.txtAvgLenYMax.Text)
frmMMAS.picAvgLen.ScaleLeft = Val(frmMMAS.txtAvgLenXMin.Text)
frmMMAS.picAvgLen.ScaleWidth = Val(frmMMAS.txtAvgLenXMax.Text) - Val(frmMMAS.txtAvgLenXMin.Text)
End Sub
Public Sub Draw_City_Init()
If CityXMax - CityXMin > CityYMax - CityYMin Then
frmMMAS.picCityMap.ScaleLeft = CityXMin - 5
frmMMAS.picCityMap.ScaleWidth = CityXMax - CityXMin + 10
frmMMAS.picCityMap.ScaleTop = frmMMAS.picCityMap.ScaleLeft
frmMMAS.picCityMap.ScaleHeight = frmMMAS.picCityMap.ScaleWidth
Else
frmMMAS.picCityMap.ScaleLeft = CityYMin - 5
frmMMAS.picCityMap.ScaleWidth = CityYMax - CityYMin + 10
frmMMAS.picCityMap.ScaleTop = frmMMAS.picCityMap.ScaleLeft
frmMMAS.picCityMap.ScaleHeight = frmMMAS.picCityMap.ScaleWidth
End If
End Sub
Public Sub Draw_City()
Dim Ra As Double
frmMMAS.picCityMap.Cls
Ra = frmMMAS.picCityMap.ScaleHeight / 200
For i = 1 To MaxCities
frmMMAS.picCityMap.Circle (City(i).x, City(i).y), Ra, vbRed
Next i
End Sub

Public Sub Draw_Path(ByVal n As Integer)
Dim Ra As Double
frmMMAS.picCityMap.Cls
Ra = frmMMAS.picCityMap.ScaleHeight / 200
For i = 1 To MaxCities
frmMMAS.picCityMap.Circle (City(i).x, City(i).y), Ra, vbRed
frmMMAS.picCityMap.Line (City(Int(Ant(n).Tour(i).fromCity)).x, City(Int(Ant(n).Tour(i).fromCity)).y)-(City(Int(Ant(n).Tour(i).toCity)).x, City(Int(Ant(n).Tour(i).toCity)).y), vbRed
Next i
End Sub
Public Sub Draw_Tao_Init()
If CityXMax - CityXMin > CityYMax - CityYMin Then
frmMMAS.picTao.ScaleLeft = CityXMin - 5
frmMMAS.picTao.ScaleWidth = CityXMax - CityXMin + 10
frmMMAS.picTao.ScaleTop = frmMMAS.picTao.ScaleLeft
frmMMAS.picTao.ScaleHeight = frmMMAS.picTao.ScaleWidth
Else
frmMMAS.picTao.ScaleLeft = CityYMin - 5
frmMMAS.picTao.ScaleWidth = CityYMax - CityYMin + 10
frmMMAS.picTao.ScaleTop = frmMMAS.picTao.ScaleLeft
frmMMAS.picTao.ScaleHeight = frmMMAS.picTao.ScaleWidth
End If

End Sub
Public Sub Draw_Tao()
Dim ColorTao As Byte
Dim Ra As Double
Ra = frmMMAS.picCityMap.ScaleHeight / 200
frmMMAS.picTao.Cls
For i = 1 To MaxCities
For j = 1 To MaxCities
ColorTao = Int(((TaoMax - Tao(i, j)) / TaoMax) * 255)
frmMMAS.picTao.Line (City(i).x, City(i).y)-(City(j).x, City(j).y), RGB(ColorTao, ColorTao, ColorTao)
Next j
Next i
For i = 1 To MaxCities
frmMMAS.picTao.Circle (City(i).x, City(i).y), Ra, vbRed
Next i
End Sub
Public Sub Show_Ant_Move_Init()
If CityXMax - CityXMin > CityYMax - CityYMin Then
frmMMAS.picMovOfAnt.ScaleLeft = CityXMin - 5
frmMMAS.picMovOfAnt.ScaleWidth = CityXMax - CityXMin + 10
frmMMAS.picMovOfAnt.ScaleTop = frmMMAS.picMovOfAnt.ScaleLeft
frmMMAS.picMovOfAnt.ScaleHeight = frmMMAS.picMovOfAnt.ScaleWidth
Else
frmMMAS.picMovOfAnt.ScaleLeft = CityYMin - 5
frmMMAS.picMovOfAnt.ScaleWidth = CityYMax - CityYMin + 10
frmMMAS.picMovOfAnt.ScaleTop = frmMMAS.picMovOfAnt.ScaleLeft
frmMMAS.picMovOfAnt.ScaleHeight = frmMMAS.picMovOfAnt.ScaleWidth
End If
End Sub
Public Sub Show_Ant_Move(ByVal n As Integer)
Dim ColorTao As Byte
Dim Ra As Double, Ra1 As Double
Ra = frmMMAS.picMovOfAnt.ScaleHeight / 200
Ra1 = frmMMAS.picMovOfAnt.ScaleHeight / 150
frmMMAS.picMovOfAnt.Cls
For i = 1 To MaxCities
For j = 1 To MaxCities
ColorTao = Int(((TaoMax - Tao(i, j)) / TaoMax) * 255)
frmMMAS.picMovOfAnt.Line (City(i).x, City(i).y)-(City(j).x, City(j).y), RGB(ColorTao, ColorTao, ColorTao)
Next j
Next i
For i = 1 To MaxCities
frmMMAS.picMovOfAnt.Circle (City(i).x, City(i).y), Ra, vbRed
Next i
c1 = Int(Ant(n).Tour(1).fromCity)
frmMMAS.picMovOfAnt.Circle (City(c1).x, City(c1).y), Ra1, vbBlue
For i = 1 To MaxCities
SignShowNextMove = False
frmMMAS.cmdNextMove.Enabled = True
frmMMAS.cmdNextMove.Enabled = True
c1 = Int(Ant(n).Tour(i).fromCity)
c2 = Int(Ant(n).Tour(i).toCity)
frmMMAS.picMovOfAnt.Circle (City(c2).x, City(c2).y), Ra1, vbBlue
frmMMAS.picMovOfAnt.Line (City(c1).x, City(c1).y)-(City(c2).x, City(c2).y)
frmMMAS.txtProb.Text = Ant(n).Tour(i).Prob
Do
For j = 1 To 10000
DoEvents
Next j
frmMMAS.picMovOfAnt.Circle (City(c2).x, City(c2).y), Ra1, vbWhite
For j = 1 To 10000
DoEvents
Next j
frmMMAS.picMovOfAnt.Circle (City(c2).x, City(c2).y), Ra1, vbBlue
Loop Until SignShowNextMove = True
Next i
End Sub
ruihuo 2008-12-24
  • 打赏
  • 举报
回复


''''''''''''''''''''''''''''''''''''''''''''''''''
For i = 1 To MaxCities
For j = 1 To MaxCities
Tao(i, j) = Tao0
NTao(i, j) = False
Next j
Next i
For i = 1 To MaxAnts
If SignInitRan = True Then
Ant(i).StartingCity = Int(Rnd * MaxCities) + 1
Else
Ant(i).StartingCity = 1
End If
Ant(i).CurrentCity = 0
Ant(i).LengthOfPath = 0
For j = 1 To MaxCities
Ant(i).Tour(j).fromCity = 0
Ant(i).Tour(j).toCity = 0
Next j
Ant(i).Visited(i) = False
Ant(i).Tour(1).fromCity = Ant(i).StartingCity
Next i
For i = 1 To MaxCities
For j = 1 To MaxCities
Dis(i, j) = Sqr((City(i).x - City(j).x) ^ 2 + (City(i).y - City(j).y) ^ 2)
Next j
Next i
End Function

Public Function Iteration_Init() As Integer
For i = 1 To MaxAnts
If SignInitRan = True Then
Ant(i).StartingCity = Int(Rnd * MaxCities) + 1
Else
Ant(i).StartingCity = 1
End If
Ant(i).CurrentCity = 0
Ant(i).LengthOfPath = 0
For j = 1 To MaxCities
Ant(i).Tour(j).fromCity = 0
Ant(i).Tour(j).toCity = 0
Ant(i).Visited(j) = False
Next j
Ant(i).Tour(1).fromCity = Ant(i).StartingCity
Next i

End Function

Public Function SelectCity(ByVal n As Integer, ByVal NoTour As Integer) As Integer
Dim STao As Double, P As Double, Sp As Double
Dim STaoMax As Double, ArgSTaoMax As Integer
Randomize Time
P = Rnd
If P <= Q0 Then
STaoMax = 0
j = Ant(n).CurrentCity
For i = 1 To MaxCities
If Ant(n).Visited(i) = False Then
If STaoMax < Tao(j, i) Then
STaoMax = Tao(j, i)
ArgSTaoMax = i
End If
End If
Next i
SelectCity = ArgSTaoMax
Exit Function
End If
STao = 0
j = Ant(n).CurrentCity
For i = 1 To MaxCities
If Ant(n).Visited(i) = False Then
STao = STao + (Tao(j, i) ^ Alpha) * ((1 / Dis(j, i)) ^ Beta)
End If
Next i
If STao = 0 Then
MsgBox "Error!Travel has been completed, but the ants are still running.STao=0"
SelectCity = -1
Exit Function
End If
''''''Used to find the reason why this ant choose this path'''''''
' Ant(n).Tour(NoTour).Prob = STao
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Randomize Time
P = Rnd * STao
Sp = 0
For i = 1 To MaxCities
If Ant(n).Visited(i) = False Then
Sp = Sp + (Tao(j, i) ^ Alpha) * ((1 / Dis(j, i)) ^ Beta)
If Sp >= P Then
SelectCity = i
Ant(n).Tour(NoTour).Prob = ((Tao(j, i) ^ Alpha) * ((1 / Dis(j, i)) ^ Beta)) / STao
Exit Function
End If
End If
Next i
MsgBox "Error!STao>Sp"
SelectCity = -1
End Function

Public Function Local_Update(ByVal i As Integer, j As Integer)
Tao(i, j) = (1 - Rou) * Tao(i, j) + Rou * Tao0
Tao(j, i) = Tao(i, j)
End Function

Public Function PhUpdate(ByVal n As Integer) As Integer
Dim aa As Double, bb As Double
For i = 1 To MaxCities
For j = 1 To MaxCities
Tao(i, j) = (1 - Rou) * Tao(i, j)
NTao(i, j) = False
NTao(j, i) = False
If Tao(i, j) > TaoMax Then
Tao(i, j) = TaoMax
Else
If Tao(i, j) < TaoMin Then
Tao(i, j) = TaoMin
End If
End If
Tao(j, i) = Tao(i, j)
Next j
Next i
For i = 1 To MaxCities
aa = Ant(n).Tour(i).fromCity
bb = Ant(n).Tour(i).toCity
Tao(aa, bb) = Tao(aa, bb) + W / Ant(n).LengthOfPath
NTao(aa, bb) = True
NTao(bb, aa) = True
If Tao(aa, bb) > TaoMax Then
Tao(aa, bb) = TaoMax
Else
If Tao(aa, bb) < TaoMin Then
Tao(aa, bb) = TaoMin
End If
End If
Tao(bb, aa) = Tao(aa, bb)
Next i
PhUpdate = 1
End Function
Public Function PhUpdate1(ByVal i As Integer, ByVal j As Integer, ByVal k As Double, l As Double) As Integer
Tao(i, j) = (1 - Rou) * Tao(i, j) - Sigma * W * k / l
If Tao(i, j) > TaoMax Then
Tao(i, j) = TaoMax
Else
If Tao(i, j) < toamin Then
Tao(i, j) = TaoMin
End If
End If
Tao(j, i) = Tao(i, j)
PhUpdate1 = 1
End Function
ooily 2008-12-24
  • 打赏
  • 举报
回复
ding
资源下载链接为: https://pan.quark.cn/s/abbae039bf2a 在计算机视觉领域,实时目标跟踪是许多应用的核心任务,例如监控系统、自动驾驶汽车和无人机导航等。本文将重点介绍一种在2017年备受关注的高效目标跟踪算法——BACF(Boosted Adaptive Clustering Filter)。该算法因其卓越的实时性和高精度而脱颖而出,其核心代码是用MATLAB编写的。 BACF算法全称为Boosted Adaptive Clustering Filter,是基于卡尔曼滤波器改进的一种算法。传统卡尔曼滤波在处理复杂背景和目标形变时存在局限性,而BACF通过引入自适应聚和Boosting策略,显著提升了对目标特征的捕获和跟踪能力。 自适应聚是BACF算法的关键技术之一。它通过动态更新特征空间中的聚中心,更准确地捕捉目标的外观变化,从而在光照变化、遮挡和目标形变等复杂情况下保持跟踪的稳定性。此外,BACF还采用了Boosting策略。Boosting是一种集成学习方法,通过组合多个弱分器形成强分器。在BACF中,Boosting用于优化目标检测性能,动态调整特征权重,强化对目标识别贡献大的特征,从而提高跟踪精度。BACF算法在设计时充分考虑了计算效率,能够在保持高精度的同时实现快速实时的目标跟踪,这对于需要快速响应的应用场景(如视频监控和自动驾驶)至关重要。 MATLAB作为一种强大的数学计算和数据分析工具,非常适合用于算法的原型开发和测试。BACF算法的MATLAB实现提供了清晰的代码结构,方便研究人员理解其工作原理并进行优化和扩展。通常,BACF的MATLAB源码包含以下部分:主函数(实现整个跟踪算法的核心代码)、特征提取模块(从视频帧中提取目标特征的子程序)、聚算法(实现自适应聚过程)、Boosting算法(包含特征权重更新的代
内容概要:本书《Deep Reinforcement Learning with Guaranteed Performance》探讨了基于李雅普诺夫方法的深度强化学习及其在非线性系统最优控制中的应用。书中提出了一种近似最优自适应控制方法,结合泰勒展开、神经网络、估计器设计及滑模控制思想,解决了不同场景下的跟踪控制问题。该方法不仅保证了性能指标的渐近收敛,还确保了跟踪误差的渐近收敛至零。此外,书中还涉及了执行器饱和、冗余解析等问题,并提出了新的冗余解析方法,验证了所提方法的有效性和优越性。 适合人群:研究生及以上学历的研究人员,特别是从事自适应/最优控制、机器人学和动态神经网络领域的学术界和工业界研究人员。 使用场景及目标:①研究非线性系统的最优控制问题,特别是在存在输入约束和系统动力学的情况下;②解决带有参数不确定性的线性和非线性系统的跟踪控制问题;③探索基于李雅普诺夫方法的深度强化学习在非线性系统控制中的应用;④设计和验证针对冗余机械臂的新型冗余解析方法。 其他说明:本书分为七章,每章内容相对独立,便于读者理解。书中不仅提供了理论分析,还通过实际应用(如欠驱动船舶、冗余机械臂)验证了所提方法的有效性。此外,作者鼓励读者通过仿真和实验进一步验证书中提出的理论和技术。

2,503

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧