Sie sind auf Seite 1von 4

sets s Studenten

i Institute

parameter

p(s,i) Praeferenzen der Studenten fuer die Institute

c(i) Kapazitaet der Institute

Z_Limit Maximal akzeptierte Zielfunktionswert

b fixes Budget pro genutzter Kapazitaet des Instituts an dem Bachelorarbeiten geschrieben
werden

e Extrageld pro Einheit Ueberkapazitaet

binary variables

X(s,i) 1 wenn Student s dem Institut i zugeordnet wird sonst 0

U(i) 1 wenn Bachelorarbeit am Institut i durchgefuehrt wird sonst 0

integer variable

k(i) Zusatzkapazitaet der Institute wird angegeben;

free variables

Z Mittleres Leid der Allokation

Aufsummiertes_Budget gesamtes Budget aufsummiert

equations

Zielfunktion berechnet das mittlere Leid

OrdneZuStudent (s) sorgt fuer die Zuordnung von Student s

Kapazitaetsobergrenze_Institut (i) verhindert die Ueberlastung

Limitiere_Leid laut Aufgabe soll Leid von 1.384 auf 1.2 gesenkt werden

limitiere_Zusatzkapazitaet(i) Zusaetzliche Kapazitaet wird begrenzt

Verknuepfung_der_Binaeren (i)

Berechne_gesammtes_Budget
Zielfunktion..

Z =E= sum(s, sum(i, p(s,i)* X(s,i))) / card(s)

Berechne_gesammtes_Budget..

Aufsummiertes_Budget =E= sum(i, k(i)*e + U(i)*c(i)*b)

OrdneZuStudent (s)..

sum(i, X(s,i)) =E=1 ;

Kapazitaetsobergrenze_Institut (i)..

sum(s, X(s,i)) =L= c(i) + k(i)

limitiere_Zusatzkapazitaet(i)..

k(i) =L= c(i)

Limitiere_Leid..

Z =L=Z_Limit

Verknuepfung_der_Binaeren(i). .

sum(s, X(s,i)) =L= card(s) * U(i)

model BachelorArbeitenZuteilung

/Zielfunktion, OrdneZuStudent,
Kapazitaetsobergrenze_Institut,Limitiere_Leid,limitiere_Zusatzkapazitaet,

Verknuepfung_der_Binaeren,Berechne_gesammtes_Budget/;

Z_Limit=1.2;

b = 250;

e=500

$include Eingangsdaten_s500_i25.gms

;
option optcr = 0.0;

solve BachelorArbeitenZuteilung minimizing Aufsummiertes_Budget using mip;

display c, p;

file Ergebnisse /Ergebnisdaten.txt/;

put Ergebnisse;

loop(s,

loop(i,

if (round(X.l(s,i)) = 1,

put "Student ", s.tl, " geht zu Institut ", i.tl:25, " mit Präferenz ", p(s,i) /;

);

);

);

put //;

loop(i,

put //"Zu Institut ", i.tl:5, " mit Kapazität ", c(i):10:0, " gehen die folgenden Studenten:"//;

loop(s,

if (round(X.l(s,i)) = 1,

put "Student ", s.tl, " geht zu Institut ", i.tl:25, " mit Präferenz ", p(s,i) /;

);

);

);

putclose Ergebnisse;

display x.l, c, Aufsummiertes_Budget.l, Z.l, U.l;


Powered by TCPDF (www.tcpdf.org)

Das könnte Ihnen auch gefallen