0 Daumen
692 Aufrufe

Aufgabe:

Gegeben sei eine Stadt mit I Wohngebieten, J Schulen und G Klassenstufen an jeder Schule. Jede Schule j kann c(jg) Schüler der Klassenstufe g aufnehmen. In jedem Wohngebiet i ist die Anzahl der Schüler der Klassenstufe g mit s(ig) gegeben. Die Entfernung von Wohngebiet i zur Schule j beträgt d(ij) Kilometer. Die Summe der Kilometer, die alle Schüler zurücklegen müssen soll minimal werden. Formuliere dieses Problem als lineares Optimierungsproblem.


Problem/Ansatz:

Als Zielfunktion die minimal werden soll habe ich mir überlegt, dass

Die Summe von (s(ig)*d(ij)) minimal werden soll. Bei den Restriktionen komme ich leider überhaupt nicht weiter. Ich denke ich muss noch weitere Variablen einführen.

Wenn ich bspw. (ig) geschrieben habe meine ich damit die Indizes.

Wäre super wenn mir vielleicht jemand hierfür ein paar Tipps geben könnte :)

Avatar von

1 Antwort

0 Daumen

So einfach geht das net:

Beispielhaft: Annahme an jeder Schule gibt es die gleichen Klassenstufen?

I : ={w1,w2,w3,w4}I \, := \, \left\{ w1, w2, w3, w4 \right\}

J : ={s1,s2,s3}J \, := \, \left\{ s1, s2, s3 \right\}

G : ={g1,g2,g3,g4,g5}G \, := \, \left\{ g1, g2, g3, g4, g5 \right\}

S : =(w1  g1w2  g1w3  g1w4  g1w1  g2w2  g2w3  g2w4  g2w1  g3w2  g3w3  g3w4  g3w1  g4w2  g4w3  g4w4  g4w1  g5w2  g5w3  g5w4  g5)\small S \, := \, \left(\begin{array}{rrrr}w1 \; g1&w2 \; g1&w3 \; g1&w4 \; g1\\w1 \; g2&w2 \; g2&w3 \; g2&w4 \; g2\\w1 \; g3&w2 \; g3&w3 \; g3&w4 \; g3\\w1 \; g4&w2 \; g4&w3 \; g4&w4 \; g4\\w1 \; g5&w2 \; g5&w3 \; g5&w4 \; g5\\\end{array}\right)

C : =(s1  g1s2  g1s3  g1s1  g2s2  g2s3  g2s1  g3s2  g3s3  g3s1  g4s2  g4s3  g4s1  g5s2  g5s3  g5)\small C \, := \, \left(\begin{array}{rrr}s1 \; g1&s2 \; g1&s3 \; g1\\s1 \; g2&s2 \; g2&s3 \; g2\\s1 \; g3&s2 \; g3&s3 \; g3\\s1 \; g4&s2 \; g4&s3 \; g4\\s1 \; g5&s2 \; g5&s3 \; g5\\\end{array}\right)

D : =(w1  s1w2  s1w3  s1w4  s1w1  s2w2  s2w3  s2w4  s2w1  s3w2  s3w3  s3w4  s3)\small D \, := \, \left(\begin{array}{rrrr}w1 \; s1&w2 \; s1&w3 \; s1&w4 \; s1\\w1 \; s2&w2 \; s2&w3 \; s2&w4 \; s2\\w1 \; s3&w2 \; s3&w3 \; s3&w4 \; s3\\\end{array}\right)

Zusammenklöppeln darfst Du das jetzt:

Avatar von 21 k

Ah okay vielen Dank, dann hab ich mir das wohl ganz falsch gedacht

Das wird ein ziemliches Gemetzel, Du hättest ja Variablen wie

wigksj

von Wohnort w_i in Klassenstufe g_k geht zum Schulort s_j

im gezeigten Fall also 3*4*5 = 60 Variablen

Das Modell sieht auch unvollständig aus?

Mh so war zumindest die Aufgabe gestellt.

Es steht ja da, dass ich nur das Problem formulieren soll. Da reicht es denke ich, wenn ich zeige wie es circa geht.

Wäre es dann nicht aber sinnvoller sich einfach ein Beispiel mit jeweils 2 Elementen zu nehmen sodass es dann 8 Variablen werden?

Klar, kann man das Beispiel kleiner machen - es diente ja nur mal zur Orientierung.

Ich hab unterschiedliche Indexgrenzen gewählt um leichter unterscheiden zu können.

Ich würde ein konkretes Beispiel basteln und dann überprüfen ob der Ansatz taugt, etwa

Σ(wigksj)  d(wisj)min \Sigma \left(w_ig_ks_j \right) \; d\left(w_is_j \right) \to min

i(wigksj)c(sjgk) \sum\limits_i \left(w_ig_ks_j \right) \leq c\left(s_jg_k \right)

k(wigksj)s(wjgk) \sum\limits_k \left(w_ig_ks_j \right) \geq s\left(w_jg_k \right)

Hab allerdings nicht den Eindruck, das es was zu optimieren gibt?

Konkretisierung mit:

I:{w1,w2}, J:{s1,s2,s3], K:{g1,g2}

D : =(6.17.15.65.45.13.6),C : =(71189610),S : =(2021)D \, := \, \left(\begin{array}{rr}6.1&7.1\\5.6&5.4\\5.1&3.6\\\end{array}\right), C \, := \, \left(\begin{array}{rrr}7&11&8\\9&6&10\\\end{array}\right), S \, := \, \left(\begin{array}{rrr}20\\21\\\end{array}\right)

minimize_lp(
(6.1*w1g1s1)+(5.6*w1g1s2)+(5.1*w1g1s3)+(6.1*w1g2s1)+(5.6*w1g2s2)+(5.1*w1g2s3)+
(7.1*w2g1s1)+(5.4*w2g1s2)+(3.6*w2g1s3)+(7.1*w2g2s1)+(5.4*w2g2s2)+(3.6*w2g2s3), [
w1g1s1+w2g1s1<=7,
w1g2s1+w2g2s1<=9,
w1g1s2+w2g1s2<=11,
w1g2s2+w2g2s2<=6,
w1g1s3+w2g1s3<=8,
w1g2s3+w2g2s3<=10,
w1g1s1+w2g1s1+w1g1s2+w2g1s2+w1g1s3+w2g1s3=20,
w1g2s1+w2g2s1+w1g2s2+w2g2s2+w1g2s3+w2g2s3=21
]), nonegative_lp=true;

[193.2,[
w2g2s3=10,w1g2s3=0,w2g1s3=8,w1g1s3=0,
w2g2s2=6,w1g2s2=0,w2g1s2=11,w1g1s2=0,
w2g2s1=0,w1g2s1=5,w2g1s1=0,w1g1s1=1]]

Scheint zu funktionieren....

Ein anderes Problem?

Stell deine Frage

Ähnliche Fragen