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ößeny(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 Booleansbool1, 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.
Ein Alphazeichen in Spalte 1 kennzeichnet eine Kommentarzeile
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.
Ein Zeichen ungleich blank in Spalte 6 kennzeichnet die Zeile als
Fortsetzungszeile, eine Anweisung darf sich über viele
Eingabezeilen erstrecken.
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