/*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N S R E L A T I V E S A U R E C U I T S I M U L E : */ /* */ /* */ /* Author of '$xrk/recuit_2D.1B$I' : */ /* */ /* Jean-Francois Colonna (LACTAMME, 1994??????????). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* R E S T A U R A T I O N E V E N T U E L L E D E L ' E T A T A N T E R I E U R : */ /* */ /*************************************************************************************************************************************/ Test(IL_FAUT(utiliser_une_temperature)) Bblock EGAL(seuil_de_la_probabilite_de_retour_en_arriere ,EXPX(NEGA(INVZ(MUL2(constante_K_de_temperature,temperature_courante)))) ); GENERATION_D_UNE_VALEUR(probabilite_de_retour_en_arriere ,PROBABILITE_NULLE ,PROBABILITE_UNITE ); Test(IL_FAUT(changer_la_temperature_a_chaque_essai)) Bblock INCR(temperature_courante,pas_de_la_temperature); /* Incrementation (en pas le pas est en general negatif...) de la temperature a chaque */ /* essai... */ Eblock ATes Bblock Test(IFEQ(numero_de_l_essai,nombre_d_essais_par_image)) Bblock INCR(temperature_courante,pas_de_la_temperature); /* Incrementation (en pas le pas est en general negatif...) de la temperature uniquement */ /* avant chaque nouvelle image... */ Eblock ATes Bblock Eblock ETes Eblock ETes Eblock ATes Bblock Eblock ETes CALCUL_DE_LA_SOMME_DES_DIFFERENCES_DES_CARRES(anti_qualite_du_placement_des_points_apres); /* Calcul de la "qualite" du placement courant des points (apres la tentative de deplacement */ /* aleatoire de ceux-ci). */ Test(IFOU(IFGT(anti_qualite_du_placement_des_points_apres,anti_qualite_du_placement_des_points_avant) ,IFLT(probabilite_de_retour_en_arriere,seuil_de_la_probabilite_de_retour_en_arriere) ) ) Bblock DoIn(point,PREMIER_POINT_DU_RESEAU,DERNIER_POINT_DU_RESEAU,I) Bblock TRANSFERT_POINT_3D(ACCES_POINT(point),ACCES_SAUVEGARDE_POINT(point)); /* Restauration de la configuration initiale des points lorsque le qualite obtenue est */ /* moindre apres qu'avant... */ Eblock EDoI Eblock ATes Bblock Eblock ETes /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* G E S T I O N D U T E M P S S I M U L E : */ /* */ /*************************************************************************************************************************************/ INCR(temps ,SCAL(FU ,SOUS(MUL2(nombre_de_periodes_de_la_simulation,nombre_d_essais_par_image) ,MUL2(PREMIERE_ITERATION_D_UN_Komp,PREMIERE_ITERATION_D_UN_Komp) ) ,SOUS(COORDONNEE_BARYCENTRIQUE_MAXIMALE ,COORDONNEE_BARYCENTRIQUE_MINIMALE ) ) ); /* Et simulation d'un temps dans [0,1]... */ Eblock /* ATTENTION : le 'Bblock' associe est dans '$xrk/recuit_2D.1A$I'... */