Aller au contenu


Photo
- - - - -

Algorithme prise de décision


  • Veuillez vous connecter pour répondre
15 réponses à ce sujet

#1 TIPE

TIPE

    Nouveau membre

  • Membres
  • 7 messages
  • Gender:Female

Posté 22 avril 2017 - 09:36

Hello !

 

Je ne sais pas du tout si c'est le bon endroit pour ce genre de demande, mais je suis étudiante en prépa, et dans le cadre de mes TIPE je cherche un code (sous python) qui programmerait la prise de décision (c'est à dire qui aurait plusieurs entrées différentes, qui recouperait ces informations et qui en déduirait la meilleure solution).. Une ébauche en tout cas, pour l'adapter à mon contexte. Je me suis dit que c'était un "thème" assez connu, et que quelqu'un aurait peut-être ça dans la robotique !.. 

 

Ce serait vraiment une grande aide.

Merci d'avance pour vos réponses!

 

 


#2 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 966 messages
  • Gender:Male
  • Location:Anglet

Posté 22 avril 2017 - 09:47

C'est assez flou comme demande =) 
Quelles sont tes entrées ? 
Quelles sont les sortie ? 
Quel type de prise de décision souhaites tu ? 

En fonction des décisions que tu as à prendre tu peux simplement commencer par faire des if / else , ou bien une règle proportionnelle, 

Ensuite si tu veux aller plus loin tu peux utiliser de la logique flou ,  que tu peux mettre en place toi même de manière simple ou bien en utilisant une toolbox : ex : une toolbox de fuzzy logic python 

Il y a aussi les réseaux de neurones si tu as besoin d'un système un peu plus complexe ... 

 

Après pour trouver " la meilleur solution " sais tu toi quelles sont les règles pour définir quel est la meilleure solution sur un set donné ? Ou bien est ce que le système doit " apprendre par lui même"  ces règles  ? Car après on tombe sur du machine learning autre domaine très intéressant :)

 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#3 TIPE

TIPE

    Nouveau membre

  • Membres
  • 7 messages
  • Gender:Female

Posté 22 avril 2017 - 10:06

Alors en fait l'expérience qui nécessiterait cet algorithme c'est ça : 

On modélise des capteurs de mouvement par des lasers qui sont pointés sur des diodes. On coupera les faisceaux selon nos besoins (simuler une présence, une panne....) et du coup l'algorithme devrait prendre en entrée le fonctionnement (ou pas) des diodes, et le cas échéant, la durée de non-fonctionnement. 

Ensuite, l'algorithme devra recouper ces informations là, il y aura surement des probabilités dans le lot, et en sortie il faudra un 'oui' ou un 'non', de manière à allumer une autre photodiode, qui simulerait le déclenchement d'une alarme.
On cherche un modèle général pour ce genre de prise de décision, quelque chose qui dépendrait de contraintes pour ensuite choisir une solution appropriée.

On n'est cependant pas excessivement douées en informatique, c'est pourquoi avoir une base, ça nous aiderait pas mal, pour éviter de faire quelque chose de trop naïf. C'est aussi ce que nous ont conseillé nos professeurs.

Et pour ce qui est d'apprendre de ses erreurs ou non, le top pour nous serait d'avoir les deux, pour pouvoir les comparer sur nos expériences réelles!

 

En tout cas, merci de ta réponse !



#4 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 966 messages
  • Gender:Male
  • Location:Anglet

Posté 22 avril 2017 - 10:27

Il est important de commencer par quelque chose de " plutôt naïf " histoire de bien comprendre les bases , puis de complexifier une fois les bases une fois bien comprises ;) Surtout si vous n'êtes pas excessivement doués en informatique ! :) 

 

1) écrire précisément : 
Le nombre d'entrée, leur donner un nom et spécifier  le type de ces entrées  ( bouléen , entier, autre ) 

Le nombre de sortie; les nommer et donner et leur type 

 

2) soit tu choisis de définir les règles : 

tu pourras alors commencer à écrire des "règles simple " qui en fonction des entrées auront un impacte sur la sortie :)  

Une fois que tu sauras quelles sont les types de règle que tu veux mettre en place

 

2bis ) tu choisis de faire découvrir les règles ( apprentissage ) 

Méthode de machine learning, qui va nécessité de mettre en place "une structure" et une "méthode d'apprentissage" mais je ne m'étendrais pas plus sur le sujet par ce que d'autres seraient plus à même de le faire et que ce n'est à mon avis pas ce que tu devrais faire pour commencer...

 

3) Tu te penches alors sur comment coder l'ensemble ;)

 

4) test ;) 

 

et au besoin tu reviens sur les points précédent pour essayer des améliorations ;)


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#5 TIPE

TIPE

    Nouveau membre

  • Membres
  • 7 messages
  • Gender:Female

Posté 24 avril 2017 - 01:17

Le soucis c'est que ce code n'est qu'une petite partie du travail, donc nous n'avons pas énormément de temps à y consacrer hélas!

Aurais tu une idée de comment faire intervenir des probabilités dans tout ça ? 



#6 arobasseb

arobasseb

    Membre chevronné

  • Administrateur
  • PipPipPipPip
  • 737 messages
  • Gender:Male
  • Location:BORDEAUX (33)

Posté 24 avril 2017 - 02:12

Quelque soit le temps que tu as, si tu ne réponds pas aux points 1 et 2 qu'a énoncés par Mike118, tu ne pourra pas avancer. Sans la liste des entrées/sorties avec le type de valeur (sous forme de tableau ça te fera une belle annexe dans ton dossier :) ) et une liste des règles énoncées de façon simple, genre si E1 est vrai et E2 est vrai alors S1 est vrai, ou en logique floue si E1 petit et E2 grand alors S1 moyen tu ne pourra pas savoir sur quoi faire des proba ou autre.



#7 TIPE

TIPE

    Nouveau membre

  • Membres
  • 7 messages
  • Gender:Female

Posté 24 avril 2017 - 07:42

Bonsoir,

 

Il n'y a pas vraiment de dossier, je ne suis qu'en 1ère année, cette année c'est un peu la découverte de ce qu'est un TIPE, mais je vois ce que vous voulez dire. Seulement, d'après notre professeur de mathématiques, coder nous-même ne serait pas la meilleure solution, c'est pourquoi je pensais pouvoir trouver un code un petit peu "général" que je serai ensuite en mesure d'adapter à mon contexte, justement en fonction de mes types d'entrées et des conditions. Avoir un exemple d'un code performant pour pouvoir l'adapter ensuite.



#8 arobasseb

arobasseb

    Membre chevronné

  • Administrateur
  • PipPipPipPip
  • 737 messages
  • Gender:Male
  • Location:BORDEAUX (33)

Posté 24 avril 2017 - 07:57

du coup tu peux utiliser des bibliothèques, par exemple pour la logique floue (https://openclassroo...a-logique-floue) il y a une librairie python pyfuzzy (jamais utilisé) , les réseaux de neurones tu dois avoir le même genre de bibliothèque (j'ai pas cherché) après, en logique pure, écrire du code n'est pas très compliqué (des IF, AND, OR,...).

Après d'autres personnes pourront peut-être mieux te renseigner.



#9 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 966 messages
  • Gender:Male
  • Location:Anglet

Posté 24 avril 2017 - 08:20

Que tu codes toi même ou que tu utilise une "tool box " ou autre librairie toute faite il te faut nécessairement quand même correctement définir les points 1 puis 2 avant de chercher à faire le point 3. C'est comme essayer de fabriquer les murs d'une maison avant de faire les plan et de terrasser le sol. 

De toute façon quoi que tu fasses même si tu ne sais pas où tu vas, le secret c'est de toujours décomposer les actions à accomplir en suite de " sous tâches à accomplir " jusqu'à avoir une suite d'actions " élémentaires à réaliser". 

 

Et pour chacune des actions à faire il faut

A) Think => 50% du travail de fait
B ) Plan => 50% du travail restant fait 
C ) Act => Les 25% restant sont alors fait ! 

 

Bref on t'a dit ce que tu devais commencer par faire mais on pourra pas le faire à ta place ;) 

Donc on attends tes essais/ propositions pour les points 1) puis 2 ) avant de continuer à t'aider ! =) 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#10 TIPE

TIPE

    Nouveau membre

  • Membres
  • 7 messages
  • Gender:Female

Posté 24 avril 2017 - 08:55

Bon et ben je vais commencer à vraiment me pencher sur ce que je veux comme entrées, comme sortie, et voir un peu ce que je veux comme test pour que ça me mène à ma sortie. 
En tout cas merci pour votre aide ahah, je vais rapidement revenir vers vous je pense!!



#11 TIPE

TIPE

    Nouveau membre

  • Membres
  • 7 messages
  • Gender:Female

Posté 28 avril 2017 - 02:41

Nous avons commencé à étudier plein de petites "règles simples", qui se coderont uniquement avec des "if" : par exemple : "Si il y a que des 1 -> ne pas déclencher" donc envoyer 0 en sortie, sachant que le " 1 " dont je parle représente le fonctionnement du capteur (0 si il ne marche pas).

Mais à côté de cela nous avons pensé à utiliser un peu de "machine learning" afin de comparer les deux codes : un qui suit des contraintes que l'on a prédéfini, et un qui "apprendrait de lui même", mais nous n'avons que très peu d'informations sur cette idée là, j'ai le module scikit-learn déjà installé et nous avons lu quelques documentations mais ce n'est pas très clair pour nous (voire même totalement flou). Pourriez vous nous aider ? 

De plus, on voudrait traiter la durée de non-fonctionnement du capteur en entrée de l'algorithme. Il faut donc que l'algorithme fonctionne en continu. Comment est-ce réalisable? Si vous avez des idées, nous sommes preneuses.
Merci pour vos réponses 



#12 arobasseb

arobasseb

    Membre chevronné

  • Administrateur
  • PipPipPipPip
  • 737 messages
  • Gender:Male
  • Location:BORDEAUX (33)

Posté 28 avril 2017 - 05:29

Côté machine learning je ne suis pas un expert. Mais pour l'apprentissage il y le mode superviser où en mode apprentissage on lui présente des entrées et on indique les sorties voulues et le réseau de neurones se corrige et ensuite on le met en mode normal et il exécutera ; et le mode non superviser ou le réseau apprend tout seul, sur la base de quelques règles lui indiquant si c'est plutôt bien ou pas.
Sinon il faut savoir que le programme tourne en boucle donc pour gérer la durée il suffit de compter à chaque tour de programme, si la condition reste vrai, et de mettre ce compteur en tant qu'entrée du réseau. Après d'autres personnes pourrons peut-être, confirmer ou compléter les paroles d'un novice dans ce domaine.

#13 TIPE

TIPE

    Nouveau membre

  • Membres
  • 7 messages
  • Gender:Female

Posté 30 avril 2017 - 08:08

Bonsoir,

Pour notre expérience réelle, nous allons devoir implémenter notre code sur une carte Arduino, et notre code devra fonctionner en continu. Mais on ne sait pas trop comment faire pour que justement le code fonctionne en continu ! Pourriez-vous (encore) nous aider ?
Et connaissez-vous les branchements exacts d'une carte ? On sait qu'elle peut recevoir plusieurs entrées (des 0 ou des 1) ou des données algébriques. Mais nous ne sommes pas trop sûres de comment reliez nos photodiodes avec cette carte. Je sais que c'est de la physique voire même de l'élec, mais je demande quand même au cas où quelqu'un aurait des connaissances là-dessus!

Et merci pour vos infos sur le machine-learning



#14 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 966 messages
  • Gender:Male
  • Location:Anglet

Posté 30 avril 2017 - 08:59

Une chose à la fois ;) 

Commençons par le plus simple ( Quick wins first ;)

Regarde photo diode avec arduino et tu verras qu'il suffit de relier ta photodiode sur une arduino avec une résistance   ;)

Plusieurs montage sont possible, avec la résistance en pull up ou en pull down . 

 

Fichier joint  photodiode.png   22,38 Ko   0 téléchargement(s)

 

 

Je te laisse faire les essais pour voir ce que ça donne ;) 

 

 




 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#15 arobasseb

arobasseb

    Membre chevronné

  • Administrateur
  • PipPipPipPip
  • 737 messages
  • Gender:Male
  • Location:BORDEAUX (33)

Posté 03 mai 2017 - 12:53

Si tu ne t'y connais pas en programmation, tu peux utiliser Visuino ( https://www.visuino.com/) qui permet de programmer la carte visuellement et donc te concentrer sur l' algorithme.

Sinon un programme arduino simple, se découpe en deux parties : une partie initialisation ou tu configures les entrées sorties de la carte et une partie dans laquelle les instructions qui composent ton programme se répètent en boucle.

#16 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 769 messages
  • Gender:Male

Posté 03 mai 2017 - 01:16

Si tu ne t'y connais pas en programmation, tu peux utiliser Visuino ( https://www.visuino.com/) qui permet de programmer la carte visuellement et donc te concentrer sur l' algorithme.

Et si tu nous en parlais dans la rubrique "Logiciels".
Juste une petite présentation, pas un tuto.
Mais si tu veux faire un tuto, c'est encore mieux...




0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users