home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Photo CD Demo 1
/
Demo.bin
/
cellsim
/
v2_5
/
changes
< prev
next >
Wrap
Text File
|
1990-02-26
|
15KB
|
293 lines
****************************************
Changes in Cellsim since previous releases
Cellsim 2.5, February 1990
The following is a concatenation of the changes between versions 1.0 and
1.5, 1.5 and 2.0, and 2.0 and 2.5 of Cellsim. You should skip to the
section starting from the latest version of Cellsim you have. (E.g. if the
last version of Cellsim you got was 1.5, skip to the "1.5->2.0" section).
Any questions, complaints, or suggestions for further improvements should
be sent to:
Chris Langton cgl@LANL.GOV
Center for Nonlinear Studies
MS B258
Los Alamos National Laboratory
Los Alamos, NM 87545
or
Dave Hiebeler hiebeler@heretic.lanl.gov
*********************
Changes from 1.0->1.5
*********************
1) Margolus neighborhood has been added.
The Margolus neighborhood is a neighborhood that essentially
partitions the array into 2x2 blocks of cells; the origin of
the blocks of cells alternates between (0,0) and (1,1) in
this implementation. In addition to the 4 normal spatial
neighbors, there is also a global "phase" variable which counts
through the range of states. That is, when running with a
4-state Margolus neighborhood, the "phase" pseudo-neighbor
will count 0-1-2-3-0-1-2-3-0-1-2 and so on. This phase is
seen as a neighbor by all cells.
For an in-depth description of the Margolus neighborhood, how
to use it efficiently, and the reasoning behind its invention,
see the book "Cellular Automata Machines: A New Environment
for Modeling", by T. Toffoli and N. Margolus, MIT Press, 1986.
This book is an excellent overview of some applications of
cellular automata in general.
2) Added zoom in and zoom out buttons, which increase or decrease the
level of magnification by one.
3) Things like transition-file names, the number of steps to "skip"
when running, all "remember" the last value used for them. So
for example if you load an image from buffer 2, then next time
you do an image-buffer operation, it will use 2 as the default
buffer, unless you specify a different one.
4) "closeup" in 1-D CA now zooms in on the center of the bottom row,
rather than the center of the middle row.
5) Black & white support is now implemented. When running in
B&W mode, textures are used instead of colors.
6) Images and transition-tables can be saved and loaded in compressed
format. When you try to load a compressed file, Cellsim will
automatically detect that it is compressed (by the ".Z" suffix), and
load it in properly.
7) Cellsim now looks in a default directory, in addition to the current
directory, when attempting to load an image or transition-table or
colormap. It will also look for compressed versions of files if it
cannot find uncompressed versions. The default directories to use are
defined in the makefile. For example, if you have defined
IMAGE_DIR to be "/home/Cellsim/Images", and you try to load the
image file "bbm.128x", Cellsim will look for the following files, in
this order, until it finds one:
./bbm.128x
/home/Cellsim/Images/bbm.128x
./bbm.128x.Z
/home/Cellsim/Images/bbm.128x.Z
8) The "quick" random routine has been fixed. Originally, it set half
of the cells to the zero state, and the other half of the cells had
values distributed evenly among all other states. Now, it distributes
the random values evenly among all states (not treating zero specially).
9) Cellsim can now save/load images in CAM-6 format. However, the
correctness of the images written using this feature has not been
tested yet. If you use this feature, we'd appreciate it if you let
us know if the images it generates come out correctly.
10) Some more sample rules and images have been supplied; some of these
are simply to demonstrate the new Margolus neighborhood.
11) If you have any of the following 3 environment variables set:
IMAGE_DIR, TABLE_DIR, CMAP_DIR
then Cellsim will look in those directories for images, transition
tables, and colormaps, respectively, instead of the default directories
defined in the Makefile, if it cannot find a file in the current directory.
For example, if you keep all of your transition files in your
directory /home/users/joe/Trans, and all of your images in your
directory /home/users/joe/Images, then you could put the following
2 lines in your .login, or simply do them manually:
setenv IMAGE_DIR /home/users/joe/Trans
setenv TABLE_DIR /home/users/joe/Images
Note that if you have these environment variables set, and Cellsim
cannot find a file in the current directory or the directory specified
in your environment variable, it will NOT look in the default directory
defined in the Makefile. That is, the environment variables effectively
override the default directories, when set. This means you can disable
default-directory searching entirely by doing something like:
setenv IMAGE_DIR
In that case, if an image cannot be found in the current directory,
it will not be looked for anywhere else.
*********************
Changes from 1.5->2.0
*********************
1) 256-state "computed-function" rules can now be used. This greatly expands
the range of rules that you can run, by calling an update-function for
each cell in the array, rather than using a lookup-table. There is a
price, however -- computed-function updates will run more slowly than
lookup-table updates; just how slow they go depends on how complex the
update-function is. Simple functions (for example the heat rule) are not
intolerably slow; although on large arrays you will notice a big difference
in speed. There are also two global parameters which get passed to your
update-function, which you can set by selecting items from the "Rules"
menu. This is useful with things like the "heat.m256.c" rule, where it
is nice to be able to change a parameter without having to recompile
your update-function.
The way you actually use this feature is to write an update-function
in C, and compile that file into a ".o" object-file. Cellsim can now
dynamically link in that object file, and call your update-function.
See the file "Rule_README" for more specific information on doing this;
there are a few special things your file must have, in order to be
properly linked in.
When using the computed-function updating, there are provisions for doing
more data-analysis. Before and after every array-update, you can arrange
to have Cellsim call a function of yours, with a pointer to the current
array as a parameter. Thus, your function can do whatever type of
processing or analysis or even alterations on the array that you want.
See the "Rule_README" file for more information, and the "heat2.m256.c"
rule-file in the "Rule_src" directory for an example of this.
Also, note that colormaps are now 1024 bytes long (256 entries times
4 bytes each), although Cellsim can still read colormaps that are 64 bytes
(16 entries x 4 bytes) as they were in previous versions. However, you
will immediately notice upon running Cellsim that when the cursor is
in the Cellsim window, all other windows will suddenly go to strange colors
(assuming you are using a color workstation). This is because Suns only
have 256-entry colormaps, and since Cellsim needs all 256 entries, the
other windows' colormaps get "swapped out". There is no way to avoid this
and still be able to use all 256 entries. There are other
limitations/problems with using a 256-entry colormap, which are documented
in "Fcn.README".
2) You can now set an "FCN_DIR" environment variable, which works the
same way as the "TABLE_DIR" environment variable, except that "FCN_DIR"
is searched for computed-function rules (".o" files) that cannot be found
in the current directory, while "TABLE_DIR" is searched for lookup-table
files. Thus, you can keep the two kinds of files separate, if you like.
3) You can now invoke Cellsim once, and change neighborhoods, number of
states per cell, or image size, without having to call up a new Cellsim.
This process has also been automated, somewhat. If you are running
Cellsim with an 8-state von-Neumann configuration, and try to load the
transition table file "life.m2", Cellsim will *automatically* switch
to the 2-state Moore neighborhood. Similarly, if you are using an
image size of 128, and try to load "loop.256x", Cellsim will change
the image-size to 256 and load the image. The file-name extension is
used to determine what the new configuration should be. Thus, you are
*strongly* urged to begin using the filename extension standards which
have been used with Cellsim since V1.0 came out, if you have not been
already.
You can manually change the image size of neighborhood configuration
from the "Defaults" menu.
You can also disable the automatic changing of neighborhood configuration
and/or image-size, from the "Defaults" menu; if you are using transition
table files or image files with non-standard extensions, you should do this.
Note that change the neighborhood configuration clears out the transition
table, and changing image-size clears both the current image and all
of the buffers! If you have something in a buffer which you don't want
to lose, you must save it to a file. (Perhaps a later version of Cellsim
will simply resize the current image and the buffers).
If you change the number of states per cell, for example from 8 to 4,
the current image will have a bitwise AND performed with a mask that
brings it down the appropriate number of bits. In the example of going
from 8 to 4 states, the 3rd bit would be cleared, because you would be
going to a 2-bit configuration.
Similarly, if you are in an 8-state configuration for example, and try
to load an image which has 8-bit values (256 states), then all cells
will be masked down to just the lower 3 bits. If you want the image to
be read in properly, you must have enough states per cell (256 in this
example); you would have to change the neighborhood configuration and
reload the image.
4) You can now change the defaults for IMAGE_DIR, TABLE_DIR, FCN_DIR,
and CMAP_DIR, from within Cellsim. Under the "Defaults" menu, there
are various items which allow you to do this.
5) The "general" random routine is now much more general. It allows you
to change the values of cells within an arbitrary rectangle in the
array, and with more flexibility of the values you can set these cells to.
Usage of the new general random routine is documented in "cell.doc"
6) You can now generate transition-tables by using a "lambda" parameter
or "rho" parameters. Lambda is described in Chris Langton's article
"Studying Artificial Life with Cellular Automata", published in
Physica 22D (1986). More recent work with Lambda will be published
in "Computation at the Edge of Chaos: Phase Transitions and Emergent
Computation" by C. Langton, in the proceedings of the "Emergent
Computation" conference, to be published in a special issue of Physica D,
1990.
7) If you press the middle mouse-button over one of the buttons in the
control panel, it will automatically select the last item you selected
from the menu under that button.
8) You can save images in Sun raster format. You can then use one of the
various public-domain Sunraster -> PostScript conversion programs out
there, to print the image on a laser-writer.
Note that if the image is color, you will have to run it through some
kind of color->monochrome converter of some kind, e.g. "rasfilter8to1 (1)".
You can't yet load images that are in Sunraster format; perhaps a later
version will have that feature.
9) It is now much easier to write C routines to generate a lookup table.
10) Tilde-expansion, and csh wildcard-characters will work in filenames now.
Thus, you should be able to load/save files such as "~/Images/xyz.64x"
or "~foo/Cmap/bar.cmap" or "abcdef*xyz.256x*".
*********************
Changes from 2.0->2.5
*********************
1) You can now attach to a Connection Machine (either by running Cellsim on
a Sun Front-End, or through the network). You can run both lookup-table
rules and 256-state computed-function rules, on the CM.
Lookup-table rules are the same as on the CM (in fact, you can load a table
locally on the Sun, and send it to the CM from within Cellsim). The
computed-function rules on the CM must be written in C/Paris, but this
gives you a great deal of flexibility, such as the ability to work with
more than 8 bits/cell, or even floating-point fields.
2) There is now a "defaults" menu which has several popup windows, that
allows you to change the behavior of Cellsim more easily than before.
3) You can now create "button macros" through 5 user-definable "sequences".
That is, if there is some sequence of buttons you find yourself hitting
very often, you can define a Sequence to perform those actions, and then
call up that Sequence with a single mouse-button-press.
4) The "random" functions have been moved to a "Draw" menu, which also lets
you draw lines, hollow circles and "shaded" circles.
5) You can now use an image-size of 512, in addition to the normal 64, 128,
and 256 of previous releases.
The "feel" of many of the features of Cellsim have been changed in version 2.5,
so you are advised to skim through the "cell.doc" file, even if you have been
using Cellsim frequently since it came out.
****************************************
If you create an interesting rule which you think others might be
interested in, mail it (along with any images that go along with it)
to hiebeler@heretic.lanl.gov or cgl@lanl.gov.
We would like to collect interesting rules from Cellsim users, to
maintain a user-contributed library of rules to distribute with later
versions of Cellsim. Please compress and uuencode any lookup-tables
or images before mailing them; C source code can be mailed "as-is",
but please document the beginning of the file as the samples in the
"Rule_src" directory have been, so that authors get appropriate credit
for their code.
****************************************
Sometime in the not-too-distant future, maintenance and distribution
of Cellsim will probably be taken over by Automatrix, a new cellular
automata company in upstate New York. They will be manufacturing
CA hardware, and marketing CA software for different architectures,
including a Cellsim-based package of rules implementing most of the
examples given in the book _Cellular Automata Machines_, by Toffoli
and Margolus. They will possibly be organizing a CA newsletter as
well. You can get more information about Automatrix by writing to:
Automatrix, Inc.
P.O. Box 196
Rexford, NY 12148 USA
They do not yet have an e-mail address, but should soon.