Optimierungs-Aufgabe

Das Programm berechnet, auf welcher Maschine am günstigsten produziert wird, und stellt das Ergebnis in einem Diagramm dar.

Andererseite zeigt dieses Live-Beispiel, wie man typische Aufgaben der Kalkulation auch mit Web-Technologie lösen kann.


Verwandte Themen


Tabellen-Kalkulation


Allgemeine Angaben dieses Kapitels gelten für alle Kalkulations-Programme, spezielle (Menü-Befehle) nur für LibreOffice und OpenOffice, weil die Funktionen von MS-Excel im Laufe der Versionen zu oft anders angeordnet und umbenannt wurden.



Die zur Eingabe vorgesehenen Zellen werden eindeutig formatiert - in diesem Beispiel mit grünem Hintergrund (funktioniert im ↑ Live-Beispiel, wird hier jedoch nur simuliert).

Die Zellen B3:D3 werden speziell formatiert. Menü Format / Zellen / Zahlen / BenutzerInnen-definiert. Tragen sie als Typ ein:
"Maschine-"0
Danach sind in den Zellen weiterhin Zahlen enthalten (mit denen man rechnen kann), sie werden jedoch mit einem Text Maschine-1 usw. angezeigt.



Weitere Kosten, die man je nach Betriebs-Modell einrechnen kann (z.B. Entwicklung, Lager, Vertrieb, ...) werden hier nicht berücksichtigt.



Mit dem Namen  Kosten/Stk  wird hier jener Betrag bezeichnet, den man zur Herstellung von 1 Artikel aufwenden muss, und zwar ausdrücklich ohne Anteil der Fixkosten.

Mit dem Namen  gesKosten/Stk  wird hier jener Betrag bezeichnet, der sich ergibt, wenn man die Gesamtkosten (inkl. Fixkosten) auf die Anzahl der produzierten Artikel aufteilt.


Berechnung

 
A
B
C
D
7
Berechnung
=B3
=C3
=D3
8
GesamtKosten
=B4+$B$2*B5
=C4+$B$2*C5
=D4+$B$2*D5
9
gesKosten/Stk
=B8/$B$2
=C8/$B$
=D8/$B$2
10
Min.Maschine
=WENN(B8=MIN($B$8:$D$8);B7;"")
=WENN(C8=MIN($B$8:$D$8);C7;"")
=WENN(D8=MIN($B$8:$D$8);D7;"")
In diesem Bereich werden die Kosten der Produktion auf jeder einzelnen Maschine berechnet.
Man braucht nur die Formeln in Spalte B programmieren und kann sie nach rechts ausfüllen.

Die Maschinen-Nr im Bereich B7:D7 wird aus B3:D3 kopiert. Wenn das besondere Format nicht ebenso übernommen wird, dann trägt man es genauso ein wie in die Vorgaben.

Im Bereich B10:D10 wird die Nummer der optimalen Maschine programmiert. Dazu werden die jeweiligen GesamtKosten mit dem Minimum aller 3 GesamtKosten verglichen. Wenn die beiden Werte übereinstimmen, dann wird die Nummer der Maschine eingetragen, ansonsten ein 'Leerer Text' ohne Inhalt.


In Zelle B13 wird das Minimum des Bereichs B10:D10 berechnet und damit die Nummer der optimalen Maschine.

Die Standard-Funktion INDEX() erhält als 1.Argument einem Bereich. Daraus wird jener Wert entnommen, der mit den 2.Argument angegeben wird.
Beispiel: Wenn in Zelle B13 als optimale Maschine Nr. 2 berechnet wird, dann wird aus jedem der angegebenen Bereiche der 2.Wert zurückgegeben.
Damit werden die berechneten Werte der optimalen Lösung entnommen und hier zusammengefasst.


Das Ergebnis der Aufgabe wird bereits im Bereich 'Optimum' dargestellt. Die Praxis hat gezeigt, dass manche AnwenderInnen Probleme haben, eine derartige Tabelle zu interpretieren.
Eine zusätzliche verbale Formulierung kann helfen, Missverständnisse zu vermeiden. Die links gezeigten Formeln demonstrieren, dass man mit den Standard-Methoden der Tabellen-Kalkulation auch Strings (Texte) programmieren kann. Der Operator & dient zum Verketten (Zusammenfügen) von Teil-Strings.



Wenn möglich, sollte man immer versuchen, eine Aufgabe und ihre Lösung grafisch darzustellen. Meist muss man dazu eine oder mehrere Hilfs-Tabellen anlegen.

Das Diagramm der im ↑ Live-Beispiel gezeigten Lösung sieht einfach aus, ist jedoch unerwartet schwierig zu programmieren, weil man fehlende Informationen selbst ergänzen muss.
Tipp: Zeichnen sie eine Skizze und überlegen sie mit deren Hilfe, welche Koordinaten man braucht, um die einzelnen Linien zu zeichnen.

In den folgenden Absätzen wird zuerst die Programmierung vorgestellt, danach die Details des Diagramms für LibreOffice und OpenOffice.
Die Hilfs-Tabelle wird in der Praxis oft hinter dem Diagramm 'versteckt' angeordnet, weil sie zur Berechnung der Aufgabe nichts beiträgt.


Geraden der Kosten-Funktionen

Die Anfangspunkte der Geraden (Kostenfunktionen) werden mit x=0 festgelegt. Daraus ergibt sich y=d
Die Endpunkte werden mit dem willkürlichen Skalen-Maximum y=ymax festgelegt. Daraus ergibt sich
x = (ymax - d) / k

Die Anfangs-und Endpunkte der Kostenfunktion (Datenreihe, Linie) von Maschine-1 werden im Bereich B28:C29 berechnet, jene von Maschine-2 in B30:C31, von Maschine-3 in B32:C33



Formatierung
Wenn das Diagramm mit Doppelklick markiert und grau umrandet ist, dann kann man die bereits angelegten Linien mit RechtsKlick, Menü Datenreihen formatieren
Das Fenster Datenreihe bietet zahlreiche Möglichkeiten der Formatierung, darunter auch das Entfernen der Linien oder der Symbole.

(4) Stückzahl
Die vertikale Linie 'Stückzahl' in violetter Farbe schneidet die Kosten-Funktionen aller 3 Maschinen. Beide Punkte der Linie liegen bei x = Vorgabe-Anzahl.
Der Anfangspunkt liegt bei y=0, der Endpunkt bei y=ymax
Legen sie mit Klick auf Hinzufügen eine weitere Datenreihe an, tragen sie für den Namen A34 ein, für die X-Werte B34:B35, für die Y-Werte C34:C35
Die vertikale Linie wird angezeigt.

(5) Optimum
Der Lösungs-Punkt (Schnittpunkt mit der niedrigsten Kostenfunktion) wird mit einem Trick angelegt. Es ist schwierig, einen einzelnen Punkt anzulegen und zu formatieren, daher wird zunächst eine Datenreihe von 2 Punkten angelegt:
Legen sie mit Klick auf Hinzufügen eine weitere Datenreihe an, tragen sie für den Namen A36 ein, für die X-Werte B36:B37, für die Y-Werte C36:C37 und verschieben sie diese Datenreihe mit den Pfeil-Tasten als letzte ganz nach unten.
Damit wird eine Linie vom Ursprung (Ecke links unten) zum Lösungs-Punkt angezeigt. Formatieren sie diese Linie und wählen sie ein beliebiges, aber deutlich sichtbares Symbol.
Zeigen sie nun mit RechtsKlick Datenbereiche / Datenreihe die zuletzt hergestellte Datenreihe an und ändern sie manuell die X-Werte auf $B$36:$B$36 und die Y-Werte auf $C$36:$C$36
Damit wird die Datenreihe auf 1 Punkt reduziert. Nun kann man die Zellen B37:C37 löschen.



Kommentare
Man legt Kommentare für alle Zellen an, deren Bedeutung evtl. unklar sein könnte.

Dokumentation
Wenn eine Lösung für mehrere AnwenderInnen und/oder für längere Zeit eingesetzt werden soll, dann legt man mit Textverarbeitung eine Dokumentation an.
Darin werden mindestens diese Themen kurz aber klar behandelt: Ziel, Hinweise zur richtigen Anwendung, Grenzen und Sonderfälle, Details der Programmierung, Passwort.

Sicherungs-Kopie
Eine nicht mit Passwort gesicherte Kopie jeder Version der Datei wird so archiviert, dass man sie auch wiederfindet.

Es ist Aufgabe des Managements, sicherzustellen, dass Dokumentation und Sicherungs-Kopien unabhängig von der Person der/des EntwicklerIn verfügbar sind.

Beispiel zum Download


Die Beispiele sind in ZIP-Archive verpackt, weil man diese Dateien bei den meisten Web-Providern problemlos verwalten kann.
Man muss die ZIP-Archive vor der Verwendung auspacken.

Das MS-Excel-Beispiel wurde im Datei-Format *.xls gespeichert, weil dieses mit allen gängigen Versionen von LibreOffice, MS-Excel und OpenOffice verwendbar ist.


Das ↓ nächste Kapitel bietet Möglichkeiten, um auch dieses Webseiten-Beispiel herunterzuladen und am eigenen PC zu verwenden.

Web-Programmierung


Hier wird erklärt, wie das ↑ Live-Beispiel programmiert ist.
Im nächsten ↓ Kapitel werden die beiden Methoden verglichen.



Die Mini-Webseite ist in diese Seite mit einem HTML <iframe>-Element eingebettet:
<iframe src="linopt.html"></iframe>

Zur Programmierung der Mini-Webseite wurden mehrere moderne Web-Technologien verwendet:
Die Basis ist - wie für fast jede andere Webseite → HTML, hier in der Version HTML‑5
Für Layout und Formatierung wird → CSS verwendet.
Die interaktiven Funktionen und die Berechnung der Aufgabe sind mit → Javascript programmiert.
Das Diagramm ist mit → SVG-ObjektGrafik programmiert, die interaktive Änderung seiner Elemente mit Javascript.



Alle modernen Browser verstehen HTML‑5, CSS und Javascript. SVG wird schon lange von allen modernen Browsern unterstützt, zuletzt sogar von neueren Versionen des MSIE-Browsers.



Die erste Regel *{} wird auf alle Elemente angewendet. Danach folgen Regeln für HTML-Elemente, zuletzt jene für SVG-Elemente.

Regeln, die auf mehrere Elemente angewendet werden, sind mit einem führendenPunkt benannt, Regeln für ein einziges Element mit einem führendenZeichen.



Im Abschnitt 'Calculation' ist die Funktion calculate() enthalten. Damit wird die Aufgabe berechnet. Die Funktion liest die Werte der 7 Eingabe-Felder und berechnet daraus Gesamtkosten und Stückkosten für jede Maschine, sowie die minimalen Kosten aller Maschinen.
Die berechneten Daten werden mit DOM-Methoden in die Tabelle der Ergebnisse (gelb unterlegt) eingetragen.
Die variablen Elemente der Grafik werden angepasst, indem die Eigenschaften der Elemente mit DOM-Methoden geändert werden - in diesem Fall die XY-Koordinaten der 3 Daten-Linien und des kleinen Ergebnis-Kreises.

Details zum → Lesen von Formular-Feldern, zur → Validierung von Eingabe-Daten, und zu DOM-Methoden.



Danach folgen die beiden Bildschirm-Tasten (Buttons) 'Reset' und 'Zufallswerte' als HTML <button>-Elemente. Ihre onclick-Attribute legen fest, welche Javascript-Funktion beim Anklicken auszuführen ist.

Das nächste Element ist die Tabelle der berechneten Ergebnisse, so wie man es von der Tabellen-Kalkulation erwartet. Die Werte werden von der Javascript-Funktion calculate() eingetragen.

Als letztes Element folgt die verbale Ausgabe der Ergebnisse. Die Erfahrung hat gezeigt, dass dieser kleine zusätzliche Aufwand hilft, Missverständnisse zu vermeiden.



Der überwiegende Teil der Grafik-Elemente wird zum Zeichnen der fixen Elemente verwendet: Achsen und deren Skalen, Hilfslinien.

Am Ende sind im Abschnitt 'Daten' jene 3 Linien enthalten, welche die Kosten-Funktionen der 3 Maschinen angeben. Die Koordinaten dieser 3 Linien werden vom Javascript-Programm calculate() entsprechend den berechneten Ergebnissen Live angepasst.

Vor- und Nachteile


Die Lösung mit ↑ Tabellen-Kalkulation ist naheliegend und wird in ähnlicher Form oft verwendet. Die Lösung mit Web-Methoden (↑ Live-Beispiel) ist weniger bekannt, kann jedoch - je nach Umfeld - Vorteile bieten.

Tabellen-Kalkulation
Web-Technologie
Hardware & Software
Kalkulations-Lösungen laufen auf jedem einzelnen Arbeits-PC.
Die Kosten von kommerzieller Software wie MS-Office sind anteilig einzurechnen. Sie fallen allerdings wiederholt (mit jeder neuen Version) oder sogar laufend (bei Nutzng der Cloud-Version) an.
Hardware & Software
Web-Lösungen laufen auf einem (einzigen zentralen) Server.
Die Hardware-Kosten des Server-PC sind anteilig einzurechnen. Wenn man Standard-Komponenten verwendet (Linux-System, Apache-Webserver), dann fallen keine Software-Kosten an.
Herstellung
Die Kosten für eine Einzelplatz-Lösung sind gering, weil zumindest einfache Kenntnisse der Tabellen-Kalkulation in fast jedem Betrieb verfügbar sind.
Die Kosten steigen allerdings rasch, wenn eine Lösung an mehreren Arbeitsplätzen verwendet werden soll. Wenn eine derartige Lösung nicht professionell ausgeführt wird, dann können später hohe Folge-Kosten anfallen.

Die Zeit zur Programmierung wird meist stark unterschätzt. Eine Amateur-Version für einen einzelnen Arbeitsplatz kann schon nach einigen Minuten fertig sein. Eine professionelle Ausführung kostet jedoch um Größenordnungen mehr Zeit.
Herstellung
Die Kosten sind höher, weil die notwendigen Kenntnisse nur in größeren Betrieben verfügbar sind. In den meisten Fällen wird zur Programmierung ein externer Auftrag vergeben. Wenn kein Pfuscher beauftragt wird, dann ist meist auch die Qualität der Ausführung professioneller als eine Amateur-Entwicklung.
Für SmartPhones sollte man ein eigenes Layout anlegen.

Die Kosten sind von der Anzahl der AnwenderInnen unabhängig. Diese Lösung ist daher umso günstiger, je mehr Personen damit arbeiten.

Die Einschätzung der Arbeitszeit ist Aufgabe und Risiko der/des EntwicklerIn:
Man beauftragt nur Fixkosten, keine Stunden-Honorare.
Anwendung
Gut programmierte Lösungen laufen mit allen Standard Tabellen-Kalkulations-Programmen (LibreOffice, MS-Office, OpenOffice) auf allen gängigen Betriebssystemen. Das ist auf den meisten Arbeits-PC gewährleistet, nicht jedoch auf SmartPhones.

In der Praxis trifft man leider oft auf Amateur-Lösungen, die an ein Betriebssystem, an ein Programm oder sogar an eine bestimmte Version gebunden sind.
Anwendung
Eine Web-Lösung ist prinzipiell auf jedem Betriebssystem und mit jedem Browser ohne weitere Installation verwendbar, auch auf SmartPhones.

Man trifft nur selten auf unsauber programmierte Lösungen, die spezielle Eigenschaften bestimmter Browser verwenden. Seit auch der MSIE-Browser SVG-Objekt-Grafik unterstützt, sind auch Diagramme allgemein verwendbar.
Wartung
Aufwand und Kosten nehmen mit der Anzahl der Arbeitsplätze zu. Man muss sicherstellen, dass an allen Arbeits-PC die gleiche Version des Tabellen-Kalkulations-Programms und des Kalkulations-Dokuments verwendet wird.
Wartung
Eine sauber programmierte Lösung erfordert keine Wartungs-Kosten, weil Web-Lösungen auf jeder Standard-Server-Software laufen.
Änderung
Kleine Änderungen sind rasch und billig ausführbar.
Die Verteilung des neuen Kalkulations-Dokuments ist jedoch nicht nur aufwändig, bei Fehlern können auch hohe Folge-Kosten entstehen:

Eine neue Version muss an alle AnwenderInnen verteilt werden, und alle alten Versionen müssen gelöscht werden. Es ist schwierig, das zu garantieren, oder die Verwendung einer veralteten Version überhaupt zu bemerken: Sicherungs-Kopien (z.B. auf USB-Sticks) oder Kopien an privaten Geräten werden oft übersehen.
Änderung
Kleine Änderungen sind rasch und billig ausführbar.
Eine neue Version ist sofort für alle AnwenderInnen gültig.

Eine Verteilung ist nicht notwendig. Durch passende Maßnahmen kann man garantieren, dass die neue Version von allen Browsern beim nächsten Öffnen der betreffenden Webseite geladen wird.
Sicherheit
Die Sicherheit gegen Programm-Fehler hängt von der Entwicklung ab.

Zur Sicherung gegen unbefugte Verwendung kann man mit wenig Aufwand ein Passwort einrichten. Man kann allerdings weder die unbefugte Weitergabe einer Kopie noch des Passworts verhindern. Es ist kaum möglich, periodisch oder nach verdächtigen Ereignissen eine Änderung des Passworts durchzusetzen.
Sicherheit
Die Sicherheit gegen Programm-Fehler hängt von der Entwicklung ab.
Zur Sicherung gegen unbefugte Verwendung stehen an jedem Server mehrere Standard-Methoden zur Verfügung. Man kann die Anwendung an bestimmte User binden und/oder zusätzlich ein eigenes Passwort verlangen.
Darüber hinaus kann man die Anwendung an den (Betriebs)-Standort und/oder an bestimmte Geräte binden. Letztlich kann man unbefugte Verwendung durch Protokollierung zumindest leichter entdecken.
Datenbank
Die Verwendung von Daten einer zentralen Datenbank ist möglich, jedoch kritisch: Die Programmierung übersteigt die Kenntnisse vieler EntwicklerInnen, die Verteilung und laufende Wartung ist anfällig gegen Fehler.
Datenbank
Man kann problemlos Daten aus einer Datenbank zur Berechnung von Web-Lösungen verwenden. Dazu werden Standard-Methoden verwendet, die von jeder Server-Software geboten und von allen Web-EntwicklerInnen beherrscht werden.
Kontrolle
Die Kontrolle jeder Anwendung ist zwar theoretisch möglich, in der Praxis aber kaum durchführbar. Der Aufwand ist enorm, der Erfolg letztlich nur lückenhaft.
Kontrolle
Bei Bedarf ist es leicht möglich, jede Verwendung in einer Datenbank zu protokollieren. Für die Qualitäts-Kontrolle wird oft verlangt, die verwendeten Vorgaben und die berechneten Ergebnisse zu protokollieren.