求SCE-UA算法vba代码
' 首先定义几个常用的变量
Dim t, t0, t_min, t_max, t_final As Double
Dim r, delta_e, e, e_best, e_max, e_min As Double
Dim n_accept, n_iter As Integer
Dim s, s_best, s_new As Variant
' 初始化参数
t0 = 100
t_min = 1e-6
t_max = 100
t_final = 1e-6
n_accept = 0
n_iter = 0
' 计算初始解的能量
e = calculateEnergy(s)
e_best = e
s_best = s
' 主循环
Do
t = adjustTemperature(t0, t_min, t_max, t_final, n_accept, n_iter)
' 生成新的解
s_new = generateNewSolution(s)
' 计算新的解的能量
e_new = calculateEnergy(s_new)
' 计算能量差
delta_e = e_new - e
' 如果新的解更优,则接受新解
If delta_e < 0 Then
s = s_new
e = e_new
' 更新最优解
If e_new < e_best Then
s_best = s_new
e_best = e_new
End If
' 增加接受次数
n_accept = n_accept + 1
Else
' 否则,以概率p接受新解
r = Rnd()
If r < Exp(-delta_e / t) Then
s = s_new
e = e_new
' 增加接受次数
n_accept = n_accept + 1
End If
End If
' 增加迭代次数
n_iter = n_iter + 1
Loop Until n_iter > MAX_ITER
' 返回最优解
S
SCE-UA算法的思想是采用欧氏距离来度量两个解的相似度,并利用此信息来调整模拟退火算法的参数,以提高算法的收敛速度。
SCE-UA算法的基本步骤如下:
选取一个初始解
计算初始解的能量
设置初始温度
设置冷却率
设置种群大小
进入循环
根据当前温度生成新的解
计算新的解的能量
计算能量差
如果新的解更优,则接受新解
否则,以概率p接受新解
计算新解与种群中其他解的欧氏距离
根据欧氏距离调整温度
如果满足终止条件,则退出循环
返回最优解
SCE-UA算法的优点在于它能够更好地利用种群信息,从而提高算法的收敛速度。但是,SCE-UA算法的缺点是需要额外的存储空间来保存种群信息。
求SCE-UA算法vba代码
SCE-UA算法的优点在于它能够更好地利用种群信息,从而提高算法的收敛速度。但是,SCE-UA算法的缺点是需要额外的存储空间来保存种群信息。
林剑艺代表论著
此外,林剑艺还参与了水库优化运营的算法研究,提出了一种Pareto Strength SCE-UA算法,该成果在2008年的4th International Conference on Natural Computation (ICNC)上发表([3])。在生态学领域,林剑艺与Cui S.H.、Cameron S.合作,开发了一种基于网络框架的生态指标定量选择方法,并在《Ecological Indi...
朱阮健胃: 代码如下. '计数代码 Private Sub CommandButton1_Click()Range("F6").Value = Application.WorksheetFunction.Count(Range("A:A")) End Sub '求和代码 Private Sub CommandButton2_Click()Range("G6").Value = Application.WorksheetFunction.Sum(Range("A:A")) End Sub
比如县13592317684: Excel应用 - 求VBA代码?
朱阮健胃: 1) Sub aaa() Dim arry arry = Range("a1:b2") Range("c1:d2") = arry End Sub运行前:运行后:2) 输入application.worksheetsfunction.函数
比如县13592317684: 求VBA代码 - ?
朱阮健胃: 使用EXCEL,在[1,1]中存放n,在[1,2]中存放结果s.代码如下: n = Sheet1.cell(1, 1) s = 0 For i = 1 To n s = s + 1 / n Next i Sheet1.Cells(1, 2) = Round(s, 3) MsgBox "完成"
比如县13592317684: 求VBA代码如图 - ?
朱阮健胃: J1结果应该是1415是倒数第14个,不过要变为13也可以 试下 Sub 倒数() Dim i, r, n r = Range("i65536").End(xlUp).Row For n = 1 To Range("i65536").End(xlUp).Row For i = Range("i65536").End(xlUp).Row To 1 Step -1 x = ...
比如县13592317684: excel vba 代码 - ?
朱阮健胃: Dim OldRng Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 4 And Target.Count = 1 Then OldRng = ActiveCell End SubPrivate Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 4 Then If ...
比如县13592317684: 求一段vba代码,很简单,但实用 - ?
朱阮健胃: Sub BeFile()Set fs = CreateObject("Scripting.FileSystemObject")'Set a = fs.CreateTextFile("C:\a.txt", True)If fs.FileExists("C:\a.txt") = False ThenDim strPath As StringstrPath = Application.ActiveWorkbook.FullNameApplication....
比如县13592317684: 求助一段VBA代码(实例) - ?
朱阮健胃: Sub iCopy() Dim sh As Worksheet, c As Range, arr1, arr2, r&, rn&Set sh = Worksheets("Sheet1") '表1(源数据表) Set c = Worksheets("Sheet2").Range("A1") '表2(结果表) + 结果位置(第1个单元格)With sh '操作 表1r = .Cells(...
比如县13592317684: 求一段vba的代码 - ?
朱阮健胃: d2公式=sum(d1,a2*6) 公式下拉完成 如果一定要用VBA处理,可用单元格事件完成 即A列输入倍数,得到后面的结果 代码如下 Private Sub Worksheet_Change(ByVal Target As Range)Dim r&If Target.Row > 1 And Target.Column = 1 And ...
比如县13592317684: VBA代码编写,在窗体的文本框TextBox1中输入不大于9的整数,然后计算其阶乘后在文本框TextBox2中输出 - ?
朱阮健胃: Private Sub CommandButton1_Click()Dim a, b1, b2, i, tmpSet b1 = Me.TextBox1Set b2 = Me.TextBox2a = b1.TextIf Len(a) = 0 Then tmp = "#Len = 0": GoTo 1000If Not IsNumeric(a) Then tmp = "#Not Is Number": GoTo 1000a = a * 1...
比如县13592317684: Excel求帮写一条vba代码 - ?
朱阮健胃: Sub tt() Dim Col As Integer With Sheets("sheet2") Col = .Rows(1).Find(Sheets("sheet1").Range("b1").Value, , , xlWhole).Column .Cells(3, Col).Resize(9, 5) = Sheets("sheet1").Range("b3:f11") End With Sheets("sheet1").Range("b3:f11").ClearContents End Sub