⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 galib revision history.htm

📁 提供了遗传算法的一些代码库文件
💻 HTM
📖 第 1 页 / 共 4 页
字号:
  <LI>Fixed the #ifndef _ga_xxxxxxxx.h_ problem in the DOS distribution. Some 
  DOS compilers did not like having a . in the #ifdef statements. The PERL 
  script I was using to trim filenames inadvertantly replaced preprocessor 
  #ifndef directives as well as #include directives. 
  <LI>Added a 'gnu' directory in the examples directory with an example of how 
  to create your own genome using a non-GAlib data structure. The gnu example 
  uses the BitString object from the GNU g++ library to implement a binary 
  string genome. 
  <LI>Fixed a bug in the base GA object's copy method that did not copy all of 
  the base GA components during a copy. 
  <LI>Minor changes to binstr2.op.h, bin2dec.h, bin2dec.C, array1.op.C and 
  list.op.C to get rid of compiler errors when compiling on the Mac (no function 
  prototypes). 
  <LI>Added two more examples, one with all of the DeJong functions and a second 
  with Holland's Royal Road problem. 
  <LI>Made the GARandomBit function more efficient. It is now no longer inlined 
  (a minus) but it caches bits so that it does one call to your system's random 
  function for each bit in a long in on your machine. So if you have a 32-bit 
  long int on your machine, random gets called only 1/32 as often as before. 
  This was pretty important for the uniform crossover operator. 
  <LI>Changed the name of the version header file from VERSION to version.h in 
  order to avoid confusion between the VERSION file in the installed include 
  directory (this file contains only the version number) and the version.h file 
  in the galib source directory (this file contains the rcsid string for 
  ident-ing the library). 
  <LI>Fixed the #include format for DOS and Mac systems. The UNIX #include lines 
  are of the form #include &lt;ga/ga.h&gt; whereas the DOS and Mac #include 
  lines are now of the form #include &lt;ga.h&gt;. 
  <LI>Fixed the ANSI C++ incompatibilities (using 'for' loop variables outside 
  the loop and implicit casting of void * as NULL). Also fixed a couple of 
  inline syntax problems in example 14. 
  <LI>The population object did not initialize newly cloned genomes when it was 
  resized to a larger size. This behaviour has been changed so that any new 
  genomes will be initialized when the population grows. Existing genomes are 
  not affected by the resize. 
  <LI>The objective vector's copy constructor did not initialize the array 
  pointer to NULL, so seemingly spurious segmentation errors could occur. 
  <LI>There was a bug in the SimpleGA that would delay convergence (a workaround 
  was to use a SteadyStateGA with 100% replacement). This has been fixed. 
  <LI>Cleaned up the examples. There were a lot of old comments left that were 
  no longer up-to-date. Added some comments to parts of the code that weren't 
  clear. 
  <LI>Cleaned up the error messages and removed old error strings that are no 
  longer used. 
  <LI>Update the documentation for the programming interface (more array, list, 
  and tree details) and the overview. 
  <LI>The signature for the custom replacement function has changed. It now 
  includes a reference to the child that is to be inserted: <BR><CODE>typedef 
  GAGenome &amp; (*GAReplacementFunction)(GAGenome&amp;, 
  GAPopulation&amp;);</CODE><BR>This makes it easier to do custom parent-child 
  comparisons. Previously it took only the population as its argument. 
  <LI>Added the uniform crossover operator for binary string and array genomes 
  (yes, even after all this time I actually forgot that the library did not have 
  uniform crossover). 
  <LI>Added a score-flushing feature to the statistics object. Now you can 
  specify a file to which the best-of-generation scores will go <I>before</I> 
  you run the GA. The statistics object will cache the scores then flush them to 
  the specified file periodically. When no file is specified, the statistics 
  object keeps growing to hold all of the scores. 
  <LI>Added another termination function: GATerminateUponPopConvergence. This 
  function causes the GA to terminate when the population average comes close to 
  the score of the best individual in the population. 
  <LI>GATerminateUponGenOrConv and GATerminateUponGenAndConv are no longer built 
  in to the library. You can make your own logical combinations of the built in 
  termination functions. 
  <LI>There was a problem in the population object when calculating the 
  deviation of the population. Due to roundoff errors, it was possible to get a 
  negative number which was then passed to the sqrt function, resulting in a 
  crash on some platforms. The crash would typically occur when the population 
  converged to the point where the population's deviation was zero. This has 
  been fixed. 
  <LI>In array1.xs.h the clone member function of the GA1DArrayOrderedCrossSite 
  object did not have the &lt;T&gt; in it, so it would not compile on some 
  machines. 
  <LI>The trailing comma at the end of the GAReplacementScheme enum in ga.h 
  caused some compilers grief, so I removed it. 
  <LI>In node.h in the GANodeBASE object there was no return value for the 
  operator() function. </LI></UL><STRONG>Changes in version 
2.3.1</STRONG><BR><I>released 5 July 1995</I><BR><A 
href="http://lancet.mit.edu/ga/API231.html">programming interface</A><BR>
<UL>
  <LI>Added some more comments to the programming interface documentation. 
  <LI>DOS and Mac versions of the library are now available - if you use DOS or 
  MacOS you won't have to change the UNIX filenames/paths as you did in earlier 
  releases. I have also added DOS- and MacOS-specific instructions in the README 
  for installation. 
  <LI>Some of the header filenames have changed. You will have to do a 'make 
  depend' to update your makefile dependencies before compiling your code with 
  the new library. Here is a list of the changes to the filenames (the names for 
  the DOS distribution do not have the extra . in them): 
  <UL>
    <LI>list.tmpl.h is now listtmpl.h 
    <LI>tree.tmpl.h is now treetmpl.h 
    <LI>tree.h is now treebase.h 
    <LI>list.h is now listbase.h 
    <LI>array.ch.h is now array1.ch.h, array2.ch.h, and array3.ch.h 
    <LI>array.xs.h is now array1.xs.h, array2.xs.h, and array3.xs.h 
    <LI>array.op.h is now array1.op.h, array2.op.h, and array3.op.h 
    <LI>binstr.ch.h is now binstr1.ch.h, binstr2.ch.h, and binstr3.ch.h 
    <LI>binstr.xs.h is now binstr1.xs.h, binstr2.xs.h, and binstr3.xs.h 
    <LI>binstr.op.h is now binstr1.op.h, binstr2.op.h, and binstr3.op.h 
    <LI>You no longer need to define USE_?DARRAY before including the array 
    operators file. </LI></UL>
  <LI>There are now convenience headers for each genome type. For example, you 
  can include "binstr1.h" rather than "binstr1.ch.h", "binstr1.xs.h", and 
  "binstr1.op.h". As before, normal use of the library requires that you include 
  only "ga.h" - the convenience headers are to help when deriving your own 
  genome class. 
  <LI>Added some significant configuration options. You can now specify at 
  compile time which parts of the library you want to compile and which you do 
  not need using the 'config.h' header file. This can be useful if you're 
  working under a 640K limit. The minimum library size for DOS is around 200K, 
  the maximum is around 400K. 
  <LI>Modified the makefiles to make UNIX installation a bit easier. 
  <LI>Made the resize work more consistantly. When you resize an array or binary 
  string genome, the contents are not changed. In previous versions of the 
  library a resize could change the contents. Resizing to a larger size will 
  fill the additional space with randomly set values (random bits for binary 
  strings, random alleles for arrays). Previously the new space was not 
  explicitly set. 
  <LI>Changed bin2dec phenotype object to use short ints rather than ints for 
  keeping track of number of bits. Fixed a bug in the Bin2DecPhenotype copy 
  method that used delete nbits rather than delete [] nbits when allocating more 
  space for a phenotype. 
  <LI>Fixed bug in the Population/Scaling interaction that caused the scaling 
  object to evaluate itself too often. Batch replacements of individuals caused 
  a recalculation on each replacement rather than at then end of all the 
  replacements. 
  <LI>Fixed a bug in the 1DArray2PtCrossSite and 1DBinStr2PtCrossSite objects 
  that caused errors in the 1DArray2PtCrossover and 1DBinStr2PtCrossover methods 
  when used on resizable genomes. 
  <LI>Fixed a bug in the GAListPartialMatchCrossover operator. The bug caused 
  unnecessary clipping of the last node whether the crossover site was just 
  before or after the last node. The behaviour now is to treat a site beyond the 
  last node as if it were just after the last node. 
  <LI>Some of the Array crossover operators (partial match and order) copied the 
  mother's crossover site during crossover. This has been fixed so that 
  crossover operators modify the crossover site only if the crossover site was 
  not set a priori. 
  <LI>Put in code for SRS, SUS, and DS selection methods; also code for cycle 
  and order crossover for array and list genome types (I forgot to put it in the 
  distribution version of the library. oops!) 
  <LI>Fixed the copy method in the array genome. The previous version did not 
  copy the allele set, so copy initializer didn't work properly in the 1D, 2D, 
  and 3D arrays. 
  <LI>Fixed bug in population copy operator that didn't copy the population's 
  user data or GA. 
  <LI>Fixed a typo in the utilities header file that shows up as a syntax error 
  when NO_RANDOM is defined. 
  <LI>Fixed a couple of lines of code that did assignments in 'if' conditional 
  statements. There was no bug, but some compilers complained. 
  <LI>Added routines to the test code (not part of the standard distribution) to 
  exercise the crossover methods more consistently. 
  <LI>Added links in the documentation for backward compatibility. The 
  documentation for older versions of the library will stay on the http server 
  indefinitely (starting with 2.3.0). I will continue to update the 
  documentation and make it more useable, but the changes will be regulated so 
  that the documentation changes with official code releases. 
  <LI>Removed all of the RCS Log comments from the distribution sources and 
  headers so the distribution wouldn't be so big. </LI></UL><STRONG>Changes in 
version 2.3</STRONG><BR><I>released 30 May 1995</I><BR><A 
href="http://lancet.mit.edu/ga/API230.html">programming interface</A><BR>
<UL>
  <LI>The GA creators have changed. They now take only the minimum arguments 
  needed to create a GA (this is in an effort to make deriving new GAs less 
  convoluted). The GA creators now take only two arguments: a genome and 
  (optional) a pointer to user data. The objective function can be set using the 
  objectiveFunction member of the GA object, but it is probably easier to set 
  the objective function on the individual that you pass to the GA. 
  <LI>Changed the behaviour of the overlapping population object. There are now 
  3 basic GA types in the library: GASimpleGA, GASteadyStateGA, and 
  GAReplacementGA. GASimpleGA is Goldberg's non-overlapping genetic algorithm 
  with optional elitism. GASteadyStateGA allows you to define the amount of 
  overlapping that you want from generation to generation. At most it will 
  replace the entire population, at least it allows replacement of a single 
  individual. GAReplacementGA replaces one or two individuals each "generation" 
  and allows you to specify a replacement scheme. 
  <LI>The signature for the objective function has changed. It is now 
  <CODE>typedef float (*GAObjectiveFunction)(GAGenome &amp;);</CODE> rather than 
  <CODE>typedef float (*GAObjectiveFunction)(GA &amp;, GAChromosome &amp;, void 
  *);</CODE> This should make it easier to write test routines for your 
  objective functions (you won't have to instantiate a GA to test an objective 
  function that does not use the GA argument). If you need to use the GA in the 
  objective function you can get it using the geneticAlgorithm member of the 
  genome. Also, we had to remove the user data argument to get rid of he 
  abiguity about which user data is being passed (see next item). 
  <LI>Major change to user data usage. Previously the user data member of the GA 
  was the same as that of each chromosome. Now each genome can have a unique 
  user data structure. And the user data structure of the GA can be different 
  than that of any of the chromosomes. If you want to use the user data element 
  in the objective function, you must now explicitly extract it from either the 
  GA or the chromsome. (Note that there is no long a user data pointer in the 
  objective function signature.) The population object now has its own user data 
  member as well. 
  <LI>The genome score is now accessed through the 'score' member function - 
  'evaluate' no longer exists. You can set the score on a chromosome by passing 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -