質問

Excel VBAソルバーソリューションにいくつかの新しい制約を追加しようとしており、コードを実行すると奇妙な動作を得ています。私は最小化の問題のために以下をやりたいと思っていますが、いくつかの問題があります:

調整されている2つのレバーは<= 35%でなければなりませんが、制約を追加すると:

SolverAdd CellRef:="$C$39", Relation:=2, FormulaText:=".35"
SolverAdd CellRef:="$C$40", Relation:=2, FormulaText:=".35"

アイデアが可能な限り低くなる場合、彼らは自動的に35%に設定します。この制約がなければ、セルは私が検証している問題に対して35%未満に設定しているため、最適なソリューションは35%未満であることがわかります。

また、a)細胞が5%の増分で最適化されていることを確認する方法があり、終了値には小数が含まれていないことを確認する方法があるかどうか疑問に思っていました。すなわち10.23%ではなく10.00%

長く巻き込まれた質問を申し訳ありませんが、私は助けてくれたどんな助けにも感謝しています。

これが完全なコードです:

    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
役に立ちましたか?

解決

見る: http://msdn.microsoft.com/en-us/library/aa272233(v=office.10).aspx

関係:= 2を使用しています。これは「=」に相当します。 1(<=)を使用する必要があります

ソリューションを最も近い0.05に取得することについては、「パーセント」セルに供給する他のセルを設定し、整数値に制約します。

例えば:

A1 = 7           (set solver to change this, and constrain to integer)
B1 = A1 * 0.05   (your percent cell, constrain to <=0.35)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top