$$$$ EXCE NOTICE KK2000 15/02/03 21:15:06 8353 DATE 15/02/03 Operateur EXCELLENCE Voir aussi : -------------------- TAB1 = EXCE TAB1 ; TAB1.'VX0' .'VF' .'VXMIN' .'VXMAX' .'MC' .'VCMAX' .'METHODE' .'DELTA0' .'MAXITERATION' .'XSMAX' .'VDIS' .'T0' .'S0' Section : Mathematiques Fonctions FRAN========================================================== Objet : ------- L'operateur EXCELL cherche le minimum d'une fonction F(Xi), la methode utilisee est connue sous le nom de MMA (Method of Moving Asymptotes) proposee par K.Svanberg. Il s'agit donc de trouver le minimum d'une fonction F(Xi) avec i=1,N et sachant que : - il existe des relations Cj(Xi) < Cjmax j > 0 j=1,M - Il existe des relations sur chaque inconnue Ximin < Xi < Ximax La donnee des fonctions F et Cj se fait a l'aide des valeurs des fonctions et de leurs derivees au point de depart X0. Donnees : --------- TAB1.'VX0' : table (sous-type VECTEUR) contenant les valeurs initiales des variables X0i. La table est indicee par les ENTIERs i. (i=1,N) TAB1.'VF' : table (sous-type VECTEUR) contenant : - dans TAB1.'VF'.0 : la valeur de F(X0i) - dans TAB1.'VF'.I : la valeur de la derivee de F par rapport a Xi en X0 (i=1,N). TAB1.'MC' : table indicee par des ENTIERs j (j=1,M) et contenant autant de tables que de relations Cj. TAB1.'MC'.J est une table representant la fonction Cj - dans TAB1.'MC'.J.0 : la valeur initiale de Cj(X0) (j=1,M) - dans TAB1.'MC'.J.I : la valeur de la derivee de Cj par rapport a Xi en X0 (i=1,N). TAB1.'VXMIN' : table indicee par des ENTIERs (i=1,N) et contenant : - dans TAB1.'VXMIN'.I : la valeur de Ximin TAB1.'VXMAX' : table indicee par des ENTIERs (i=1,N) et contenant : - dans TAB1.'VXMAX'.I : la valeur de Ximax TAB1.'VCMAX' : table indicee par des ENTIERs (i=1,M) et contenant : - dans TAB1.'VCMAX'.I : la valeur de Cjmax TAB1.'METHODE' : (facultatif) est un MOT precisant la methode de linearisation a utiliser. - 'STA' pour l'emploi de la methode standard. - 'MOV' si les fonctions sont tres fortement non-lineaires. - 'LIN' si les fonctions sont peu non-lineaires et qu'il y a des variables a variations non continues. TAB1.'T0' : (facultatif) change la valeur du reel compris entre 0. et 1. qui gouverne la convexite des fonctions. Plus t0 est grand plus les fonctions sont convexes. Par defaut, pour la methode standard, t0 est pris egal a 0.3333. TAB1.'S0' : (facultatif) change la valeur du reel compris entre 0. et 1. qui gouverne la convexite des fonctions. Plus s0 est grand plus les fonctions sont convexes. Par defaut, pour la methode MOV, s0 est pris egal a 0.7. TAB1.'MAXITERATION' : (facultatif) change la valeur maximum autorisee pour le nombre d'iterations. (Par defaut 100) TAB1.'VDIS' : table indicee par des ENTIERs k (k=1,KK) et contenant autant de tables que de variables n'ayant que des valeurs discretes autorisees. Cette option n'est pas encore disponible. Remarque : ---------- - Au depart les variables X0i doivent satisfaire aux conditions Ximin < X0i < Ximax - Le point de depart ne satisfait pas forcement les relations Cj < Cjmax Dans ce cas une variables supplementaire de relaxation est introduite et la solution trouvee par EXCELL ne satisfera peut-etre pas non plus les relations. L'influence de cette variable de relaxation peut etre modifiee par deux reels TAB1.'DELTA0' et TAB1.'XSMAX'. Par defaut DELTA0=50. et XSMAX=500. ( il faut DELTA0 >1. et XSMAX > DELTA0) Exemple : --------- La fonction que l'on desire minimiser n'est pas celle qui est minimisee par l'operateur EXCE. La demarche a suivre est de resoudre une succession de probleme. Partant d'un etat connu des variables on demande a EXCE de calculer le minimum d'un probleme approche, la fonction F a minimiser est remplacee par la fonction linearisee decrite ci-dessus ainsi que les fonctions C. Puis on repart de la solution trouvee par EXCE. L'algorithme se presente ainsi : - creation des objets TABLES - initialisations de TAB1.'VX0' ( valeurs de Xi0) - initialisation de TAB1.'VF'. - initialisation de TAB1.'MC'. J . - initialisation de TAB1.'VXMIN' et TAB1.'VXMAX' - initialisation de TAB1.'VCMAX' - repeter 5 fois la suite : - calcul de DF et mise dans TAB1.'VF' , ainsi que F(XI0) - calcul des Cj et mise dans TAB1.'MC'.j. ainsi que Cj(Xi0) - appel a EXCE avec la table TAB1 en entree. - imprimer TAB1.'VX0' - fin de boucle ANGL=========================================================== Description : ------------- The EXCELL operator computes the minimum of a function F(Xi),the used method is the well-known MMA (Method of Moving Asymptotes) proposed by K.Svanberg. The purpose is to find the minimum of a function F(Xi) with i=1,N given that : - the relations Cj(Xi) < Cjmax (j>0 and j=1,M) must be satisfied - there are relations on each unknown Ximin < Xi < Ximax The functions F and Cj are defined by the function values and by their derivatives at the starting point X0. Input data : ------------ TAB1.'VX0' : table (VECTEUR subtype) containing the variables initial values X0i. The table indices are integers i (i=1,N) TAB1.'VF' : table (VECTEUR subtype) in which : - TAB1.'VF'.0 : is the value of F(X0) - TAB1.'VF'.I : is the value of the derivative of F with respect to Xi at X0 (i=1,N) TAB1.'MC' : table indexed by integers j (j=1,M) containing as many tables as there are relations Cj TAB1.'MC'.J is a table which stands for the function Cj in which : - TAB1.'MC'.J.0 : is the initial value of Cj(X0) - TAB1.'MC'.J.I : is the value of the derivative of Cj with respect to Xi at X0 (i=1,N). TAB1.'VXMIN' : table (VECTEUR subtype) indexed by integers in which : - TAB1.'VXMIN'.I : is the value of Ximin TAB1.'VXMAX' : table (VECTEUR subtype) indexed by integers in which : - TAB1.'VXMAX'.I : is the value of Ximax TAB1.'VCMAX' : table (VECTEUR subtype) indexed by integers in which : - TAB1.'VCMAX'.J : is the value of Cjmax TAB1.'METHODE' : (optional) is a MOT(word) specifying the method of linearization to be used - 'STA' for using the standard method - 'MOV' if the functions are "strongly" non-linear - 'LIN' if the functions are rather linear and if there are discrete variables TAB1.'T0' : (optional) changes the value of the real number ranging between 0. and 1. which governs the convexity of the functions. The greater t0, the convexer the functions. By default, for the standard method, t0 is considered to equal 0.3333 TAB1.'S0' : (optional) changes the value of the real number ranging between 0. and 1. which governs the convexity of the functions. The greater s0, the convexer the functions. By default, for the 'MOV' method, s0 is considered to equal 0.7 TAB1.'MAXITERATION' : (optional) changes the maximum value permitted for the number of iterations. (By default 100) TAB1.'VDIS' : table indexed by integers k (k=1,KK) containing as many tables as there are variables with permitted discrete values. This option is not yet available. Note : -------- - at first the variables X0i must satisfy the following conditions Ximin < X0i < Ximax - the relations Cj < Cjmax are not necessarily satisfied at the starting point X0. In this case, a new relaxation variable is input but the solution found by EXCELL may still not satisfy the relations either. The effect of this relaxation variable can be modified by two real numbers TAB1.'DELTA0' and TAB1.'XSMAX'. By default DELTA0=50. and XSMAX=500. ( DELTA0 > 1. and XSMAX > DELTA0 are requested) Example : --------- The function which the user wishes to minimize is not that minimized by the EXCE operator. First, he must solve a few problems. From a known state of variables, EXCE is asked to compute the minimum of an approximate problem, the function F to be minimized is replaced with the linearized function described above as well as the functions C. Then one starts again from the solution found by EXCE. The algorithm is as follows : - creation of TABLES objects. - initialization of TAB1.'VX0' (values of Xi0) - initialization of TAB1.'VF'. - initialization of TAB1.'MC'. J . - initialization of TAB1.'VXMIN' and TAB1.'VXMAX' - initialization of TAB1.'VCMAX' - repeat 5 times : - computation of DF and set in TAB1.'VF', as well as F(XI0) - computation of Cj and set in TAB1.'MC'.j. as well as Cj(Xi0) - call on EXCE with TAB1 on input. - print TAB1.'VX0' - loop end