/*************************************************************************************************************************************/
/* */
/* 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'... */