markov.flux
Class QMDP

java.lang.Object
  extended by flux.Flux
      extended by markov.flux.QMDP
All Implemented Interfaces:
BoxModelObject, IFlux, java.io.Serializable, IPOMDP

public class QMDP
extends Flux
implements BoxModelObject, IPOMDP

Implante l'algorithme QMDP basé sur l'heuristique de Cassandra. Calcule les Q-Values comme un MDP. Choisit l'action optimale en pondérant les Q-Values par le belief-state.

Version:
2.10, 07/04/2003
Author:
Laurent JEANPIERRE
See Also:
Serialized Form

Field Summary
static java.lang.String description
          Renvoie une chaîne décrivant le rôle de la boîte.
 
Constructor Summary
QMDP()
           
QMDP(IFournisseur modele, IRecompense but)
           
QMDP(ObjectDrawingFrame odf)
           
QMDP(ObjectDrawingFrame odf, java.util.Collection data)
           
 
Method Summary
 IAction actionOptimale(Distribution etat)
          Donne l'action optimale à effectuer.
 void add(int entree, java.lang.Object valeur)
          Introduit une donnée dans cette section du flux.
 void addBlock(int entree, java.util.Collection valeur)
          Introduit un bloc de données dans cette section du flux.
 java.lang.String descriptionEntree(int no)
          Retourne la description de l'une des broches d'entrée.
 java.lang.String descriptionSortie(int no)
          Retourne la description de l'une des broches de sortie.
 java.lang.String descriptionUtilise(int no)
          Retourne la description de l'une des broches d'utilisation.
 void drawRealObject(java.awt.Graphics g)
          Dessine l'objet visuel sur le contexte passé en paramètre.
 void generateCode(java.io.FileWriter file)
          Code for initialisation overriding method in BoxModelObject *
 void generateConnections(java.io.FileWriter file)
          Code for the connections generated by individual connections *
 BoxObject getBox()
          Renvoie la boîte associée au modèle durant le design.
 BuildingPanel getBuildingPanel(boolean lockedBox)
          Récupère le panneau de conception de ce module.
 BoxModelObject getUse(int broche)
          Renvoie l'un des objets en cours d'utilisation.
 int getUseNb()
          Combien de broches d'utilisation sont disponibles ?
 java.lang.Class getUseType(int no)
          Renvoie le type des broches d'utilisation du flux.
 boolean isUsing(int broche)
          Indique si la broche est en cours d'utilisation.
 void raz(int entree)
          Signale une remise à zéro du flux.
 void razBlock(int entree, java.util.Collection valeur)
          Modifie les données.
 void reset()
          Remet le calcul des Q-Values aux valeurs initiales.
 void sauvegarde_donnees(java.io.Writer fic)
          Sauvegarde les données du flux dans fic.
 void setBox(BoxObject with)
          Associe le modèle avec une boîte à utiliser durant le design.
 IFlux twin()
          Crée un clone du flux courant.
 void unUse(int broche)
          Libère la broche.
 void use(int broche, java.lang.Object autre)
          Connecte l'une des broches du flux à un autre objet du flux.
 
Methods inherited from class flux.Flux
changeEntryType, changeExitType, connect, connect, connect, connect, connectBack, disconnect, dumpLocks, getDebugPanel, getEntry, getEntryNb, getEntryType, getExit, getExitNb, getExitType, lock, retourAutorise, unlock
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface flux.drawingTool.BoxModelObject
retourAutorise
 
Methods inherited from interface flux.IFlux
changeEntryType, changeExitType, connect, connectBack, disconnect, dumpLocks, getDebugPanel, getEntry, getEntryNb, getEntryType, getExit, getExitNb, getExitType, lock, unlock
 

Field Detail

description

public static java.lang.String description
Renvoie une chaîne décrivant le rôle de la boîte.

Constructor Detail

QMDP

public QMDP(IFournisseur modele,
            IRecompense but)

QMDP

public QMDP()

QMDP

public QMDP(ObjectDrawingFrame odf,
            java.util.Collection data)

QMDP

public QMDP(ObjectDrawingFrame odf)
Method Detail

sauvegarde_donnees

public void sauvegarde_donnees(java.io.Writer fic)
                        throws java.io.IOException
Sauvegarde les données du flux dans fic. La sauvegarde est faite en ASCII.

Specified by:
sauvegarde_donnees in interface BoxModelObject
Parameters:
fic - le Writer dans lequel il faut écrire.
Throws:
java.io.IOException

reset

public void reset()
Remet le calcul des Q-Values aux valeurs initiales. Utile en cas de changement de but.


actionOptimale

public IAction actionOptimale(Distribution etat)
Donne l'action optimale à effectuer.

Specified by:
actionOptimale in interface IPOMDP
Parameters:
etat - le belief-state interrogé.
Returns:
l'action optimale pour ce belief-state.

add

public void add(int entree,
                java.lang.Object valeur)
Introduit une donnée dans cette section du flux.

Specified by:
add in interface IFlux
Specified by:
add in class Flux
Parameters:
entree - le numéro de l'entrée à remplir.
valeur - la donnée. Elle doit se conformer au type typeEntree(entree).

addBlock

public void addBlock(int entree,
                     java.util.Collection valeur)
Introduit un bloc de données dans cette section du flux.

Specified by:
addBlock in interface IFlux
Specified by:
addBlock in class Flux
Parameters:
entree - le numéro de l'entrée à remplir.
valeur - les données. Elles doivent toutes se conformer au type typeEntree(entree).

raz

public void raz(int entree)
Signale une remise à zéro du flux.

Specified by:
raz in interface IFlux
Specified by:
raz in class Flux
Parameters:
entree - le numéro de l'entrée à réinitialiser.

razBlock

public void razBlock(int entree,
                     java.util.Collection valeur)
Modifie les données. Equivalent à un raz + ajouterBloc.

Specified by:
razBlock in interface IFlux
Specified by:
razBlock in class Flux
Parameters:
entree - le numéro de l'entrée à actualiser.
valeur - le bloc de valeurs à envoyer.

twin

public IFlux twin()
Crée un clone du flux courant. Toutes les caractèristiques seront recopiées. Aucun lien avec d'autres flux ne sera copié.

Specified by:
twin in interface IFlux

getBuildingPanel

public BuildingPanel getBuildingPanel(boolean lockedBox)
Description copied from interface: BoxModelObject
Récupère le panneau de conception de ce module.

Specified by:
getBuildingPanel in interface BoxModelObject

generateCode

public void generateCode(java.io.FileWriter file)
Code for initialisation overriding method in BoxModelObject *

Specified by:
generateCode in interface BoxModelObject
Parameters:
file - le fichier dans le quel le code sera écrit.

generateConnections

public void generateConnections(java.io.FileWriter file)
Code for the connections generated by individual connections *

Specified by:
generateConnections in interface BoxModelObject
Parameters:
file - le fichier dans le quel le code sera écrit.

drawRealObject

public void drawRealObject(java.awt.Graphics g)
Description copied from interface: BoxModelObject
Dessine l'objet visuel sur le contexte passé en paramètre.

Specified by:
drawRealObject in interface BoxModelObject
Parameters:
g - le contexte graphique sur lequel il faut dessiner.

getBox

public BoxObject getBox()
Description copied from interface: BoxModelObject
Renvoie la boîte associée au modèle durant le design.

Specified by:
getBox in interface BoxModelObject
Returns:
un BoxObject correspondant à l'interface entre le IFlux et l'application de design.

setBox

public void setBox(BoxObject with)
Description copied from interface: BoxModelObject
Associe le modèle avec une boîte à utiliser durant le design.

Specified by:
setBox in interface BoxModelObject
Parameters:
with - un BoxObject contenant les donnés;es de l'interface visuelle.

descriptionEntree

public java.lang.String descriptionEntree(int no)
Retourne la description de l'une des broches d'entrée.

Specified by:
descriptionEntree in interface BoxModelObject
Parameters:
no - un entier contenant le numéro de la broche à interroger.

descriptionSortie

public java.lang.String descriptionSortie(int no)
Retourne la description de l'une des broches de sortie.

Specified by:
descriptionSortie in interface BoxModelObject
Parameters:
no - un entier contenant le numéro de la broche à interroger.

getUseNb

public int getUseNb()
Combien de broches d'utilisation sont disponibles ?

Specified by:
getUseNb in interface IFlux
Overrides:
getUseNb in class Flux
Returns:
le nombre de broches disponibles.

getUseType

public java.lang.Class getUseType(int no)
                           throws java.lang.IllegalArgumentException
Renvoie le type des broches d'utilisation du flux.

Specified by:
getUseType in interface IFlux
Overrides:
getUseType in class Flux
Parameters:
no - le numéro de la broche interrogé
Returns:
la Class correspondant à la broche no.
Throws:
java.lang.IllegalArgumentException - si no n'est pas entre 0 et nbUtilise()-1.

use

public void use(int broche,
                java.lang.Object autre)
         throws java.lang.IllegalArgumentException
Connecte l'une des broches du flux à un autre objet du flux.

Specified by:
use in interface IFlux
Overrides:
use in class Flux
Parameters:
broche - le numéro de la broche à connecter.
autre - l'objet à utiliser
Throws:
java.lang.IllegalArgumentException - si broche n'est pas entre 0 et nbUtilise()-1.
java.lang.IllegalArgumentException - si le type de autre ne correspond pas au type de la broche.

descriptionUtilise

public java.lang.String descriptionUtilise(int no)
Retourne la description de l'une des broches d'utilisation.

Specified by:
descriptionUtilise in interface BoxModelObject
Overrides:
descriptionUtilise in class Flux
Parameters:
no - un entier contenant le numéro de la broche à interroger.

isUsing

public boolean isUsing(int broche)
                throws java.lang.IllegalArgumentException
Indique si la broche est en cours d'utilisation.

Specified by:
isUsing in interface IFlux
Overrides:
isUsing in class Flux
Parameters:
broche - le numéro de la broche à tester.
Throws:
java.lang.IllegalArgumentException - si broche n'est pas entre 0 et nbUtilise()-1.

getUse

public BoxModelObject getUse(int broche)
                      throws java.lang.IllegalArgumentException
Renvoie l'un des objets en cours d'utilisation.

Specified by:
getUse in interface IFlux
Overrides:
getUse in class Flux
Parameters:
broche - le numéro de la broche à tester.
Throws:
java.lang.IllegalArgumentException - si broche n'est pas entre 0 et nbUtilise()-1.

unUse

public void unUse(int broche)
           throws java.lang.IllegalArgumentException
Libère la broche.

Specified by:
unUse in interface IFlux
Overrides:
unUse in class Flux
Parameters:
broche - le numéro de la broche à déconnecter.
Throws:
java.lang.IllegalArgumentException - si broche n'est pas entre 0 et nbUtilise()-1.