1. #1
    Futur Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    mars 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : mars 2013
    Messages : 9
    Points : 5
    Points
    5

    Par défaut Sommation des produits

    Bonjour;
    je suis débutante en langage C , quelqu'un svp m'aider de faire :

    V (n) (i)= max_a [R(i,a)+ alpha * ∑_jϵE [ P(i,a,j) * V(n-1) (j) ]
    Merci d'avance

    voilà mon algo:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    //Initialisation des états à une valeur nulle  
    n<----- 0
    pour tout i&#8712;E
    V_n (i)= 0
    fin pour
    //Calcul récursif des valeurs jusqu'au passage sous un seuil
     Répéter
    n<------- n+1
         pour tout i&#8712;E faire
    V_n (i)=&#12310;max&#12311;_a [R(i,a)+ &#945;&#8721;_j&#1013;E&#12310;P(i,a,j) V_(n-1) (j)&#12311;]
    fin pour
    jusqu'à &#12310;max&#12311;_i |V_n (i)-V_(n-1) (i)|  < &#949;
    retourner  Vn.
    ------------------------
    j'ai fait un essais mais ça marcha pas:
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
     #include <conio.h>
     int main(int argc, char *argv[])
    {
        /* Déclarations */
    float P[25][25][25];
    float R[25][25];  /* matrice recompense */
    float V[25][25],VI[25][25],VII[25][25];
    float max;//,MAX;
     int A,a,E,i,n,j,K;
     float alpha,epsilon;
     /* Saisie des données */
     printf("Entrer le nombre des etats (max.25) : ");
     scanf("%d", &E );
      printf("Entrer le nombre des actions (max.25) : ");
     scanf("%d", &A );
     printf("Entrer la valeur d epsilon (max.25) : ");
     scanf("%f", &epsilon );
     printf("Entrer la valeur d alpha (max.25) : ");
     scanf("%f", &alpha );
     for (a=0; a<A; a++){
     for (i=0; i<E; i++)
        for (j=0; j<E; j++)
            {
             printf("Elements de Prbabilite de transition P(pi)[%d][%d][%d] est : ",i,a,j);
             scanf("%f", &P[i][a][j]);
            }}
     //Affichage de Probabilité de transition P(pi) */
     printf("Matrice de Prbabilite de transition P(pi) est  :\n");
     for (a=0; a<A; a++){
     for (i=0; i<E; i++)
        for (j=0; j<E; j++)
              printf("\t%f",P[i][a][j]);
         printf("\n");
        }
    for (a=0; a<A; a++){
     for (i=0; i<E; i++)
     
            {
             printf("Element de la matrice de recompense R(pi)[%d][%d] est : ",i,a);
             scanf("%f", &R[i][a]);
            }}
     //Affichage de la matrice de recompense R(pi) */
     printf("Matrice de la matrice de recompense R(pi) est  :\n");
     for (a=0; a<A; a++){
     for (i=0; i<E; i++)
                  printf("\t%f",R[i][a]);
         printf("\n");
        }
     for (a=0; a<A; a++){
     
            for (n=0; n<E; n++)
    for (i=0; i<E; i++){
        for (j=0; j<E; j++)
             // voilà la partie que je suis bloquée
     
        VII[0][i]=0;
            while (VII[n][i]> VII[n-1][i])
            {
     
     
     
            V[n][i]+= P[i][K][j]* V[n-1][j];
            }
     VI [n][i] = V [n][i]; // pour stocker le résultat
            }
     
           VII[n][i]=R[i][a]+alpha *VI[n][i];}
     
     
            printf(" Vecteur V est  :\n");
     
      for (a=0; a<A; a++){
     
            for (n=0; n<E; n++)
    for (i=0; i<E; i++)
        for (j=0; j<E; j++){
     
                  printf("\t%f",VII[n][i]);
         printf("\n");
        }}
     
     
        return 0;
    }

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    juin 2007
    Messages
    4 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2007
    Messages : 4 021
    Points : 7 200
    Points
    7 200

    Par défaut

    Le code est mal indenté donc difficile à lire.
    On veut bien faire des efforts, mais tu dois en faire aussi ;-)
    Qu'est-ce qui ne fonctionne pas ? La compilation ? L'exécution ? Un comportement inattendu de l'application ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    mars 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : mars 2013
    Messages : 9
    Points : 5
    Points
    5

    Par défaut Sommatin des Produits

    Bonjour,
    Merci de votre aide,mon probleme c'est le calcul de V [n][i] j'obtient toujours des valeurs nulle,
    j'ai initialise pour chaque i de i=0 j'usqu'a E (nombre d'états ) ,v 0 [0] =0;V0[i=1]=0....,V0[ i=E] ici n=0;
    Pour les n+1:V [n][i]=R[i][a]+ alpha* Somme (P[i][a][j]*V[n-1][j]) avec j=0 to E; et alpha =constante
    Pour facilité le travail on donne par exemple le nombre E=3 (i=0 to i=2) et a=2 (a=0 to a=1)
    si on fait sur papier on trouve
    On calcule pour a=0 :
    n=1;
    i=0;
    V[n=1][i=0]=R [i=0][a=0]+alpha *( P[i=0][a=0][j=0]*V[n-1=0][j=0]+P[i=0][a=0][j=1]*V[n-1=0][j=1]+P[0][0][2]*V[0][2])
    =R [0][0] puisque on a déjà initialisé les V0 i=null;
    on compare | V 1 0 - V01| avec epsilon (valeur fixe) si < on arrête si > epsilon on continuer
    on passe à i=1 ;
    V[n=1][i=1]=R [i=1][a=0]+alpha *( P[i=1][a=0][j=0]*V[n-1=0][j=0]+P[i=0][a=0][j=1]*V[n-1=0][j=1]+P[1][0][2]*V[0][2])
    =R [1][0]

    de même pour V[n=1][i=2]=R [2][0];
    n=2;
    i=0;
    V[n=2][i=0]=R [i=0][a=0]+alpha *( P[i=0][a=0][j=0]*V[n-1=1][j=0]+P[0][0][1]*V[1][1]++P[0][0][2]*V[1][2])
    ainsi de suite;
    merci

  4. #4
    Membre expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    décembre 2015
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : décembre 2015
    Messages : 698
    Points : 3 533
    Points
    3 533

    Par défaut

    Bonjour,

    Il nous est très pénible de lire ton code. Attention aux indentations et au nommages.
    Ce que j'ai pu voir :
    Ligne 75, au premier passage, i=0, n=0 donc on teste while (VII[0][0]> VII[-1][0]), ce qui n'a pas de sens.
    Ligne suivante, V[n][i] += P[i][K][j]* V[n-1][j], on modifie V[n][i] mais il n'a jamais reçu de valeur initiale.
    ...

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    mars 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : mars 2013
    Messages : 9
    Points : 5
    Points
    5

    Par défaut

    Bonsoir;||
    j'ai fait cette notation c'est pour vous expliquer est non pas dans le code.Ce qui est concerne while | VII[n][i]- VII[n-1][i]|< epsilon c'est une condition pour passer à à l'étape suivante,moi j'ai bloquée au niveau des produits P[i][a][j]* V[n][j] est faire la sommation pour chaque j de 0 à E (nombre d'état c'est déjà donnée)
    et merciPièce jointe 340059

Discussions similaires

  1. [Tableaux] Classer des produits
    Par Roromix dans le forum Fonctions
    Réponses: 4
    Dernier message: 27/09/2006, 14h57
  2. [Conception] Ajout des produits dans un panier
    Par ghyosmik dans le forum PHP & SGBD
    Réponses: 3
    Dernier message: 22/09/2006, 11h17
  3. [INFO] Liste des produits Oracle
    Par orafrance dans le forum SQL
    Réponses: 2
    Dernier message: 01/08/2005, 21h42
  4. [info]Licence des produits Java
    Par XavierZERO dans le forum Général Java
    Réponses: 12
    Dernier message: 16/01/2004, 16h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo