Martin Weissenböck, HTL Wien IV
Mathematische Modelle für die Parkplatzvergabe |
Mathematische Inhalte:
Die Höhere technische Bundeslehranstalt Wien 4 liegt in dicht verbautem
Gebiet. Parkplätze außerhalb der Schule sind (außer zu
sehr ungewöhnlichen Zeiten) fast nicht zu finden. Andererseits liegt
die Schule in unmittelbarer Nähe des U-Bahnknotens Karlsplatz und
ist damit über drei U-Bahnlinien, sieben Straßenbahnlinien und
zwei Autobuslinien gut zu erreichen.
Die HTL Wien 4 hat einen kleinen Innenhof mit zwei großen Bäumen,
einer Rasenfläche und einer Abstellfläche, die Platz für
10 bis 15 Autos bietet. Rund 50 Lehrer sind an der Schule tätig. Derzeit
finden noch Umbauarbeiten statt. Wie soll der Platz nach Ende dieser Arbeiten
genutzt werden?
In einer Umfrage im Juni 1993 wurde zuerst für jeden Wochentag
einzeln ermittelt, an wievielen Tagen pro Jahr jeder Mitarbeiter gerne
mit dem Auto in die Schule fahren möchte. Eine weitere Frage zielte
auf die maximale Anzahl von Autos, die im Schulhof abgestellt sein dürfen.
Bereits diese Umfrage zeigte große Auffassungsunterschiede: fünf
Lehrer sprachen sich beispielsweise dafür aus, den Hof völlig
frei von Autos zu halten.
Die Frage war:
Kann eine mathematische Simulation Entscheidungsgrundlagen für
eine Lehrerkonferenz in dieser Frage liefern? Oder: kann der Computer dazu
beitragen, die Zufriedenheit der Lehrkräfte zu optimieren?
2. Das Modell
program parkplatz;
uses crt,printer,graph;
const
maxlehrer=60;
eingdatei='parkpl.dat';
wochen = 40;
Pro Lehrer wird die "Toleranzschwelle" (d.h. die maximal vertretbare Anzahl von Fahrzeugen) und die Angabe, an wieviel Montagen, Dienstagen usw. pro Jahr ein Parkplatz in Anspruch genommen würde, abgefragt. Diese Daten sind in einem Feld (Typ: Einzelmeinung) gespeichert: der Index 0 entspricht der Toleranzschwelle, die Indizes 1 bis 6 den Tagen Montag bis Samstag.
Beispiele: Wenn Lehrer A am Montag nie mit dem Auto fährt, gibt er 0 an. Wenn Lehrer B an jedem Montag mit dem Auto fahren möchte, gibt er für den Montag 40 an. Lehrer C will an 10 Montagen sein Auto benutzen und gibt daher 10 an.
Alle Meinungen bilden ein zweidimensionales Feld (Typ: Autotabelle). Der Einfachheit halber wird ein Jahr mit 40 Wochen angesetzt.
type
einzelmeinung=array
[0..6] of integer;
autotabelle=array[1..maxlehrer]
of einzelmeinung;
tag=array[1..6]
of integer;
procedure lesen (var t:autotabelle;var
anz:integer);
var
datei: text;
i:integer;
begin
assign(datei,eingdatei);
reset(datei);
anz:=0;
while not eof(datei) do
begin
anz:=anz+1; { Hier wird die Anzahl der Lehrer gezählt }
for i:=1 to 6 do
read(datei,t[anz,i]);
readln(datei,t[anz,0])
end
end; (* lesen
*)
Die folgende Funktion ist das Kernstück der gesamten Simulation: wieviele Autos würden an einem bestimmten Wochentag t abgestellt sein? Dazu wird für jeden Wochentag und jeden Lehrer eine Zufallszahl zwischen 0 und 40 bestimmt. Ist diese Zufallszahl kleiner oder gleich der gespeicherten Angabe, fährt der Lehrer (in der Simulation) an diesem Tag mit seinem Auto. Daher wird für diesen Tag die Anzahl der Autos um 1 erhöht.
In den vorher genannten Beispielen: wenn A den Wert 0 angegeben hat, kann die Zufallszahl niemals kleiner als 0 sein. A trägt daher (wie zu erwarten war) nichts zur Anzahl der geparkten Autos bei. Lehrer B hat 40 angegeben. Jede ermittelte Zufallszahl ist kleiner oder gleich 40, daher wird immer ein Auto dazu gezählt. Lehrer C schließlich wird im Durchschnitt bei jedem vierten Versuch ein Auto "beitragen".
Allgemein: die Zufallszahl zwischen 0 und 40 wird mit der Angabe a jedes einzelnen Lehrers i für den jeweiligen Wochentag t verglichen. Ist die Zufallszahl nicht größer als der Vergleichswert, dann wird ein Auto "geparkt"; die Anzahl der simulierten Autos sim erhöht sich um 1.
function simuliere_tag (t:integer;a:autotabelle;anz:integer):integer;
var
i:integer;
sim:integer;
begin
sim:=0;
for i:=1 to anz do
if random * wochen <= a[i,t] then sim:=sim+1;
simuliere_tag:=sim
end; (* simuliere_tag
*)
var
t:autotabelle;
anz:integer;
In der Prozedur drucke_ergebnis wird die simulierte Autozahl ausgegeben und für jeden einzelnen Lehrer mit der Toleranzschwelle verglichen. Ist die simulierte Zahl höchstens gleich der Toleranzschwelle, dann erhöht sich die Anzahl der zufriedenen Lehrer zuf um 1. Die Ergebnisse werden nacheinander für jeden Wochentag ausgegeben.
procedure drucke_ergebnis(var
f:text);
var
tt,sim,i,zuf:integer;
begin
for tt:=1 to 6 do
begin
zuf:=0;
for i:=1 to wochen do
begin
sim:=simuliere_tag(tt,t,anz);
if sim <= t[i,0] then zuf:=zuf+1;
write(f, sim:2);
end;
writeln(f);
writeln(f,' Anzahl=',anz:4,' zufr=',zuf:4,' Tag=',tt);
end;
writeln(f)
end;
procedure grafik(var art:char);
procedure ein_auto(tag,nr,f:integer);
var
x1,y1,x2,y2:integer;
begin
x1:=tag*100
- 60;
x2:=x1+75;
y1:=10+(13-nr)*25;
y2:=y1+23;
setfillstyle(1,f);
bar(x1,y1,x2,y2)
end;
procedure eine_marke(tag,nr,f:integer);
var
x1,y1,x2,y2:integer;
begin
x1:=tag*100
+17;
x2:=x1+3;
y1:=10+(13-nr)*25;
y2:=y1+23;
setfillstyle(1,f);
bar(x1,y1,x2,y2)
end;
var
i,j,woche,sim,tt:integer;
karte,modus:integer;
min,max,zahl:
array[1..6] of integer;
st:string[3];
begin
karte:=detect;
initgraph(karte,modus,'.\bgi');
settextstyle(defaultfont,horizdir,2);
outtextxy(
0,315,' 1');
outtextxy(
0,290,' 2');
outtextxy(
0,265,' 3');
outtextxy(
0,240,' 4');
outtextxy(
0,215,' 5');
outtextxy(
0,190,' 6');
outtextxy(
0,165,' 7');
outtextxy(
0,140,' 8');
outtextxy(
0,115,' 9');
outtextxy(
0,090,'10');
outtextxy(
0, 65,'11');
outtextxy(
0, 40,'12');
settextstyle(defaultfont,horizdir,4);
outtextxy(
55,340,'Mo');
outtextxy(155,340,'Di');
outtextxy(255,340,'Mi');
outtextxy(355,340,'Do');
outtextxy(455,340,'Fr');
outtextxy(555,340,'Sa');
outtextxy(355,380,'Woche:');
for
i:= 1 to 6 do zahl[i]:=1;
for
i:= 1 to 6 do min[i]:=12;
for
i:= 1 to 6 do max[i]:=0;
for
woche:=1 to 40 do
begin
str(woche:2,st);
setfillstyle(1,0);
bar(555,380,635,420);
outtextxy(555,380,st);
for i:=1 to 6 do
begin
sim:=simuliere_tag(i,t,anz);
if sim>=zahl[i] then
for j:=zahl[i] to sim do
begin
ein_auto(i,j,5);
if art<='1' then delay(1400)
else delay(300)
end
else
for j:=zahl[i] downto sim+1 do
begin
ein_auto(i,j,0);
if art<='1' then delay(1400)
else delay(300)
end;
zahl[i]:=sim;
if sim > max[i] then max[i]:=sim;
if sim < min[i] then min[i]:=sim;
if art<='1' then art:=readkey;
for j:=min[i] to max[i] do
eine_marke(i,j,7);
if art<='1' then art:=readkey;
end;
end;
art:=readkey;
closegraph;
end;
Im Hauptprogramm erfolgt die Ausgabe wahlweise auf dem Schirm ('S') oder auf dem Drucker ('D').
var
c:char;
begin
randomize;
lesen(t,anz);
readln(c);
case c of
'D': drucke_ergebnis(lst);
'S':
drucke_ergebnis(output);
'1'..'5': grafik(c);
end;
end.
In der Programmversion auf der Diskette ist noch eine Variante enthalten, die die Anzahl der Autos als Balkengrafik mit "Animation" zeigt: eine zeitliche Verzögerung erlaubt die Beobachtung der Entwicklung.
3. Die Konferenz
Nach diesen Vorbereitungen habe ich bei einer Lehrerkonferenz vier verschiedene Modelle für die Vergabe der Parkplätze vorgestellt:
Bei der Konferenz wurde eine Reihe von Grafiken präsentiert:
Natürlich weichen (bedingt durch den Zufallszahlengenerator) die Ergebnisse bei einzelnen Simulationsläufen von einander ab. Der folgende Ausschnitt zeigt die Ergebnisse eines Laufes für die Wochentage Freitag und Samstag über 35 Wochen.
2. Beispiel: Die Anzahl der zufriedenen Lehrer
Zur Entscheidungshilfe wird nun für jeden einzelnen Tag des Jahres die Akzeptanz festgestellt: wieviele Lehrer sind mit der Anzahl der abgestellten Fahrzeuge zufrieden? Im folgenden Diagramm sind die Ergebnisse in Prozent für eine Woche dargestellt:
5. Die Diskussion
Die Diskussion beschäftigte sich bald mit grundlegenden Fragen. Zusammengefaßt einige Wortmeldungen:
Nach eingehender Diskussion wurde die vierte Variante (das "stochastische Modell") um einen "Notparkplatz" erweitert: nur ein Parkplatz kann bei Bedarf für die Dauer einer Ladetätigkeit reserviert werden: damit steht für diese Zwecke ein garantierter Platz zur Verfügung.
Die radikal-alternative Variante erhielt bei der Abstimmung keine Stimme, das feudalistische Prinzip eine Stimme, die bürokratische Lösung 4 Stimmen und die modifizierte vierte Variante mit 12 Stimmen den Zuschlag.
7. Zusammenfassung
Für die Schriftenreihe der AMMU ist die Frage interessant: Kann die Angewandte Mathematik und die EDV als Hilfsmittel für demokratische innerschulische Entscheidungsprozesse verwendet werden? Wie weit sind überhaupt - abgesehen von dem vorliegenden Problem - solche Modelle geeignet, Entscheidungshilfen zu liefern? Das Experiment und die Diskussion lieferten jedenfalls interessante Denkanstöße.