【发布时间】:2016-04-26 11:59:43
【问题描述】:
我正在尝试编写 VBA 代码,该代码通过更改(H 列中的单元格)反复求解目标函数(P 列中的单元格)。在此我有以下限制:
第一个约束: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 低于下限。
谁能告诉我,我使用的代码是否正确?任何帮助表示赞赏!
【问题讨论】: