我正在尝试为我的excel VBA解算器解决方案添加一些新约束,并且在运行代码时会出现一些奇怪的行为。我想针对最小化问题执行以下操作并遇到一些麻烦:
正在调整的两个杠杆必须<= 35%,但是当我添加约束时:
SolverAdd CellRef:="$C$39", Relation:=2, FormulaText:=".35"
SolverAdd CellRef:="$C$40", Relation:=2, FormulaText:=".35"
当想法尽可能低时,他们自动设定为35%。如果没有这个限制,细胞确实将我们自己设定的问题设置在35%以下,所以我知道最佳解决方案低于35%。
此外,我想知道是否有办法确保a)细胞以5%的增量进行优化,并且结束值不包括小数。即10.00%而不是10.23%
对于长篇大论的问题感到抱歉,我感谢任何帮助。
以下是完整代码:
Private Sub CommandButton2_Click()
Dim i As Integer
i = 2
For i = 2 To 5
Range("$C$14").Value = Application.Workbooks("test_model_2.xls").Worksheets("All Models").Cells(i, 2).Value
SolverReset
SolverAdd CellRef:="$F$70", Relation:=3, FormulaText:="5000"
SolverAdd CellRef:="$C$39", Relation:=2, FormulaText:=".35"
SolverAdd CellRef:="$C$40", Relation:=2, FormulaText:=".35"
SolverOk SetCell:="$F$70", MaxMinVal:=2, ValueOf:="0", ByChange:="$C$39:$C$40"
SolverSolve True
MsgBox "i is:" & i
Next i
End Sub
答案 0 :(得分:2)
请参阅:http://msdn.microsoft.com/en-us/library/aa272233(v=office.10).aspx
你使用的是关系:= 2,相当于“=”。你应该使用1(&lt; =)
至于让您的解决方案达到最接近的0.05,只需设置一些其他单元格,这些单元格将输入“百分比”单元格,并将它们约束为整数值。
例如:
A1 = 7 (set solver to change this, and constrain to integer)
B1 = A1 * 0.05 (your percent cell, constrain to <=0.35)