I fear not lol
My current graphics card doesn't even support openCL
I have a Celeron CPU so I'm early Pentium. The program speeds things up with the "Draw" checkbox that skips all the graphics to go 20 times or so faster. Even though graphics are slower it's only needed to peek in every once in a while and where it goes much faster needs slowing down to see what the particles are doing. Works good enough for what we now have for hardware, and software.
Those particles by now must have learned quite a bit as they don't hit the walls that often anymore and start to form groups here
Right now I'm using 7 Particles (none stationary) and a world size of 11. Current Memory-count is just over 4000 but I think it didn't save the memory count from yesterday. I just let it ran without drawing during surfing and dining and stuff and just checked draw from time to time to see if something changed. Pure randomness by now is definitely gone
I left mine on overnight. Used 100 particles with the Inhibit Reversals unchecked, then when I got back to it they were going in tight circles back to start and jittering one step forward then back. They are all perfect solutions to the problem of avoiding walls but keep moving while staying together, achieved 100% success.
Maybe with some optimization you could do massiv simulations with a million particles or so - the theoretical mechanics behind it don't look too complex.
What needs working on most now is the way the confidence is adjusted, to better approximate the properties of an atom. Otherwise not have anything worth trying a million particles for.
What would be interesting too would be some kind of learning BOIDS with, say, 5 species with different pretador/prey configurations but each species at dirst has to learn how to move nicely like that single robot has to to find his food-sources (the charging platforms)
One could be omnivorous, one could be a plant-eater (forgot the nice name xD) and the other three differently sized carnivores "eating" each other with different conditions, for instance the bigger can only be eaten if there are more of the smaller...
Plants would basically spawn randomly.
However that could easily be way more complex as you'd also have to consider dynamic particle numbers when an individuum dies or gets born and when they get born.
Basically learning BOIDS with the abillity to reproduce.
You have the right idea. And the ability to reproduce would be essential. It's such a part of what keeps our kind of intelligence going I just finished having to write about (PG13)
where males/female sexuality comes from which is important to know to be able to model it properly. Can say that in the beginning, were hermaphrodites. And they're still here. So if they're not in the model then it's not a realistic approximation of the real thing, for when that is trying to be achieved.
Once the particles behave like atoms they can be assembled into proteins (made by hydrogen-bonding amino acids together) and ribonucleotides to make prions and self-replicating RNA flocking around certain things without worrying about having to add BOIDS behavior.
It might be possible to derive a Confidence +1/-1 number from valence charts and whatever else is on the internet. I also have a Lennard-Jones model that makes them attract and repel properly. Forms the predictable hexagonal close-packing pattern. I'll post the code for it here, in case anyone needs it. Plenty on the internet on it too. The formula is:
V = 4 * Epsilon * ((Sigma / R) ^ 12 - (Sigma / R) ^ 6)
V is the velocity, same thing as how many pixels to move one way or another. Others adjust size of particle and attraction strength between them. I put it on the screen in 2D with this:
Const XYpixels = 512
Const SC = 8
Dim XmYm(XYpixels, XYpixels, 1) As Byte
Dim Mols As Long
Dim M As Long
Dim Xm(10000) As Double
Dim Ym(10000) As Double
Dim Zm(10000) As Double
Dim X, Y, Z As Double
Dim R As Double
Dim Epsilon As Double
Dim Sigma As Double
Dim V As Double
Dim N As Long
Dim N1 As Long
Dim N2 As Long
Dim DX, DY, DZ As Double
Dim Xv, Yv, Zv As Double
Private Sub Form_Load()
Epsilon = 1
Sigma = 1
Call PlotCurve
Pic1.DrawWidth = SC / 2
Pic2.DrawWidth = SC / 2
Call PlaceMolecules
Timer1.Enabled = True
End Sub
Private Sub PlotCurve()
N = Picture1.Width / 3
For R = 0.8 To 3 Step 0.0005
V = 4 * Epsilon * ((Sigma / R) ^ 12 - (Sigma / R) ^ 6)
Picture1.PSet (R * N, (V * 100) + (Picture1.Height / 2)), 0
Next R
End Sub
Private Sub PlaceMolecules()
Mols = 0
For X = 1 To 9
For Y = 1 To 9
Mols = Mols + 1
Xm(Mols) = X
Ym(Mols) = Y
Next Y
Next X
M = Mols / 2
End Sub
Private Sub Timer1_Timer()
For N1 = 1 To Mols
Xv = 0
Yv = 0
For N2 = 1 To Mols
If N1 = N2 Then GoTo Same1
DX = Xm(N2) - Xm(N1)
DY = Ym(N2) - Ym(N1)
R = Sqr(DX * DX + DY * DY)
V = 4 * Epsilon * ((Sigma / R) ^ 12 - (Sigma / R) ^ 6)
V = V / 80
Xv = Xv + (V * DX)
Yv = Yv + (V * DY)
Same1:
Next N2
Xm(N1) = Xm(N1) - Xv
Ym(N1) = Ym(N1) - Yv
Next N1
'Heat Entropy adds a small random amount of displacement to X,Y position.
' Call Entropy
Pic1.Cls
For N = 1 To Mols
Pic1.PSet (Xm(N) * SC, Ym(N) * SC), 0
Next N
Pic2.Refresh
End Sub
Private Sub Entropy()
For N = 1 To Mols
Xm(N) = Xm(N) + (Fix((Rnd * 3) - 1.5) / 8)
Ym(N) = Ym(N) + (Fix((Rnd * 3) - 1.5) / 8)
Next N
End Sub
(Talking about kinds of worlds: I once looked into how a world on a klein-bottle would look like, rather than a torus. It would be like on a torus, you go out of the world on one side and come back in on the other but the side you'd walk would be mirrored. So if you go out of the world at the left side of the top edge, you would come back in at the right side of the bottom edge. Such a world could also be interesting
)
A physics mind too! I kinda expected that.
I'm not sure if I entirely followed you with all your descriptions but if I got it right, you'd like to kind of copy the DNA's coding and just let it run so intelligent-ish structures start to emerge.
Very interesting but looking at how long just such a simple system as the Particles in a Box takes to learn, something like the whole evolution will take for ever even with openCL except if you have a huge computation farm or something
Only need to get something like Self-Replicating DNA on the screen and even Jerald Joyce would be here checking that one out, and I'm not kidding either. But to make that we need to make a single ribonucleotide which is not that many atoms/particles. So I keep it down to something that we can do right now with whatever we already code in, by only needing to only make small molecules.
However you could and probably should do some computational optimizations behind the structure of computer-data:
In DNA, information is stored in triplets basically and each combination has some double meanings.
Those triplets form amino acids which then in one way or an other allow communication in the whole body.
All that would be due to arrangement of atoms in molecule. Would happen on its own without needing to be put in, just by having the behavior of atoms in the particles well enough approximated.
All that is very interesting but the sheer complexity has an attractor at infinty
I think I know what you are saying about the attractor, maybe not. But I look at it as just needing to get a single +1/-1 number to adjust confidence by from a subroutine that should be possible by compiling valence and other chemical data. Not have to care when it is solid liquid or gas just the basic dynamics built into the bot so it gets the Lennard-Jones attraction (throttle of its X,Y,Z Motors) get set in the right directions, does not have to be precise value just right direction. Otherwise have the problems you mentioned where there is so much calculating needing to be done it's beyond what we could model on our PC. Here, once the memory has been trained the bots only read that to find out what to do in response (direction to set motors) so can go fast enough to see something happen. Even small molecules behaving like the real thing would be amazing.
Anything having to do with heat and pressure is easy. Should be able to set the temperature scroll by finding what level water molecules become ice. And heat vibration is like the old Rock Em' Sock Em Robot's that moved on vibrating table, need that but its easy.
I know that we do have to account for Valence. But that's easy too, here's the numbers:
'Number Element Valence
1 Hydrogen (-1), +1
2 Helium 0
3 Lithium +1
4 Beryllium +2
5 Boron -3, +3
6 Carbon (+2), +4
7 Nitrogen -3, -2, -1, (+1), +2, +3, +4, +5
8 Oxygen -2
9 Fluorine -1, (+1)
10 Neon 0
11 Sodium +1
12 Magnesium +2
13 Aluminum +3
14 Silicon -4, (+2), +4
15 Phosphorus -3, +1, +3, +5
16 Sulfur -2, +2, +4, +6
17 Chlorine -1, +1, (+2), +3, (+4), +5, +7
18 Argon 0
19 Potassium +1
20 Calcium +2
21 Scandium +3
22 Titanium +2, +3, +4
23 Vanadium +2, +3, +4, +5
24 Chromium +2, +3, +6
25 Manganese +2, (+3), +4, (+6), +7
26 Iron +2, +3, (+4), (+6)
27 Cobalt +2, +3, (+4)
28 Nickel (+1), +2, (+3), (+4)
29 Copper +1, +2, (+3)
30 Zinc +2
31 Gallium (+2). +3
32 Germanium -4, +2, +4
33 Arsenic -3, (+2), +3, +5
34 Selenium -2, (+2), +4, +6
35 Bromine -1, +1, (+3), (+4), +5
36 Krypton 0
37 Rubidium +1
38 Strontium +2
39 Yttrium +3
40 Zirconium (+2), (+3), +4
41 Niobium (+2), +3, (+4), +5
42 Molybdenum (+2), +3, (+4), (+5), +6
43 Technetium +6
44 Rubidium (+2), +3, +4, (+6), (+7), +8
45 Rhodium (+2), (+3), +4, (+6)
46 Palladium +2, +4, (+6)
47 Silver +1, (+2), (+3)
48 Cadmium (+1), +2
49 Indium (+1), (+2), +3
50 Tin +2, +4
51 Antimony -3, +3, (+4), +5
52 Tellurium -2, (+2), +4, +6
53 Iodine -1, +1, (+3), (+4), +5, +7
54 Xenon 0
55 Cesium +1
56 Barium +2
57 Lanthanum +3
58 Cerium +3, +4
59 Praseodymium +3
60 Neodymium +3, +4
61 Promethium +3
62 Samarium (+2), +3
63 Europium (+2), +3
64 Gadolinium +3
65 Terbium +3, +4
66 Dysprosium +3
67 Holmium +3
68 Erbium +3
69 Thulium (+2), +3
70 Ytterbium (+2), +3
71 Lutetium +3
72 Hafnium +4
73 Tantalum (+3), (+4), +5
74 Tungsten (+2), (+3), (+4), (+5), +6
75 Rhenium (-1), (+1), +2, (+3), +4, (+5), +6, +7
76 Osmium (+2), +3, +4, +6, +8
77 Iridium (+1), (+2), +3, +4, +6
78 Platinum (+1), +2, (+3), +4, +6
79 Gold +1, (+2), +3
80 Mercury +1, +2
81 Thallium +1, (+2), +3
82 Lead +2, +4
83 Bismuth (-3), (+2), +3, (+4), (+5)
84 Polonium (-2), +2, +4, (+6)
85 Astatine ?
86 Radon 0
87 Francium ?
88 Radium +2
89 Actinium +3
90 Thorium +4
91 Protactinium +5
92 Uranium (+2), +3, +4, (+5), +6
Radii too:
'From: http://environmentalchemistry.com/yogi/periodic/atomicradius.html
'Periodic Table of Elements
'Sorted by Atomic Radius
' Name Sym #
0.49 Å Helium He 2
0.51 Å Neon Ne 10
0.57 Å Fluorine F 9
0.65 Å Oxygen O 8
0.75 Å Nitrogen N 7
0.79 Å Hydrogen H 1
0.88 Å Argon Ar 18
0.91 Å Carbon C 6
0.97 Å Chlorine Cl 17
1.03 Å Krypton Kr 36
1.09 Å Sulfur S 16
1.12 Å Bromine Br 35
1.17 Å Boron B 5
1.22 Å Selenium Se 34
1.23 Å Phosphorus P 15
1.24 Å Xenon Xe 54
1.32 Å Iodine I 53
1.33 Å Arsenic As 33
1.34 Å Radon Rn 86
1.4 Å Beryllium Be 4
1.42 Å Tellurium Te 52
1.43 Å Astatine At 85
1.46 Å Silicon Si 14
1.52 Å Germanium Ge 32
1.53 Å Zinc Zn 30
1.53 Å Antimony Sb 51
1.53 Å Polonium Po 84
1.57 Å Copper Cu 29
1.62 Å Nickel Ni 28
1.63 Å Bismuth Bi 83
1.67 Å Cobalt Co 27
1.71 Å Cadmium Cd 48
1.72 Å Iron Fe 26
1.72 Å Tin Sn 50
1.72 Å Magnesium Mg 12
1.75 Å Silver Ag 47
1.76 Å Mercury Hg 80
1.79 Å Gold Au 79
1.79 Å Manganese Mn 25
1.79 Å Palladium Pd 46
1.81 Å Gallium Ga 31
1.81 Å Lead Pb 82
1.82 Å Aluminum Al 13
1.83 Å Platinum Pt 78
1.83 Å Rhodium Rh 45
1.85 Å Chromium Cr 24
1.87 Å Iridium Ir 77
1.89 Å Ruthenium Ru 44
1.92 Å Vanadium V 23
1.92 Å Osmium Os 76
1.95 Å Technetium Tc 43
1.97 Å Rhenium Re 75
2.0 Å Titanium Ti 22
2.0 Å Indium In 49
2.01 Å Molybdenum Mo 42
2.02 Å Tungsten W 74
2.05 Å Lithium Li 3
2.08 Å Niobium Nb 41
2.08 Å Thallium Tl 81
2.09 Å Scandium Sc 21
2.09 Å Tantalum Ta 73
2.16 Å Hafnium Hf 72
2.16 Å Zirconium Zr 40
2.23 Å Calcium Ca 20
2.23 Å Sodium Na 11
2.25 Å Lutetium Lu 71
2.27 Å Yttrium Y 39
2.4 Å Ytterbium Yb 70
2.42 Å Thulium Tm 69
2.45 Å Erbium Er 68
2.45 Å Strontium Sr 38
2.47 Å Holmium Ho 67
2.49 Å Dysprosium Dy 66
2.51 Å Terbium Tb 65
2.54 Å Gadolinium Gd 64
2.56 Å Europium Eu 63
2.59 Å Samarium Sm 62
2.62 Å Promethium Pm 61
2.64 Å Neodymium Nd 60
2.67 Å Praseodymium Pr 59
2.7 Å Cerium Ce 58
2.74 Å Lanthanum La 57
2.77 Å Potassium K 19
2.78 Å Barium Ba 56
2.98 Å Rubidium Rb 37
3.34 Å Cesium Cs 55
And Electron Configuration:
Atomic electron configuration table
This is a table of electron configurations of atoms.
No. Element 1 2 3 4 5 6 7
1 Hydrogen 1
2 Helium 2
3 Lithium 2 1
4 Beryllium 2 2
5 Boron 2 3
6 Carbon 2 4
7 Nitrogen 2 5
8 Oxygen 2 6
9 Fluorine 2 7
10 Neon 2 8
11 Sodium 2 8 1
12 Magnesium 2 8 2
13 Aluminium 2 8 3
14 Silicon 2 8 4
15 Phosphorus 2 8 5
16 Sulfur 2 8 6
17 Chlorine 2 8 7
18 Argon 2 8 8
19 Potassium 2 8 8 1
20 Calcium 2 8 8 2
21 Scandium 2 8 9 2
22 Titanium 2 8 10 2
23 Vanadium 2 8 11 2
24 Chromium 2 8 13 1
25 Manganese 2 8 13 2
26 Iron 2 8 14 2
27 Cobalt 2 8 15 2
28 Nickel 2 8 16 2
29 Copper 2 8 18 1
30 Zinc 2 8 18 2
31 Gallium 2 8 18 3
32 Germanium 2 8 18 4
33 Arsenic 2 8 18 5
34 Selenium 2 8 18 6
35 Bromine 2 8 18 7
36 Krypton 2 8 18 8
37 Rubidium 2 8 18 8 1
38 Strontium 2 8 18 8 2
39 Yttrium 2 8 18 9 2
40 Zirconium 2 8 18 10 2
41 Niobium 2 8 18 12 1
42 Molybdenum 2 8 18 13 1
43 Technetium 2 8 18 14 1
44 Ruthenium 2 8 18 15 1
45 Rhodium 2 8 18 16 1
46 Palladium 2 8 18 18 0
47 Silver 2 8 18 18 1
48 Cadmium 2 8 18 18 2
49 Indium 2 8 18 18 3
50 Tin 2 8 18 18 4
51 Antimony 2 8 18 18 5
52 Tellurium 2 8 18 18 6
53 Iodine 2 8 18 18 7
54 Xenon 2 8 18 18 8
55 Caesium 2 8 18 18 8 1
56 Barium 2 8 18 18 8 2
57 Lanthanum 2 8 18 18 9 2
58 Cerium 2 8 18 19 9 2
59 Praseodymium 2 8 18 21 8 2
60 Neodymium 2 8 18 22 8 2
61 Promethium 2 8 18 23 8 2
62 Samarium 2 8 18 24 8 2
63 Europium 2 8 18 25 8 2
64 Gadolinium 2 8 18 25 9 2
65 Terbium 2 8 18 27 8 2
66 Dysprosium 2 8 18 28 8 2
67 Holmium 2 8 18 29 8 2
68 Erbium 2 8 18 30 8 2
69 Thulium 2 8 18 31 8 2
70 Ytterbium 2 8 18 32 8 2
71 Lutetium 2 8 18 32 9 2
72 Hafnium 2 8 18 32 10 2
73 Tantalum 2 8 18 32 11 2
74 Tungsten 2 8 18 32 12 2
75 Rhenium 2 8 18 32 13 2
76 Osmium 2 8 18 32 14 2
77 Iridium 2 8 18 32 15 2
78 Platinum 2 8 18 32 17 1
79 Gold 2 8 18 32 18 1
80 Mercury 2 8 18 32 18 2
81 Thallium 2 8 18 32 18 3
82 Lead 2 8 18 32 18 4
83 Bismuth 2 8 18 32 18 5
84 Polonium 2 8 18 32 18 6
85 Astatine 2 8 18 32 18 7
86 Radon 2 8 18 32 18 8
87 Francium 2 8 18 32 18 8 1
88 Radium 2 8 18 32 18 8 2
89 Actinium 2 8 18 32 18 9 2
90 Thorium 2 8 18 32 18 10 2
91 Protactinium 2 8 18 32 20 9 2
92 Uranium 2 8 18 32 21 9 2
93 Neptunium 2 8 18 32 22 9 2
94 Plutonium 2 8 18 32 24 8 2
95 Americium 2 8 18 32 25 8 2
96 Curium 2 8 18 32 25 9 2
97 Berkelium 2 8 18 32 27 8 2
98 Californium 2 8 18 32 28 8 2
99 Einsteinium 2 8 18 32 29 8 2
100 Fermium 2 8 18 32 30 8 2
101 Mendelevium 2 8 18 32 31 8 2
102 Nobelium 2 8 18 32 32 8 2
103 Lawrencium 2 8 18 32 32 9 2
104 Rutherfordium 2 8 18 32 32 10 2
105 Dubnium 2 8 18 32 32 11 2
106 Seaborgium 2 8 18 32 32 12 2
107 Bohrium 2 8 18 32 32 13 2
108 Hassium 2 8 18 32 32 14 2
109 Meitnerium 2 8 18 32 32 15 2
110 Darmstadtium 2 8 18 32 32 16 2
111 Roentgenium 2 8 18 32 32 17 2
112 Ununbium 2 8 18 32 32 18 2
113 Ununtrium 2 8 18 32 32 18 3
114 Ununquadium 2 8 18 32 32 18 4
115 Ununpentium 2 8 18 32 32 18 5
116 Ununhexium 2 8 18 32 32 18 6
117 Ununseptium 2 8 18 32 32 18 7
118 Ununoctium 2 8 18 32 32 18 8
Names are good to have too:
1 Hydrogen H
2 Helium He
3 Lithium Li
4 Beryllium Be
5 Boron B
6 Carbon C
7 Nitrogen N
8 Oxygen O
9 Fluorine F
10 Neon Ne
11 Sodium N
12 Magnesium Mg
13 Aluminum Al
14 Silicon Si
15 Phosphorus P
16 Sulfur S
17 Chlorine Cl
18 Argon Ar
19 Potassium K
20 Calcium Ca
21 Scandium Sc
22 Titanium Ti
23 Vanadium V
24 Chromium Cr
25 Manganese Mn
26 Iron Fe
27 Cobalt Co
28 Nickel Ni
29 Copper Cu
30 Zinc Zn
31 Gallium Ga
32 Germanium Ge
33 Arsenic As
34 Selenium Se
35 Bromine Br
36 Krypton Kr
37 Rubidium Rb
38 Strontium Sr
39 Yttrium Y
40 Zirconium Zr
41 Niobium Nb
42 Molybdenum Mo
43 Technetium Tc
44 Ruthenium Ru
45 Rhodium Rh
46 Palladium Pd
47 Silver Ag
48 Cadmium Cd
49 Indium In
50 Tin Sn
51 Antimony Sb
52 Tellurium Te
53 Iodine I
54 Xenon Xe
55 Cesium Cs
56 Barium Ba
57 Lanthanum La
58 Cerium Ce
59 Praseodymium Pr
60 Neodymium Nd
61 Promethium Pm
62 Samarium Sm
63 Europium Eu
64 Gadolinium Gd
65 Terbium Tb
66 Dysprosium Dy
67 Holmium Ho
68 Erbium Er
69 Thulium Tm
70 Ytterbium Yb
71 Lutetium Lu
72 Hafnium Hf
73 Tantalum Ta
74 Tungsten W
75 Rhenium Re
76 Osmium Os
77 Iridium Ir
78 Platinum Pt
79 Gold Au
80 Mercury Hg
81 Thallium Tl
82 Lead Pb
83 Bismuth Bi
84 Polonium Po
85 Astatine At
86 Radon Rn
Now that all the data files that I found are here, you can see what there is to design a bot from. Let me know where you know of something missing that needs to be added. If there is then it doesn't seem like there's much more needing to be accounted for. Most everything else like density seems calculable from that.
Might be easiest to start by designing is by the way memory Addressing would have to look. Data stored at each Address location is just the X,Y,Z motor settings so the rest after that point in the circuit is easy. Going the other way from Addressing is Sensory to neighbors in a 3D array system that does not need to calculate far away particles.
Later can tile interactions, like to make a vesicle one tile is repeated around the sphere that from there holds itself roughly in that shape depending on heat and what it is attracted to or repelled from in the various directions. There can sum up atom on up behavior of phospholipids and such in one bot. But first need the atom bots that make summing up molecule bot behavior easy. I have also connected one memory system so that Sensory addresses Data, that is Sensory for the next where it's in a sense summed up so that only necessary detail be sent on down the line to where eventually Data goes straight (with added entropy amount) to X,Y,Z motors (move pixel that amount on screen).
I like to keep things as simple as possible, so that what I propose is not expensive or hard to code. What makes it scientifically novel is the way it works, the confidence/behavior/intelligence algorithm and theory it is part of. Hard part is explaining what makes it all relatively straightforward. And explaining my sordid scientific past that includes still entertaining that taboo theory but I cannot help myself, it's too useful for helping to make predictions that lead to science that is not written anywhere yet. Besides, even university level intelligence science took a hammering by just having the "I" word in it. But in that area evolutionary theory that now exists can really only say that things change over time and along with it intelligence evolves and that's honestly about it, and I know from having been one that tried to explain origin of intelligence with existing theory with 0 success convincing someone of that. They wanted to know where love and emotions plus consciousness came from and are for, not be told "natural selection did it" for the 250'th time. ET simply cannot go there. Needed a theory that can predict a starting state of hermaphrodite which is somewhat contrary to what the prevailing wisdom saw as the starting point for reproduction on up to our level which means their models are boring and incomplete. And my wife was laughing to tears reading where males and females come from in a link above, so it obviously helps make science fun which is important due to getting people to read something scientific is not easy either. I'm glad there are exceptions here.
In edit (for anyone trying this) I have to add that later on energy levels will need to be added. Increasing the energy level of oxygen should shift the virtual orbits of electrons to bond to form O3 ozone, in the unenergized O2 environment.