Иисус отверг Тему - Post a comment [entries|archive|friends|userinfo]
Шансонье Дима Даннер

[ website | Полин Квітне ]
[ userinfo | ljr userinfo ]
[ archive | journal archive ]

В качестве извинений за отобранное время Mar. 1st, 2007|01:54 pm
blackheartsaur.livejournal.com
Прстая Java-версия того же кода, без GUI и записи статистики (все результаты валят в консоль), но это можно прикрутить при потребности.
Кстати кажется результаты не репродюсаются.

(В коде в комментах куски оригинального кода и это все выглядит жутко здесь, но в Эклипсе при подсветке синтаксиса читаемость нормальная)

import java.util.Random;

/*
10 REM Модель генетической эволюции - одномерный клеточный автомат GEMOCA
15 REM Дима Даннер, 2007
*/

public class GEM {
	public static void main(String[] args) {
		/*
		 * 20 REM объявление и установка параметров (см.описание модели)
		 * 22 coevol=0.02: REM коэффициент эволюции
		 * 25 cell=0: REM текущая клетка
		 * 30 color=0: colors=1: REM параметры текущего цвета и сложности программы
		 * 40 noise=0.1: REM физическая вероятность ошибки
		 * 50 cycle=0: REM счетчик циклов
		 * 60 repro=0: REM счетчик успешных воспроизведений
		 * 71 error=0: REM флаг ошибки
		 * 80 corepro=0: REM коэффициент воспроизведения
		 * 85 REM здесь обявляются массивы для сбора статистики
		 */
		double cEvol=0.02; // DD: коэффициент эволюции SR: что бы это могло означать?..
		int color=0; // DD: параметры текущего цвета SR: какие такие параметры? это текущий цвет, 
		// (или его идентификатор - как хотите), но никакие не параметры 
		int nColors=1; // DD: и сложности программы
		double cNoise=0.1; // DD: физическая вероятность ошибки SR: занятный термин "физическая вероятность"
		int nCycle; // DD: счетчик циклов
		int nSucRep=0; // DD: счетчик успешных воспроизведений
		// boolean fError=false; // DD: флаг ошибки
		double cRepro=0; // DD: коэффициент воспроизведения
		
		double eLif=0.5; // SR: требуемый порог выживаемости
		int tnCycle=4000000; // SR: Количество циклов, которое нужно выполнить
		Random rnd=new Random();

//		int colored[]=new int[tnCycle]; // SR: Массив сгенерированных значений "цвета"
//		int numcols[]=new int[tnCycle]; // SR: Кол-во цветов (слоэность)
//		double ssrates[]=new double[tnCycle]; // SR: % успешных "репликаций"
		
		for(nCycle=0;nCycle
[Error: Irreparable invalid markup ('<tncycle;ncycle++)>') in entry. Owner must fix manually. Raw contents below.]

Прстая Java-версия того же кода, без GUI и записи статистики (все результаты валят в консоль), но это можно прикрутить при потребности.
Кстати кажется результаты не репродюсаются.

(В коде в комментах куски оригинального кода и это все выглядит жутко здесь, но в Эклипсе при подсветке синтаксиса читаемость нормальная)

<pre>
import java.util.Random;

/*
10 REM Модель генетической эволюции - одномерный клеточный автомат GEMOCA
15 REM Дима Даннер, 2007
*/

public class GEM {
public static void main(String[] args) {
/*
* 20 REM объявление и установка параметров (см.описание модели)
* 22 coevol=0.02: REM коэффициент эволюции
* 25 cell=0: REM текущая клетка
* 30 color=0: colors=1: REM параметры текущего цвета и сложности программы
* 40 noise=0.1: REM физическая вероятность ошибки
* 50 cycle=0: REM счетчик циклов
* 60 repro=0: REM счетчик успешных воспроизведений
* 71 error=0: REM флаг ошибки
* 80 corepro=0: REM коэффициент воспроизведения
* 85 REM здесь обявляются массивы для сбора статистики
*/
double cEvol=0.02; // DD: коэффициент эволюции SR: что бы это могло означать?..
int color=0; // DD: параметры текущего цвета SR: какие такие параметры? это текущий цвет,
// (или его идентификатор - как хотите), но никакие не параметры
int nColors=1; // DD: и сложности программы
double cNoise=0.1; // DD: физическая вероятность ошибки SR: занятный термин "физическая вероятность"
int nCycle; // DD: счетчик циклов
int nSucRep=0; // DD: счетчик успешных воспроизведений
// boolean fError=false; // DD: флаг ошибки
double cRepro=0; // DD: коэффициент воспроизведения

double eLif=0.5; // SR: требуемый порог выживаемости
int tnCycle=4000000; // SR: Количество циклов, которое нужно выполнить
Random rnd=new Random();

// int colored[]=new int[tnCycle]; // SR: Массив сгенерированных значений "цвета"
// int numcols[]=new int[tnCycle]; // SR: Кол-во цветов (слоэность)
// double ssrates[]=new double[tnCycle]; // SR: % успешных "репликаций"

for(nCycle=0;nCycle<tnCycle;nCycle++)
{
/*
* 90 REM ** ГЛАВНЫЙ ЦИКЛ **
* 95 REM ВОСПРОИЗВЕДЕНИЕ
* 100 cycle=cycle+1
* 110 color=color+1: IF color>colors THEN color=1: error=0: REM следующий цвет
* 120 x=RND: IF x<noise THEN error=1: REM ошибка с вероятностью noise
* 130 cell=color: IF error=1 THEN cell=INT (RND*colors)+1: color=cell
* 140 IF color=colors AND error=0 THEN repro=repro+1: REM успешное воспроизведение
* 146 LET corepro=repro/cycle: REM подсчет коэффициента воспроизведения

* 147 REM МУТАЦИЯ (см. описание модели)
* 150 LET x=RND: REM проверка условия усложнения программы
* 160 IF x<coevol/4 AND corepro>0.5 THEN colors=colors+1: REM усложнение программы
* 170 IF corepro<0.5-(colors-1)*coevol THEN colors=colors-1: REM упрощение программы - отбор
* 180 IF colors=0 THEN colors=1

* 185 REM ** КОНЕЦ ГЛАВНОГО ЦИКЛА **
*
*/

if(++color>nColors)
{
color=1; // SR: почему не color=0 ?
// fError=false;
}

if(rnd.nextDouble()<cNoise) // if(fError)
{
color=(int)rnd.nextDouble()*nColors;
// fError=true;
// System.out.println("Colors = "+nColors+"; Generated: "+colored[nCycle]);
} else if(color==nColors)
{
nSucRep++;
}
// colored[nCycle]=color;
// SR: Мы записываем в colored значения, которые никогда не читаем

cRepro=((double)nSucRep)/(nCycle+1);

if(rnd.nextDouble()<(cEvol/4) // SR: почему cEvol/4 ?
&& cRepro>eLif) nColors++;

if(cRepro<eLif-(nColors-1)*cEvol && nColors>1) nColors--;

</pre>
*cut due to char count limit for commetn*
Link Read Comments

Reply:
From:
(will be screened)
Identity URL: 
имя пользователя:    
Вы должны предварительно войти в LiveJournal.com
 
E-mail для ответов: 
Вы сможете оставлять комментарии, даже если не введете e-mail.
Но вы не сможете получать уведомления об ответах на ваши комментарии!
Внимание: на указанный адрес будет выслано подтверждение.
Username:
Password:
Subject:
No HTML allowed in subject
Message: