Evolutionary
Computation
An introduction
to the most powerful creative process in nature and computation. |
| |
Visualizations of Fitness Landscapes
Given two traits or dimensions of an individual, the fitness of the combination of varying values among the traits is shown vertically. It is convenient to refer to this fitness surface as a landscape. In the real world, it takes more than two traits to contribute to an individual's overall fitness. We will settle on a two trait visualization, since it is difficult to visualize the landscape in more than two or three dimensions.
Any individual occupies only one point on the landscape. Since inheritance produces offspring similar to parents, an individual's children will occupy points close by. Evolution works by "Hill-climbing." The more fit offspring will be higher on the slope of the hill. In each of the pictures below, there are a high peaks and lower peaks, global optima and local optima. Depending upon the watershed of the hills and upon the magnitude of the mutation and recombination of traits during inheritance, populations can bet stuck on local maxima and be unable to climb to global maxima.
When different non-interbreeding populations compete, each changes the fitness landscape for the other. In these cases it may be more appropriate to call them "fitness seascapes."
|
|
|
|
|
What does the fitness landscape look like for a correct launch code? |
|
Brian's Laetoli Walker
Inspired by discovery of hominin footprints south of Olduvai Gorge, Brian evolved several proof-of-concept walking gaits incorporating 3d hip movement and rotation. |
|
|
|
|
|
|
|
|
The DARPA Shredder Challenge - A Prize of $50,000 |

|
|
Our Evolutionary Concert Tour (ECT) application, in its stripped-down form, can handle the proper sequencing of 200 visitations. In its Version 13a, we have made the tweak of sequencing 200 lines in an image. In effect, we are attempting to reconstruct a shredded image, so some of our approach is relevant to the DARPA Shredder Challenge. Samples of the shreds in the five puzzles of the DARPA Challenge and additional comments appear here.
Some observations are detailed below, assumining a single linear shredding which has not been cross-cut. Cross-shredded pictures or documents will present a much more complex problem.
- A shredding which is parallel to the lines of text will be more difficult to resconstruct, since there will be blank edges which will fit perfectly with many other blank edges.
- A shredding which is diagonal to the lines of text will provide more clues for proper reassembly.
- A shredding which is perpendicular to the lines of text should also provide more clues, unless the font is Courier.
- The relationship between the height of the shred and the hight of the font will determine the method of attack:
- If the shred height is less than the font height, the evolutionary procedure should follow the procedure in the application because the "fitness landscape" will have sufficient slopes for hill-climbing. Evolution will be appropriate. In this case, sub-sequences of lines or shreds which have low dissimilarity should be preserved in the inheritance process.
- If the font height is less than the shred height, there will be a different pattern of ink at the top and bottom of the shred and a juxtaposition of two shreds will either have perfect registration or it will not. In other words, the "fitness landscape" will consist of spikes with no slopes for hill-climbing. Evolution will be inappropriate. Every perfect registration between shreds should be preserved. In effect, shreds will grown into larger "registered" shreds until the puzzle is completed.
|
An Image Descrambler
A second version 14 with the dissimilarity function repaired.
Note that long sequences of lines are correctly joined together, but as the sequences grow they are more likely to be disrupted by the recombination process.
Consequently, we reach a point where long sequences will probably not be correctly assembled with others.
As expected, note also that the program cannot determing right-side-up from up-side down.
What characteristice make it easy or hard to reconstruct an image?
|
|
Evolutionary Image Reconstruction
Version 14 - 29 February 2012
Adapted from ECT Version 13 stripped.
- Open scrambled picture (must be a 200x200 .bmp)
- Set "100 Runs" to 5000
- Press "Go" and wait a few minutes for evolution to work
- Slide the TrackBar to view 100 evolved reconstructions
|
 |
   
   
   
   
Version 14 - "Afghan Girl," Thirteen best reconstructions
|
Version 14 - 29 February 2012 |
|
|
|
|
|
|
|
|
A Generalized Application to Evolve Sequences:
The "cities" rule tweaks in the Evolutionary Concert Tour application have been stripped, the processes of evolution have been retained.
This should simplify the process of tweaking the appication further to solve other sequencing problems.
This version will handle 200 cities and 100 runs of 5000 generations each. It is significantly slower than the previous versions below. |
|
Evolutionary Concert Tour (ECT) -
Stripped Down Version 13-S
13 October 2011
This version is a stripped down Version 13. The second window and all the constraints, boundaries, bonuses and constraints have been removed. The visualizations of the evolutionary process have been retained. The visualization of the specific problem, in this instance the TSP, will need to be rebuilt. The variable names ahve been changed in order to facilitate adapting the application to other sequence-based evolutionary problems.
Some candidate applications include:
- Cryptanalysis of a monoalphabetic cipher: Each individual will be a plaintext-to-ciphertext key. Each individual will use this key to attempt a decryption. The decryption will be evaluated on the basis of the number of common English language digraphs, trigraphs and quadragraphs it contains.
- Reconstructing an image which has been sliced into rows and randomly reassembled. Each individual's row ordering will be evaluated on its similarity to adjacent rows. All the pixels in the row may be evaluated for their Red, Green and Blue similarities, or only one or two columns may be evaluated. It will be interesting to know how many columns need to be sampled to find a valid reconstruction. This procedure is directly relevant for archaeological seriation, biological cladistics and many other multivariable problems.
|
Evolutionary Concert Tour:
"Travelling Salesman Problem (2d)"
"Travelling Ferenghi Problem (3d)"
Given 30 cities (or any other entities in space), there are on the order of 30! different ways of connecting.
30! is approximately 10^29. Compare this number to the age of the Universe in seconds, 10^17.
Thus a computer, beginning at the Big-Bang and evaluating 10^12 pathways per second,
could just now have finished an exhaustive search for the shortest path.
|
Things to
think about doing, from simple to complex:
(remember, the easiest tweaks are those that don't change the current representation):
Rename functions, function calls and variables for clarity. (The professor's job.)
Put 2d constraints into the 3d version. (Should be relatively easy. The boudaries will be bizarre since they will penetrate the entire depth of the z dimension.)
Go east, west, north, south. (An eastern example is included in version 12.)
Minimize changes in cardinal directions. (A further tweak on the above.)
Minimize length difference between legs. (One way of doint this is included in version 12.)
Alternate between longer and shorter legs. (Might be subtle.)
Set as a constraint the return to a hub. (We can fake this by putting multiple points close together and invoking existing rules).
Allow the user to MouseOver the population histogram in the same way one can MouseOver the 100 runs. (Only mildly interesting?)
Enable the user to recall the best of each of the 1000 generations to visualize the trajectory of one evolutionary run. (Quite useful. Where is the point-of-no-return when climbing a local maximum?)
Show each member of a generation or each solution of a run in a single color based on colorRamp() with fitness as a parameter.
Automatically "freeze" or allow the user to "freeze" certain legs along a pathway.
Allow the points (cities) and/or obstacles to move. Evolution should track the changes. (Possibly not too interesting.)
Allow the points (cities) and/or obstacles to cycle. To optimize fitness for a cyclically changing environment, the fitness interval should include one or more cycles of alternation.
Enable the points to serve as supply depots for various resources which the traveller requires and which will be depleted as she travels. (Interesting and complex.)
Think about some co-evolutionary scenarios: two populations competing to pick, consume, replenish and replace resources. (Even more interesting and complex.)
Implement sexual inheritance. (It's complex to combine two pathways to give one valid pathway with no repeats and no omissions.)
Import a bitmap to indicate "fast" and "slow" (bonus and penalty) terrain using the current straight-line connections.
Enable drawing of "fast" and "slow" (bonus and penalty)
terrain building on Matt Newcomb's A* algorithm. |
An approach towards adding a wrap-around (toroidal) world option:
Create a new toroidal distance array: distToroid[30][30].
When calculating city-to-city distances, first check the xDistance and the yDistance before computing the hypotensues.
if (xDistance !< 50) xDistance = 100 - xDistance; // it's shorter to go around...
if(yDistance !< 50) yDistance = 100 - yDistance; // it's shorter to go around...
Compute the hypoteneuse and enter it into distToroid[][] marking it as negative, a flag to indicate that it is a move off-the-edge fo the display.
When it comes to adding up the path distance, ignore the minus sign by adding the absolute value of what is in the table:
abs(distToroid[][])
The rest of the evolution should procede as usual, except that the borders penalties will not be reliable (so don't use them).
Drawing the visualization will be a bit more complicated as we need to check to see if we're going to wrap around before we begin:
Consult the distToroid[][] array. If the distance is negative, we know we have flagged this link as a toroidal path.
Go back and figure out if the wrap-around is for the x or y coordinate, or for both and draw the line accordingly.
This will require an interruption in the flat-world Canvas->Lineto() flow.
However, PaintBox will allow you to draw lines from and to points outside the dimensions of the PaintBox.
If a PaintBox is 400 x 400, you can draw a line from -300, -100 to 410, 500.
Ths should make drawing wrap-around lines easier... |
"The Travelling Ferenghi Problem"
- 3D Visualization Proof-of-Concept
|
|
|
|
Evolutionary Concert Tour (ECT)
with 3D Anaglyph Enhancement
Version G -
2 November 2008 - (derived directly from version F)
Converting the application to 3D required no change in the basic evolutionary algorithm.
A "z" dimension was added to the the city[] array and the distance computation was changed accordingly.
Consequently city values range from 0 to 100 in each of three dimensions.
Fogel's cities and Random cities select the "z" dimension randomly.
The "Yours" city placement button allows you to choose the "z" component before you MouseDown on the PaintBox.
Once you click this button, a SetFocus() command returns focus to the "z" TrackBar which allows you to either move the cursor with the wheel or to move the cursor with the mouse. The detents on the wheel have a value of 1 (on my mouse), so it is possible to draw points which progressively sink into or out of the screen by rolling the mouse about 3 detents between mouse. (Three detents times 30 points give a depth difference of 90.)
In a correct anaglyph, when cyan overlays red the result should be rendered white. This could be done by drawing the cyan and red views onto the appropriate layers of a bitmap, using the color channels, but the coding would require substantial modification. Instead, I stayed with the PaintBox which draws red over the top of cyan and cyan over the top of red instead of combining them to yield white. Consequently, in order to avoid "collisions" of cyan and red, I made the dots much smaller. In placing your own cities you should also avoid placing two nearby cities on the same "y" value, since any line drawn between them will be either red or cyan, and not white. For the same reason, the lines connecting the dots have been thinned and the colorRamp() coloring of the lines has been eliminated.
The user may also select the background. It is interesting that with a white background, the rendering appears below the screen while with a black background the rendering is reversed and appears above the screen.
Some standardized configurations
are below: |
|
Evolutionary Concert Tour / Travelling Salesman Problem
- 2D Visualization
|
|
Evolutionary Concert Tour -
Matt Newcomb - March 2010
Bitmap added to represent terrains with different mobilities
A* ("a-star") maze-solving shortest-path algorithm added allowing meandering paths
- Executable
- Source
Code (not portable)
- Project
Files Zipped (not portable)
Import terrain as a bitmap:
Import cities as a text file:
|
|
Evolutionary Concert Tour (ECT) -
Compact Version 13 - 24 February 2011
This version is the same as Version 12 but with a "left loops" constraint.
|
|
Evolutionary Concert Tour (ECT) -
Compact Version 12 - 22 February 2011
This version is essentially the same as Version 11 Compact. Some functionality has been improved and constraints have been added for movement Eastward and for Equidistance (not changing the successive path lengths by more than 33).
An example of a variety of experiments to test these fitness functions using a configuration of cities that would be sensitive to the Equidistance constraint is here, followed by the test pattern for cities:
- EXPERIMENTS WITH EQUIDISTANCE
- ect-equidistance.txt
|
|
Evolutionary Concert Tour (ECT) -
Compact Version 11 - 17 February 2011
This version is essentially the same as Version 11. The Classroom #6 lecturer's station, display and classroom projector no longer accommodate the size of the previous version 11. In this version, much of the real estate has been moved to a second Window (Unit2 and Form2). The remaining primary Window has been shrunk-to-fit (hopefully). Let me know if there are any bugs...
|
|
Evolutionary Concert Tour (ECT) -
Version 11 - 1 November 2010
Sequence penalties added:
Visit 24 satellites from 6 bases with 4 satellites between bases
Visit cities radiating outwards from center (get out of town)
Visit cities clockwise around center (twister)
Other improvements include:
- Three 30-city patterns are included below to test "4 Red 1 Green" satellite/base rule.
- TrackBar facilitates examining close examination of each of 100 solutions.
- TrackBar selection is mapped onto histogram with a red ShapeDot object.
- Floating point numbers have been formatted to two decimal places.
- Variable, function and object names as well as captions and labels have been modified to more intuitively reflect the internal operation of the application.
|
|

Notes: Interrupting 100 Runs with fitness changes may produce spurious results.
File formats are specific to each version.
|
Evolutionary Concert Tour (ECT)
Version 10a (Obstacle problem corrected.)
11 March 2010
Multiple City Types, File Save/Open Cities & Multiple Obstacles.
CITY TYPES:
This version creates 2 city types by default. The user may place cities with of up to 4 types by combining the Right and Left mouse clicks (how to do it) with the pressed and not pressed Shift key. Any distribution of cities may be reassigned 4 types randomly, or geographically by quadrant or by vertical bar. Type colors will NOT show if "ANY" is chosen, since with that option, city type is irrelevant. Otherwise, fitness preference can be assigned for visiting different or same types of cities in sequence, or visiting cities in rank descending order (e.g. 3, 2, 1, 0). Users can add new rule-based fitness functions easily in the calcPathFitness() function beginning at about line 459.
OBSTACLES:
Up to 4 obstacles may be added to define geographically-based fitness allocations. The cities, city types, obstacle locations and obstacle penalties can be saved and opened. This will be convenient for anyone wishing to experiment with different combinations of rule-based and geographically-based fitnesses for given distributions of cities and city types.
INTERFACE:
Controls have been regrouped in a more logical fashion. Some variable, function and object names have been changed to better represent their functions.
|
EVOLVING A SOLUTION TO THE LARGE COMPLEX WHOLE rather than DECOMPOSING THE LARGE COMPLEX WHOLE INTO SIMPLER SMALLER PARTS:
In Engineering, one heuristic for solving large complex whole problems is to decompose them into smaller simpler parts, then to solve those parts separately, and finally to reassemble them back into the larger whole.
This works well if the structural interrelationships of the large complex problem are known so that it can be separated into meaningfully different parts or modules.
This does not work well if smaller simpler parts "cut into" the natural clusters of interrelationahips of the original problem.
Decomposing the ECT cities into "4 Types Quads" by quadrants and selecting "Same" works reasonably well for most distributions of cities. It fails dramatically with "C-shaped" distributions.
Decomposing the ECT cities into "4 Types Bars" by slices does not work well.
With the ECT, the "natural" solution approaches being a loop, so a decomposition into quadrants is less disruptive than a decomposition into parallel bars.
This same argument holds especially true for large complex systems whose paths of interactions and interrelationships are largely unhknow. |
|
Evolutionary Concert Tour (ECT)
Version I - 9
4 March 2010
Multiple City Types, Multiple Obstacles, Separation of Fitness from Distance
In Engineering, one heuristic for solving large complex problems is to decompose them into smaller simpler parts, solve those parts separately, and recompose them back into the whole. This works well if the structural interrelationships of the large complex problem are known so that it can be separated into meaningfully different modules. It does not work well if the process of decomposition "cuts into" the natural clusters of interrelationahips of the original problem. Decomposing the ECT into quadrants works reasonably well for most distributions of cities. It fails with "C-shaped" distributions. Decomposing the ECT into parallel slices does not work well. With the ECT, the "natural" solution is a loop, so a decomposition into quadrants is a better fit. Multiple city types (2 or 4) have been added. Four bonus/penalty border/boundaries have been added. The concepts of "fitness" and "distance" have been logically separated and "distance" is shown as white dots on the "Histogram of Current Population Fitness." Save and Open do NOT save penalty boxes.
|
 |
Evolutionary Concert Tour (ECT)
Version H - 8
1 October 2009
Variable Parent/Child ratios
Variable MultiRun Generations
The population histogram has also been modified to identify each of the parents (wide bars with a different color for each parent) and each of the children (narrow bars showing the parent's color) for each generation. Note that in early generations, the children are generally more fit than the parents, compared to the later generations in which the parents are generally more fit than the children. As evolution progresses we would probably like to decrease the variability.
Table of results of 500 generations for runs of each Parent/Child ratio.
|
|
Evolutionary Concert Tour (ECT)
with Political Enhancement
Version G -
29 October 2008 - (derived directly from version F)
Suppose the dots represent households and not cities. Also suppose that you are not only interested in minimizing the physical distance of canvasing all the households, but you have a preference reasons for visiting:
a) Only Republicans first and then Democrats (so you don't have to change your interviewing style), or
b) Alternating between Republicans and Democrats (to stay attuned to contrasts).
The application will now allow you to place a varying "penalty" on deviating from your preference.
The penalty is added to the length of your circuit.
If you have no preference, you may select "Any" which is chosen by default.
To do:
The standardized configurations below confirm that the different fitness criteria do work. Create some standard configurations to run in "Any," "Same" and "Different" mode, with and without physical border penalties. Pla;y with the penalty value (it is probably set too high). Vary it to discover the "tipping points" with all other parameters set the same. The code may now be easily modified to expand the "city" types to three or more and to develop various complex valuation schemes for different circuits through the cities.
Thanks to Kathleen Schaefer and "IT" Itohan Aghayere for their efforts in thinking their ways down this road to enhancing the functionality of the application.
Some standardized configurations
are below:
|
Party affiliations are RED for Republican and BLUE for Democrat.
When you select YOURS cities, left-click places RED and right-click places BLUE.
The party affiliation of FOGEL'S and RANDOM cities are chose randomly
FileSave and FileOpen have been modified to record the party affiliation of cities (or households),
thus FileSave and FileOpen are NOT compatible with previous versions.
xxx xxx
Select for ANY party. xxxxxxxxxxxxxxxxxxxxxxxxSelect for SAME party. xxxxxxxxxxxxxxxxxxxxxxxxSelect for DIFFERENT party. |
|
|
Evolutionary Concert Tour (ECT)
May 2007 - Version F
For from 4 to 30 Cities w/Borders
Any number of cities may
be introduced, from 4 to 30. The MouseWheel has been introduced and the
sensitivity of the "100 Runs" plots to MouseMove has been changed.
Many improvements could still be made. The
file open and file save functions expect the first data element to be
the number of cities, so the old configurations will need to be edited
to work with the new version of the program.
Some standardized configurations
are below: |
|
|

The borders of the green region
at the bottom confer bonus points as a multiple of the path length that
crosses them. Consequently, cities in the green region connect to the
most distant cities. See the differences between the bonus, no-border
and penalty examples below:
|
2007 - February
Evolutionary Concert Tour (ECT)
w/ Bonus or Penalties for Crossing Borders
You may introduce a rectangular
area. Crossing its border will either confer a bonus or extract a penalty
as a multiple of the length of the path segment that crosses it. Click
on "Border" and then MouseDown, Drag and MouseUp to create the
bounded region. Use the TrackBar to set the bonus or penalty multiplier.
All possible path segment distances
(including penalties) are recalculated every time you selecting the 30
cities or change the bonus/penalty.
Some standardized configurations
are below: |
|
|
x
x
xxxxxxxx x
x
Bonus xxxxxxxxx
No Borderxxxxxxxx
Penaltyxxxxxxxxxxxxxxxxxx
Bonusxxxxxxxxx
No Borderxxxxxxxx
Penalty |

Some EXPERIMENTS using "squares.txt"
with and without the
border-crossing penalty are shown below:
|
2006 - December
Evolutionary Concert Tour (ECT)
with Penalties for Crossing Borders
You may introduce a rectangular
area as an obstacle. Crossing its border will extract a toll (penalty)
equal to a multiple of the length of the path segment that crosses it.
Click on "Border"
and then MouseDown, Drag and MouseUp to create the bounded region. Use
the TrackBar to set the penalty multiplier (2 or higher). All
possible path segment distances (including penalties) are calculated on
selecting the 30 cities or on changing the penalty.
|
x
x
x
x
x
Rank 0 xxxxxxxxxxRank
11 xxxxxxxxxxRank
19 xxxxxxxxxxRank
37 xxxxxxxxxRank
42 xxxxxxxxxxRank
57
Rankings of evolved solutions with a 10-FOLD TOLL extracted on crossing
the border. |
x
x
x
x
x
Rank 0 xxxxxxxxxxRank
14 xxxxxxxxxxRank
35 xxxxxxxxxxRank
61 xxxxxxxxxxRank
81 xxxxxxxxxRank
93
Rankings of evolved solutions with NO TOLL extracted on crossing the border. |
| |

x
No obstacle (left) and penalty (right).
|
2006 - November
Evolutionary Concert Tour (ECT)
File Save/Open and Obstacles
In addition to the functionality of the previous version,
this version will open and save the user's configuration of 30 cities.
It will also introduce a vertical
obstacle which extracts a penalty of up to 20 times the distance for the
path legs which cross it. You may consider this to be a toll extracted
for crossing a bridge over a river or a customs tariff charged for moving
goods across a border.
Notice that the penalty is multiplied
by the length of the leg that crosses the line. Consequently, not only
must evolution minimize the number of crossings, but it must minimize
the lengths of the legs which cross as well.
|
|
Things to do:
- Automatically rescale the histogram
for non-Fogel cities.
- Implement sexual reproduction
instead of asexual reproduction.
- Implement a version for any
number of cities up to 30.
|
2006 - Evolutionary Concert Tour
(ECT)
Multiple Runs
In addition to the functionality of the previous version,
this version will collect and display statistics on 100 runs of 1000 generations
each (10,000,000 individuals). In addition, the path and distance of the
best solution of each run is stored . As each run is completed, a black
dot is displayed showing its best solution distance along the X axis.
Consecutive runs are plotted below the previous ones along the Y axis.
The maximum and minimum distances are calculated and the scatter plot
in black is then rescaled and replotted as a histogram in black, the number
of occurrances at each distance shown against the blue scale as the absolute
number out of one hundred, or percentage. By mousing over the histogram,
you can recall the pathway that gave that distance as well as the rank
of that distance. From the difference in successive ranks you can calculate
the height of each histogram spike.
This version will also select for
the longest (as opposed to the shortest) path, which we might call "The
New York Taxi Driver's Problem."
|
|
|
2006 - Evolutionary Concert Tour
(ECT)
Showing the Best of Each Generation.
A new plot has been added which shows the course of
evolution - the best individual's path distance for each generation. Additionally,
the path of the best individual's distance is shown for each generation,
which provides a visual indication of the "progress" of evolution.
The application has
been changes so that it only shows information relevant to Fogel's cities
when Fogel's cities are chosen.
|
|

x x
x x
Some
other progressions towards local maxima. |
2005 - Evolutionary Concert Tour
(ECT)
The old "Travelling Salesman's Problem"
(TSP) recast in contemporary terms. How can one travel to all cities and
return home covering the least distance? There are 1,409,286,144
(30!) possible
paths, or loops, through the 30 cities. However, many are the same length:
For every forward loop there is a reversed loop and for every loop there
are 30 possible starting points. Consequently we must divide the total
by 2x30 to get the number of different paths, which is 23,488,102. An
exhaustive search of all possible paths is impractical, but we can use
Darwinian/Wallacian evolution through natural selection to find the optimal
path.
The user may select
David Fogel's published arrrangement of 30 cities, a random one or select
her own. A first generation of one hundred agents are created, each representing
one random path. In subsequent generations, the best half of the population
serves as parents, replacing the worst half with variant offspring by
asexual reproduction.
The vector operations of shuffle, rotate and reverse are used to resequence
the paths. For each agent, the best path is shown as well as the lengths
of the best, average and worst paths. These visualizations may be switched
off to speed the simulation. Thumbnails show some near optimal solutions
to a spiral arrangement of cities.
|
|
|
Saeid Atoofi's Language Evolution
(on the assimilation of language elements)
|
|
|
2006 Evolutionary Iterated Prisoners
Dilemma
An evolutionary enhanced version of the classic game.
Evolution is achieved by randomly changing the strategy of the worst player
every 100 games.
Devolution is achieved by randomly changing the strategy of the best player
every 100 games.
Evolution changes the screen to a pale green.
Devolution changes the screen to a pale pink.
A high not is played when an evolutionary change is made. A lower note
is played when a devolutionary change is made.
|
|
|
Garret's Evolutionary Iterated
Prisoners Dilemma
An evolutionary enhanced version of the classic game.
|
|
|
2005 - Adam Skory's Evolutune
Evolutune is a program to evolve little musical loops.
Each loop consists of four measures of beeps and boops. These loops are
created based on sets of parameters, or genotypes, that define their characteristics.
By selecting those loops that sound best, and reproducing them with slight
mutations in their genotypes, a user can direct the evolution of the loops
into being "more fit" for their environment (i.e. your ear).
The green triangle button is PLAY.
The black square button is STOP.
The red RECORD button is not implemented.
|
|
|
Rearranging a 1-D ARRAY using
a VECTOR
This program shows how to use a 1-D VECTOR and the
mutation and sorting algorithms in the Standard Template Library in order
to manipulate a 1-D ARRAY directly. This is the first step in manipulating
a 2-D ARRAY.
|
|
|
Rearranging a 2-D ARRAY using
a VECTOR
This program shows how to use a 1-D VECTOR and the
mutation and sorting algorithms in the Standard Template Library in order
to manipulate the indices to a 2-D ARRAY. The result is that the ARRAY
can be subjected to the same mutations as the VECTOR.
|
|
|
Rearranging a TPoint ARRAY using
a VECTOR
This program shows how to use a VECTOR of TPoint ARRAY
structure and the mutation and sorting algorithms in the Standard Template
Library in order to manipulate its contents. The VECTOR may than be copied
back into the TPoint ARRAY.
|