重复解决的VBA代码

时间:2016-04-26 11:59:43

标签: excel-vba solver vba excel

我试图通过改变(列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低于下限。

任何人都可以告诉我,如果我使用的代码是正确的吗?任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

经过一些调整后,我设法解决了我的问题。

特此代码:

addJavascriptInterface