Commit 2f14020e authored by DELBECQ Théo's avatar DELBECQ Théo

Merge branch 'master' into 'Theo'

MAJ branche Theo

See merge request !18
parents e7106381 b21e3904
#Project Monitoring : TicTacToe groupe 3
#Project Monitoring :
=====================
Projet : TicTacToe
N° Groupe : 3
Groupe : Louis Bahrman, Bruce Hersemeule, Timothy Laird, Théo Delbecq
#Briques fonctionelles
----------------------
|Nom |Description |Séance |Responsable |Commit
|:--- |:--- |:--- |:--- |:---
|Fraction |Structure de fraction pour les arbres MCTS|20/04/2020|Louis|f159fbc27aafe0f3e7fd85a7e53024dbe748e191
|Arbre générique|Structure d'arbre commune aux 2 algorithmes|20/04/2020|Bruce|3415d259df15dea293f5d45a6541a75b5c690c27
|Arbre MCTS |
|Arbre MinMax |Structure d'arbre pour MinMax|21/04/2020|Bruce|b599e9988c324c551aa4e4cdb9a95cd327db1b99
\ No newline at end of file
|Nom |Description |Séance |Responsable |Commit |Etat |Commentaires
|:--- |:--- |:--- |:--- |:--- |:--- |:---
|Prise en main |Formation du groupe, choix du projet, lecture des documents, installation des environnements java requis, découverte du code fourni et tests de ses fonctionnalités |30/03/2020 |Tous | |Fini |
|Mise en place du dépôt |Création du dépôt, clonage en local et création de branches individuelles |30/03/2020 |Louis |7b8fed5436e8048c51c02041374defd4c5022e32 |Fini |[url du dépôt](https://gvipers.imt-lille-douai.fr/louis.bahrman/groupe3-tictactoe/tree/master)
|Apprentissage git |Apprentissage des commandes et des méthodes d'utilisation de git |31/03/2020 |Tous | |En cours |
|Fraction |Structure de fraction pour les arbres MCTS|20/04/2020|Louis|f159fbc27aafe0f3e7fd85a7e53024dbe748e191 |Fini |
|Arbre générique|Structure d'arbre commune aux 2 algorithmes|20/04/2020|Bruce|3415d259df15dea293f5d45a6541a75b5c690c27 |Fini |
|Arbre MCTS |Structure d'abre et méthodes spécifiques à l'algo MCTS |20/04/2020 |Louis, Timothy | |En cours |
|Generator |Générateur de fin de partie aléatoire permettant d'estimer la valeur d'un coup par estimation statistique |20/04/2020 |Théo |ad4f63446c6a351028d7fd923a379fc4dc327715 |Fini |
|Arbre MinMax |Structure d'arbre pour MinMax et algo de remontée|21/04/2020|Bruce|b599e9988c324c551aa4e4cdb9a95cd327db1b99 |Fini |
|AlgoRechercheMinMax |Algo de recherche créant un arbre des coups de la profondeur souhaitée pour un joueur et attribuant une valeur à chaque coup selon l'algo du MinMax |21/04/2020 |Théo |60b5f5a77e617c392e1c855ffaa64c557606c6a0 |A tester |
|AlgoRechercheMCTS |Algo de création et parcours d'arbre des coups et recherche selon l'algo de Monte-Carlo |21/04/2020 |Louis, Timothy | |En cours |
|Monitoring |Création du monitoring, plannification et enregistrement des briques fonctionnelles du projet dans le fichier monitoring |21/04/2020 |Tous |22e9f32af8ad851db7a0deedb1c0299fe471ecfd |En cours |
|Tests locaux et correction |Tests des performances des différents algo en local et correction en commun |27/04/2020 |Tous | |A venir |
|Mise en place CodinGame |Conversion du code et mise en place des tests sur la plateforme CodinGame |27/04/2020 |Tous | |A venir |
\ No newline at end of file
<<<<<<< HEAD
<<<<<<< HEAD
<<<<<<< HEAD
compile.on.save=true
do.depend=false
do.jar=true
javac.debug=true
javadoc.preview=true
user.properties.file=C:\\Users\\timot\\AppData\\Roaming\\NetBeans\\11.2\\build.properties
=======
compile.on.save=true
do.depend=false
do.jar=true
javac.debug=true
javadoc.preview=true
user.properties.file=/home/louis/.netbeans/11.3/build.properties
>>>>>>> 4dd14568c244c833d17b679f8f3b340f997c8d04
=======
<<<<<<< HEAD
compile.on.save=true
do.depend=false
do.jar=true
javac.debug=true
javadoc.preview=true
user.properties.file=C:\\Users\\timot\\AppData\\Roaming\\NetBeans\\11.2\\build.properties
=======
compile.on.save=true
do.depend=false
do.jar=true
javac.debug=true
javadoc.preview=true
user.properties.file=/home/louis/.netbeans/11.3/build.properties
>>>>>>> 4dd14568c244c833d17b679f8f3b340f997c8d04
>>>>>>> 4f5ab9d710d3dfdc1fe71236031395a85db95bec
=======
<<<<<<< HEAD
compile.on.save=true
do.depend=false
......@@ -13,3 +48,4 @@ javac.debug=true
javadoc.preview=true
user.properties.file=C:\\Users\\theo\\AppData\\Roaming\\NetBeans\\11.3\\build.properties
>>>>>>> 4dd14568c244c833d17b679f8f3b340f997c8d04
>>>>>>> 94177790fa8a419aa9237d306f5420565be1ebd3
......@@ -11,61 +11,63 @@ import java.util.ArrayList;
*
* @author senda
*/
public class Arbre {
public static int N = 5;
protected Fraction value;
protected ArrayList<Coup> coups;
protected ArrayList<Arbre> fils;
public class ArbreMCTS {
// Les constructeurs :
public Arbre(){
}
private Fraction value;
private ArrayList<Coup> coups;
private ArrayList<ArbreMCTS> fils;
public Arbre (Fraction value, ArrayList coups, ArrayList fils){
// Les constructeurs :
public ArbreMCTS (Fraction value, ArrayList coups, ArrayList fils){
this.value = value;
this.fils = fils;
this.coups = coups;
}
public Arbre (int num, int den, ArrayList coups, ArrayList fils){
public ArbreMCTS (int den, int num, ArrayList coups, ArrayList fils){
this.value.den = den;
this.value.num = num;
this.fils = fils;
this.coups = coups;
}
public Arbre (Fraction value, Plateau _plateau, Joueur _joueur){
public ArbreMCTS (Fraction value, Plateau _plateau, Joueur _joueur){
this.value = value;
this.coups = _plateau.getListeCoups(_joueur) ;
int a = coups.size();
fils = new ArrayList();
for(int i = 0; i < a ; i++){
Arbre Arbre_i = new Arbre(new Fraction()); // Attention ! Ce constructeur initialise donc avec des valeurs nulles en racine !
ArbreMCTS Arbre_i = new ArbreMCTS(new Fraction()); // Attention ! Ce constructeur initialise donc avec des valeurs nulles en racine !
fils.add(Arbre_i);
}
}
public Arbre (Fraction value){
public ArbreMCTS (Fraction value){
this.value = value;
}
public Arbre (int num, int den){
public ArbreMCTS (int den, int num){
this.value.den = den;
this.value.num = num;
}
// Les accesseurs :
public Fraction getFraction(){
return value;
}
public double getvalue(){
return(value.getNote());
}
public ArrayList<Arbre> getfils(){
public ArrayList<ArbreMCTS> getfils(){
return(fils);
}
public ArrayList getcoups(){
public ArrayList<Coup> getcoups(){
return(coups);
}
......@@ -101,10 +103,10 @@ public class Arbre {
}
else{
int a = this.fils.size();
Arbre fils0 = this.fils.get(0);
ArbreMCTS fils0 = this.fils.get(0);
int maxfils = fils0.hauteur();
for (int i = 1; i < a; i++){
Arbre next = this.fils.get(i);
ArbreMCTS next = this.fils.get(i);
maxfils = Math.max(next.hauteur(),maxfils);
}
return(1 + maxfils);
......
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package tictactoecodingame;
import java.util.ArrayList;
/**
*
* @author louis
*/
public class Selection {
ArrayList<Integer> chemin;
public Selection(){
chemin=new ArrayList<>();
}
public Selection(double c, ArbreMCTS a){
Selection s=new Selection();
chemin=SelectionAux(c, a, s, 0).chemin;
}
private Selection SelectionAux(double c, ArbreMCTS a, Selection s, int nbSimulPere){
if (a.estFeuille()){
return s;
}
else {
double coefMax=0;
int indiceSelection=0;
ArrayList<ArbreMCTS> f=a.getfils();
for(int i=0;i<f.size();i++){
ArbreMCTS arbreTeste = f.get(i);
double coef =arbreTeste.getvalue()+c*Math.sqrt(Math.log(nbSimulPere)/arbreTeste.getFraction().getDenominateur());
if (coef>coefMax){
indiceSelection=i;
coefMax=coef;
}
}
ArbreMCTS arbreSelectionne=f.get(indiceSelection);
int nbSimulPereNew=arbreSelectionne.getFraction().getDenominateur();
s.chemin.add(indiceSelection);
return SelectionAux(c,arbreSelectionne,s,nbSimulPereNew);
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment