Hinzufügen von Einschränkungen mit VBA zum Solver -Tool
Frage
Ich versuche, meiner Excel VBA Solver -Lösung einige neue Einschränkungen hinzuzufügen, und erhalte ein seltsames Verhalten, wenn ich den Code ausführe. Ich möchte Folgendes für ein Minimierungsproblem ausführen und habe einige Probleme:
Die beiden Hebel, die eingestellt werden, müssen <= 35%betragen. Wenn ich jedoch die Einschränkung hinzufüge:
SolverAdd CellRef:="$C$39", Relation:=2, FormulaText:=".35"
SolverAdd CellRef:="$C$40", Relation:=2, FormulaText:=".35"
Sie setzen sich automatisch auf 35%, wenn die Idee ist, dass diese so niedrig wie möglich sind. Ohne diese Einschränkung setzen sich die Zellen für die Probleme, gegen die ich validiere, unter 35%. Daher weiß ich, dass die optimale Lösung unter 35% liegt.
Ich habe mich auch gefragt, ob es eine Möglichkeit gibt, sicherzustellen, dass a) die Zellen in Schritten von 5%optimiert sind und dass der Endwert keine Dezimalstellen enthält. dh 10,00% statt 10,23%
Entschuldigung für die langwierige Frage, ich schätze jede Hilfe, die ich bekomme.
Hier ist der vollständige Code:
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
Lösung
Sehen: http://msdn.microsoft.com/en-us/library/aa272233(v=office.10).aspx
Sie verwenden die Beziehung: = 2, was "=" entspricht. Sie sollten 1 verwenden (<=)
Wenn Sie Ihre Lösung auf 0,05 am nächsten bringen, stellen Sie einfach einige andere Zellen ein, die sich in die "Prozent" -Zellen einfügen und sie auf ganzzahlige Werte beschränken lassen.
Z.B:
A1 = 7 (set solver to change this, and constrain to integer)
B1 = A1 * 0.05 (your percent cell, constrain to <=0.35)