Beispiel #1
0
void Intelligence::run(){

    Intelligence::initialiseHashmaps();

    Planning* best = Planning::best;
    Planning* test = Planning::test;
    float temp = Parameters::getTemperatureInitiale();

    cout << "Planning initial" << endl ;
    best->fromRandom()->evaluate()->log() ;
    int i = 0 ;

    while(temp > 0){
        best->evaluate() ;
        if(i % 1000 == 0)
            cout << "Temp : " << temp << " - Score : " << best->getScore() << endl ;
        test->from(best)->makeChange()->evaluate() ;
        //cout << "Test score : " << test->getScore() << " - Best score : " << best->getScore() << endl ;
        float delta = Planning::test->getScore() - Planning::best->getScore() ;

        if(Intelligence::critereMetropolis(delta, temp)){
            //cout << "Keep test !" << endl ;
            best->from(test) ;
        }

        temp -= Parameters::getTemperatureDecrement() ;
        i++ ;
    }
    cout << "Final score : " << best->evaluate()->getScore() << endl ;
}