Artificial Chemistry: A Simple Periodic Table

jeffheaton's picture

An artificial chemistry is a computer model used to simulate various types of systems. This can be particularly useful for an artificial life simulation. This series of articles will take you through the process as we create a simple artificial chemistry system. The goal is to use this artificial chemistry system to simulate basic life.

The artificial chemistry is designed to be much simpler than real physical chemistry. This will make it much easier to simulate on a computer. However, this also means that the program is simulating nothing that exists in the real world. It is meant as a learning tool. To see how systems can self-replicate, and perhaps even evolve in a computer system. Most artificial life computer programs do not attempt to simulate physical reality. Simulating physical reality is simply too complex for today’s computer systems.

The first step is to create a periodic table. This is the purpose of this article. The periodic table will consist of 66 elements. These elements will have arbitrary names. For lack of anything better I chose to name them after celestial bodies. I also wanted a total number of elements that is divisible by 6. These elements will be mapped onto a space delineated by 6-sided figures. So an atom could “bond” with at most six other atoms.

Each element will also have a symbol. This will usually be the first two letters of the element’s name. For example Jupiter would be “Ju”. However, this can lead to some repeats. For example, Callisto’s symbol is Ca. Calypso’s symbol is Cl. If using the first two letters produces a repeat symbol, then use the first and third letters to produce the symbol.

The atomic weight is simply the number element that this is. Atomic numbers range from one to sixty six. Atomic weight is defined to be the same as the atomic numbers. Elements become heavier as the atomic number increases. Also each element is defined to be in a family. This is the atomic number modulo six. Atomic number 1 is in family 2. Atomic number 2 is in family 2. Atomic number 6 is in family 6. Atomic number 7 is in family 1. The family will be used to define how the element will bond with other elements.

A simple Java program can be used to generate a CSV file of the periodic table. The following listing shows how to create our simple 66 elements.

import java.util.*;

public class Chem
{
	public static String names[] = {
	"Adrastea",
	"Amalthea",
	"Ananke",
	"Ariel",
	"Atlas",
	"Belinda",
	"Bianca",
	"Callisto",
	"Calypso",
	"Carme",
	"Cordelia",
	"Cressida",
	"Deimos",
	"Desdemona",
	"Despina",
	"Dione",
	"Elara",
	"Enceladus",
	"Epimetheus",
	"Europa",
	"Galatea",
	"Ganymede",
	"Helene",
	"Himalia",
	"Hyperion",
	"Iapetus",
	"Io",
	"Janus",
	"Juluet",
	"Jupiter",
	"Leda",
	"Lysithea",
	"Mars",
	"Mercury",
	"Metis",
	"Mimas",
	"Miranda",
	"Naiad",
	"Neptune",
	"Nereid",
	"Oberon",
	"Opnelia",
	"Pam",
	"Pandora",
	"Pasiphae",
	"Phobos",
	"Phoebe",
	"Portia",
	"Prometheus",
	"Proteus",
	"Puck",
	"Rhea",
	"Rosalind",
	"Saturn",
	"Sinope",
	"Telesto",
	"Tethys",
	"Thalassa",
	"Thebe",
	"Titan",
	"Titania",
	"Triton",
	"Umbriel",
	"Umbrielil",
	"Uranus",
	"Venus" };

	static Set set = new HashSet();

	public static String getSymbol(String name)
	{
		char a = Character.toUpperCase(name.charAt(0));
		String result = "";

		int i=1;

		do
		{
			char b = Character.toLowerCase(name.charAt(i));
			result = ""+a+b;
			i++;

		} while(set.contains(result) );

		set.add(result);

		return result;
	}

	public static void main(String args[])
	{
		System.out.println("\"name\","
		+"\"atomic mass\""
		+"\"atomic number\""
		+",\"family\"");
		for(int i=0;i

When executed, this program produces the following output:

"name","atomic mass""atomic number","family"
"Adrastea","Ad",",1",1,1
"Amalthea","Am",",2",2,2
"Ananke","An",",3",3,3
"Ariel","Ar",",4",4,4
"Atlas","At",",5",5,5
"Belinda","Be",",6",6,6
"Bianca","Bi",",7",7,1
"Callisto","Ca",",8",8,2
"Calypso","Cl",",9",9,3
"Carme","Cr",",10",10,4
"Cordelia","Co",",11",11,5
"Cressida","Ce",",12",12,6
"Deimos","De",",13",13,1
"Desdemona","Ds",",14",14,2
"Despina","Dp",",15",15,3
"Dione","Di",",16",16,4
"Elara","El",",17",17,5
"Enceladus","En",",18",18,6
"Epimetheus","Ep",",19",19,1
"Europa","Eu",",20",20,2
"Galatea","Ga",",21",21,3
"Ganymede","Gn",",22",22,4
"Helene","He",",23",23,5
"Himalia","Hi",",24",24,6
"Hyperion","Hy",",25",25,1
"Iapetus","Ia",",26",26,2
"Io","Io",",27",27,3
"Janus","Ja",",28",28,4
"Juluet","Ju",",29",29,5
"Jupiter","Jp",",30",30,6
"Leda","Le",",31",31,1
"Lysithea","Ly",",32",32,2
"Mars","Ma",",33",33,3
"Mercury","Me",",34",34,4
"Metis","Mt",",35",35,5
"Mimas","Mi",",36",36,6
"Miranda","Mr",",37",37,1
"Naiad","Na",",38",38,2
"Neptune","Ne",",39",39,3
"Nereid","Nr",",40",40,4
"Oberon","Ob",",41",41,5
"Opnelia","Op",",42",42,6
"Pam","Pa",",43",43,1
"Pandora","Pn",",44",44,2
"Pasiphae","Ps",",45",45,3
"Phobos","Ph",",46",46,4
"Phoebe","Po",",47",47,5
"Portia","Pr",",48",48,6
"Prometheus","Pm",",49",49,1
"Proteus","Pt",",50",50,2
"Puck","Pu",",51",51,3
"Rhea","Rh",",52",52,4
"Rosalind","Ro",",53",53,5
"Saturn","Sa",",54",54,6
"Sinope","Si",",55",55,1
"Telesto","Te",",56",56,2
"Tethys","Tt",",57",57,3
"Thalassa","Th",",58",58,4
"Thebe","Tb",",59",59,5
"Titan","Ti",",60",60,6
"Titania","Ta",",61",61,1
"Triton","Tr",",62",62,2
"Umbriel","Um",",63",63,3
"Umbrielil","Ub",",64",64,4
"Uranus","Ur",",65",65,5
"Venus","Ve",",66",66,6

The periodic table can also be viewed in a table.

Element Name Symbol Atomic Number Atomic Mass Family
Adrastea Ad 1 1 1
Amalthea Am 2 2 2
Ananke An 3 3 3
Ariel Ar 4 4 4
Atlas At 5 5 5
Belinda Be 6 6 6
Bianca Bi 7 7 1
Callisto Ca 8 8 2
Calypso Cl 9 9 3
Carme Cr 10 10 4
Cordelia Co 11 11 5
Cressida Ce 12 12 6
Deimos De 13 13 1
Desdemona Ds 14 14 2
Despina Dp 15 15 3
Dione Di 16 16 4
Elara El 17 17 5
Enceladus En 18 18 6
Epimetheus Ep 19 19 1
Europa Eu 20 20 2
Galatea Ga 21 21 3
Ganymede Gn 22 22 4
Helene He 23 23 5
Himalia Hi 24 24 6
Hyperion Hy 25 25 1
Iapetus Ia 26 26 2
Io Io 27 27 3
Janus Ja 28 28 4
Juluet Ju 29 29 5
Jupiter Jp 30 30 6
Leda Le 31 31 1
Lysithea Ly 32 32 2
Mars Ma 33 33 3
Mercury Me 34 34 4
Metis Mt 35 35 5
Mimas Mi 36 36 6
Miranda Mr 37 37 1
Naiad Na 38 38 2
Neptune Ne 39 39 3
Nereid Nr 40 40 4
Oberon Ob 41 41 5
Opnelia Op 42 42 6
Pam Pa 43 43 1
Pandora Pn 44 44 2
Pasiphae Ps 45 45 3
Phobos Ph 46 46 4
Phoebe Po 47 47 5
Portia Pr 48 48 6
Prometheus Pm 49 49 1
Proteus Pt 50 50 2
Puck Pu 51 51 3
Rhea Rh 52 52 4
Rosalind Ro 53 53 5
Saturn Sa 54 54 6
Sinope Si 55 55 1
Telesto Te 56 56 2
Tethys Tt 57 57 3
Thalassa Th 58 58 4
Thebe Tb 59 59 5
Titan Ti 60 60 6
Titania Ta 61 61 1
Triton Tr 62 62 2
Umbriel Um 63 63 3
Umbrielil Ub 64 64 4
Uranus Ur 65 65 5
Venus Ve 66 66 6

This provides us with a simple periodic table to experiment with. Future articles will build upon this. The next article will show how to create the universe that the artificial chemistry will execute in.

Comments

Development

vancv786's picture

Hi Jeff,

Have you had a chance to do some more work on this project? Sounds very interesting. BTW - why did you choose to start off with so many elements? Defining rules for how they all with interact with each other could get pretty heavy. Or are you going to use some generic rules?

Thanks for all the great work!
Vanja


Copyright 2005 - 2012 by Heaton Research, Inc.. Heaton Research™ and Encog™ are trademarks of Heaton Research. Click here for copyright, license and trademark information.