Changeset 99

Show
Ignore:
Timestamp:
02/06/09 00:14:35 (3 years ago)
Author:
mirko
Message:

Fixed rng duplication in knapsack sample. More iterations for QAP.

Location:
trunk/samples
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/samples/knapsack/src/main.cc

    r91 r99  
    324324{ 
    325325public:   
    326   knapsack_moves(int maxmoves, int maxswaps, int doubleswaps)  
     326  knapsack_moves(mt19937& r, int maxmoves, int maxswaps, int doubleswaps)  
    327327    : mets::move_manager(),  
    328       rng(), // use predefined seed for results replication 
     328      rng(r), // use predefined seed for results replication 
    329329      int_range(0),  
    330330      mm(maxmoves),  
     
    383383  size() const {return moves_m.size(); }  
    384384protected: 
    385   mt19937 rng; 
     385  mt19937& rng; 
    386386  uniform_int<> int_range; 
    387387  int mm; 
     
    394394{ 
    395395public:   
    396   knapsack_all_moves()  
    397     : mets::move_manager(), rng() {} 
     396  knapsack_all_moves(mt19937& r)  
     397    : mets::move_manager(), rng(r) {} 
    398398 
    399399  ~knapsack_all_moves() 
     
    432432  size() const {return moves_m.size(); }  
    433433protected: 
    434   mt19937 rng; 
     434  mt19937& rng; 
    435435}; 
    436436 
     
    538538  knapsack best(start); 
    539539 
     540#if 0 
    540541  stupid_listener printer(optimal, graph); 
    541542 
    542543  // 500 set moves max, 1000 swaps and 0 double swaps  
    543   knapsack_moves km1(min(ks.size(), 500), 1000, 0); 
     544  knapsack_moves km1(rng, min(ks.size(), 500), 1000, 0); 
    544545 
    545546  // a simple tabu list  
     
    576577    } 
    577578 
    578   knapsack_moves km2(min(ks.size(), 1500), 3000, 500); 
     579  knapsack_moves km2(rng, min(ks.size(), 1500), 3000, 500); 
    579580  noimprove_termination_criteria nitc2(min(ks.size(), 2000)); 
    580581  // resize and keep the same tabu list 
     
    587588  cout << "end of TS phase 2: " << -ts2.best().cost_function() << '\n'; 
    588589   
    589   knapsack_moves km3(min(ks.size(), 4000), 7500, 2500); 
     590  knapsack_moves km3(rng, min(ks.size(), 4000), 7500, 2500); 
    590591  // resize and keep the same tabu list 
    591592  tabus.tenure(7); 
     
    601602  solution << dynamic_cast<const knapsack&>(ts3.best()) << endl; 
    602603 
     604#endif 
    603605  //////////////////////////////////////////////////////////////////////// 
    604606  // SIMULATED ANNEALING 
     
    612614 
    613615  // NOTE: SA should use all the neighborhood i.e. knapsack_all_moves 
    614   knapsack_moves kam(min(ks.size(), 5000), 20000, 10000); 
    615  
    616   exponential_cooling scs(0.9992); 
     616  knapsack_moves kam(rng, min(ks.size(), 5000), 20000, 10000); 
     617 
     618  exponential_cooling scs(0.98); 
    617619 
    618620  // This is not strictly SA: 
    619   // TODO: add a termination criteria based on temperature 
    620   noimprove_termination_criteria saitc(5000); 
    621  
    622   mets::simulated_annealing sa(saks, sabest, kam, saitc, scs,  
    623                                1800*ks.size(), 1e-10); 
     621  // noimprove_termination_criteria saitc(5000); 
     622  sa_cooled satc(/*&saitc,*/ 1e-12); 
     623  mets::simulated_annealing sa(saks, sabest, kam, satc, scs,  
     624                               1800*ks.size(), 1e-23, rng); 
    624625  sa.attach(saprinter); 
    625626  sa.search(); 
  • trunk/samples/qap/src/main.cc

    r92 r99  
    4646  mets::best_ever_criteria aspiration_criteria; 
    4747  mets::noimprove_termination_criteria termination_criteria 
    48     (std::min(N*N*10, 7500)); 
     48    (std::min(N*N*10, 15000)); 
    4949 
    5050  // the search algorithm