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
War es hilfreich?

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)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top