3

入力変数の 1 つを最小制約と最大制約で制限する必要がある最適化問題を解決しようとしています。最後に SolverReset を実行しないので、後で Solver が 3 番目の制約 ($F$5 <= 1) を無視していることがわかります。また、$F$5 > 1 の答えが得られることもあるので、それもわかります。

Solver を手動で使用すると、3 番目の制約を追加できます。不足しているものを確認するためにマクロを記録しようとしましたが、まだ困惑しています。Excel 2007 を実行しています。ありがとう、

Public Sub SEDMSolver()

SolverReset
SolverAdd CellRef:="$F$5", Relation:=3, FormulaText:="0.1"
SolverAdd CellRef:="$F$4", Relation:=3, FormulaText:="0"
SolverAdd CellRef:="$F$5", Relation:=1, FormulaText:="1"
SolverOk SetCell:="$G$8", MaxMinVal:=2, ValueOf:="0", ByChange:="$F$4:$F$5"
SolverSolve userFinish:=True

End Sub
4

3 に答える 3

2

ソルバーは少し不安定な場合があります。MaxMinVal=2 行を最初の上に設定してみてください。ソルバー マクロを実行するときは、常に制約の上に設定する必要があります。時折、エラーがスローされます。

(Excel 2010 を使用して) 問題を再現しようとしましたが、うまくいきました。最初と最後に MxMinVal を使用します。マシンと Excel を再起動してみて、問題が解決しないかどうかを確認してください。しかし、あなたのコードは私にとってはうまくいきます.3つの制約はすべてロードされます.

あなたのコードに私が持っているもう一つの一般的な提案は、追加することです:

Application.Calculation = xlAutomatic  

これにより、計算が自動に変わります。ソルバーを含むより複雑なマクロを実行しているときにオフにしました。

于 2011-12-28T21:44:10.313 に答える
0

一部のセル (例: H9) を 1 に設定し、コードでこのセルへの参照を使用します。SolverAdd CellRef:="$F$5", Relation:=1, FormulaText:="$H$9"

于 2014-07-11T22:38:25.860 に答える