Friday, December 26, 2014

Pucks that bond

This clip shows dev.world19, which demonstrates puck bonding. The pucks here just move randomly while bonding and sharing energy with any other pucks with overlapping membranes.
 

Wednesday, December 24, 2014

Grusha's lying pucks

This clip shows a world developed by Grusha Prasad as part of her work for an Artificial Intelligence course at Hampshire College. These pucks exchange information about the locations of objects in the world, but the green pucks lie and the purple pucks believe them! This is why you can see purple pucks hovering in confusion around the zapper on the right of the screen; they've been told that there's an energy-providing vent there, and while they're smart enough not to dive into the zapper (which would be fatal), they're nonetheless stumped and don't tend to live very long.
 

Mike's vent box openers


This clip shows green user pucks developed by Mike Dean as part of his work for an Artificial Intelligence course at Hampshire College, running in ai.world6. These pucks are smart enough to get keys from the red key donors, and to use them to open the gates in the "vent boxes" and get energy from the vents inside. Generally they just feed a bit and then move on, before the vent closes, as you can see in the upper left near the beginning of this clip. Later in this clip, however, a user puck gets trapped within the vent box in the lower left. It continues to live because it is constantly supplied with energy, but it suffers many collisions and appears to be trapped for good.

Thomas's swarmevolvers

This video shows a significantly modified version of dev.world15, produced by Thomas Guttman as part of his work for an Artificial Intelligence course at Hampshire College. Thomas extended the behavioral repertoire of the pucks and changed the reproduction methods to use genetic recombination and mate selection.
 

Tuesday, December 23, 2014

Swarmevolvers

The swarmevolver pucks and dev.world15, shown in a previous post, were developed mainly just to demonstrate how genomes can be used to support puck evolution.

But they can nonetheless produce some some interesting emergent effects.

Shown here is a clip from another run of the same world, taken from later in the run.

One thing to note is that peace has broken out, and few torpedoes are fired.

There are (non-coincidental!) connections between this system and swarmevolve.


Videos of ai worlds 1-8

The pucks "ai" worlds are intended for use in an introductory AI class. They include "user" pucks that just drift by default. The challenge for students is to program the user pucks so that they behave more intelligently.




This first video shows ai.world1, which contains a randomly oriented user puck, a zapper, a wall of stones, and a vent. A successful user puck will avoid the zapper and find the vent, from which it can replenish its energy. The default user puck shown here just drifts.
 




This video shows ai.world2, which contains a user puck that is initially heading into a zapper, along with a wall of stones and a vent. A successful user puck will avoid the zapper and find the vent, from which it can replenish its energy. The default user puck shown here will instead drift slowly into the zapper and die.
 




This video shows ai.world3, which contains a nursery that spawns user pucks, two zappers, a vent, walls of stones, and location-bearing beacons, all of which are in preset positions. Successful user pucks will avoid the zappers and find the vent, from which they can replenish their energy. The default user pucks shown here just drift blindly.
 




This video shows ai.world4, which contains a nursery that spawns user pucks, two zappers, a chest that contains a key, location-bearing beacons, and a vent that is surrounded by walls of stones (with a gate in one wall), all of which are in preset locations. A successful user puck will get the key from the chest and use it to open the gate, after which it will use the vent to replenish its energy. The default user pucks shown here do not know how to do any of this, so they just drift and die.
 




This video shows ai.world5, which contains a nursery that spawns user pucks, along with location-bearing beacons, zappers, a vent, and walls of stones. All of the objects aside from the beacons are placed semi-randomly within a grid. This means that user pucks cannot know the locations of the vent or of other objects in advance. A successful user puck will avoid zappers and find the vent, from which it can replenish its energy. The default user pucks shown here just drift.
 




This video shows ai.world6, which contains a nursery that spawns user pucks and another nursery that spawns key donors, along with location-bearing beacons, zappers, and "ventboxes," which are vents in gated boxes of stones. All of the objects aside from the beacons are placed semi-randomly within a grid. This means that user pucks cannot know the locations of the ventboxes or of other objects in advance. A successful user puck will obtain a key from a donor, avoid zappers, and find, open, and enter a ventbox in order to replenish its energy. The default user pucks shown here just drift.
 




This video shows ai.world7, which is a challenging, semi-random environment much like ai.world6 (http://youtu.be/B2nDDH8UdaQ) except that it includes nurseries that spawn a variety of other kinds of pucks (including some that shoot torpedoes!). It is also larger in scale, and it omits the location-bearing beacons that were present in earlier worlds, making navigation more difficult. The default user pucks shown here just drift.
 




This video shows ai.world8, which is another challenging, semi-random environment like ai.world7 (http://youtu.be/i-GHxItZVMA), but this world adds map donors, from which user pucks can obtain maps. These maps could be used by intelligent user pucks (which are not shown here!) to generate and execute plans for navigation and action.
 

Sunday, December 21, 2014

Videos of dev worlds 1-17

The pucks "dev" worlds are used to test and demonstrate features of pucks, an environment for experiments and education in artificial intelligence and artificial life. See https://github.com/lspector/pucks for a more detailed description, technical documentation, and source code.



This first video shows dev.world1, which includes a variety of basic pucks in random positions: stones (which are inert), vents (which provide energy), zappers (which steal energy), a nursery that produces either linear agents (which move in straight lines) or shooters (which fire torpedoes), a nursery that produces linear agents with inventories (shown as black dots in their centers), a nursery that produces swarmers (which flock together), a nursery that produces swarmers with memories (shown as black dots in their eyes), and beacons (which can be sensed but are not solid and can be passed through).
 



The next video shows dev.world2, in which a single "linear" puck repeatedly bounces off of, and gets energy from, a vent.
 



The next video shows dev.world3, which demonstrates "zigzag" and "startstop" pucks.
 



The next video shows dev.world4, which demonstrates how to create walls out of stones and how to change the screen-size setting.
 



The next video shows dev.world5, which demonstrates the ways in which inventory and memory are displayed (with dots in puck centers and puck eyes, respectively).
 



The next video shows dev.world6, which includes walls of stones, vents, beacons, a zapper, and nurseries in preset locations. The nurseries spawn linear, swarmer, startstop and zigzag pucks.
 



The next video shows dev.world7, in which an "opener" puck gets a key from a chest and uses it to open a gate and get energy from a vent.
 



The next video shows dev.world8, in which a pair of pucks trade an inventory item for information.
 



The next video shows dev.world9, in which location-labeled beacons could conceivably be used for navigation to a hidden vent, but the pucks emerging from the nursery are just blind and reckless shooters.
 



The next next video shows dev.world10, which demonstrates "darter" pucks. Darters use memory to cycle among four tasks: orienting, stopping, re-orienting, and darting. They are demonstrated in the same environment used in dev.world9 (https://www.youtube.com/watch?v=iOo8jx8jVUI), in which location-labeled beacons could conceivably be used for navigation to a hidden vent. But here too the pucks emerging from the nursery (darters, in this case) are blind and will reach the vent only rarely and by chance.
 



The next video shows dev.world11, in which a "donor" puck gives away a key.
 



The next video shows dev.world12, which demonstrates how to change the screen-size and scale settings. The layout is the same as in dev.world6 (https://www.youtube.com/watch?v=AnJYT_P624k), but there is a lot of new empty space and everything is shown at half scale.
 



The next video shows dev.world13, which demonstrates a larger and more complex semi-random layout than the previous dev worlds. This world includes location-labeled beacons that could conceivably be used for navigation, but none of the various active pucks make use of them.
 



The next video shows dev.world14, which demonstrates "spawners" that produce copies of themselves. It also demonstrates the nursery-threshold setting: when the world contains 10 or more active agents the nursery closes and produces no new pucks.
 



The next video shows dev.world15, which demonstrates "swarmevolver" pucks. Swarmevolvers have genomes that specify a variety of puck properties, including propensities for certain kinds of behaviors. The genomes of the children that they spawn are subject to mutation.

At the beginning of the simulation the nursery generates swarmevolvers with random genomes, but a self-sustaining population that exceeds the nursery threshold of 5 pucks emerges by 30 seconds into the video. From that point onward, one can observe the effects of natural selection.
 



The next video shows dev.world16, in which a mapdonor gives a map to another puck, which then uses the map in conjunction with location-labeled beacons in order to navigate to the vent.
 



The next video shows dev.world17, which demonstrates the manipulation of puck thrust-angle.
 



The next video shows dev.world18, which was designed (with help from Eddie Pantridge) for use in pucks system speed tests.