Aggiunta di vincoli con VBA all'utensile risolutore
Domanda
Sto cercando di aggiungere alcuni nuovi vincoli per la mia soluzione risolutore di Excel VBA e sto ottenendo un po 'strano comportamento quando si esegue il codice. Voglio fare quanto segue per un problema di minimizzazione e sto avendo qualche problema:
Le due leve che vengono regolate deve essere <= 35%, tuttavia quando aggiungo il vincolo:
SolverAdd CellRef:="$C$39", Relation:=2, FormulaText:=".35"
SolverAdd CellRef:="$C$40", Relation:=2, FormulaText:=".35"
Si automaticamente impostato al 35% quando l'idea è che questi siano il più basso possibile. Senza questo vincolo le cellule stesse impostano al di sotto del 35% per i problemi che sto convalida contro, quindi so che la soluzione ottimale è inferiore al 35%.
Inoltre mi chiedevo se esiste un modo per assicurarsi che a) le cellule sono ottimizzati in incrementi del 5%, e che il valore finale non include decimali. vale a dire 10,00% invece del 10.23%
Scusate per la domanda prolisso, Apprezzo tutto l'aiuto che ricevo.
Ecco il codice completo:
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
Soluzione
See: http://msdn.microsoft .com / it-it / library / aa272233 (v = office.10) aspx
Stai usando relazione: = 2, il che equivale a "=". Si deve usare 1 (<=)
Per quanto riguarda ottenere la soluzione al più vicino 0.05, appena istituito alcune altre cellule che alimentano nelle cellule "percentuale", e li hanno costretti a valori interi.
Esempio:
A1 = 7 (set solver to change this, and constrain to integer)
B1 = A1 * 0.05 (your percent cell, constrain to <=0.35)