我正在尝试优化 Excel 中的三个参数,以尽量减少实验值和理论值之间的误差。我在 for 循环中对每个参数使用 Solver,一次一个。但是,我想迭代这个求解器循环(循环内循环),直到实验值和理论值的误差小于某个目标值。
我的实验值为$K25
.
我的理论值(根据我的模型方程计算)是$J$25
.
我需要优化的参数是$C$4
, $C$5
,$C$6
当我运行以下 VBA 代码时,我在 $C$4
,$C$5
中的参数$C$6
不会改变它们的初始值。但是,宏编译得很好,没有错误。有谁可以帮我离开这里吗?
这是代码:
Sub Macro3()
Application.ScreenUpdating = False
SolverReset
Dim j As Integer
For j = 1 To 100 Step 1
If "$J$25" > "$K$25" Then
Dim i As Integer, s As String
For i = 4 To 6 Step 1
s = Format(i, "0")
SolverOk SetCell:="$J$25", MaxMinVal:=2, ValueOf:=0, ByChange:="$C$" & s, Engine:= _
1, EngineDesc:="GRG Nonlinear"
SolverOptions MaxTime:=0, Iterations:=1000000, Precision:=0.000001, Convergence _
:=0.00001, StepThru:=False, Scaling:=True, AssumeNonNeg:=True, Derivatives:=1
SolverOptions PopulationSize:=100, RandomSeed:=0, MutationRate:=0.075, Multistart _
:=False, RequireBounds:=True, MaxSubproblems:=0, MaxIntegerSols:=0, _
IntTolerance:=1, SolveWithout:=False, MaxTimeNoImp:=30
SolverOk SetCell:="$J$25", MaxMinVal:=2, ValueOf:=0, ByChange:="$C$" & s, Engine:= _
1, EngineDesc:="GRG Nonlinear"
SolverSolve (True)
SolverReset
Next i
End If
Next j
Application.ScreenUpdating = True
End Sub