2016-07-15 30 views
0

ich ein lineares Programmiermodell in R entwickelt haben, und ich möchte den Befehl wissen, eine Variable auf einen Wert zu setzen, hier ist mein Code und die Ergebnisse:Einstellung Variablen auf einen Wert unter Verwendung einer linearen Programmierung in r

install.packages("lpSolveAPI") 
library(lpSolveAPI) 

#want to solve for 6 variables, these correspond to the number of bins 
lprec <- make.lp(0, 6) 

lp.control(lprec, sense="max") 


#MODEL 1 
set.objfn(lprec, c(13.8, 70.52,122.31,174.73,223.49,260.65)) 

add.constraint(lprec, c(13.8, 70.52, 122.31, 174.73, 223.49, 260.65), "=", 204600) 

add.constraint(lprec, c(1,1,1,1,1,1), "=", 5000) 

Hier sind die Ergebnisse:

> solve(lprec) 
[1] 0 
> get.objective(lprec) 
[1] 204600 
> get.variables(lprec) 
[1] 2609.309 2390.691 0.000 0.000 0.000 0.000 

ich möchte das erste Ergebnis (2609) bis 3200 und das letzte Ergebnis auf 48 setzen und dann auf die anderen Variablen optimieren, jede mögliche Hilfe wäre sehr geschätzt .

Antwort

1

Im Idealfall erwarten Sie eine eingeschränkte Optimierung, für die Sie je nach Anforderung weitere Einschränkungen hinzufügen sollten. Ich bin nicht vertraut mit lpSolveAPI und so in der Lage nicht korrekte Kodierung zu tun, aber Sie müssen so etwas wie:

add.constraint(lprec, c(1, 0, 0, 0, 0, 0), "=", 3200) 
add.constraint(lprec, c(0, 0, 0, 0, 0, 1), "=", 48) 

Zusammen mit Ihren bestehenden Einschränkungen.

+0

Danke, das hat funktioniert. – heydude