Bibliothèque JAVA de programmation chimique Cédric ANDREOLLI Chloé BOULANGER Olivier CLÉRO Antoine GUELLIER Sébastien GUILLOUX Arthur TEMPLÉ Projet 4INFO Encadrant : Jean-Louis Pazat Démonstration 05/2012
Feb 24, 2016
Bibliothèque JAVA de programmation chimique
Cédric ANDREOLLIChloé BOULANGEROlivier CLÉROAntoine GUELLIERSébastien GUILLOUXArthur TEMPLÉ
Projet 4INFO
Encadrant : Jean-Louis Pazat
Démonstration05/2012
2
Bibliothèque JAVA de programmation chimique – Démonstration
Sommaire
Exemples simplesIndexProvider : Preuves de fonctionnalitésFoxes’n RabbitsVitrine technologique musicale
3
Bibliothèque JAVA de programmation chimique – Démonstration
Utilisation de la bibliothèqueReactionRuleRègle de réaction = classe implémentant l’interface ReactionRule
Méthodes :- computeSelect() : conditions sur le choix des réactifs- computeReact() : réaction en elle-même
Solution- Ajout de réactifs avec add(Object o) (n’importe quel objet
Java, y compris des sous-solutions et des ReactionRule)- Lancement de la réaction : react()
4
Bibliothèque JAVA de programmation chimique – Démonstration
Exemples simplesNombres premiers
En entrée : une solution contenant des nombres de 2 à n
Réaction : – ComputeSelect : sélectionne les nombres divisibles entre
eux– ComputeReact : ajoute à la solution le nombre qui divise, et
n’ajoute pas celui qui est divisé
En sortie : ensemble des nombres premiers de 2 à n appartenant à l’intervalle [2;n]
5
Bibliothèque JAVA de programmation chimique – Démonstration
Exemples simplesSentence Creator
A wild Pikachu
SubjectType
Chloé Boulanger
The dog The cat VerbType
Is sexy and knows it
runs
appearseats
ChooseSubjectRR
PutWordsTogether
ChooseVerbRRChooseComplementRR
PrepositionType
inon
abovebelow
PlaceType
The roof The garden
The kitchen
6
Bibliothèque JAVA de programmation chimique – Démonstration
IndexProviderPreuves de fonctionnalité
L’IndexProvider : coeur et point sensible du problèmeFournit toutes les combinaisons possibles d’index des réactifs en solution
Nécessaire de vérifier que l’IndexProvider: - sélectionne des combinaisons valides- parcourt toutes les combinaisons possibles- fonctionne avec les SubSolutions
D’où réalisation de tests indispensable... qui a révélé de nombreux problèmes et bugs corrigés par la suite.
7
Bibliothèque JAVA de programmation chimique – Démonstration
Foxes’n RabbitsPrésentationSimulation d’une population de renards et de lapins
Règles- Chaque espèce peut se déplacer sur une case vide- Chaque espèce a une espérance de vie et finit par mourir naturellement- Chaque espèce peut se reproduire - Les lapins peuvent se faire manger par les renards
L’ensemble est géré par un système de probabilités- Probabilité de se faire manger, de se reproduire... qui diffère selon l’espèce
En théorie- Système aléatoire et indéterministe- Mais globalement stable et équilibré- Selon un bon paramétrage des différentes probabilités
8
Bibliothèque JAVA de programmation chimique – Démonstration
Vitrine technologique musicaleEléments de la réaction
CountNb
mesures restantes à
créer
BarNumberNuméro de la
mesure à créer
DegreeImplDegré de la mesure à
créer
Note1
ChordImpl1
ChordImpl2
BarNumber
Note2Note
3
Note1
ChordImpl1
BarNumber
Note2Note
3 Note4
Note5
Note1
ChordImpl1
BarNumber
Note2Note
3 Note4
9
Bibliothèque JAVA de programmation chimique – Démonstration
Vitrine technologique musicaleExemple de réaction : création du rythme de la mélodieRythmicRR prend les réactifs suivants :
MeasureNumber1
ChordImpl1
ChordImpl2
Pitch
MelodicRRmax = 0
activated = false
RythmicRRChordNumber = 1
max = 0
2
RythmPull
RythmPatternEEQ2
RythmPatternEEQQQ4
RythmPatternQQEEQ4
RythmPatternEQP2
A est pris par B comme réactif
A B
10
Bibliothèque JAVA de programmation chimique – Démonstration
Vitrine technologique musicaleExemple de réaction : création du rythme de la mélodieRythmicRR remet en solution les produits suivants :
MeasureNumber1
ChordImpl1
ChordImpl2
Pitch
MelodicRRmax = 5
activated = false
RythmicRRChordNumber = 2
max = 5
2
RythmPull
RythmPatternEEQ2
RythmPatternEEQQQ4
RythmPatternQQEEQ4
RythmPatternEQP2
NotePosition=0
NotePosition=1
NotePosition=2
NotePosition=3
NotePosition=4
NotePosition=5
B remet A en solutionB A