実験値と理論値の誤差を最小限に抑えるために、Excel で 3 つのパラメーターを最適化しようとしています。for ループで、一度に 1 つずつ、各パラメーターに Solver を使用します。ただし、実験値と理論値の誤差が目標値よりも小さくなるまで、このソルバー for ループ (ループ内のループ) を繰り返したいと考えています。
私の実験値は$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