![]() |
|||||
![]() |
30 Juin 2005 | By LPX | |||
Mise en place de la structure et des premières méthodes d'opti - étude paramétriques.
Tout a été fait en python et se trouve dans le fichier toolbox.parametricStudy.py
gestion des résultat
gestion des paramètres (d'optimisation et autres par exemple le 'domainDirName')
gestion des expériences et de la visualisation
classe permettant d'effectuer une étude paramétrique sur des listes de paramètres (création des cas associé à toutes les combinaisons possibles de paramètres)
Premier jet des méthodes d'opti de NewtonGauss et LevenbergMarquardt (plus classe mère pour éviter les "copiers-collers").
avec :
- adimensionnalisation du système (option pour NG - tjrs pour LM)
- gestion de contraintes sur les paramètres (contraintes de bornes pour l'instant) : NG adaptation de l'incrément de variation des paramètres, LM par pénalité
Pour utiliser ces méthodes, il est nécessaire que le domaine soit réellement construit par la fonction getDomain (et non plus a l'importation du module) de manière à prendre en compte les valeurs des paramètres. Je propose donc la forme suivante pour lees jeux de donnée à optimiser :
Ce qui ne doit pas être détruit (les derniers memory leaks indispensables) :#Valeurs Globales
domain = Domain()
domainBuilt = False
winc1 = VizWin()#-- Fonctions d'evolution --
FCT_CHA = PieceWiseLinearFunction()
FCT_CHA.setData(0.0 , 0.0)
FCT_CHA.setData(1.0 , 0.5)
Fonction GetDomain : avec paramètre DomainBuilt pour ne pas construire plusieurs fois le meme domain:
#-- Fonction getDomain() --
def getDomain(_parameters):global domainBuilt
if domainBuilt == False:
buildDomain(_parameters)
domainBuilt = True
return domain
Fonction buildDomain : Construction du domain avec paramètres par défaut et mise à jour des paramètres avec ceux passés en argument
#-- Construction du domain --
def buildDomain(_parameters):#-- parametres par defaut :
parameters = {'Young': 210000.0,'Poisson':0.3,'IH_SIGEL':120.0,'IH_A':50.0,'IH_N':4.2}
print _parameters
# mise a jour des nouveaux parametres
parameters.update(_parameters)
# etre sur qu'on ne fait pas de conneries
global domain
#-- Initialisation - References --
domain.setAnalysis(METAFOR_ID)
metafor = domain.getMetafor()
- Les objectives-Functions avaient été construites dans le but de faire de l'opti. Maintenant que les besoins se précisent (en terme de valeur à exporter, méthodes de calcul de S, format de fichier,... ces classes sont soumises à modifications
- DiffDataCurve a été renomé AreaDataCurve
- Une Objective Function DiffDataCurve a été reprogrammée calculant simplement à chaque abscisse de la courbe "numérique", l'écart relatif entre celle-ci et la courbe "expérimentale". La fonction objective S etant la norme d'ordre 2 de ces valeurs.
- Une interface avec les modules d'opti a été définie pour la sortie des résultats (fichier objectiveFunction.py en fonction de la classe python
Package de calcul numérique (matriciel) sous python utilisé pour résoudre les problèmes d'opti.
downloader et installer sous vos pc la version 1.3.2 :
version precompilee Win32 pour python 2.4 : http://prdownloads.sourceforge.net/numpy/numarray-1.3.2.win32-py2.4.exe?download
Stations : version 1.3.2 compilée - installée
ATTENTION (pour info): compilation sous tru64 est buggée :
dans le fichier : /numarray-1.3.2/Src/libnumarray.ch
line 1622 :
remplacer
int fpstatus;
par
int retstatus;
sous pc sys.executable donne bien metafor alors que sous station, sys.executable donne /usr/bin/python !!!
#args = [sys.executable,"-nogui","-c",callingString]
args = [sys.argv[0],"-nogui","-c",callingString]
conséquence : utilisation de sys.argv[0] (bien laisser PySys_SetArgv(argc, argv); dans le constructeur de PythonInterpreter)
oo_meta\mtExtractors\AreaDataCurveObjectiveFunction.h/cpp
oo_meta\apps\makefiles\Makefile_parametric
oo_meta\apps\experimentalCurves\
oo_meta\apps\experimentalCurves\apps.monosMaterials.tracEvpIso3dParam\
oo_meta\apps\experimentalCurves\apps.monosMaterials.tracEvpIso3dParam\exp_defo.ascii
oo_meta\apps\experimentalCurves\apps.monosMaterials.tracEvpIso3dParam\exp_stress.ascii
oo_meta\apps\experimentalCurves\apps.monosMaterials.tracIdentParamIHLin\
oo_meta\apps\experimentalCurves\apps.monosMaterials.tracIdentParamIHLin\ expDispl.ascii
oo_meta\apps\experimentalCurves\apps.monosMaterials.tracIdentParamIHLin\expForce.ascii
oo_meta\apps\experimentalCurves\apps.qs.triangleForOpti\
oo_meta\apps\experimentalCurves\apps.qs.triangleForOpti\expDisplX.ascii
oo_meta\apps\experimentalCurves\apps.qs.triangleForOpti\expDisplX_LAG.ascii
oo_meta\apps\experimentalCurves\apps.qs.triangleForOpti\expForcX.ascii
oo_meta\apps\experimentalCurves\apps.qs.triangleForOpti\expForcX_LAG.ascii
oo_meta\apps\parametric\
oo_meta\apps\parametric\__init__.py
oo_meta\apps\parametric\Makefile
oo_meta\apps\parametric\tracEvpIso3dParam_LM.py
oo_meta\apps\parametric\tracEvpIso3dParam_NG.py
oo_meta\apps\parametric\tracEvpIso3dParam_ParamStudy.py
oo_meta\apps\parametric\tracIdentIHLin_LM.py
oo_meta\apps\parametric\tracIdentIHLin_NG.py
oo_meta\apps\parametric\tracIdentIHLin_NGNorm.py
oo_meta\apps\parametric\triangleForOpti_LM.py
oo_meta\apps\parametric\triangleForOpti_NG.py
oo_meta\apps\parametric\triangleForOpti_NGNorm.py
oo_meta\apps\monosMaterials\tracEvpIso3dParam.py
oo_meta\apps\monosMaterials\tracIdentParamIHLin.py
oo_meta\apps\qs\triangleForOpti.py
ATTENTION NOUVEAUX REPERTOIRES => cvs update -d !!!
![]() |
![]() |
|||
created :29 Juin 2005 | modified : 30 Juin2005 | |||
contact :L.Papeleux@ulg.ac.be | ||||