我试图通过改变(列H中的单元格)来编写反复求解目标函数(P列中的单元格)的VBA代码。因此,我有以下约束:
第一个约束:H_i <= H_i-1, e.g. H3 <= H2
,依此类推,直到最后一行。
第二个约束:L_i >= L_i-1, e.g. L3 >= L2
,依此类推,直到最后一行。
到目前为止的代码:
Sub Solver_Balances()
'Automated solver to calculate the mass and heat balance
'at each time increment of 1 sec as given by the datalogger
'
Worksheets("Sheet1").Activate
RowCount = 2
Do While Not IsEmpty(Worksheets("Sheet1").Range("H" & RowCount))
SolverReset
SolverOk SetCell:=Range("P" & RowCount), MaxMinVal:=2, _
ByChange:=Range("H" & RowCount), Engine:=1, _
EngineDesc:="GRG Nonlinear"
SolverAdd Cellref:=Range("H" & RowCount), _
Relation:=1, _
FormulaText:=Range("H" & RowCount - 1)
SolverAdd Cellref:=Range("L" & RowCount), _
Relation:=3, _
FormulaText:=Range("L" & RowCount - 1)
Solversolve userfinish:=True
SolverFinish keepFinal:=1
RowCount = RowCount + 1
Loop
End Sub
我在 H2 中的值是0.931
(给定值)的起始值。出于某种原因,我的代码在 H3 中回复了0.53
的值,我希望找到一个更接近0.93
的值。此外,我的目标函数是根据物理关系计算的,其中值0.53
低于下限。
任何人都可以告诉我,如果我使用的代码是正确的吗?任何帮助表示赞赏!
答案 0 :(得分:1)
经过一些调整后,我设法解决了我的问题。
特此代码:
addJavascriptInterface