Добавление ограничений с VBA в инструмент решателя
Вопрос
Я пытаюсь добавить некоторые новые ограничения в свое решение Excel VBA Solver и получаю странное поведение, когда запускаю код. Я хочу сделать следующее для проблемы с минимизацией, и у меня возникли проблемы:
Два рычага, которые корректируются, должны быть <= 35%, однако, когда я добавляю ограничение:
SolverAdd CellRef:="$C$39", Relation:=2, FormulaText:=".35"
SolverAdd CellRef:="$C$40", Relation:=2, FormulaText:=".35"
Они автоматически устанавливаются на уровне 35%, когда идея должна быть как можно более низкой. Без этого ограничения ячейки устанавливают себя ниже 35% для проблем, с которыми я подтверждаю, поэтому я знаю, что оптимальное решение ниже 35%.
Также мне было интересно, есть ли способ убедиться, что а) клетки оптимизированы с шагом 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
Решение
Видеть: 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)