Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

Util.h

Go to the documentation of this file.
00001 
00009 /*
00010  * GALib v2.0- A simple C++ library for Genetic Algorithms
00011  * Arthur van Dam <dam@math.uu.nl>
00012  * $Id: Util.h 472 2008-11-19 17:06:31Z anyzelma $
00013  */
00014 
00015 #ifndef __GAL_UTIL_H
00016 #define __GAL_UTIL_H
00017 
00018 #include<sstream>
00019 #include<string>
00020 #include<list>
00021 #include<math.h>
00022 #include<cstdlib>
00023 #define RANDOM_MAX 2147483648.0
00024 
00028 int random_int(int nmax)
00029 {
00030     return (int)(floor(nmax*(random()/RANDOM_MAX)));
00031 }
00032 
00036 std::string itos(int i)
00037 {
00038     std::stringstream s;
00039     s << i;
00040     return s.str();
00041 }
00042 
00046 std::string ftos(double d)
00047 {
00048     std::stringstream s;
00049     s.precision(15);
00050     s << d;
00051     return s.str();
00052 }
00053 
00062 int bitstodec(std::list<char>::iterator start, std::list<char>::iterator end)
00063 {
00064 
00065     /*** Convert a bitstring to its decimal value ***/
00066     return 0;
00067 }
00068 
00075 int bitstodec(std::list<char> bits)
00076 {
00077     return bitstodec(bits.begin(), bits.end());
00078 }
00079 
00090 void bitstodecparts(std::list<char> bits, int partsize, int *decparts)
00091 {
00092     std::list<char>::iterator pos;
00093     int pow;
00094     int val;
00095     int ipart;
00096     int i;
00097     
00098 
00099     pos = bits.begin();
00100     ipart = 0;
00101     while (pos != bits.end()) {
00102         pow = 1;
00103         val = 0;
00104         for (i = 0; i < partsize; i++) {
00105             val += *pos * pow;
00106             pow <<= 1;
00107             ++pos;
00108         }
00109         decparts[ipart] = val;
00110         ipart++;
00111     }
00112 }
00113 
00118 std::string bitstos(std::list<char> bits)
00119 {
00120     std::string str = "";
00121     std::list<char>::iterator it;
00122     for (it = bits.begin(); it != bits.end(); ++it) {
00123 //      str += (*it ? "1" : "0");
00124         str += itos(*it);
00125     }
00126     return str;
00127 }
00128 
00136 std::string rbitstos(std::list<char> bits)
00137 {
00138     bits.reverse();
00139     return bitstos(bits);
00140 }
00141 
00146 template<typename __Tp>
00147 std::_List_iterator<__Tp>& operator+=(std::_List_iterator<__Tp>& it, int __n) {
00148 //older GCCs (<3.4): 
00149 //template<typename __Tp, typename __Ref, typename __Ptr>
00150 //std::_List_iterator<__Tp, __Ref, __Ptr>& operator+=(std::_List_iterator<__Tp, __Ref, __Ptr>& it, int __n) { 
00151     for (int i = 0; i < __n; i++) {
00152         ++it;
00153     }
00154     return it;
00155 };
00156 
00165 template <class T> T** newMatrix(int nr, int nc)
00166 {
00167     T** mtx;
00168     mtx = new T*[nr];
00169     for(int i = 0; i < nr; i++) {
00170         mtx[i] = new T[nc];
00171     }
00172 
00173     return mtx;
00174 };
00175 
00183 template <class T> void deleteMatrix(T** mtx, int nr, int nc)
00184 {
00185     for(int i = 0; i < nr; i++) {
00186         delete [] mtx[i];
00187     }
00188     delete [] mtx;
00189 };
00190 
00191 #endif /* __GAL_UTIL_H */

Generated on Tue Oct 20 12:59:20 2009 for LabSci GALib optimisation by genetic algorithms, student version by  doxygen 1.3.9.1