Ich bin neugierig, ob es möglich ist, eine Zielfunktion zu definieren, die auf einen bestimmten Wert anstatt nur 'min' oder 'max' optimiert werden soll. Z. B. habe ich eine Funktion, die ich mit einigen Einschränkungen optimieren möchte (hier weggelassen). Zielfunktion (bis zu 100 optimiert werden):lpSolve - Zielfunktion auf einen bestimmten Wert optimieren
f(x) 3.62*x1+5.19*x2
Was wäre der richtige Weg sein, um mein Ziel zu erreichen? Im Moment kann ich die Optimierung nur auf 'min' oder 'max' setzen, was mein Ziel nicht löst.
Der vollständige Code:
fn.obj <- c(3.62, 5.19, 7.29, 7.76, 3.82, 4.86, 4.03, 8.81, 9.14)
require(lpSolveAPI)
model <- make.lp(0,9)
lp.control(model, sense="max", verbose="full")
set.objfn(model, fn.obj)#-8333550.82)
add.constraint(model, c(70,70,-30,70,-30,-30,-30,-30,70), ">=", 0)
add.constraint(model, c(-60,-60,40,-60,40,40,40,40,-60), ">=", 0)
add.constraint(model, c(-20,-20,80,-20,-20,80,80,-20,-20), ">=", 0)
add.constraint(model, c(30,30,-70,30,30,-70,-70,30,30), ">=", 0)
add.constraint(model, c(-30,-30,-30,-30,70,-30,-30,70,-30), ">=", 0)
add.constraint(model, c(40,40,40,40,-60,40,40,-60,40), ">=", 0)
set.bounds(model, lower=c(39232,72989,90872,63238,49579,9626,158297,300931,160556), upper=c(49041,91237,113591,79048,61974,12033,197872,376164,200696))
set.type(model, 1:9,type = "integer")
res<-solve(model)
get.variables(model)
get.objective(model)
Ergebnis:
> get.variables(model)
[1] 49041 91237 113591 79048 61974 12033 197872 376164 200696
> get.objective(model)
[1] 8333551
Der Code funktioniert gut, wenn Bedürfnisse der Zielfunktion zu maximieren. Aber was, wenn ich nicht maximieren möchte, sondern meine Zielfunktion z. 7000. Also mit den gleichen Einschränkungen Ich möchte mögliche x1, .. finden, x9 für meine fn.obj -> 1000.
meine Frage mit Originalcode aktualisiert. – Alex