Ich versuche, eine Simulation eines linearen Programmierproblems zu tun. Das Modell verfügt über eine obj
-Funktion und einige Einschränkungen. In diesem Fall führe ich 2 Werte ein, die zufällig aus der Normalverteilung gezogen werden.Schleife durch eine Reihe von Elementen in R
Ich simuliere dann das Optimierungsmodell 10.000 Mal mit einer For-Schleife. Ich weiß, dass es schlecht ist, For-Schleifen zu verwenden, aber in diesem Fall geht es mir nicht um Geschwindigkeit.
#List of 10000 random, normally distributed observations:
Demand = rnorm(10000, mean=5, sd=2.5)
Demand
Performance = rnorm(10000, mean=100, sd=6)
Performance
Optimas = NULL
#combined_list = c(Demand, Performance)
for (i in Performance){
op <- OP(objective = c(2.5, 4, i), #Performance value[i]: works fine
L_constraint(L = matrix(c(1, 0, 0, #LHS
0, 1, 0,
0, 0, 1),
ncol=3, nrow = 3,
byrow = TRUE),
dir = c("<=", "<=", "<="),
rhs = c(50, 70, Demand)), #Demand value[i]: should go here
maximum = TRUE,
types = c("B", "I", "I"))
Optima <- ROI_solve(op, solver = "glpk") #solve
print(Optima)
print(i)
Optimas = rbind(Optimas, Optima)
}
Optimas <- as.data.frame(Optimas)
Optimas$objval <- as.numeric(Optimas$objval)
hist(Optimas$objval)
Wie oben zu sehen ist, wird meine Schleife nur Trog eine Variable (Performance) gehen, wo ich den Anforderungswert für Zeile (i) in der Nachfrage Vektor will, zugleich setzte in das Modell werden, wie Leistungswert für die Zeile (i) im Leistungsvektor. Das Gesamtziel ist es, 10.000 Simulationen des LP - Modells zu haben, wobei sowohl die Leistungswerte, als auch die Bedarfswerte nur einmal vorkommen (als eine andere Schleife außerhalb der bereits vorhandenen), wird das kartesische Produkt der zwei Listen).
Jede Hilfe würde sehr geschätzt werden.
Danke für die Antwort :-) verwendet ROI-Paket für die Optimierung – MikeR