Programmteil-Eingabe

 
  • Auf den userdefinierten Eingabeseiten von OptiWWW können Sie in den entsprechenden Formularen Funktionen definieren, und zwar die zu minimierende Funktion, die Gleichungs- und die Ungleichungsrestriktionen.
  • Es sind schon Beispiele in den Eingabeformularen vorgegeben, so daß Sie diese als Vorlage benutzen und entsprechend Ihrem Problem modifizieren können.
  • Die genaue Beschreibung der Eingabeform finden Sie eingeteilt nachfolgend in den Abschnitten Variablen und Parameter, Funktionsbezeichung, Fortranbefehle sowie jeweils ein Beispiel zu den Implementierungen.
 

Variablen und Parameter

 
  • Als Variablennamen sind vorgesehen: x(j), j=1,...,n, wobei n die Dimension ist.
  • Außerdem können Sie Hilfsgrößen y(1),....,y(100), die bereits mit Null initialisiert sind,
  • sowie die Integer j, k, l und i verwenden, i aber nie verändern, wohl aber j,k,l, z.B. als Laufvariablen.
  • Ferner stehen Booleans bool1, bool2 und bool3 zur Verfügung.
  • Eigene Variablen können nicht definiert werden.
 

Funktionsbezeichungen

 
  • Die zu minimierende Funktion ist in der Fortran-Spezifikation mit FX zu bezeichnen.
  • Die Ungleichungsrestriktionen, also deren Funktionen, mit GXI
  • sowie die Funktionen der Gleichungsrestriktionen mit HXI
  • Diese Bezeichungen müssen immer eingehalten werden, da sonst die Rechnung unsinnig ist. Normalerweise hat man jedoch mehrere Restriktionen, so daß man eigentlich zwischen verschiedenen HXI bzw. GXI unterscheiden muß. Dies löst man am besten durch eine GOTO LABEL-Anweisung, in der alle Funktionen dann entsprechend mit HXI bzw. GXI bezeichet werden. (Hier ist das I in dem Namen kein Laufparameter !!)
 

Fortranbefehle

 
  • Die benutzte Programmiersprache ist FORTRAN 77 ANSI. Das bedeutet, daß die übliche FORTRAN-Form eingehalten werden muß : Die Erweiterungen des MILSTD1753 dürfen Sie hier nicht benutzen !!! Wenn Sie Standardfunktionen wie exp etc benutzen wollen, müssen Sie die spezifischen Namen dexp usw. benutzen.
    1. Ein Alphazeichen in Spalte 1 kennzeichnet eine Kommentarzeile
    2. Eine psoitive ganze Zahl in Spalte 1 bis 5 ist ein Label, also ein Mrkierung, auf die man sich mit einem "goto" oder einem Schleifneende beziehen kann.
    3. Ein Zeichen ungleich blank in Spalte 6 kennzeichnet die Zeile als Fortsetzungszeile, eine Anweisung darf sich über viele Eingabezeilen erstrecken.
    4. Außerdem dürfen auch keine zu langen Zeilen eingetippt werden: Alles was nach der Spalte 72 einer Zeile kommt wird ignoriert. Hier sind die Formulare genau 72 Spalten breit, bei der Eingabe darf die Zeile also nicht nach rechts rutschen.
  • Leider wird bei diesen Anwendungen ein Tool verwendet, welches noch mit alten FORTRAN-Konventionen arbeitet. Das heißt, daß es einige inzwischen üliche Befehle nicht kennt.
  • Nicht zugelassene Befehle:
    if ... then .. else ... endif,
    do while .... enddo, und
    do ... enddo
  • Zugelassene Befehle:
    do und
    goto ( l1, l2, ..... ) i
 

Beispiel

 
  • einer Funktionsimplementierung:
    FX=X(1)*X(2)+X(3)*X(4)+
    * X(5)**2
  • einer Ungleichungsrestriktion:
    GOTO ( 100 , 200 , 300 , 400 , 500 ) I
    C DAS IST FUER NG=5
    100 CONTINUE
    GXI=x(1)+1.0d0
    RETURN
    200 CONTINUE
    GXI=-x(1)+2.d0
    RETURN
    300 CONTINUE
    GXI=x(2)+2.d0
    RETURN
    400 CONTINUE
    GXI=-x(2)+1.d0
    RETURN
    500 CONTINUE
    GXI=x(5)
    RETURN
  • einer Gleichungsrestriktion:
    GOTO ( 100 , 200 ) I
    C DAS IST FUER nh=2
    100 CONTINUE
    HXI=X(1)**2+X(2)**2+X(1)*X(2)-1.D0
    RETURN
    200 CONTINUE
    HXI=X(3)*X(4)-1.D0
    RETURN
 

Zurück zur Optimierung:

 
 
Back to the top!

26.01.2009