Skip to main content

Doubts, questions

I mentioned in an earlier post that I observed what I would classify as a living artificial life in a simulation I've been working on. Already, and understandably, someone has brought up objections doubting my claims. Or rather, doubts that any computer program could be considered "life".

I have always shared the same doubts, but it's not easy to remain skeptical after seeing with your own eyes. Rather than simply talk about it, I will probably release a version of this program so that other people can judge for themselves. A mobile app is probably the best way to reach many people easily.

There is work to be done so that I can make the simulation presentable. I can still see doubts being raised, though. If you saw a bug walking around on the floor, and run away from you as it detects your presence, you would recognize that the bug is alive, without question. But if you saw the same behavior, the same complexity, on a computer screen, would you feel the same way? Probably not, although I am starting to believe that the line between living and artificial is more blurry than previously thought.

Here is an example of something I saw that I can't very well explain: I programmed into the simulation the ability to reproduce if a number of varying conditions are met. These conditions make it rather unlikely that reproduction will occur, at least not very frequently. However, that is the extent of the reproductive behavior. Once an offspring is produced, it is effectively an independent organism.

During testing of this behavior, I noticed that the offspring would not always move as expected. It sometimes stays closer to its parent than should be expected. No, it doesn't always do this, but it does it frequently enough that I noticed it, and it simply can't be explained in the code. The offspring is free to move anywhere, as is the parent. But if the parent gets too far away, the offspring moves closer so that it stays nearby, and there isn't a good reason for it to do this. There is no benefit to staying near the parent. Trying to draw connections between different interacting behaviors in the code looks like spaghetti, although clearly this behavior emerges, and without a doubt it connects an offspring to its parent.

This is a little odd, to say the least. It is the unexpectedness of it that leads me to believe that I am looking at something that is somehow more than a computer program.

Comments

Popular posts from this blog

SQL Types

SQL Types The SQL Types mobile app for Android is now available. It is a quick reference for SQL Professionals and Database Developers.  SQL Types provides easy access to various database vendor supported data type documentation. Check it out on the Google Play store . Current supported database vendors: PostgreSQL Oracle SQL Server MySQL SQLite

Artificial behavior, or intelligence?

Artificial behavior is an area of research that seems to have been missed, or skipped over, on the path that companies like Google are taking to develop artificial intelligence. They have also jumped straight to working on human intelligence. Why not start smaller first? What about a cat or dog, or an insect? An insect may not seem very intelligent, and companies are probably not interested because they can't make much use of an artificial insect intelligence, but simple insects are quite complex. It is also quite probable that they have a consciousness, the thing that makes them "alive". Though we don't know what consciousness is, it is thought to arise naturally as a result of the complexity of the brain. The interesting thing is that, if this is so (and it likely is), then there is no difference between a "live" human and an artificial human, a computer program that mimics the human brain. They are the same thing. We can say the same, then, of someth...

Collisions with line intersections

Collisions can be determined by testing for line intersections. Imagine a line representing the ground and an object above, falling down. At time t1 , take the center point  p1  of the object. At time t2 , move the object down and take the center point p2 of the object. If the line formed by endpoints (p1, p2) intersect the ground line, a collision has occurred. On a collision, reset the object to its original position before the movement. When a collision occurs, be sure to reset the object by the same point used to determine the line intersection. In this example, I use the center point, so the object should be reset by the center point, not its actual x, y (usually top left) coordinate. It is not always the case that resetting by the x, y coordinate is sufficient. This can be seen in the following picture. It can be seen that even if the object isn't moving, but its size changes, a line intersection can occur, and resetting the object to its x, y position will...