1 / 15

Simulations 2D d'individus

J.M. Vanel IRD 2003/12. Simulations 2D d'individus. Etat des lieux. On a généralisé la notion de modèle, qui sait se calculer, qui représente un être vivant qui se déplace en 2D On a une notion d'afficheur qui fait une exploitation des résultats en temps réel. Aller plus loin - modèles.

tamira
Download Presentation

Simulations 2D d'individus

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. J.M. Vanel IRD 2003/12 Simulations 2D d'individus

  2. Etat des lieux • On a généralisé la notion de modèle, qui sait se calculer, qui représente un être vivant qui se déplace en 2D • On a une notion d'afficheur qui fait une exploitation des résultats en temps réel

  3. Aller plus loin - modèles • Avoir plusieurs modèles • Avoir différents exemplaires de RandomSimpleModel dans la même simulation (changer la méthode initCoord() ) • Avoir différentes classes qui implémentent l'interface Modele2DIndividu, avec des fonctionalités supplémentaires • Multiplication des individus • Mort des individus • Dans la classe principale, ne plus stocker dans un tableau mais dans un ArrayList • Comportement déterministe, e.g. Tendance grégaire • Avoir des calculs auxiliaires sur le « troupeau », par exemple le centre de gravité • Les modèles élementaires, tels que RandomSimpleModel, doivent connaître le « troupeau » ==> interface SuperModele • prédateurs • Combiner réglages différents et implémentations différentes

  4. Aller plus loin - exploitation des résultats • Interface ExploitationResultats qui va généraliser Afficheur • Implémenter des ExploitationResultats tels que: • Traçage de courbes brutes • Post-traitements (moyennes, écarts types) • Organiser la classe principale pour pouvoir brancher (et débrancher) des exploitation de résultats

  5. Accéder au même objet avec plusieurs types • Modele2DIndividu mm = new RandomSimpleModel();Object o = mm;RandomSimpleModel rm = (RandomSimpleModel)mm; • mm , o , et rm sont 3 références pointant vers le même objet

  6. Restructurations de code (refactorings) • Renommer RandomSimple : la classe a été rebaptisée AppliMultiplesModeles

  7. Emballer et exécuter notre application mkdir classes # Compilation javac -d classes numeric/*.java # Vérification ls -lR classes/ cd classes/ #Création de l'archive jar avec tous les fichiers récursivement jar -cvf numeric.jar * # Exécution : on nomme la classe à exécuter: java -classpath numeric.jar numeric/TestRungeKutta # Variante où on nomme la classe à exécuter: c:/j2sdk1.4.2_02/bin/jar.exe -cvfm numeric.jar '..\manifest.txt' * # manifest.txt contient ceci: Main-Class: numeric.TestRungeKutta # ATTENTION: il faut éditer manifest.txt avec un éditeur non Windows # pour les fins de ligne # REMARQUE: quand utilise cygwin il y a jar (et java) de Cygwin, # distincts de ceux de Sun

  8. Exécuter notre applicationsans machine virtuelle sous Linux ou Cygwin gcj --main=TestSimple TestSimple.java ./a.exe Remarque: pour l'instant, il n'y a pas suffisamment de classes pour IHM disponibles avec gcj, cela serait pour du calcul pur.

  9. Programme de vendredi • Runge Kutta • Écriture sur fichiers • Chaînes de caractères: split() et StringBuffer • XML • XMLEncoder • DOM, Xpath (comment parcourir et exploiter) • Rétro-ingéniérie UML (analyser du code Java avec ArgoUML) • Avancer sur notre appli. de simulation: pouvoir brancher des traitement de résultats et des modélisations • Montrer les techniques JavaBeans et introspection (génériquement parcourir des objets)

  10. Modèle explicite Avant: modèle caché dans des syntaxes non-standard while(population.next()) { idIndiv = population.nextElement(); //-------------------------------- budget=(Nombre) budgets.val(idIndiv); position = positions.val(idIndiv); ressource = (Nombre)ressources.val(position); effectif = (Nombre)effectifs.val(position); //-------------------------------- charge = effectif.divi(surface); if(ressource.isInférieur(charge)) { budget.moins(1.0); } else{ budget.plus(1.0); } } Après : modèle dans une syntaxe C/C++/Java standard for(Iteratorindividu=population.iterator();iter.hasNext();){ double budget = individu.budget; double ressource = individu.position.ressource; double effectif = individu.position.effectif; // THE modèle ! double charge = effectif / surface; if ( ressource < charge ) budget--; else budget++;

  11. Persistance • Stocker un graphe d'objets avec XMLEncoder • Avantages / inconvénients • Autres solutions: Castor, XMLBeans

  12. Fait par J.M. Vanel avant session janvier • Valider la classe RungeKutta solveur d'équations différentielles ordinaires; • Compiler avec gcj; mesurer les gains de performance par rapport à une JVM

  13. Thèmes Java/développement proposés pour janvier • Configurer et mettre à jour eclipse • Partager du code et gérer les modifications/versions avec CVS + sourceforge.net • Réutiliser des bibliothèques externes: exemple JFreechart, PtPlot de Ptolemy (traçage de courbes) • Javadoc (documentation automatique de code Java) • Gestion des dépendances entre paquetages • internationalisation à l'aide d'eclipse

  14. Environnement modélisation - reste à faire • Séparer traitement fichiers CSV dans une classe à part • Introduire IterativeSimulationImpl dans un programme graphique tel que AppliMultiplesModeles, comme on a fait en introduisant IterativeSimulationImpl dans AppliLigneDeCommande • concevoir un pont entre objets métiers et le solveur d'équations différentielles ordinaires • Sauver et relire les données de simulation avec XMLEncoder et XMLDecoder • Brancher l'éditeur générique JavaBeans dans AppliMultiplesModeles pour pouvoir saisir les paramètres de modèles • Pouvoir configurer l'éditeur générique JavaBeans pour avoir des Sliders en plus ou à la place des champs de saisie • Écrire un modèle superposant une tendance aléatoire avec une tendance grégaire • Trouver une solution de traçage de courbes avec (OpenOffice trop long à l'exécution) • Renommer run() de Model en runModel() pour ne pas interférer avec le run() de Runnable() • Comprendre pourquoi il y a une image fantôme du bouton dans le programme graphique AppliMultiplesModeles,

  15. Développement environnement simulation Geodes • Gestion de terrain: proximité, obstacles, champs scalaires, etc • Intégrer modèles de Patrice et Fadia • Multiplication, division, mort des individus

More Related