test/simann_test.cc
author deba
Mon, 06 Feb 2006 20:32:29 +0000
changeset 1964 df0b07457083
parent 1921 fb4a2a84d363
child 2242 16523135943d
permissions -rw-r--r--
Bug fix
     1 /* -*- C++ -*-
     2  *
     3  * This file is a part of LEMON, a generic C++ optimization library
     4  *
     5  * Copyright (C) 2003-2006
     6  * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
     7  * (Egervary Research Group on Combinatorial Optimization, EGRES).
     8  *
     9  * Permission to use, modify and distribute this software is granted
    10  * provided that this copyright notice appears in all copies. For
    11  * precise terms see the accompanying LICENSE file.
    12  *
    13  * This software is provided "AS IS" with no warranty of any kind,
    14  * express or implied, and with no claim as to its suitability for any
    15  * purpose.
    16  *
    17  */
    18 
    19 #include <lemon/simann.h>
    20 
    21 using namespace lemon;
    22 
    23 class MyEntity : public EntityBase {
    24 public:
    25   double d, prev_d;
    26   MyEntity() : d(100000.0) { srand48(time(0)); }
    27   double mutate() {
    28     prev_d = d;
    29     if (drand48() < 0.8) { d += 1.0; }
    30     else { d -= 1.0; }
    31     return d;
    32   }
    33   void revert() { d = prev_d; }
    34   MyEntity* clone() { return new MyEntity (*this); }
    35   void randomize() {}
    36 };
    37 
    38 int main() {
    39   SimAnn simann;
    40   SimpleController ctrl;
    41   simann.setController(ctrl);
    42   MyEntity ent;
    43   simann.setEntity(ent);
    44   simann.run();
    45 
    46   //MyEntity *best_ent = (MyEntity *) simann.getBestEntity();
    47   //std::cout << best_ent->d << std::endl;
    48 
    49   SimAnn simann2;
    50   AdvancedController ctrl2(2.0);
    51   simann2.setController(ctrl2);
    52   MyEntity ent2;
    53   simann2.setEntity(ent2);
    54   simann2.run();
    55 
    56   //MyEntity *best_ent2 = (MyEntity *) simann2.getBestEntity();
    57   //std::cout << best_ent2->d << std::endl;
    58 
    59   return 0;
    60 }