📄 galib revision history.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0045)http://lancet.mit.edu/ga/RevisionHistory.html -->
<HTML><HEAD><TITLE>GAlib: Revision History</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312"><!-- by matthew wall all rights reserved --><!-- Copyright (c) 1995-1996 Massachusetts Institute of Technology --><!-- Copyright (c) 1996-1999 Matthew Wall -->
<META content="MSHTML 6.00.2900.2769" name=GENERATOR></HEAD>
<BODY text=#000000 bgColor=#ffffff><STRONG>Revision History for <A
href="http://lancet.mit.edu/ga/">GAlib</A></STRONG><BR><SMALL><I><!--#exec cgi="/bin/lastmod"--></I></SMALL><BR>
<P>This document details the changes from version to version.
</P><BR><STRONG>Changes in version 2.4.6</STRONG><BR><I>January 2005</I><BR>
<UL>
<LI>Updated tspview and gaview graphic examples in the examples/graphic
directory. These now build cleanly out-of-the-box on linux (and other) unix
systems that have X windows. The options for building with MOTIF widget sets
(still) work and are now the default. Try running tspview with two different
genetic algorithms to see how differently they behave. For example:
<BLOCKQUOTE>tspview ga
1 (generational)<BR>tspview ga
2 (crowding)<BR>tspview ga
3 (simple)<BR></BLOCKQUOTE>will give you three
different windows. Run them to see how generational, simple, and crowding
algorithms differ. Note that the crowding algorithm will find all of the
(equally good) optimal solutions.
<LI>Updated macros in gaconfig.h to have fewer clashes with other libraries.
Much improved out-of-the-box behavior with various recent compilers, including
gcc3 and vcpp7. Added options for building on macosx with gcc2 and gcc3. The
library is now up-to-date with respect to: gcc2, gcc3, vcpp6, vcpp7, xlC, aCC,
CC, BCC55 (that is all the compilers I have with which to test).
<LI>Split the windows makefiles into two, one for vcpp and one for borland.
The make syntax is simply too incompatible to keep them in a single file (for
now anyway, until I find a source for the arcane behaviors of each one). Still
to come is complete makefile support for building shared libraries - sorry,
but for now you have to do that on your own.
<LI>All galib random number generators have been change to garan* in order to
avoid naming conflicts with other libraries. There is still only one rng at a
time and no run-time modification of the rng is possible (that is coming with
3.0).
<LI>Better inclusion of GARealGenome and GAStringGenome files for
specializations. The new method accommodates gcc3 premature instantiation
quirks and makes the code that uses the genomes slightly less cryptic. See
ex21.C to see how this is done.
<LI>There is now a file called std_stream.h in the ga directory. this file
takes care of the differences between various iostream naming requirements.
Some platforms require std for the namespace, some do not. Some require use of
<iostream.h>, others require simply <iostream>. When you create
your own code that uses GAlib, you do not need to use the macros from
std_stream.h, but they are used in the examples so that the example code will
build in any environment, regardless of its use of streams.
<LI>The macros for controlling use of streams are now easier to understand and
use.
<LI>Fixed bug in GASelector::update that could cause memory corruption (thanks
to Giovanni Sartoni for finding this one). Added assertions to expose any
other end-of-array problems in the selector algorithms.
<LI>Use local copy of score when calculating population statistics just in
case the genome scores change on each invocation of the score method.
<LI>The seed can now be remembered by each genetic algorithm (or passed on the
fly as before). Only the GABaseGA class remembers the seed - derived GA
classes do nothing with it right now. This is so that existing behavior will
not be changed. Then next major release will include persistance and use of
seeds within the genetic algorithms. </LI></UL><STRONG>Changes in version
2.4.5</STRONG><BR><I>December 1999</I><BR>
<UL>
<LI>Removed USE_RTTI from gaconfig.h since it is not used (yet).
<LI>Cleanup to the library makefiles. Separate makefiles for unix and winnt
(no need to compile using vcpp projects anymore!) I decided not to use
autoconf since the overhead of using autoconf outweighs the benefits (at least
until someone makes it easier to use and modify). At this point i think it is
easier for people to modify the makefile (or makevars) rather than to figure
out how to use all the options to configure.
<LI>Fixed GAGeneticAlgorithm::TerminateUponPopConvergence so that it now does
the right thing. In doing so we redefined what population convergence means.
Now it is: min/max. When minimizing, this will stop the evolution when the
value is less that the threshhold. When maximizing, this will stop the
evolution when the value is greather than the threshhold. The threshhold must
be between 0 and 1, inclusive. Note that this method fails if the maximum
objective score might be zero. (thanks to Bill White)
<LI>Fixed initialization bug in GAPopulation.C that could cause unitialized
memory read (thanks to Harold H Soleng of Norwegian Computing Center).
<LI>Fixed boolean read problem in the GAParameters object (thanks to Klaus
Kirchberg).
<LI>Added compile-time warning message to garandom.h to help people avoid
bogus random number generator issues.
<LI>Fixed RNG bug in RAN1 and RAN2 (thanks to Peter Ross and George LeCompte).
<LI>Fixed RNG bug in RAN3 (thanks to Peter Ross).
<LI>Started putting the DLL code in, but that will have to wait until i have
more time for extensive testing. Probably that will go in when the thread-safe
mods go in.
<LI>Cleaned up the HTML documentation in the distribution a little bit.
<LI>Everything is now in CVS, including the web site.
<LI>I am no longer maintaining a separate dos distribution.
</LI></UL><STRONG>Changes in version 2.4.4</STRONG><BR><I>4 April 1999</I><BR>
<UL>
<LI>Fixes to gaconfig.h to make things compile out-of-the-box a bit better for
more platforms.
<LI>Replaced C-style casts with dynamic_cast and friends. Macros expand to the
old-style casts if your compiler does not support the new-style casts.
<LI>Fixed const-ness of genomes used internally to the built-in operators.
<LI>Added minimal support for rtti. This will be disabled if your compiler
does not support it.
<LI>Added support for ansi streams. You can now select whether to use ansi
streams or the older streams by defining the appropriate directive. GAlib will
then use either the old streams headers <IOSTREAM.H>, the ansi streams headers
<IOSTREAM>, or no streams at all.
<LI>Changes from int to unsigned int for these functions:
<UL>
<LI>GABin2DecPhenotype::size
<LI>GABin2DecPhenotype::nPhenotypes </LI></UL>
<LI>Many fixes to signed/unsigned conversions. For the most part, all I did
was make them explicit using static_cast
<LI>Added GADCrowdingGA to the library (it has been in the TSP example for a
long time, now it is part of the library).
<LI>Fixed questionable initialization of iterators in GATree and GAList
<LI>The library now compiles more cleanly on vcpp, metrowerks, sgi CC, and g++
2.8.1 (ok, i had to disable a couple of vcpp warnings, but of what use is a
warning that says "you're losing data converting 1.0 into a float" ?) Can
anyone tell me what to do about g++ warnings about "variable 'xxx' might be
clobbered by 'longjmp' or 'vfork'" ?
<LI>Graphic examples are now included in the windows distribution: points on a
surface and travelling salesman. Really, they are this time :) They are hacked
together using a windows wizard (gads, what a horrible environment that is),
but they should get you started.
<LI>Added #undef for min/max in GAPopulation.h and GABin2Dec.h (microsoft
headers in particular are promiscuous in their definition of min/max macros)
<LI>Changed doubles to floats in
<UL>
<LI>GAPopulation::scale
<LI>GAPopulation::statistics </LI></UL>
<LI>Changed template instantiation syntax in GARealGenome.C and
GAStringGenome.C </LI></UL><STRONG>Changes in version 2.4.3</STRONG><BR><I>11
November 1998</I><BR>
<UL>
<LI>Graphic examples for mac
<LI>Graphic examples for windows
<LI>
<LI>Fixed example 13 to actually do what it claimed to do. Beware that it may
run for a really long time now (it has a GA embedded in another GA, so each
evaluation results in another GA run).
<LI>Fixed gaversion.h to accurately record the library version (for better use
with ident)
<LI>Added definition of M_PI to the examples in which that macro is used (some
platforms do not have M_PI defined in their math headers)
<LI>Fixed bug in GAAlleleSet<>::allele() that caused upper/lower bounds
to be generated when they should not have been. Note that your initialize,
crossover, mutate operators must respect allele set limit boundaries otherwise
you'll end up with bogus values.
<LI>Fixed bugs in GADemeGA:
<UL>
<LI>GADemeGA::nMigration did not set parameter list
<LI>GADemeGA::nPopulations did not set parameter list
<LI>GADemeGA::step set numrep incorrectly
<LI>GADemeGA::step looped on tmppop size rather than nrepl
<LI>GADemeGA::nReplacement did not update tmppop size properly
<LI>GADemeGA::nReplacement did not update the parameter list
<LI>GADemeGA::nPopulations did not update nrepl or pstats correctly </LI></UL>
<LI>Fixed bug in GARealGaussianMutator that caused no mutation to occur in
cases when 100% mutation should have happened.
<LI>Fixed bug in GAGeneticAlgorithm::TerminateUponConvergence that would cause
the evolution to stop immediately when doing a minimization with convergence
as the stopping criterion.
<LI>Fixed various memory leaks
<UL>
<LI>GAAlleleSetArray<>::remove </LI></UL>
<LI>Various makefile/project additions and cleanup
<UL>
<LI>New project files for Codewarrior
<LI>New project files for MS VC++
<LI>Fixes to makefiles to make cross-unix compiles easier. </LI></UL>
<LI>Fixed html documentation:
<UL>
<LI>For the GAStatistics object, the member functions offlineMax,
offlineMin, minEver, maxEver were incorrect.
<LI>In GAPopulation::diversity, 1 indicates that each individual is
completely different.
<LI>The title of Melanie Mitchell's book had been omitted. </LI></UL>
<LI>Fixed mask clear bug in GA1DArrayGenome<>::CycleCrossover
<LI>Fixed signed/unsigned problems in array genomes. As a result, the
following member functions have been removed:
<UL>
<LI>GA1DArrayGenome<>::operator[]
<LI>GA1DArrayGenome<>::operator[](int) </LI></UL>
<LI>Various fixes and features to random number generator
<UL>
<LI>Added chi-square tests to the randtest program for better RNG testing.
<LI>Added GAGetRandomSeed to get the random seed from the library.
<LI>Added GAGetRNG function to tell which RNG was compiled in.
<LI>Fixed bug in implementation of GARandomSeed. Now the changing bits of
the value returned by time() are correctly assimilated into the seed, even
if the seed has fewer bits than the value returned by time(). </LI></UL>
<LI>Fixed bug in read member of 1D, 2D, and 3D binary string genomes.
<LI>Added pragmas for VC++ in gaconfig.h to disable warnings.
<LI>Fixed bug in resizeBehaviour routines in 3D genomes
<LI>Fixed bug in example 5 and example 14 in which score cache flag was not
properly updated. </LI></UL><STRONG>Changes in version 2.4.2</STRONG><BR><I>13
November 1996</I><BR>
<P><I>Sorry, but I lost the list due to a hard drive crash :(
</I></P><STRONG>Changes in version 2.4.1</STRONG><BR><I>10 November 1996</I><BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -