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

📄 galib revision history.htm

📁 提供了遗传算法的一些代码库文件
💻 HTM
📖 第 1 页 / 共 4 页
字号:
  a value to the 'score' member function. Note that this value will get reset by 
  the chromosome's objective function if it has one. Otherwise the score will 
  not change. 
  <LI>Since the genome's score may be set externally, we now allow 
  population-based evaluation functions to be used. As part of this approach the 
  population object now contains initialization and evaluation member functions 
  that can be customized. The sort function can also be customized (should you 
  find the default quicksort not fast enough). 
  <LI>The names of the completion functions are now: GATerminateUponGeneration, 
  GATerminateUponConvergence, GATerminateUponGenOrConv, 
  GATerminateUponGenAndConv. 
  <LI>The order has changed for parameters arguments in the creator for the 
  GAParameters object. The order is now population-size, crossover-probability, 
  mutation-probability, number-of-generations, convergence-percentage, 
  generations-to-convergence, number-of-best-chromosomes-to-keep, and 
  score-frequency. See the documentation for the names of the GAParameters 
  member data fields. 
  <LI>Changed the names of some of the GA member functions so that the 
  statistics object is now more consistent. These are provided as convenience 
  access to the statistics object that each GA contains. 
  <UL>
    <LI>keepScores ---&gt; scoreFrequency 
    <LI>keepBestChromosomes ---&gt; nBestChromosomes </LI></UL>Note that the 
  parameters object is now contained within the statistics object - the idea is 
  to make the statistics object contain all of the information we need to 
  start/restart/stop the GA at any point in time (plus, of course, the 
  population itself). I also fixed some const-correctness problems with the 
  statistics and parameters objects. It is NOT ok to change the parameters 
  directly - you must use the statistics or GA member functions to make the 
  changes. Now the library enforces this behaviour. Also, names of the members 
  of the parameters object are more consistent now. 
  <LI>Major change to error message handling. There is still no signal handling 
  in the library, but we do provide a consistent error message utility. The 
  error.h header contains functions for printing out error messages. If you used 
  gaErrMsg before you must change to the new functions. There is no longer an 
  'error' method for the classes - now there is simply a set of 
  globally-accessible error functions that format your messages. See error.h for 
  details. 
  <LI>The write and read methods have been moved to their own objects (GAOutput 
  and GAInput). See io.h for details. The Genome, GA, and CrossoverSite objects 
  are all affected by this change. 
  <LI>Minor change to the ID architecture. There is now a separate object for 
  the ID functionality plus a macro you can use to define an object's identity. 
  See the id.h header file for details. It is backward-compatible with className 
  and classID. 
  <LI>Changed the default value of the linear scaling coefficient to 1.2 (it was 
  2.0). 
  <LI>Significant speedup in binary string performance due to inlining of 
  often-used functions. 
  <LI>'Scaling' is now 'ScalingScheme' 
  <LI>'ReplacementStrategy' is now 'ReplacementScheme'. 
  <LI>Enforced the changes from older 2.2.x name changes. The typedefs have been 
  removed so: 
  <UL>
    <LI>'xSite' is now 'crossoverSite' 
    <LI>'pickXSite' is now 'pickCrossSite' 
    <LI>'mirrorXSite' is now mirrorCrossSite' 
    <LI>'gaNoXSite' is now 'gaNoSite' 
    <LI>'Chromosome' is now 'Genome' </LI></UL>
  <LI>About the change from 'chromosome' to 'genome'. This is an attempt to make 
  the naming in the library consistent with biological terminology. A genome 
  contains all of the information necessary to express the traits of an 
  individual, so, strictly speaking, any solution to your problem can be 
  contained in a genome. The chromosome, on the other hand, is a subset of the 
  genome. You can use the following PERL expressions to make the changes. <PRE>perl -pi -e 's/Chromosome/Genome/g' filename1 filename2 ...
perl -pi -e 's/chromosome/genome/g' filename1 filename2 ...
</PRE>The first line changes 'Chromosome' to 'Genome', the second line changes 
  'chromosome' to 'genome' in all of the specified files (you can use wildcards 
  for the filenames). 
  <LI>It is now much easier to use the template classes. See examples <A 
  href="http://lancet.mit.edu/ga/examples/ex6.C">6</A>, <A 
  href="http://lancet.mit.edu/ga/examples/ex8.C">8</A>, <A 
  href="http://lancet.mit.edu/ga/examples/ex11.C">11</A>, <A 
  href="http://lancet.mit.edu/ga/examples/ex12.C">12</A>, 14 (<A 
  href="http://lancet.mit.edu/ga/examples/ex14.C">ex14.C</A> and <A 
  href="http://lancet.mit.edu/ga/examples/ex14.h">ex14.h</A>), 16 (<A 
  href="http://lancet.mit.edu/ga/examples/ex16.C">ex16.C</A> and <A 
  href="http://lancet.mit.edu/ga/examples/ex16.h">ex16.h</A>), and <A 
  href="http://lancet.mit.edu/ga/examples/ex17.C">17</A> to see how this is 
  done. </LI></UL>
<P>
<P><STRONG>Changes in version 2.2.5</STRONG><BR><I>released 12 May 
1995</I><BR><A href="http://lancet.mit.edu/ga/API225.html">programming 
interface</A><BR>
<UL>
  <LI>Changed the signature of the 'clone' member function from <CODE>virtual 
  void clone(const int flag)</CODE> to <CODE>virtual void clone(const 
  GACloneMethod flag)</CODE> 
  <LI>Fixed a bug in the swaptree member function of the Tree object that could 
  result in circular references within a single tree. 
  <LI>Added 'hot' width, height, and depth members to arrays and binary strings 
  <LI>Fixed bug in overlapping population GA that caused scaling object to 
  evaluate the population twice as often as it needed to. 
  <LI>Fixed cross-platform flakiness in random() function. Should get more 
  consistent results across platforms now. 
  <LI>Patched some cross-platform initializer/operator= variations in 
  polymorphic objects. 
  <LI>Consolidated the preprocessor defines: NO_TEMPLATES, NO_RANDOM, NO_PID, 
  and NO_CPLUSPLUS_MATH </LI></UL>
<P><STRONG>Changes in version 2.2.4</STRONG><BR><I>released 1 May 1995</I> 
<UL>
  <LI>Added another 'resizeBehaviour' member function for multi-dimensional 
  array chromosomes. 
  <LI>Changed name of 'bitcopy' member function to simply 'copy' (for array 
  chromosomes). 
  <LI>Minor tweaks to names of undocumented member function in preparation for 
  next release. 
  <LI>Fixed bug in 2DArray that would limit resize of any chromosome, even if 
  unlimited resize was requested. 
  <LI>Added argument to the 'bestOfAll' GA member function so the nth best 
  chromosome is now directly accessible. 
  <LI>Redefined the GA creator so that the arguments make more sense. Earlier 
  releases had extra creators defined that were redundant. 
  <LI>Added assignment method to the AlleleSet class so you can initialize an 
  allele set by assignment to an array of the same type. 
  <LI>Fixed bug that prevented some chromosomes from seeing the GA that owns 
  them. 
  <LI>Modified base type of binary string chromosome to be unsigned char rather 
  than simply char. 
  <LI>Fixed bug in decimal-to-binary converter that rounded incorrectly. Added 
  error message to warn when data will be lost when setting phenotype when the 
  defined resolution cannot completely represent the specified value. 
  <LI>Added the GAVectorObjectiveFunction type and fixed name of 
  ScalarObjectiveFunction to be GAObjectiveFunction </LI></UL>
<P><STRONG>Changes in version 2.2.3</STRONG> 
<UL>
  <LI>Fixed the best-of-all functionality in the statistics object. Now it 
  remembers the best chromsomes that the GA encounters based not only on 
  objective score but also on genotype/phenotype. It uses the == operator to 
  determine whether or not it has encountered each chromosome, so the 
  best-of-all population cannot get overrun with a single high-performance 
  chromosome. 
  <LI>Changed the naming of the chromosome, crossover site, and default 
  chromosome operator files. The chromosome objects have the same names, but 
  their definitions have been split out into separate files. This means that if 
  you were using template chromosomes and the g++ compiler you will have to 
  modify your sources to include the new filenames. See examples 6, 8, and 11. 
  <LI>Installed the 2D and 3D variants of the array chromosome. Beware that the 
  current implementation will work ONLY for simple types (ie don't use the array 
  chromosome on objects with non-trivial contents). The current implementation 
  makes assumptions about object contents and thus cannot be used if your object 
  has a non-trivial operator=. This will be fixed in the major next release. 
  </LI></UL>
<P><STRONG>Changes in version 2.2.2</STRONG> 
<UL>
  <LI>Fixed a problem with the population object that would cause it to crash 
  when initializing on a Mac. 
  <LI>Fixed a looping limit in the 2DBinaryStringChromosome mutation method that 
  could reduce the probability of mutation in some cases. 
  <LI>Renamed the ListMatchCrossSite to ListOrderedCrossSite 
  <LI>Implemented the string chromosome specialization of the array chromosome 
  for g++ compilers. Still doesn't work with DCC due to a bug in the DCC 
  compiler. </LI></UL>
<P><STRONG>Changes in version 2.2.1</STRONG> 
<UL>
  <LI>Added basic initialization, mutation and crossover methods for the array 
  chromosome class. </LI></UL>
<P><STRONG>Changes in version 2.2</STRONG> 
<UL>
  <LI>Fixed a minor bug in the overlapping population operator ++. 
  <LI>Made elitism work more efficiently in non-overlapping populations. No 
  extra copy occurs now. 
  <LI>Added mechanism for doing various replacement strategies in overlapping 
  populations. 
  <LI>Re-worked the fitness scaling so that is now buried in the population 
  object. Goldberg's sharing functions are now directly supported. 
  <LI>Naming of member functions changed considerably between version 2.0 and 
  2.2. The naming in 2.2 is more consistent across all of the objects in the 
  library. See the interface definition for the function signatures. 
  <LI>Introduced the array chromosome, but no built-in methods yet. </LI></UL>
<P><STRONG>Changes in version 2.1</STRONG> 
<BLOCKQUOTE>This was an internal release. It never saw the light of public 
  release. </BLOCKQUOTE><STRONG>Changes in version 2.0beta</STRONG> 
<BLOCKQUOTE>Changed mapping of x,y,z/i,j,k/width,height,depth in 
  multi-dimensional chromosomes. The example code used to map i to height and j 
  to width. That code will now break! The new examples map i to width and j to 
  height. See the new examples if you're confused. 
  <P>Implemented a new architecture for doing initialization, mutation, and 
  crossover. Now chromosomes use pointer functions instead of virtual functions 
  so you don't have to derive a new class to change chromosome behaviour. Not 
  only does this result in a cleaner interface, but the code now runs up to 8 
  times faster as well. 
  <P>Implemented template versions of the tree and list chromosomes. Refined the 
  tree and list interfaces and streamlined iterator usage. It is now possible to 
  use multiple iterators on the same tree/list. Made iteration more consistent 
  in terms of what is affected by inserts, swaps, etc. 
  <P>Implemented PMX, OX, and CX (see Goldberg) for list chromosomes. 
  <P>Restructured the chromosome class hierarchy to be flatter. 
  <P>Rewrote test code to do more corner cases and keep better record of 
  failures. </P></BLOCKQUOTE><STRONG>Changes in version 1.x</STRONG> 
<BLOCKQUOTE>Implemented steady-state as well as simple GA. 
  <P>Implemented architecture for plug-in chromosomes and selectors. 
  <P>Implemented a 'bestOf' method in the GAs to keep track of selected 
  population members. </P></BLOCKQUOTE></BODY></HTML>

⌨️ 快捷键说明

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