View Full Version : Help with Creationist Computer Program and Natural Selection
Outblaze
August 15, 2003, 11:48 PM
A creationist at another board uses the below program he wrote to show the fallacy of Richard Hardison's computer program (and a similar one done by Dawkins) on how long it would take a monkey to randomly type "To be or not to be."
From what I can tell, the program doesn't preserve the gains or erradicate the mistakes, or "selects" for or against letters as they were randomly produced. Does anyone know java and/or why this program is bogus?
The fallacy here should be easy to see, but in case y'all don't, I wrote this program in java (I used "Methinks it is like a weasel" that Richard Dawkins uses instead of "To be or not to be"):
public class Methinks{
//The goal string (essential to the fallacy)
//I use "[" instead of space because it makes constructing
//the string easier ([ is right beside Z in the ascii table)
public String goal = "METHINKS[IT[IS[LIKE[A[WEASEL";
//The initial string (the unevolved organism)
public String begin;
//the number of mutations allowed per generation (unreasonably high
//so that the console screen doesn't fly by at unreadable speed)
public final int MUTNUM = 200000;
//Main method, calls evolve
public static void main(String[] args){
Methinks m = new Methinks();
m.evolve();
}//end main(String[])
//randomly creates the initial string, loops while that string doesn't
//equal the goal, calls mutate, prints the result of the 200,000th
//mutation, and prints the number of loops every 20th time (so when "20"
//is written to the screen, the organism has gone through 4,000,000
//mutations)
public void evolve(){
char c[] = new char[28];
int count = 0;
for(int i=0; i<c.length; i++){
int val = ((int)((Math.random())*27))+65;
c[i] = (char)val;
}//make the array to be the initial string
begin = new String(c);
System.out.println(begin);
while(!begin.equals(goal)){
begin = mutate(begin);
System.out.println(begin);
count++;
if(count%20 == 0)
System.out.println(count);
//print every 20th time
}//end while(no match)
System.out.println(count);
}//end evolve()
//creates an array of 200,000 numbers that represent which letter in
//the initial string will mutate, then iterates through that array.
//the line "if(chars[toChange[i]] != goal.charAt(toChange[i]))" is the
//fallacy. This checks to see if the letter about to be mutated is
//different from the corresponding letter in the goal. Leave that line
//in the code, and you can reach the goal very quickly. And why not?
//You're preventing mutations from going in the wrong direction. However,
//evolution should have no such built in knowledge of the goal. By
//taking this line out, the program fails miserably at producing the
//desired phrase. Only if we design in the goal can we reach it in
//any reasonable amount of time. Of course, the idea of randomly
//produced information is silly. You have to throw out billions of false
//answers before you find the "information". Even steps toward the goal,
//like the string "JEYUSW[QCNREAXPOIAEFWGDEBZEH", are not information, even
//though the "E"s are in the right places. The production is no more
//information than the first random string. That is the point of Behe's
//irreducible complexity. There is no stepping stone to information. Even
//though simpler flagellum exist, no one has even offered an explanation
//as to how that simple flagellum could have gradually become the complex
//without itself being weeded out by survival of the fittest. I've been
//letting the program run while I commented it, and after 500 loops of the
//while, which means 100,000,000 individual mutations, the string is no
//closer to Shakespeare than the original string.
//I'll let it keep going for fun.
public String mutate(String source){
char [] chars = source.toCharArray();
int [] toChange = new int[MUTNUM];
for(int i=0; i<MUTNUM; i++){
toChange[i] = (int)(Math.random()*chars.length);
//if(chars[toChange[i]] != goal.charAt(toChange[i]))
chars[toChange[i]] = ((char)(((int)((Math.random())*27))+65));
if(new String(chars).equals(goal)){
System.out.println("got match");
break;
}//check to see if the goal is reached after each mutation
//break out of "for" if so
}//for(do 200,000 mutations)
source = new String(chars);
return source;
}//end of mutate(String)
}//end of class Methinks
I'm sorry about the formatting. vBulletin doesn't like whitespace.
after running the program for sometime, he says:
Just passed 4 billion mutations. At near constant mutation that's 126.8 years. Still no "Methinks it is like a weasel." Seeing as how there are 1.197x10^40th possible combinations, I don't think matter+chance+time is that impressive. Without programming in the goal, we're no closer to information than when we started. I have seen "lake" and "due," but nothing that impressed me. You see, the fact that we do see so many of these complex systems (many much more complex than Shakespeare, like the clotting cascade) with no stepping stones to their function, makes me think that intelligent design is much more plausible. It is because the naturalists refuse to "let a divine foot in the door" that they are stuck clinging to such a silly explanation for complexity.
I'm going to reclaim my CPU now
RufusAtticus
August 16, 2003, 01:50 AM
It is never a good practice to simulate something without understanding it. Can you catch the error in this velocity simulation?
float NextPos1D(float fPos, float fVel, float fDeltaTime)
{ return fPos+abs(fVel*fDeltaTime); }
In this example, the programmer doesn't understand what he is trying to simulate. By removing "if(chars[toChange[i]] != goal.charAt(toChange[i]))" he has actually removed selection and thus adaptation from the population. Of course, without selection, the goal will never be reached from a random beginning. This is no different than testing conservation through culling, but leaving the culling out of the model, and then when it doesn't work conclude that culling is ineffective in managing animal populations.
Of course, one can make this program better by considering a population of asexual, haploid strings. More on that later.
From his code:
//the line "if(chars[toChange[i]] != goal.charAt(toChange[i]))" is the
//fallacy. This checks to see if the letter about to be mutated is
//different from the corresponding letter in the goal. Leave that line
//in the code, and you can reach the goal very quickly. And why not?
//You're preventing mutations from going in the wrong direction. However,
//evolution should have no such built in knowledge of the goal. By
//taking this line out, the program fails miserably at producing the
//desired phrase.
This is the error in his logic. That "fallacy" line isn't about preventing mutations from going in the wrong way. It is about preventing substitutions from going in the wrong way. Evolution does in fact have a feature that does this: selection. We know the simulation is modeling substitution and not mutation because it only considers one individual, which represents the archetypical genotype in the population. All the actual individual interactions that happen in the real population are simply summarized by the removed line. Mutation and substitution are two different processes. Mutations happen when errors occur in DNA replication. It increases variation in the population. Substitutions occur when a previously dominant allele is replaced by another allele. Let's say we have two alleles A1 and A2. A mutation occurs when an error caused an A1 gene to become and A2 gene. A substitution occurs when A1 goes extinct in favor of the newer A2. (Of course, substitution can happen without total extinction of A1.)
RufusAtticus
August 16, 2003, 05:08 AM
Originally posted by me:
Of course, one can make this program better by considering a population of asexual, haploid strings. More on that later.
It's now later. Here is the C++ code of the Weasel model I wrote over the last few hours. The assumptions of the model are as follows.
Discrete, non-overlapping generations.
Individuals have 28 characters, each has 27 possible states.
Individuals reproduce asexually, by imperfect cloning.
Each character has a probability of 0.02 of being randomized. The actual probability of mutation is then 0.0192. If M is the number of mutations in a clone then M~Binomial(0.0192, 28).
There is one optimal set of characters: "METHINKS[IT[IS[LIKE[A[WEASEL".
Each character state has a fitness of 1.2 if it is agrees with optimal state, and a fitness of 1.0 if it does not.
Fitnesses are multiplicative, i.e. the fitness of an in individual is (1.2)^n, where n is the number of characters that agree with the optimal.
The number of offspring an individual leaves is drawn from a Poisson distribution with a mean of N*f(i)/sum(f), where f(i) is the raw fitness of the individual, sum(f) is the sum of all fitnesses in the population and N is the expected population size.
There is no death except for population turn over.
There is no migration, age structure, or other potential evolutionary factors not mentioned here.
/* WEASEL.CPP v1.0 ~ AN EVOLVING STRING SIMULATION
Copyright (c) 2003 Reed A. Cartwright, all rights reserved
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The names of its contributors may not be used to endorse or promote
products derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
CONTACT INFOMATION
Reed A. Cartwright
Department of Genetics
University of Georgia
Athens, GA 30602-7223
Email: rac@uga.edu
Http: http://www.rufus.ws
*/
#include <time.h>
#include <stdlib.h>
#include <math.h>
#include <float.h>
#include <vector>
#include <conio.h>
using namespace std;
// Any random string will do but for historical reasons we'll use this one.
const char g_szGoal[29] = "METHINKS[IT[IS[LIKE[A[WEASEL";
const int g_nGoalSize = 28;
double g_dMu = 0.02; // Mutation rate, includes the possibility of c->c
const int g_nPopSize = 10000;
// I prefer to use Mersenne Twister instead of C's rand;
// however, for simplicity I'll ignore that habit.
double randDouble() { return (float)rand()/(float)RAND_MAX; }
unsigned int randPoisson(double dMean)
{
dMean = exp(-dMean);
double p = randDouble();
unsigned int r=0u;
while (p >= dMean)
{
p *= randDouble();
r++;
}
return r;
}
// Class that represents an individual in the population
class Ind
{
public:
char m_szData[29]; // The genotype/phenotype of the indiviudal
double m_dFit; // The fitness of the individual
// Construct a randomized Ind
Ind()
{
// Create random individual drawn from A-[
for(int i=0;i<g_nGoalSize;++i)
m_szData[i] = (char)('A' + rand()%27);
m_szData[g_nGoalSize] = '\0';
// Calculate its fitness
m_dFit = Fitness();
}
// Construct a copy of an Ind
Ind(const Ind& ind)
{
strcpy(m_szData, ind.m_szData);
m_dFit = ind.m_dFit;
}
// Empty destructor
virtual ~Ind() { }
// Mutate Ind
void Mutate()
{
// Brute force approach.
// Can be made more effecient by using randPoisson
// The number of mutations per individual is distributed
// as M~Binomial(g_dMu, g_nGoalSize)
for(int i=0;i<g_nGoalSize;++i)
{
if(randDouble() <= g_dMu)
m_szData[i] = (char)('A' + rand()%27);
}
// Calculate fitness
m_dFit = Fitness();
}
// Create an imperfect clone of Ind
Ind Clone()
{
Ind ret(*this); // Copy Data
ret.Mutate(); // Mutate
return ret;
}
// Calculate the fitness of Ind
double Fitness() const
{
// Multiplicative fitness
// fitness = (1.2)^n, where n is the number of matching characters
double d=1.0;
for(int i=0;i<g_nGoalSize;++i)
{
if(m_szData[i] == g_szGoal[i])
d*=1.2;
}
return d;
}
};
// Use a simple vector to hold a population of Inds
typedef vector<Ind> Pop;
//Produce a new generation from an existing one
void Breed(Pop& rPopP, Pop& rPopO)
{
rPopO.clear();
// To calculate relative fitnesses we need the sum of all fitnesses
double dSumFit = 0.0;
for(Pop::iterator it = rPopP.begin(); it != rPopP.end(); ++it)
dSumFit += it->m_dFit;
for(Pop::iterator it = rPopP.begin(); it != rPopP.end(); ++it)
{
// Scale fitness and use it to draw the number of offspring for the next generation
// Expected fecundity is (relitive fitness)*(expected pop size)
unsigned int uFecundity = randPoisson(it->m_dFit/dSumFit*g_nPopSize);
while(uFecundity--)
// Give the offspring population clones based on fecundity
rPopO.push_back(it->Clone());
}
}
// Calculate the best individual and return its fitness and genotype
const char* BestInd(const Pop& rPop, double& dFit)
{
double dMax = -1.0;
const char* szRet = NULL;
for(Pop::const_iterator it = rPop.begin(); it != rPop.end(); ++it)
{
if(it->m_dFit > dMax)
{
dMax = it->m_dFit;
szRet = it->m_szData;
}
}
dFit = dMax;
return szRet;
}
int main()
{
//Seed rand
srand(time(NULL));
Pop popP(g_nPopSize); // Parant Pop
Pop popO; // Offspring Pop
const char* szData = NULL;
double dMax = 0.0;
int nGen=-1; // generation
printf("Gen PopSize BestFit BestInd\n");
while(nGen++ < 500)
{
// Find best individual and report it's fitness and phenotype
szData = BestInd(popP, dMax);
printf("%d: %d %.2f %s\n",nGen, popP.size(), dMax, szData);
// Construct next generation
Breed(popP, popO);
// Swap population buffers
swap(popP, popO);
}
return 0;
}
Results for the first 250 generations.
Gen PopSize BestFit BestInd
0: 10000 1.20 OQKSQT[BOQ[GXUBD[TXPODZEUHWO
1: 10028 1.44 OQKSIZ[BOQ[GXUBD[TXPODZEUHUO
2: 10030 1.73 OQKSQN[BOQ[GXUBD[TZPADZEUHWO
3: 9898 1.73 OQKSQT[BOQ[GXUBD[TX[ODZEUSWO
4: 10152 1.73 OQKSQT[BOQ[GXUBD[TXPADZEUSWO
5: 10025 2.07 OQTSQT[BOQ[[LUBL[TXPODZEUHWO
6: 10058 2.07 OQTSQT[BOQ[[LUBL[TXPODZEUHWO
7: 9851 2.07 OQTSQA[BOQ[[LUBL[TXPODZEUHWO
8: 9943 2.07 YQJSQT[BOQ[GIUBD[OXPO[ZEAHWO
9: 10025 2.49 GQKSFTKBOQ[GXKBD[TX[O[ZEUSWO
10: 9784 2.49 GQKSFTKBOQ[GXKBD[TX[O[ZEUSWO
11: 10080 2.49 GQKSFTKBOQ[GXKBD[TX[O[ZEUSWO
12: 9965 2.99 OTKYMT[BOI[EIOMDITN[ODZEUHEO
13: 9978 2.99 OTKYMT[BOI[EIOMDITN[ODZEUHEO
14: 9985 2.99 GQKSFTKBOQ[GXKBD[TE[O[ZEUSWO
15: 10096 2.99 GQKSFTKBOQ[FXKBD[TE[O[ZEUSWO
16: 10105 3.58 MQNSJTQB[QTGXU[LITXPODZEIHWO
17: 9836 4.30 MQNSJTQB[QTGXU[LITX[ODZEIHWO
18: 10093 4.30 MQNSKTQB[QTGXU[LITX[ODZEIHWO
19: 9953 4.30 MQNSKTQB[QTGXU[LITX[ODZEIHWO
20: 9942 4.30 MDNSKTQB[QTGXU[LITX[ODZEIHWO
21: 10046 4.30 ZQKSFTKB[QP[XKMD[TX[A[ZEUSWO
22: 9952 5.16 MQ[SJTOE[CT[XU[LITXPODZEISWO
23: 9981 5.16 MQ[SJTOE[CT[XU[LITXPODZEISWO
24: 9956 5.16 MQ[SJTOE[CT[XU[LITXPODZEISWO
25: 10139 5.16 MQ[SJTOE[CT[XU[LITXPODZEISWO
26: 9951 5.16 MQKSFTKSOQPG[KBDITX[A[ZEUSLO
27: 9860 6.19 MQKSFTKSOQTG[KBDITX[A[ZEUSLO
28: 10136 6.19 MQKSFTKSOQTG[KBDITX[A[ZEUSLO
29: 9901 6.19 MQKSZTKSOQTG[KBDITX[A[ZEUSLO
30: 9768 6.19 MQKSZTKSOQTG[KBDITV[A[ZEUSLO
31: 10000 7.43 MQKSFTKSOQTG[KBDITX[A[ZEUSLL
32: 9965 7.43 MQKSFTKSOQTG[KBDITX[A[ZEUSLL
33: 9821 7.43 MQKSFTKSOQTG[KBDITX[A[ZEUSLL
34: 9896 7.43 MQKSFTKSOQTG[KBDITX[A[ZEUSLL
35: 9971 7.43 MQKSFTKSOQTG[KBDITX[A[ZEUSLL
36: 9994 8.92 MQKHFTKSOQTG[YGLITX[A[AEUSLE
37: 9904 8.92 MQKHFTKSOQTG[YGLITX[A[AEUSLE
38: 9971 8.92 MQKHFTKSOQTG[YGLITX[A[AEUSLE
39: 10018 8.92 MQKKFTKSOZTH[K[DITXXA[ZEASLL
40: 10043 8.92 MQKKFTKSOZTN[K[DITXXA[ZEASLL
41: 9959 10.70 MTKHFTKSOQTG[YGLITX[A[AEASLE
42: 10188 10.70 MTKHFTKSOQTG[YGLITX[A[AEASLE
43: 9965 10.70 MTKHFTKSOQTG[YGLITX[A[AEASLE
44: 10039 10.70 MTKHFTKSOQTG[YGLITX[A[AEASLE
45: 10011 10.70 MTKHFTKSOQTG[YGLITX[A[AEASLE
46: 9973 10.70 MTKHFTKSOQTG[YGLITX[A[AEASLE
47: 9979 10.70 MQKHFTKSOQTG[K[MITX[A[AEASL[
48: 10017 12.84 MQNXITQS[QT[XY[LITX[KDWEIHEL
49: 10173 12.84 SQTHITOE[VT[IS[LITXPOMZEISE[
50: 9888 12.84 SQTHITOE[VT[IS[LITXPOMZEISE[
51: 9961 12.84 MTTHATKSOQTG[YGLITX[A[AEASLE
52: 10028 12.84 MQKHRTKSLJT[[K[MITX[A[WEUSL[
53: 9960 12.84 MEKHFTKSOFTF[YGLITX[A[AEASJE
54: 10122 12.84 MEKHFTKSOFTF[YGLITX[A[AEASJE
55: 9981 12.84 MEKHFTKSOFTF[YGLITX[A[AEASJE
56: 9838 12.84 MQTHRTKSONTG[KGMITL[A[AEASLL
57: 9868 12.84 MQTHRTKSONTG[KGMITL[A[AEASLL
58: 10005 15.41 MEKHFWKSOFTF[SGLITX[A[AEASJE
59: 10134 15.41 MEKHFWKSOFTF[SGLITX[A[AEASJE
60: 9920 15.41 MEKHFWKSOFTF[SGLITX[A[AEASJE
61: 10049 15.41 MQTHRTKSONTG[KGLITL[A[AEASLL
62: 9921 15.41 MQTHRTKSONTG[KGLITL[A[AEASLL
63: 9860 15.41 MSKHRTKSOET[[YXLITK[A[KEASEE
64: 9851 15.41 MQTHRTKSONTG[KGMITL[A[AEASEL
65: 9965 15.41 MQTHRTKSONTG[QGMITL[A[AEASEL
66: 10069 18.49 MENSITKU[OT[IB[LIRE[U[ZEIO[L
67: 9807 18.49 MEKHFWKSORT[[SGLITX[A[AEASKE
68: 9958 18.49 MEKHFWKSORT[[SGLITX[A[AEASKE
69: 10020 18.49 MEZHFWKSORT[[SGLITX[A[AEASKE
70: 10129 18.49 MEKHIWNSOWTF[SDLITG[A[AEASJL
71: 10069 22.19 METHFWKS[QTF[SGLITX[A[AEASLE
72: 9948 18.49 MEKHIWNSOWTF[SDLITG[A[AEASJL
73: 10082 22.19 MEKHIWNSOITF[SDLITG[A[AEASJL
74: 10154 22.19 MQTHTTKSONT[[QGLITL[A[OEASEL
75: 10042 22.19 MQTHTTKSONT[[QGLITL[A[OEASEL
76: 9846 22.19 MQTHTTKSONT[[QGLITL[A[OEASEL
77: 9898 22.19 MQTHTTKSONT[[QGLITL[A[OEASEL
78: 9964 26.62 MEKHIWNSOITF[S[LITG[A[AEASJL
79: 10157 26.62 MQTHITKSONT[[QGLIBL[A[OEASEL
80: 10020 26.62 MEKHIWNSOITF[S[LITG[A[AEASJL
81: 9974 22.19 MEKHBTKR[MTG[GVLIKE[A[WEISLL
82: 10140 22.19 MEKHBTKR[MTG[GVLIKE[A[WEISLL
83: 9931 26.62 MEKHITKR[MTG[GVLIKE[A[WEISLL
84: 10134 26.62 MEJHIWKSOFTO[SGLITL[A[WEASEE
85: 10003 26.62 MEKHINKS[ITBJSGLITX[SQAEASEE
86: 10229 26.62 MQTHTTKS[NT[[QGLIAL[A[OEASEL
87: 9905 26.62 MQTHTTKS[NT[[QGLIAL[A[OEASEL
88: 9779 26.62 MQTHTTKS[NT[[QGLITL[A[OEASEL
89: 10159 26.62 MQTHTTKS[NT[[QGLITL[A[OEASEL
90: 10037 26.62 MQTHTTKS[NT[[QGLITL[A[OEASEL
91: 10127 26.62 MQTHTTKS[NT[[QGLITL[A[OEASEL
92: 10016 31.95 METHINKS[ITBJSGLITX[SQAEASEJ
93: 9883 31.95 METHINKS[ITBJSGLITX[SQAEASEJ
94: 10168 31.95 MEKHIWKSOITF[S[LITG[A[IEASJL
95: 9967 31.95 MEKHIWKSOITF[S[LITG[A[IEASJL
96: 10088 31.95 MEUHIWNSOITFJS[LITE[A[IEASJL
97: 9841 31.95 MQTGD[KS[JT[SJ[LIBE[A[FEASEL
98: 10055 31.95 MQTGD[KS[JT[SJ[LIBE[A[FEASEL
99: 9941 31.95 MQTGD[KS[JT[SJ[LIBE[A[FEASEL
100: 9997 38.34 MEXHINKS[ITBISELITX[AQCEASEJ
101: 9941 38.34 MEXHINKS[ITBISELITX[AQCEASEJ
102: 10010 38.34 MEXHINKS[ITBISELITX[AQCEASEJ
103: 9912 38.34 MEKHEWKS[IT[[S[LITE[A[IENSML
104: 10130 38.34 METHINKS[ITKJSGLIKX[SQAEASEJ
105: 10217 38.34 METHINKS[ITKJSGLIKX[SQAEASEJ
106: 9987 38.34 METHEWKSZIT[[S[LITE[A[KENSML
107: 9986 38.34 MQTGD[KS[JT[SS[LIBE[A[JEASEL
108: 10027 38.34 MQTGC[KS[JT[SJ[LIKE[A[DEASEL
109: 10054 46.01 METZILKS[IT[IB[LZOP[A[VEASEL
110: 10042 46.01 MEXHINKS[IT[ISELITX[AQCEASEJ
111: 10001 46.01 MEXHINKS[ITBISOLITX[AQWEASEJ
112: 10032 46.01 MEXHINKS[ITEISOLITX[AQWEASEJ
113: 10022 46.01 MEXHINKS[ITEISOLITX[AQWEASEJ
114: 9986 46.01 MEDHEWKSZIT[[S[LITE[A[OEASEL
115: 9984 46.01 MEDHEWKSZIT[[S[LITE[A[OEASEL
116: 9833 46.01 MEDHEWKSZIT[[S[LITE[A[OEASEL
117: 10046 46.01 MEDHEWKSZIT[[S[LITE[A[OEASEL
118: 10065 46.01 METHINKS[ITKJSGLIKX[AQAEASEJ
119: 10020 46.01 METHINKS[ITKJSGLIKX[AQAEASEJ
120: 9984 46.01 METHINKS[ITKJSGLIKX[AQAEASEJ
121: 9771 46.01 METHINKS[ITKJSGLIKX[AQAEASEJ
122: 9892 55.21 MEXHINKS[IT[ISELIBX[AQCEASEL
123: 9938 46.01 METHINKS[ITKJSGLIKX[AQAEASEJ
124: 10004 55.21 MEXHINKS[ITEISOLITX[AQWEASEL
125: 9966 55.21 MEXHINKS[ITEISOLITX[AQWEASEL
126: 9808 55.21 METHINKS[ITKJSGLIKX[AQEEASEL
127: 10096 55.21 METHINKS[ITKISGLIKX[AFAEASEJ
128: 9967 55.21 MEXHINKS[ITEISOLITE[AAWEASEJ
129: 9913 55.21 METHINKS[ITKJSGLIKX[AQWEASEB
130: 9958 55.21 METHINKS[ITKJSGLIKX[AQWEASEB
131: 10167 55.21 METHINKS[ITKJSGLIKX[AQWEASEB
132: 10028 55.21 METHINKS[ITKJSGLIKX[AQWEASEB
133: 10009 66.25 MEBHINKS[IT[ISELITP[AQWEASEL
134: 9938 55.21 METHINKS[ITKJSGLIKX[AQWEASEB
135: 9963 66.25 MEXHINKS[IT[ISOLIZX[AQWEASEL
136: 10091 66.25 MEXHINKS[IT[ISOLIZX[AQWEASEL
137: 10026 66.25 METHINKS[ITEISOLIZX[AQWEASEL
138: 10087 66.25 METHINKS[ITEISOLIZX[AQWEASEL
139: 9968 66.25 MEJHINKS[IT[ISELITP[A[[EASEL
140: 10011 66.25 MEJHINKS[IT[ISELITP[A[[EASEL
141: 9918 66.25 MEXHINKS[ITJIS[LIKE[AQIEASEJ
142: 10050 66.25 MEXHINKS[ITJIS[LIKE[AQIEASEJ
143: 10091 66.25 MEXHINKS[ITJIS[LIKE[AQIEASEJ
144: 10066 66.25 MEXHINKS[ITJIS[LIKE[AQIEASEJ
145: 10095 66.25 MEBAINKS[IT[IS[LITE[AQ[EASEL
146: 9991 66.25 MEKHINKS[ITEISULILX[A[WEASEL
147: 10031 79.50 MEXHINKS[ITJIS[LIKE[AQIEASEL
148: 10002 79.50 MEXHINKS[ITJIS[LIKE[AQIEASEL
149: 9940 79.50 MEXHINKS[ITJIS[LIKE[AQIEASEL
150: 10067 79.50 MEXHINKS[ITJIS[LIKE[AQIEASEL
151: 10124 79.50 MEXHINKS[ITJIS[LIKE[AQIEASEL
152: 10052 66.25 METHINKS[IT[ZS[LIKX[AQZEASEQ
153: 10030 79.50 MEXHINKS[IT[IS[LIKJ[A[CEASEM
154: 10127 79.50 MEXHINKS[IT[IS[LIKJ[A[CEASEM
155: 10079 79.50 MEXHINKS[IT[IS[LIKJ[A[CEASEM
156: 10043 79.50 MEXHINKS[IT[IS[LIKJ[A[CEASEM
157: 10142 79.50 MEXHINKS[IT[IS[LIKJ[A[CEASEU
158: 10040 79.50 METHINKS[ITEIJELIKE[A[WEASEE
159: 9952 79.50 METHINKS[ITEIJELIKE[A[WEASEE
160: 9874 95.40 MEXHINKS[IT[IS[LIKE[A[CEASEM
161: 10155 95.40 MEXHINKS[IT[IS[LIKE[A[CEASEM
162: 9915 95.40 MEXHINKS[IT[IS[LIKE[A[CEASEM
163: 10090 95.40 MEXHINKS[IT[IS[LIKJ[A[CEASEL
164: 10026 95.40 MEXHINKS[IT[IS[LIKE[A[CEASEH
165: 10029 95.40 MEXHINKS[IT[IS[LIKE[A[CEASEH
166: 10091 95.40 MEXHINKS[IT[IS[LIKE[A[CEASEH
167: 10003 79.50 METHINKS[ITRISRLIKX[A[WEASEJ
168: 10092 79.50 METHINKS[ITRISRLITX[A[WEASEL
169: 10010 95.40 MEAHINKS[IT[IS[LIKJ[A[CEASEL
170: 10006 95.40 METHINKS[IT[IS[LIKJ[A[CEASEJ
171: 10085 95.40 METHINKS[IT[IS[LIKJ[A[CEASEJ
172: 9884 95.40 METHINKS[IT[IS[LIKJ[A[CEASEH
173: 9818 95.40 MEXHINKS[IT[IS[LIKE[A[CEASEH
174: 9980 95.40 MEXHINKS[IT[IS[LIKE[A[CEASEH
175: 9871 95.40 METHINKS[ITEIJ[LIKE[A[WEASEE
176: 10187 95.40 METHINKS[ITEIJ[LIKE[A[WEASEE
177: 10088 95.40 METHINKS[ITOIJ[LIKE[A[WEASEE
178: 10002 95.40 METHINKS[ITOIJ[LIKE[A[WEASEE
179: 9734 95.40 METHINKS[ITBIJ[LIKE[A[WEASEE
180: 10259 95.40 METHINKS[ITEIJ[LIKE[A[WEASEE
181: 10015 95.40 METHINKS[ITEIS[LIKE[A[WMASEE
182: 10087 95.40 METHINKS[ITEIS[LIKE[A[WMASEE
183: 10145 95.40 METHINKS[ITEIJ[LIKE[A[WEASEE
184: 9915 95.40 METHINKS[ITEIJ[LIKE[A[WEASEE
185: 10260 95.40 METHINKS[ITEIJ[LIKE[A[WEASEE
186: 10127 95.40 METHINKS[ITEIJ[LIKE[A[WEASEE
187: 9863 95.40 METHINKS[ITEIJ[LIKE[A[WEASEE
188: 10060 95.40 METHINKS[ITEIJ[LIKE[A[WEASEE
189: 9865 114.48 MEXHINKS[IT[IS[LIKE[A[WEASEH
190: 10058 95.40 METHINKS[ITEIJ[LIKE[A[WEASEE
191: 9983 95.40 METHINKS[ITEIJ[LIKE[A[WEASEE
192: 10054 114.48 METHINKS[IT[IS[LIKP[A[WEASEM
193: 9879 95.40 METHINKS[ITEIJ[LIKE[A[WEASEE
194: 9914 114.48 MEXHINKS[IT[IS[LIKJ[A[WEASEL
195: 10139 114.48 MEXHINKS[IT[IS[LIKJ[A[WEASEL
196: 10090 95.40 METHINKS[ITEIJ[LIKE[A[WEASEE
197: 9889 95.40 METHINKS[ITEIJ[LIKE[A[WEASEE
198: 9988 114.48 METHINKS[IT[IS[LIKJ[A[WEASEM
199: 10107 114.48 METHINKS[IT[IS[LIKJ[A[WEASEM
200: 10048 114.48 METHINKS[IT[IS[LIOE[A[TEASEL
201: 10090 114.48 METHINKS[IT[IS[LIOE[A[TEASEL
202: 9894 114.48 METHINKS[IT[IS[LIOE[A[TEASEL
203: 9974 114.48 METHINKS[IT[IS[LIOE[A[TEASEL
204: 10027 114.48 MEIHINKS[IT[IS[LIKE[A[SEASEL
205: 10095 114.48 METHINKS[IT[IS[LIZE[A[TEASEL
206: 9905 114.48 MEQHINKS[IT[IS[LIOE[A[WEASEL
207: 9928 114.48 MEQHINKS[IT[IS[LIOE[A[WEASEL
208: 9937 114.48 MEQHINKS[IT[IS[LIOE[A[WEASEL
209: 10001 114.48 MEQHINKS[IT[IS[LIOE[A[WEASEL
210: 10029 114.48 MEQHINKS[IT[IS[LIOE[A[WEASEL
211: 10131 114.48 MEQHINKS[IT[IS[LIOE[A[WEASEL
212: 9998 114.48 MEQHINKS[IT[IS[LIOE[A[WEASEL
213: 9974 137.37 MEXHINKS[IT[IS[LIKE[A[WEASEL
214: 10047 137.37 MEXHINKS[IT[IS[LIKE[A[WEASEL
215: 10071 137.37 MEXHINKS[IT[IS[LIKE[A[WEASEL
216: 10038 137.37 MEXHINKS[IT[IS[LIKE[A[WEASEL
217: 10050 137.37 MEXHINKS[IT[IS[LIKE[A[WEASEL
218: 9981 137.37 MEXHINKS[IT[IS[LIKE[A[WEASEL
219: 9925 137.37 MEXHINKS[IT[IS[LIKE[A[WEASEL
220: 10096 137.37 MEXHINKS[IT[IS[LIKE[A[WEASEL
221: 9935 137.37 MEXHINKS[IT[IS[LIKE[A[WEASEL
222: 10015 137.37 MEXHINKS[IT[IS[LIKE[A[WEASEL
223: 10060 137.37 MEXHINKS[IT[IS[LIKE[A[WEASEL
224: 9954 137.37 MEXHINKS[IT[IS[LIKE[A[WEASEL
225: 9936 137.37 MEHHINKS[IT[IS[LIKE[A[WEASEL
226: 9921 137.37 MEXHINKS[IT[IS[LIKE[A[WEASEL
227: 9939 137.37 MEXHINKS[IT[IS[LIKE[A[WEASEL
228: 9796 137.37 MEXHINKS[IT[IS[LIKE[A[WEASEL
229: 10156 137.37 MEXHINKS[IT[IS[LIKE[A[WEASEL
230: 9929 137.37 MEXHINKS[IT[IS[LIKE[A[WEASEL
231: 9936 137.37 MEXHINKS[IT[IS[LIKE[A[WEASEL
232: 9982 137.37 MEXHINKS[IT[IS[LIKE[A[WEASEL
233: 9909 137.37 MEXHINKS[IT[IS[LIKE[A[WEASEL
234: 10079 137.37 MEXHINKS[IT[IS[LIKE[A[WEASEL
235: 9992 137.37 METHINKS[IT[IS[LIKE[A[TEASEL
236: 10040 137.37 METHINKS[IT[IS[LIKE[A[TEASEL
237: 9936 137.37 METHINKS[IT[IS[LIKE[A[TEASEL
238: 10049 164.84 METHINKS[IT[IS[LIKE[A[WEASEL
239: 9920 164.84 METHINKS[IT[IS[LIKE[A[WEASEL
240: 10035 164.84 METHINKS[IT[IS[LIKE[A[WEASEL
241: 9989 164.84 METHINKS[IT[IS[LIKE[A[WEASEL
242: 10107 164.84 METHINKS[IT[IS[LIKE[A[WEASEL
243: 10109 164.84 METHINKS[IT[IS[LIKE[A[WEASEL
244: 9815 164.84 METHINKS[IT[IS[LIKE[A[WEASEL
245: 9855 164.84 METHINKS[IT[IS[LIKE[A[WEASEL
246: 10144 164.84 METHINKS[IT[IS[LIKE[A[WEASEL
247: 10057 164.84 METHINKS[IT[IS[LIKE[A[WEASEL
248: 9815 164.84 METHINKS[IT[IS[LIKE[A[WEASEL
249: 10003 164.84 METHINKS[IT[IS[LIKE[A[WEASEL
250: 10048 164.84 METHINKS[IT[IS[LIKE[A[WEASEL
QED, that that creationist is full of crap.
RufusAtticus
August 16, 2003, 05:24 AM
BTW: Where is the original thread?
GunnerJ
August 16, 2003, 08:11 AM
Christ, I can't believe I read through his source code tryign to find his error when all I had to do was read the comments where he "exposes" the "fallacy." Yeah, dumbass, if you remove selection, evolution isn't going to happen; that was Dawkin's whole friggin' point! Your friend's comment about how it's unreasonable for evolution to keep mutations that vary from the goal from perpetuating is priceless.
This is the first example of a creationist straw man I've seen in Java, it may very well be the first creationist straw man in any programming language ever! We're witnessing history here, folks.
Peter Kirby
August 16, 2003, 08:53 AM
RufusAtticus did a better job. In 1998, I wrote a similar program, with the rule that when adjacent letters are found in sequential order, they are treated as a unit in further shufflings.
NLMASHPRZJTWCDBXFUEQGOYIKV
NSYAQUTEILMRHKOVWBCDPXFGJZ
XAEZJTVWNISPLMKBCDUQRYFGHO
PAQRFGHSNLMUOZKXITYJEBCDVW
BCDXQRLMFGHTPZUAIYEKNOVWSJ
VWSZXTAYJKBCDFGHNOEIUQRPLM
AVWEFGHBCDYJKLMIXTZQRNOSUP
NOQRSEFGHUYZVWXABCDPJKLMIT
IVWXNOQRSYZABCDJKLMTEFGHUP
IABCDTYZVWXNOPQRSEFGHUJKLM
IEFGHYZVWXABCDUTNOPQRSJKLM
YZJKLMABCDUTVWXEFGHNOPQRSI
ABCDNOPQRSYZTEFGHIUVWXJKLM
EFGHINOPQRSJKLMABCDYZTUVWX
NOPQRSYZABCDTUVWXEFGHIJKLM
NOPQRSYZEFGHIJKLMTUVWXABCD
TUVWXABCDNOPQRSYZEFGHIJKLM
TUVWXEFGHIJKLMABCDNOPQRSYZ
YZEFGHIJKLMABCDNOPQRSTUVWX
YZNOPQRSTUVWXEFGHIJKLMABCD
YZEFGHIJKLMABCDNOPQRSTUVWX
NOPQRSTUVWXABCDYZEFGHIJKLM
ABCDEFGHIJKLMNOPQRSTUVWXYZ
23 iterations.
DWOGPYTLHSINCAVBXJQFZKRUEM
CPFTQJNADKLHXGWURVBYEMSZOI
TVBZEKLYGMQHXIFARSJWDCOUPN
ZMDGRSNWEFHUTBVJQYCIAXKLOP
RSMUYXIVHNQWCBJZKLOPDTEFGA
YBQIHOPEFGKLVJCMWUNDRSZTAX
XJICATQEFGBUOPWMNDVKLRSHYZ
AVBEFGXUJYZMNHQDRSTIWOPCKL
UDKLHXVABCJIOPWMNYZQRSTEFG
MNVOPABCQRSTKLHDIUXWYZEFGJ
KLQRSTJABCUMNDVHIXEFGWYZOP
QRSTEFGMNKLYZUWXVOPHIJABCD
EFGKLVOPQRSTMNWXYZHIJABCDU
ABCDUWXYZEFGOPQRSTMNKLVHIJ
UABCDOPQRSTVHIJKLMNEFGWXYZ
EFGUABCDOPQRSTHIJKLMNVWXYZ
EFGUOPQRSTABCDHIJKLMNVWXYZ
EFGUHIJKLMNABCDOPQRSTVWXYZ
VWXYZUABCDEFGHIJKLMNOPQRST
VWXYZABCDEFGHIJKLMNOPQRSTU
ABCDEFGHIJKLMNOPQRSTUVWXYZ
21 iterations.
best,
Peter Kirby
HRG
August 16, 2003, 10:20 AM
Originally posted by Outblaze
[B]A creationist at another board uses the below program he wrote to show the fallacy of Richard Hardison's computer program (and a similar one done by Dawkins) on how long it would take a monkey to randomly type "To be or not to be."
From what I can tell, the program doesn't preserve the gains or erradicate the mistakes, or "selects" for or against letters as they were randomly produced. Does anyone know java and/or why this program is bogus?
See the remarks which have already been made.
Taking selection out of the Weasel program is like taking the -G * m1 *m2/r^2 term (gravitational attraction) out of a simulation of planetary orbits, followed by surprise that the planets do not move in ellipses! :banghead:
Regards,
HRG.
Happy Wonderer
August 16, 2003, 11:34 AM
It is actually a wonderful example of why you can't use probability arguments when attacking evolution. Evolution is not a random walk through the space of all possible creatures, yet probability arguments assume that any particular configuration is equally likely.
hw
Outblaze
August 16, 2003, 12:23 PM
Originally posted by RufusAtticus
BTW: Where is the original thread?
The thread is labeled "unequivocal refutation of the idiotic theory that is evolution. fin." and is at a Muslim board (ummah.com) under the "General" Forum, but requires registration to view and post.
http://www.ummah.com/forum/showthread.php?threadid=21172
Tks much for the help. I suspected it was a bogus program, but didn't know enough to fully understand why/how.
RufusAtticus
August 16, 2003, 06:08 PM
I don't know if I want to register, so keep me updated on how the thread goes.
RufusAtticus
August 16, 2003, 09:50 PM
Well, I decided to register and post my response. Let's see how it goes.
RufusAtticus
August 16, 2003, 09:58 PM
Originally posted by RufusAtticus
Well, I decided to register and post my response. Let's see how it goes.
Odd, my posts keep getting removed from the board about a minute or so after their up. If a mod is removing them, they sure aren't telling me about it.
RufusAtticus
August 16, 2003, 10:02 PM
Apparantly, a mod has removed my code because it is not for general consumption. Yet the other code remains.
RufusAtticus
August 16, 2003, 10:48 PM
I've now been allowed to post my rebuttal in their "Digital Highway" forum. The Power of Evolution (http://www.ummah.com/forum/showthread.php?s=&threadid=21260).
Outblaze
August 17, 2003, 12:04 AM
And his response is to invoke Behe and gang saying that since we have no knowledge of the goal, selection cannot overcome initial complexity citing the clotting cascade in biological systems. Hasn't this been shown to be false? What about a simpler precursor?
Anyway, his critique of RA's C++ program for those who are not registered:
I acknowledged all that...
The fallacy still exists. You said "There is one optimal set of characters: 'METHINKS[IT[IS[LIKE[A[WEASEL'." Why is this set 'optimal'? Anything less than 'optimal' is still not Shakespeare, and is useless. We're talking minimum functionality to survive. Behe, Johnson, Dembski and the others are saying that since we have no knowledge of the goal, selection cannot overcome initial complexity. HTJKSDFOESNDFWESDLWRSDFD[[[L is not any more survivable. When you translate these METHINKS... into biology, you have the clotting cascade. It has irreducible complexity. To substitute an L for a G in the last place is no better. You still lack 27 of the 28 necessary items. No information exists, and the organism dies. It gets eaten by randomly occuring "LA", a word. LA put it's L to good use. It made information (survived). HT...L did not put it's L to good use, and died. The problem with your simulation (the problem with all such simulations) is it assumes that you have increased performance from more pieces correct than you have from no pieces correct. This is nonsense with regard to irreducible complexity. To not have 1 part of the puzzle is to not have it at all. It is not a stepping stone game at the microbiological level. Functionality ceases until you jump the grand canyon. That is why you must take out the line that prevents "substitutions" as you call them. You have no idea what good is until you have the whole cascade working. In fact, anything less than the whole cascade is a giant waste that should have been writing Seuss.
An interesting simulation would be to program the phonetics of English, along with the rules of grammar, and try to reproduce shakespeare. It would much better represent the biology we're discussing.
RufusAtticus
August 17, 2003, 12:37 AM
This IDist is another example of an engineer (in training) who complains about biology. He even has ties to the UGA anti-evolution squad.
Here's the link to his english paper. (http://www.prism.gatech.edu/~gte518v/SciRelig.html)
RufusAtticus
August 17, 2003, 07:50 PM
I've modified the program to include this more complex fitness function.
//g_nGoalSize = 30
double d=1.0;
for(int i=0;i<g_nGoalSize/2-1;i+=3)
{
if( m_szData[i] == m_szData[g_nGoalSize-1-i] &&
m_szData[i+1] == m_szData[g_nGoalSize-2-i] &&
m_szData[i+2] == m_szData[g_nGoalSize-3-i])
d*= 1.3;
}
return d;
The string is now broken into triplets and an individual only gets an advantage if the triplet on the other end matches it. In otherwords, it's selecting for palindromes. This is sort of analagous to RNA step-loop structures.
Here is a graph of the number of palindromic triplets in the most fit individual through time.
http://webpages.charter.net/rufusatticus/triplet_bestfit.png
The completly palindromic sequence at gen 1210 looked like this:
ZJKFRYIRQUIYZIXXIZYIUQRIYRFKJZ.
RufusAtticus
August 18, 2003, 08:54 PM
Bumpage. Well my latest reply is up.
vBulletin® v3.7.1, Copyright ©2000-2008, Jelsoft Enterprises Ltd.