// \****************************************************** // Datei AartsScheduler.h // Autor: Peter Unruh // nach Aarts, "Parallel Implementations of the Statistical Cooling Algorithm" // \****************************************************** #ifndef SA_SeqAartsScheduler_H #define SA_SeqAartsScheduler_H //#include #include #include "constants.h" #include "SA_Scheduler.h" // \****************************************************** // Klasse SA_SeqAartsScheduler : // cooling schedule, Statistiken // \****************************************************** class SA_SeqAartsScheduler : public SA_Scheduler { private: SA_Output saaartsoutput; protected: float subchainfactor, // Faktor fuer die Kettenlaengenbestimmung delta, // Distanzparameter epsilon, // Stopparameter omega; // Smooting-Faktor unsigned long L, // Laenge der Kette bei akt. Anzahl der Cluster L0, // Laenge der Kette bei Anz. der Cluster == 1 n_smooth; // Anzahl der geschpeicherten Werte fuer Glaettung float SmoothedMean, // Fuer die Bestimmung der "Ableitung" der Mittelwert-Funktion LastSmoothedMean, // dto. LastT, // dto. MeanbyT0; float GlobalBestE; // beste ueber alle Prozessoren bis jetzt gesehene Loesung public: SA_SeqAartsScheduler(); ~SA_SeqAartsScheduler(); SA_Output *GetSchedulerOutput(); virtual int Equilibrium(); virtual void UpdateTemperature(); virtual int Frozen(); // WarmingUp void WarmingUp(SA_Problem & P, SA_Solution &s, SA_Solution &b); // void SetClusterNumber(unsigned long n_clu, unsigned long clu_size); // die Anzahl der Cluster dem Scheduler mitteilen int ReadConfig(std::istream &); void ShowConfig(std::ostream & ); // Testausgabe der Konfiguration void SetLoopFactor(float f) {subchainfactor = f;} // Statistiken des Durchlaufs hinschreiben (OHNE endl davor oder danach !!) void CreateLog(std::ostream &); }; #endif