Evocosm - A C++ Framework for Evolutionary Computing

Main Index

Created by Scott Robert Ladd at Coyote Gulch Productions.


evocommon.h
1 /*
2  Evocosm is a C++ framework for implementing evolutionary algorithms.
3 
4  Copyright 2011 Scott Robert Ladd. All rights reserved.
5 
6  Evocosm is user-supported open source software. Its continued development is dependent
7  on financial support from the community. You can provide funding by visiting the Evocosm
8  website at:
9 
10  http://www.coyotegulch.com
11 
12  You may license Evocosm in one of two fashions:
13 
14  1) Simplified BSD License (FreeBSD License)
15 
16  Redistribution and use in source and binary forms, with or without modification, are
17  permitted provided that the following conditions are met:
18 
19  1. Redistributions of source code must retain the above copyright notice, this list of
20  conditions and the following disclaimer.
21 
22  2. Redistributions in binary form must reproduce the above copyright notice, this list
23  of conditions and the following disclaimer in the documentation and/or other materials
24  provided with the distribution.
25 
26  THIS SOFTWARE IS PROVIDED BY SCOTT ROBERT LADD ``AS IS'' AND ANY EXPRESS OR IMPLIED
27  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
28  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SCOTT ROBERT LADD OR
29  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
30  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
31  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
32  ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
33  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
34  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35 
36  The views and conclusions contained in the software and documentation are those of the
37  authors and should not be interpreted as representing official policies, either expressed
38  or implied, of Scott Robert Ladd.
39 
40  2) Closed-Source Proprietary License
41 
42  If your project is a closed-source or proprietary project, the Simplified BSD License may
43  not be appropriate or desirable. In such cases, contact the Evocosm copyright holder to
44  arrange your purchase of an appropriate license.
45 
46  The author can be contacted at:
47 
48  scott.ladd@coyotegulch.com
49  scott.ladd@gmail.com
50  http:www.coyotegulch.com
51 */
52 
53 #if !defined(LIBEVOCOSM_EVOCOMMON_H)
54 #define LIBEVOCOSM_EVOCOMMON_H
55 
56 // Brahe library
57 #include "libbrahe/prng.h"
58 
59 // Standard C++ Library
60 #include <string>
61 
62 namespace libevocosm
63 {
65 
69  class prng
70  {
71  private:
72  brahe_prng_state_t m_random;
73 
74  public:
76  prng()
77  {
78  brahe_prng_init(&m_random,BRAHE_PRNG_MWC1038,0);
79  }
80 
83  {
84  brahe_prng_free(&m_random);
85  }
86 
88  void set_seed(uint32_t a_seed)
89  {
90  brahe_prng_init(&m_random,BRAHE_PRNG_MWC1038,a_seed);
91  }
92 
94  uint32_t get_seed()
95  {
96  return m_random.m_seed;
97  }
98 
100  size_t get_index(size_t n)
101  {
102  return brahe_prng_index(&m_random,n);
103  }
104 
106  double get_real()
107  {
108  return brahe_prng_real2(&m_random);
109  }
110  };
111 
113 
117  class globals
118  {
119  protected:
121  static size_t rand_index(size_t n)
122  {
123  return g_random.get_index(n);
124  }
125 
127  static prng g_random;
128 
130  static std::string g_version;
131 
132  public:
134  static void set_seed(uint32_t a_seed)
135  {
136  g_random.set_seed(a_seed);
137  }
138 
140  static uint32_t get_seed()
141  {
142  return g_random.get_seed();
143  }
144 
146  static std::string version()
147  {
148  return g_version;
149  }
150  };
151 
152 }
153 
154 #endif
static std::string version()
Get version number.
Definition: evocommon.h:146
static std::string g_version
Version number.
Definition: evocommon.h:130
uint32_t get_seed()
get seed value
Definition: evocommon.h:94
~prng()
Destructor.
Definition: evocommon.h:82
A toolkit and framework for implementing evolutionary algorithms.
Definition: analyzer.h:60
The random number generator used by Evocosm.
Definition: evocommon.h:69
Elements shared by all classes in Evocosm.
Definition: evocommon.h:117
static uint32_t get_seed()
Set the seed for the random number generator.
Definition: evocommon.h:140
static prng g_random
A shared random number generator.
Definition: evocommon.h:127
prng()
Constructor.
Definition: evocommon.h:76
static void set_seed(uint32_t a_seed)
Set the seed for the random number generator.
Definition: evocommon.h:134
static size_t rand_index(size_t n)
Static function to allow use of g_random function pointer in random_shuffle.
Definition: evocommon.h:121
double get_real()
get the next value in the range [0,1)
Definition: evocommon.h:106
void set_seed(uint32_t a_seed)
Set the seed for the random number generator.
Definition: evocommon.h:88
size_t get_index(size_t n)
get a random index value
Definition: evocommon.h:100

© 1996-2005 Scott Robert Ladd. All rights reserved.
HTML documentation generated by Dimitri van Heesch's excellent Doxygen tool.