home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 1 / crawlyvol1.bin / apps / spread / orspread / doc / orspread.doc next >
Text File  |  1986-02-03  |  26KB  |  524 lines

  1.               ======================================= 
  2.               Dokumentation zu ORSpread (Version 2.0) 
  3.               =======================================
  4.  
  5.  
  6.  
  7. Inhalt : 1. Einführung
  8.          2. Implementationsbeschreibung u. -beschränkungen 
  9.          3. Problemtypen
  10.             3.1 Linearoptimierung
  11.                 3.1.1 Beispiel (aus Müller-Merbach : "Operations Re-
  12.                       search)
  13.             3.2 Netzpläne
  14.             3.3 Kürzeste Wege
  15.          4. ORSpread Benutzung
  16.             4.1 Menüs
  17.             4.2 Tastatur und Maus
  18.  
  19.  
  20.  
  21.  
  22. 1  Einführung 
  23. =============
  24.  
  25.    ORSpread  (Operations  Research  Spread Sheet)  ist  ein  Programm, 
  26. dessen Benutzeroberfläche sich an Spread Sheet-Programmen  orientiert, 
  27. dessen  Fähigkeit aber nicht in der Kalkulation sondern in der  Lösung 
  28. von Standard-OR-Problemen liegt.
  29.  
  30.    Es  werden  Lösungsmodule für 3  verschiedene  Standard-OR-Probleme 
  31. angeboten :
  32.  
  33.    a. Lösung  von  Linearoptimierungsproblemen  durch  die  Simplexme-  
  34.       thode.  Damit  auch  implizit zur  Lösung  linearer  Gleichungs-  
  35.       systeme geeignet.
  36.  
  37.    b. Berechnung von Netzplänen mit der Critical-Path-Method.
  38.  
  39.    c. Berechnung  der kürzesten Entfernungen und Wege zwischen   allen 
  40.       Knoten eines bewerteten Graphen mit dem Tripelalgorithmus. 
  41.  
  42.  
  43.  
  44. 2  Implementationsbeschreibung u. -beschränkungen 
  45. =================================================
  46.  
  47.    a. Rechengenauigkeit  und  Zahlenbereich   
  48.           Es werden 8-Byte-LONGREALs mit einer  16-stelligen  Genauig-  
  49.       keit  verwendet.  Der Zahlenbereich ist damit  ausreichend  groß  
  50.       auf [-1.0E+305,1.0E+305] dimensioniert.  Alle Zahlen im  Bereich 
  51.       [-1.0E-13,1.0E-13] werden als 0 interpretiert.   
  52.  
  53.    b. Tabellengröße und Speicherverwaltung  
  54.          Der  Speicherplatz für die Matrix wird  dynamisch  verwaltet. 
  55.       Lediglich  die Vektoren B, C, Lsg, T, FrB, SpB, FrE, SpE und die 
  56.       Spaltennamen,  Relationszeichen  und Bemerkungen  werden in sta-
  57.       tischen Strukturen gespeichert.  
  58.          Zur  Zeit  werden  Matrizen bis zu einer  Größe  von  500x500  
  59.       akzeptiert,  wobei aber nicht unbedingt alle theoretisch verfüg-
  60.       baren  500 * 500 = 250000 Tabellenfelder, sondern - bei einem  1  
  61.       MegaByte-Rechner  -  nur ca.  30000 Felder  tatsächlich  genutzt  
  62.       werden  können.  Bei  solch  großen  Problemen sind die Matrizen 
  63.       allerdings ohnehin nur sehr spärlich besetzt (< 10%), so daß der
  64.       Speicherplatz kein Engpaß werden sollte.
  65.  
  66.  
  67.  
  68. 3  Problemtypen 
  69. ===============
  70.  
  71.    Diese  kleine  Dokumentation  kann natürlich  keinesfalls  ein  OR-
  72. Lehrbuch ersetzen. Es werden lediglich die wichtigsten Stichworte kurz 
  73. angerissen  und ein erklärendes Linearoptimierungs-Beispiel gegeben. 
  74.    Für  ausführlichere  Informationen  muß an dieser  Stelle  auf  die 
  75. Literatur  (z.B.  Müller-Merbach :  "Operations  Research")  verwiesen 
  76. werden.
  77.  
  78.  
  79.  
  80. 3.1  Linearoptimierung 
  81. ----------------------
  82.  
  83.    Linearoptimierungsprobleme sind durch eine, unter gewissen linearen 
  84. Nebenbedingungen  (NB) zu optimierende  (maximierende  bzw.  minimier-
  85. ende), Zielfunktion (ZF) charakterisiert. 
  86.    Die NB und die ZF sind hierbei Funktionen in den Strukturvariablen, 
  87. an deren optimalen Werten der Benutzer hauptsächlich interessiert ist.
  88. Man unterscheidet hierbei zwischen Variablen,  die der  Nichtnegativi-
  89. tätsbedingung (NNB) unterworfen sind,  und solchen,  die auch  negativ 
  90. werden  dürfen  also bezüglich des Vorzeichens frei  sind  (freie  Va-
  91. riable).  Restriktionen  der Form Xi >= 0 werden also  nicht  explizit 
  92. eingeführt, sondern auf Grund des Variablentyps implizit definiert.
  93.  
  94.    Neben diesen vom Benutzer eingeführten Strukturvariablen existieren 
  95. weitere  - durch den Lösungsalgorithmus bedingte  -  Schlupfvariablen, 
  96. deren Optimalwerte im Rahmen der Berechnung ebenfalls bestimmt  werden 
  97. und  so  (für  den versierteren  Anwender)  zusätzliche  Informationen 
  98. liefern. 
  99.  
  100.    ORSpread  erlaubt die Formulierung solcher Probleme in der  benutz-
  101. erfreundlichen (Un)gleichungsschreibweise (anstatt in der fehleranfäl-
  102. ligeren  Simplextableauform,  bei der der Anwender häufig  im  Zweifel 
  103. ist, welches Vorzeichen die Koeffizienten nun haben müssen).  
  104.    Hierbei wird für jede Variable eine Spalte und für jede Restriktion 
  105. (NB) eine Zeile  zur Verfügung gestellt.  Zwei weitere Spalten (B  und 
  106. Rel)  enthalten die absoluten Glieder bzw.  die  Relationszeichen  der 
  107. (Un)gleichungen. 
  108.    Außerdem  kann zu jeder Restriktion eine Bemerkung -  bei  größeren 
  109. Problemen  unverzichtbar - gespeichert werden,  die  gleichzeitig  als 
  110. Name für die zugehörige Schlupfvariable interpretiert werden kann. Die 
  111. C-Zeile schließlich  repräsentiert die Koeffizienten der ZF.   
  112.  
  113.    Nachdem  die Berechnung erfolgt ist,  wird die Lösungszeile an  das 
  114. Tableau  angehängt.  Fette  Werte  stehen  für  die  Optimalwerte  der 
  115. Basisvariablen (BV),  helle Werte für die Schattenpreise der  Nichtba-
  116. sisvariablen (NBV).  
  117.    Allerdings darf das so entstandene Tableau NICHT mehr als Ungleich-
  118. ungssystem in den Strukturvariablen aufgefaßt werden. Vielmehr enthält 
  119. es  nun die Koeffizienten des Simplextableaus.  Die  Ränderung  dieses 
  120. Tableaus  (Spalten-  und Zeilenbezeichnungen) ist  aber  aufgrund  der 
  121. vielen Positionsvertauschungen von Variablen (Basis/Nichtbasis-Tausch) 
  122. während der Optimierung nicht mehr zutreffend.  Diese Darstellungsform 
  123. wurde dennoch gewählt,  um es dem Benutzer zu erleichtern,  die vorher 
  124. in  einer  bestimmten  Reihenfolge  definierten  Variablen  mit  deren 
  125. Optimalwerten leicht wiederzufinden.  Überdies sind die  Koeffizienten 
  126. der Lösungsatrix für den Anwender nicht übermäßig interessant. 
  127.  
  128.    Über die Option Lösung drucken erhält man neben den Werten für  die 
  129. Strukturvariablen  auch die Werte der Schlupfvariablen,  die  für  die 
  130. Interpretation der Lösung sehr hilfreich seien können.
  131.  
  132.    Wenn  man  nur wissen möchte ob und  wie  ein  (Un)gleichungssystem 
  133. lösbar ist,  ohne jedoch eine ZF optimieren zu wollen, so kann man die 
  134. ZF  einfach  ignorieren (alle Koeffizienten in der C-Zeile auf  0  be-
  135. lassen). 
  136.  
  137.    Für reine lineare Gleichungsysteme sind alle Variablen als frei  zu 
  138. deklarieren und alle Relationszeichen auf "=" zu setzen. Die Zielfunk-
  139. tion  wird hier ebenfalls ignoriert. 
  140.  
  141.    Es  kann  natürlich auch  vorkommen,  daß  das  (Un)gleichungsystem 
  142. widersprüchlich ist, redundante Gleichungen existieren, nicht genügend 
  143. Restriktionen (z.B.  unterbestimmtes Gleichungssystem) vorhanden  sind 
  144. oder  die  Zielfunktion unbeschränkt ist.  In diesen  Fällen  muß  der 
  145. Lösungsversuch vorzeitig abgebrochen werden. Aus dem letzten Zwischen-
  146. tableau  ist  es  aber  eventuell für  den  geübten  Anwender  möglich 
  147. herauszufinden,  warum keine zulässige (und schon gar keine  optimale) 
  148. Lösung gefunden werden konnte.
  149.  
  150.  
  151. 3.1.1  Beispiel
  152. ---------------
  153.    Ein Betrieb fertigt zwei Produkte P1 und P2,  die beim Verkauf (pro 
  154. Stück) einen Deckungsbeitrag (Erlös - Kosten) von 300 DM bzw.  500  DM 
  155. erbringen. Allerdings fallen auch Fixkosten in Höhe von 36000 DM an. 
  156.    Für die Produktion stehen drei Maschinen A,  B und C zur Verfügung. 
  157. Um  ein Stück vom Typ P1 herzustellen,  müssen A und B je eine  Stunde 
  158. benutzt werden.  Zur Fertigung eines Stücks vom Typ P2 sind auf A :  2 
  159. Stunden, B : 1 Stunde und C : 3 Stunden nötig. 
  160.    Die Maschinenlaufzeiten sind allerdings begrenzt und zwar auf : A : 
  161. 170 Stunden,  B :  150 Stunden und C :  180 Stunden.  Gesucht ist  das 
  162. gewinnmaximale Produktionsprogramm.
  163.  
  164.    Formulierung als Ungleichungssystem in den Strukturvariablen P1, P2 
  165. deren  Optimalwerte  (optimale  Ausbringungsmenge  der   Produkttypen) 
  166. gesucht  werden,  wobei  sich als Zielwert der  Gesamtgewinn  aus  dem 
  167. Verkauf dieser gefertigten Produkte ergibt :
  168.  
  169.        1 * P1 +   2 * P2 <=  170         (Bem.: Maschine A) 
  170.        1 * P1 +   1 * P2 <=  150         (Bem.: Maschine B)
  171.        0 * P1 +   3 * P2 <=  180         (Bem.: Maschine C)
  172.      300 * P1 + 500 * P2 - 36000 --> max (Bem.: ZF = Gewinn)
  173.            P1            >=   0          (Bem.: implizite NNB)
  174.                       P2 >=   0          (Bem.: implizite NNB)  
  175.  
  176.    Neben  P1  und P2 entsteht pro NB eine  Schlupfvariable,  also  die 
  177. Schlupfvariablen A,  B und C mit der folgenden Semantik. Die Werte von 
  178. A,  B  und  C geben die Leerlaufzeit (Stillstandzeit)  der  jeweiligen 
  179. Maschinen an.  Ist die Stillstandzeit = 0,  so wird die Maschine  voll 
  180. ausgelastet.
  181.  
  182. Lösung des Problems :
  183.  
  184.   Struktur/[Schlupf]-Variable |  optimaler Wert  |   Schattenpreis  
  185. ------------------------------+------------------+------------------
  186.         P1                    |     130.00000000 |
  187.         P2                    |      20.00000000 |
  188. [  1]   A                     |                  |    -200.00000000 
  189. [  2]   B                     |                  |    -100.00000000 
  190. [  3]   C                     |     120.00000000 |
  191.         Zielwert              |   13000.00000000 |
  192.  
  193.    Wenn 130 Stück vom Typ 1 und 20 Stück vom Typ 2 hergestellt werden, 
  194. so  erzielen  wir einen (optimalen = maximalen) Gewinn von  13000  DM. 
  195. Hierbei  werden  die Maschinen A und B voll ausgelastet  (Wert  =  0). 
  196. Lediglich  die  Maschine  C  steht 120  von  180  Stunden  still.  Die 
  197. Schattenpreise sagen aus,  daß sich der Gewinn für jede Stunde,  die A 
  198. (B) weniger läuft, um 200 DM (100 DM) verringert (negatives Vorzeichen 
  199. der Schattenpreise).  Für jede zusätzliche Fertigungsstunde auf A  (B) 
  200. [z.B.  durch Überstunden] würde sich der Gewinn dagegen um 200 DM (100 
  201. DM) erhöhen. 
  202.  
  203.  
  204.  
  205. 3.2  Netzpläne
  206. --------------
  207.  
  208.    Netzpläne sind Graphen, deren Knoten mit der Dauer der assoziierten 
  209. Tätigkeit (Job) beschriftet sind,  deren Kanten   aber keine Beschrif-
  210. tung  tragen,  sondern  nur wichtig ist ob eine Kante  existiert  oder 
  211. nicht.  Hierbei bedeutet eine Kante vom Knoten v zum Knoten w, daß der 
  212. Job v vor dem Job w ausgeführt werden muß oder anders ausgedrückt :  w 
  213. kann erst dann begonnen werden wenn v beendet ist.  Man ist nun an der 
  214. kürzesten Gesamtprojektdauer (unter Ausnutzung einer möglichst  großen 
  215. Parallelität  der  Jobausführungen) sowie der dafür  notwendigen  bzw. 
  216. ausreichenden Anfangszeitpunkte der einzelnen Jobs interessiert.
  217.  
  218.    In  ORSpread wird für jeden Knoten eine Zeile und eine Spalte  (mit 
  219. der gleichen Nummer) reserviert.  So erhält man also eine  Adjazenzma-
  220. trix,  in der die i-te Zeile die Adjazenzliste und die i-te Spalte die 
  221. Inzidenzliste des i-ten Knotens darstellt. Ein Kante von i nach j wird 
  222. also  in  das Feld [i,j],  ein Kante von j nach i in  das  Feld  [j,i] 
  223. eingetragen.  Einträge  in  der Hauptdiagonalen (Kante von i  nach  i) 
  224. werden nicht zugelassen,  da diese einen Widerspruch bedeuten und  zur 
  225. Unlösbarkeit des Problems führen. Größere Zykel (z.B.: i --> j --> k -
  226. ->  i)  werden  erst während der Berechnung erkannt  (und  führen  zum 
  227. Abbruch derselben).
  228.    In der T-Zeile werden die Jobdauern notiert.
  229.  
  230.    Nach  erfolgreicher  Beendigung der Rechnung werden  die  gesuchten 
  231. Lösungsspalten an das Tableau angehängt. 
  232.  
  233.  
  234.  
  235. 3.3  Kürzeste Wege
  236. ------------------
  237.  
  238.    Für einen gerichteten/ungerichteten/gemischten Graphen, dessen Kan-
  239. ten mit ihrer jeweiligen Länge beschriftet sind, werden alle kürzesten 
  240. Wege (von jedem Knoten i zu jedem anderen Knoten j)  gesucht.  Hierbei 
  241. wird unterstellt daß alle Kanten der Form i --> i Länge 0 haben  (bzw. 
  242. diese Kanten nicht existieren).
  243.  
  244.    Wie bei den Netzplänen wird auch hier die Adjazenzmatrixdarstellung 
  245. benutzt.  Ein Eintrag von 17.42 in der i-ten Zeile und j-ten    Spalte 
  246. bedeutet  also,  daß eine Kante vom Knoten i zum   Knoten j mit  Länge 
  247. 17.42 existiert. 
  248.  
  249.   Nach  Berechnung der kürzesten Wege stellen die  Matrixeinträge  die 
  250. Länge dieser gefundenen Wege dar. Da diese Wege jedoch i.a. über einen 
  251. oder mehrere Zwischenknoten verlaufen,  können sie in der Matrix nicht 
  252. repräsentiert  werden,  sondern  müssen mit  Hilfe  einer  gesonderten 
  253. Ausgaberoutine ('Lösung drucken') dargestellt werden.  Hierbei  werden 
  254. der Start- und Ziel-Knoten mit der Gesamtentfernung sowie alle auf dem 
  255. kürzesten  Weg liegenden Pfad-(Zwischen)-Knoten mit den  Einzelentfer-
  256. nungen aufgelistet. 
  257.  
  258.    Enthält  der Graph mindestens einen Zykls negativer Länge,  so  ist 
  259. die Fragestellung nach kürzesten Wegen nicht mehr sinnvoll.  In diesem 
  260. Fall muß die Rechnung vorzeitig abgebrochen werden.
  261.  
  262.  
  263.  
  264. 4  ORSpread Benutzung
  265. =====================
  266.  
  267.  
  268. 4.1  Menüs
  269. ----------
  270.  
  271. DESK
  272.    ORSPREAD-INFO
  273.          Informationen  über  den  Autor,   die  Programmversion,  die 
  274.       Matrixbelegung und Matrixrestkapazität sowie über den  aktuellen 
  275.       Filenamen und die zuletzt ausgeführte Sicherungsoperation.
  276.          [Bem.: Es können höchstens Belegungen bis zu 65536 Matrixfel-
  277.       dern angezeigt werden.  Alle weiteren Eintragungen in die Matrix 
  278.       werden  zwar (genug RAM vorrausgesetzt)  ordnungsgemäß  durchge-
  279.       führt, aber diese Informationszahl wird sich nicht erhöhen].
  280.  
  281. DATEI
  282.    LADEN
  283.          ORSpread-Datei in den Arbeitsspeicher laden, wobei der bishe-
  284.       rige  Tableauinhalt verloren geht (eventuell erst nach  Bestäti-
  285.       gung).  Der  Problemtyp  bzw.  ein falsches  Dateiformat  werden 
  286.       automatisch erkannt.               
  287.    SPEICHERN 
  288.          Speichern des Tabelleninhaltes unter dem aktuellen Problemna-
  289.       men (falls dieser bekannt ist; Ansonsten wie SPEICHERN ALS). 
  290.    SPEICHERN ALS
  291.          Speichern  des Tabelleninhaltes nach Auswahl des  Dateinamens 
  292.       mit der Fileselektorbox.
  293.    PROGRAMM BEENDEN 
  294.          Beenden von ORSpread (eventuell erst nach Bestätigung).
  295.  
  296. PROBLEM
  297.       Bei  den  3  folgenden Unterpunkten wird  (eventuell  erst  nach 
  298.    Bestätigung) der Tableauinhalt gelöscht und anschließend ein  neues 
  299.    (leeres)  Problemtableau des gewählten  Problemtyps  initialisiert. 
  300.    Hierbei  richten  sich :  
  301.       -) die Tableaugröße
  302.       -) das Tableauformat (globale Spaltenbreite, Nachkommastellen)
  303.       -) die Relationszeichen (bei  der Linearoptimierung) 
  304.    und  
  305.       -) die Variablen-/Knotennamen 
  306.    nach den in FORMAT INSTALLATION gemachten Angaben.   
  307.    LINEAROPTIMIERUNG 
  308.          Linearoptimierungsproblem.
  309.    KÜRZESTE WEGE     
  310.          Kürzeste Wege zwischen allen Graphknoten.
  311.    NETZPLAN 
  312.          Netzplanaufgabe.
  313.    BERECHNUNG STARTEN
  314.          Es wir versucht das aktuell editierte Problem zu lösen. Zuvor 
  315.       wird  der Benutzer allerdings gezwungen (nur zu  seinem  Besten) 
  316.       das Tableau abzuspeichern [Ausnahme:  Seit der letzten Speicher-
  317.       ung wurden keine Veränderungen durchgeführt], da die Feldinhalte 
  318.       im  Laufe der Rechnung i.a.  überschrieben werden und für  nach-
  319.       trägliche Änderungen nicht mehr zur Verfügung stünden.
  320.  
  321. EDIT
  322.    TABLEAUGRÖßE
  323.          Nach Angabe der Zeilen- und Spaltenanzahl bzw.  der Graphkno-
  324.       tenanzahl wird die aktuelle Tabelle am rechten bzw. unteren Rand 
  325.       erweitert bzw. gekürzt. 
  326.          [Bem.:  Netzpläne  und Kürzeste Wege-Probleme stellen  (s.o.) 
  327.       Graphen  dar und werden stets in einer  quadratischen  Adjazenz-
  328.       matrix  repräsentiert.  Deshalb kann und darf der  Benutzer  die 
  329.       Zeilen- und Spaltenanzahl nicht getrennt spezifizieren.]  
  330.          Je nach denen,  in FORMAT INSTALLATION gemachten Angaben über 
  331.       die  Variablennamen  und das  Defaultrelationszeichen  (für  die 
  332.       Linearoptimierung)  werden  die Namen und  Relationszeichen  bei 
  333.       einer Erweiterung des Tableaus entsprechend automatisch gesetzt. 
  334.       Somit kann man z.B.  ein Linearoptimierungstableau (mit 17 ≤-NB, 
  335.       11  ≥-NB  und 9 Gleichungen schrittweise aufbauen  und  muß  die 
  336.       Relationszeichen nicht per Hand eintragen.
  337.  
  338.       Die 6 folgenden Operationen sind vorwiegend für  Linearoptimier-
  339.    ungsprobleme vorgesehen. Bei Auswahl dieser Menüpunkte in einer der 
  340.    beiden  anderen Problemstellungen kann es zu überraschenden  -  auf 
  341.    den  ersten Blick vermutet man wohl einen Programmfehler,  den  ich 
  342.    aber mit gutem Gewissen abstreiten kann - Ergebnissen kommen. Dafür 
  343.    gibt es verschiedene Gründe :
  344.       Bei  der  Linearoptimierung  haben  Zeilen  und  Spalten  völlig 
  345.    unterschiedliche  Bedeutungen.  Bei  den anderen  beiden  Problemen 
  346.    gehören jedoch je eine Zeile und eine Spalte (mit gleicher  Nummer) 
  347.    logisch zusammen,  da sie die Adjazenz- und Inzidenzliste des zugh. 
  348.    Knotens darstellen. Während man bei der Linearoptimierung z.B. zwei 
  349.    Zeilen (Spalten) vertauschen kann ohne die Semantik des Tableaus zu 
  350.    verändern,  hätte  dies  bei den Adjazenzmatrizen der  Graphen  nur 
  351.    schwer  nachvollziehbare  (und sicherlich vom Benutzer  auch  nicht 
  352.    gewollte) Konsequenzen. 
  353.       Grundsätzlich  werden  deshalb alle  Operationen,  die  bei  der 
  354.    Linearoptimierung  die Wahl zwischen Zeile und Spalte  lassen,  bei 
  355.    den  Graphproblemen sowohl auf die zugh.  Zeile als auch die  zugh. 
  356.    Spalte   ausgeführt   (eine  unnötige  Aufblähung   des   RSC-Files 
  357.    [unterschiedliche Dialogboxen für die verschiedenen Probleme]  habe 
  358.    ich  mir erspart und setze stattdessen die Kenntnis  des  Benutzers 
  359.    über diese Vereinbarung vorraus)
  360.       Aber - wie schon gesagt - kann selbst diese Art der  Befehlsaus-
  361.    führung zu überraschenden Ergebnissen führen.
  362.       Auch die Einschränkung,  daß die Hauptdiagonale bei  Adjazenzma-
  363.    trizen leer bleibt,  kann z.B.  bei den Blockoperationen zu Verwir-
  364.    rungen  und sogar Datenverlusten führen,  da Einfügebefehle in  der 
  365.    Hauptdiagonalen einfach ignoriert werden.  
  366.  
  367.    ZEILE/SPALTE EINFÜGEN 
  368.          Nach Angabe der Einfügeposition wird bei der  Linearoptimier-
  369.       ung  die  entsprechende Zeile/Spalte - bei  den  anderen  beiden 
  370.       Problemen sowohl die Zeile als auch die Spalte - eingefügt.
  371.    ZEILE/SPALTE LÖSCHEN  
  372.           Analoge Operation zu ZEILE/SPALTE EINFÜGEN.
  373.    BLOCK KOPIEREN
  374.          Nach Definition des rechteckigen Quell- und Zielbereichs wird 
  375.       der  Inhalt  der Quelle nach Ziel kopiert.  Ein  Überlappen  der 
  376.       Bereiche ist hierbei nicht erlaubt,  da der Benutzer einen Block 
  377.       duplizieren  möchte  und  sich nicht ungewollt  einen  Teil  des 
  378.       Blocks überschreiben will. 
  379.    BLOCK VERSCHIEBEN     
  380.          Analogr Operation zu BLOCK KOPIEREN,  wobei die Quelle  nicht 
  381.       kopiert  sondern  verschoben  wird  und  außerdem  Überlappungen 
  382.       der beiden Blöcke erlaubt sind. 
  383.    BLOCK FÜLLEN          
  384.          Füllen eines rechteckigen Bereichs mit einer reellen Zahl.
  385.    ZEILE/SPALTE TAUSCHEN 
  386.          Nach  Angabe  der beiden Nummern wird der Inhalt  der  beiden 
  387.       Zeilen bzw. Spalten (bzw. sowohl Zeilen als auch Spalten bei den 
  388.       Graphproblemen) ausgetauscht. 
  389.    VARIABLEN BENENNEN
  390.          Hiermit wird der Editiermodus gewechselt.  Der Cursor springt 
  391.       in  die Zeile der Variablennamen,  die dann - wie  alle  anderen 
  392.       Tableaufelder  auch - editiert werden  können.  Allerdings  sind 
  393.       einige (im "normalen" Tableaueditiermodus zugängliche)  Funktio-
  394.       nen,  die  bei der Editierung von Variablennamen unsinnig  wären 
  395.       (z.B.: Block mit reeller Zahl füllen), ausgeschaltet. 
  396.  
  397. FORMAT
  398.    GLOBAL
  399.          Festlegung des globalen Spaltenformates :
  400.       -) Spaltenbreite  
  401.       -) Nachkommastellenanzahl   (die  höchstens  so  groß  wie   MIN 
  402.          {13,Spaltenbreite-2} sein darf)
  403.    LOKAL
  404.          Lokales Format für die Spalte in der der Cursor steht.
  405.    SPEZIELL
  406.          -) Editiererleichterung für Kürzeste-Wege-Graphen. Alle nach-
  407.       folgend eingetragenen Kanten werden als gerichtet bzw. ungerich-
  408.       tet aufgefaßt.  Lediglich Kanten mit negativer Entfernungsangabe 
  409.       werden in jedem Fall als gerichtet aufgefaßt, da eine entsprech-
  410.       ende  ungerichtete  Kante zu einem Zyklus  negativer  Länge  und 
  411.       somit zur Unlösbarkeit des Problems führen würde.
  412.          -) Festlegung   der  Netzplanzeitensemantik.   Das   Programm 
  413.       akzeptiert  entweder abstrakte reellwertige  Zeiteinheiten  (ZE) 
  414.       oder echte ZE im Format W:T:H:M:S (d.h.: Wochen : Tage : Stunden 
  415.       : Minuten : Sekunden), wobei jederzeit zwischen diesen beiden ZE 
  416.       hin-  und hergeschaltet werden kann [allerdings geht  der  Nach-
  417.       kommaanteil der abstrakten Werte bei der Umwandlung verloren].
  418.           Bei  den echten ZE werden Eingaben bis zu echt  weniger  als 
  419.       1000 Wochen akzeptiert.
  420.    DARSTELLUNG
  421.          Festlegung der Zeichendarstellungsgröße,  wobei Werte im  Be-
  422.       reich [4-12] zu flachen (aber relativ breiten) Zeichen, Werte im 
  423.       Bereich [13-20] zu hohen (aber relativ schmalen) Zeichen führen. 
  424.    INSTALLATION 
  425.          Spezifikation einiger Parameter,  die für neue Probleme (vgl. 
  426.       PROBLEM) bzw.  bei Tableauerweiterungen (vgl. EDIT, ZEILE/SPALTE 
  427.       EINFÜGEN)  als Defaultwerte dienen.  Diese Werte können auch  in 
  428.       der Datei ORDEFAUL.INS gespeichert werden.
  429.  
  430. DRUCKEN
  431.    TABLEAU-HARDCOPY
  432.          Die gesamte Tabelle wird (in der aktuellen Darstellungsgröße) 
  433.       durch  Hardcopies  (zwei  Stück  pro  Druckerseite)  zu   Papier 
  434.       gebracht.  Diese  Hardcopies können z.B.  anschließend zu  einer 
  435.       großen Tabelle zusammengeklebt werden.
  436.    BILDSCHIRM-HARDCOPY 
  437.          Es  wird nur eine Hardcopy des  aktuellen  Bildschirminhaltes 
  438.       angefertigt.
  439.    LÖSUNG DRUCKEN      
  440.          Ausgabe  der Lösung auf Drucker,  Diskette  oder  Bildschirm. 
  441.       Hierbei  gibt  es  für  Linearoptimierungs-  und  Kürzeste-Wege-
  442.       Probleme  mehr  Informationen,  als  in  der  Tableaudarstellung 
  443.       angezeigt werden können.
  444.  
  445. DIALOG
  446.    ERKLÄRENDE  MELDUNGEN 
  447.          Ein Schalter,  der die Anzeige von erklärenden Meldungen  an- 
  448.       und ausschaltet.
  449.    WARNUNGEN
  450.          Ein Schalter,  der die Anzeige von Warnungen (vgl.  PROGRAMM-
  451.       ENDE, PROBLEM, TABLEAUGRÖßE etc.) an- und ausschaltet.
  452.    FUNKTIONSTASTEN
  453.          Es  erscheint eine Dialogbox,  in der die Belegung der  Funk-
  454.       tionstasten F1,..,F9 geändert werden kann.
  455.    SOFORT EINFÜGEN
  456.          Ein  Schalter,  der  den  Dialog-Editier-Modus  steuert.  Bei 
  457.       eingeschaltetem Schalter wird die Editierung eines Feldes sofort 
  458.       nach  Drücken einer zulässigen Taste gestartet und  kann  sowohl 
  459.       mit  den  Cursor-Tasten,  als  auch mit  'Return'  oder  'Enter' 
  460.       beendet  werden.  Nur  in diesem Modus ist eine  Editierung  mit 
  461.       Hilfe der Funktionstasten möglich. 
  462.          Im  anderen Fall muß man den Editierwunsch durch Drücken  von 
  463.       'Return' oder 'Enter' äußern und kann auch nur mit diesen beiden 
  464.       Tasten  wieder enden,  wobei die Cursor-Tasten jetzt zum  Laufen 
  465.       innerhalb des Editierstrings dienen. 
  466.          Weitere Editier-Sondertasten sind  
  467.       -) 'Esc'       = leere den Eingabestring und setze den Cursor an
  468.                        den Anfang 
  469.       -) 'Undo'      = hole den ursprünglichen Inhalt wieder zurück 
  470.       -) 'Insert'    = füge eine Leerstelle ein
  471.       -) 'Delete'    = lösche ein Zeichen unter dem Cursor
  472.       -) 'Backspace' = lösche das Zeichen links vom Cursor
  473.       -) 'Clr/Home'  = gehe zum Anfang der Eingabe ohne den Inhalt zu
  474.                        verändern  
  475.  
  476. HILFE
  477.       Erklärung  der wichtigsten Programmeigenschaften nach  TASTATUR, 
  478.    ALLGEMEINES,  LINEAROPTIMIERUNG, KÜRZESTE WEGE und NETZPLAN geglie-
  479.    dert.
  480.  
  481.  
  482.  
  483. 4.2  Tastatur und Maus
  484. ----------------------
  485.  
  486.    Die  Maus  dient  nicht nur als Zeiger um  die  Pull-Down-Menüs  zu 
  487. öffnen,  sondern  mit einem Maus-Linksclick läßt sich der Cursor  frei 
  488. auf dem Bildschirm positionieren. 
  489.  
  490.    Die  Tastatur  hat ebenfalls  vorwiegend  Cursorsteuerungsaufgaben. 
  491. Hierbei gilt folgende Belegung :
  492.    -) Cursortasten      :  Bewege Cursor um ein Feld weiter
  493.    -) Shift+Cursortaste :  Scrolle eine Seite
  494.       [Bem  :  Die  folgenden  Tasten  sind  bei  der  Editierung  der 
  495.       Namensfelder ausgeschaltet]
  496.    -) Esc               :  Springe zu einer bestimmten Position
  497.    -) Clr/Home          :  Springe zum Feld [1,1]
  498.    -) Tab               :  Springe zum nächsten belegten Matrixfeld in 
  499.                            der aktuellen Zeile (sehr nützlicher Befehl 
  500.                            um bei großen Tableaus sicherzustellen, daß 
  501.                            keine  ungewollten Matrixeintragungen  mehr 
  502.                            in dieser Zeile existieren)
  503.    -) Ctrl M            :  Setzen und Anspringen von bis zu 9  Marken. 
  504.                            Das Setzen wird mit einem akustischen  Sig-
  505.                            nal bestätigt.
  506.  
  507.    Außerdem gibt es noch die Möglichkeit die Quell- und Zielblöcke der 
  508. Blockoperationen  im voraus zu markieren (bei  Namenseditierung  eben-
  509. falls ausgeschaltet).  Ist die Markierung erfolgt ertönt eine  akusti-
  510. sche Bestätigung :
  511.    -) Ctrl B            :  Nordwestecke des Quellblocks
  512.    -) Ctrl K            :  Südostecke des Quellblocks
  513.    -) Ctrl Z            :  Nordwestecke des Zielblocks
  514.  
  515.    Mit Hilfe des Funktionstasten F1 bis F9 können darüberhinaus häufig 
  516. einzutragende Zahlwerte oder Namen bzw.  Bemerkungen mit einem Tasten-
  517. druck eingefügt werden.  
  518.  
  519.  
  520.                         ======================
  521.                         Ende der Dokumentation
  522.                         ======================
  523.  
  524.