00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include <stdio.h>
00020 #include <string.h>
00021 #include <stdlib.h>
00022 #include "choquet.h"
00023 #include "image.h"
00024 #include "proto2D.h"
00025
00026
00027
00028
00029
00030 int main(int argc, char *argv[])
00031 {
00032 float *donnee;
00033 float resultat;
00034 int i,c;
00035 char fileCriteres[TAILLE_NOM_FICHIER];
00036
00037 FILE *fp;
00038
00039
00040
00041 choquet_interaction_t descripteur;
00042
00043
00044
00045 param par0, *ptp;
00046
00047
00048
00049
00050
00051 param_debut(argc, argv, &par0);
00052 ptp = &par0;
00053
00054
00055 printf("\n\nLECTURE EN COURS...\n");
00056 ptp = choquet_interaction_lect(&descripteur, ptp, "");
00057 printf("\n...LECTURE OK.\n");
00058
00059
00060
00061 param_fin(argc, argv, &par0);
00062
00063
00064
00065
00066
00067
00068 printf("\n-> Le fichier des coefficients est : \t\t%s",(descripteur.fichier));
00069
00070
00071
00072
00073 printf("\n\nINITIALISATION EN COURS...\n\n");
00074 choquet_interaction_init(&descripteur);
00075 printf("\n...FIN INITIALISATION.\n");
00076
00077
00078
00079 switch(descripteur.erreur)
00080 {
00081 case AUCUNE_ERREUR : printf("\n\nPAS D'ERREUR => PREPARATION AU CALCUL :\n");
00082
00083 printf("\nDonner le nom du fichier des criteres : ");
00084 scanf("%s",fileCriteres);
00085 printf("-> Le fichier des criteres est : \t\t%s",fileCriteres);
00086
00087 printf("\n-> Allocation memoire (%d coeff)...",(descripteur.nbcoeff));
00088 donnee = (float *)malloc((descripteur.nbcoeff)*sizeof(float));
00089 printf("\t\tOK.\n");
00090
00091 printf("-> Ouverture du fichier...");
00092 fp = fopen(fileCriteres,"rt");
00093 printf("\t\t\tOK\n");
00094
00095 for(i=0;i<(descripteur.nbcoeff);i++)
00096 fscanf(fp,"%f",&donnee[i]);
00097
00098 fclose(fp);
00099
00100 printf("-> Criteres rentres et fichier ferme...\t\tOK\n");
00101
00102 printf("\nAffichage des coefficients d'interactions :\n");
00103 for(i=0;i<(descripteur.nbcoeff);i++)
00104 {
00105 for(c=0;c<(descripteur.nbcoeff);c++)
00106 printf(" %f\t ",descripteur.ptparam[i][c]);
00107 printf("\n");
00108 }
00109
00110 printf("\nAffichage des criteres :\n");
00111 for(i=0;i<(descripteur.nbcoeff);i++)
00112 {
00113 printf(" %f\t ",donnee[i]);
00114 printf("\n");
00115 }
00116
00117
00118 printf("\n\nCALCUL EN COURS...\n\n");
00119 choquet_interaction_calc(&descripteur,donnee,&resultat);
00120 printf("\n...CALCUL OK.");
00121
00122
00123 printf("\n\n\n***************************\n");
00124 printf("RESULTAT = %2.4f\n",resultat);
00125 printf("***************************\n\n");
00126
00127 printf("\n-> Libération mémoire associée aux critères...");
00128 for (i = 0 ; i < (descripteur.nbcoeff) ; i++ )
00129 free(donnee);
00130 printf("\tOK\n");
00131 printf("\n-> Libération mémoire associée aux coefficients...");
00132 choquet_interaction_ferm(&descripteur);
00133 printf("OK\n\n");
00134 printf("\nFin.\n\n");
00135 break;
00136
00137 case ERREUR_CHOQUET_FILE : printf("\nERREUR DETECTEE A L'OUVERTURE DU FICHIER : \nEchec ouverture.\n");
00138 printf("\nFin.\n");
00139 break;
00140
00141 case ERREUR_CHOQUET_LIGNE_MATRICE : printf("\nERREUR DETECTEE A L'INTERIEUR DU FICHIER : \nIncoherence entre le nombre de coefficients effectifs et nbcoeff => matrice non carree et probleme sur le nombre de lignes.\n");
00142 printf("\nFin.\n");
00143 break;
00144
00145 case ERREUR_CHOQUET_COLONNE_MATRICE : printf("\nERREUR DETECTEE A L'INTERIEUR DU FICHIER : \nIncoherence entre le nombre de coefficients effectifs et nbcoeff => matrice non carree et probleme sur le nombre de colonnes.\n");
00146 printf("\nFin.\n");
00147 break;
00148
00149 case ERREUR_CHOQUET_NU : printf("\nERREUR DETECTEE SUR LES COEFFICIENTS DE PONDERATION : \nleur somme doit faire 1.\n");
00150 printf("\nFin.\n");
00151 break;
00152
00153 case ERREUR_CHOQUET_INTERACTION : printf("\nERREUR DETECTEE SUR LES COEFFICIENTS D'INTERACTION : \nils ne verifient pas la condition permettant le passage a la mesure floue.\n");
00154 printf("\nFin.\n");
00155 break;
00156
00157 }
00158
00159
00160 exit(1);
00161 }
00162
00163
00164