Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Как управлять массовым сознанием. Современные модели. Монография
.pdf
реходят в состояние возбуждения,
// а сама клетка-источник не изменит своего состояния
procedure Istochnic;
var Vi,Vj:integer;
begin
for vi:=1 to kol do
for vj:=1 to kol do
if (wtmp[Vi,Vj]<=0)and(mas_istochnick_boolean[Vi,Vj]=true)
then
Begin
if (automats[Vi,Vj]=2) then
//проверка состояния соседних клеток и
//присвоение им с определенной вероятностью состояния воз-
буждения,
//если они находятся в состоянии покоя
begin
if (vi<>1) and (automats[Vi–1,Vj]=0) then
begin
automatstmp[Vi–1,Vj]:=2;mas_istochnick_boolean[Vi–1,Vj]:
=false;
wtmp[Vi–1,Vj]:=StrToInt(form1.RxSpinEdit4.Text)–1;
w[Vi–1,Vj]:=StrToInt(form1.RxSpinEdit4.Text)–1;
name_automat[Vi–1,Vj]:=name_automat[Vi,Vj];
end;
if (vi<>kol) and (automats[Vi+1,Vj]=0) then
begin
automatstmp[Vi+1,Vj]:=2;
wtmp[Vi+1,Vj]:=StrToInt(form1.RxSpinEdit4.Text)–1;
w[Vi+1,Vj]:=StrToInt(form1.RxSpinEdit4.Text)–1;
name_automat[Vi+1,Vj]:=name_automat[Vi,Vj];
end;
if (vj<>1) and (automats[Vi,Vj–1]=0) then
begin
automatstmp[Vi,Vj–1]:=2;
wtmp[Vi,Vj–1]:=StrToInt(form1.RxSpinEdit4.Text)–1;
w[Vi,Vj–1]:=StrToInt(form1.RxSpinEdit4.Text)–1;
181

name_automat[Vi,Vj–1]:=name_automat[Vi,Vj];
end;
if (vj<>kol) and (automats[Vi,Vj+1]=0) then
begin
automatstmp[Vi,Vj+1]:=2;
wtmp[Vi,Vj+1]:=StrToInt(form1.RxSpinEdit4.Text)–1;
w[Vi,Vj+1]:=StrToInt(form1.RxSpinEdit4.Text)–1;
name_automat[Vi,Vj+1]:=name_automat[Vi,Vj];
end;
wtmp[Vi,Vj]:=w[Vi,Vj];
end;
End
Else if (mas_istochnick_boolean[Vi,Vj]=true) then wtmp[Vi,Vj]:
=wtmp[Vi,Vj]–1;
end;
//Нажата кнопка [GO]
procedure TForm1.Button2Click(Sender: TObject);
var i:integer;
begin
wtmp:=w;
automats_graph:=automats;
for i:=1 to strtoint(form1.RxSpinEdit2.Text) do
begin
vozb;
automats:=automatstmp;
Istochnic;
automats:=automatstmp;
refr_1; //процедура уменьшения времени рефрактерности на
единицу
showautomats; // процедура прорисовки клеток
end;
end;
//Вызов формы “О программе”
procedure TForm1.Button1Click(Sender: TObject);
begin
form3.showmodal;
182

end;
// процедура, выполняемая при получении формой фокуса вво-
да
procedure TForm1.FormActivate(Sender: TObject);
var fax,fay:word;
begin
randomize;
for fax:=1 to kol do
for fay:=1 to kol do
begin
name_automat[fax,fay]:='';
mas_istochnick_boolean[fax,fay]:=false;
end;
wtmp:=w;
ver:=strtoint(form1.RxSpinEdit3.Text);
end;
// Изменение времени рефрактерности
procedure TForm1.RxSpinEdit1Change(Sender: TObject);
begin
TimeRef:=strtoint(form1.RxSpinEdit1.Text)+1;
end;
// Событие, возникающее при нажатии кнопки мышки (на Фор-
ме)
procedure TForm1.FormMouseDown(Sender: TObject; Button:
TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if form1.GroupBox1.Visible=true then exit; //если панель выбора
параметров клетки
//уже активна, то выход из процедуры
xx:=(x+shag) div shag; yy:=(y+shag) div shag; //определяет коор-
динаты клетки
if (xx<=50) and (yy<=50)then //при попадании координаты клет-
ки в заданную область
// выполняется следующий цикл:
begin
183

form1.RxLabel6.Caption:=IntToStr(xx); //отображение коорди-
наты клетки X
form1.RxLabel7.Caption:=IntToStr(yy); //отображение коорди-
наты клетки Y
form1.GroupBox1.Visible:=true; //активация панели выбора па-
раметров клетки
end;
end;
// Процедура запускается, когда необходимо перерисовать Фор-
му
procedure TForm1.FormPaint(Sender: TObject);
var fax,fay:word;
begin
for fax:=1 to kol do for fay:=1 to kol do automats_graph[fax,fay]:=1;
showautomats;
end;
//Отмена установки параметров выбранной клетки
procedure TForm1.Button4Click(Sender: TObject);
begin
form1.GroupBox1.Visible:=false;
end;
// Выбор клетки, задание ее параметров
// Процедура, выполняемая при нажатии кнопки [OK]
procedure TForm1.Button3Click(Sender: TObject);
begin
form1.GroupBox1.Visible:=false; //убирается панель выбора па-
раметров клетки
//выбранной клетке присваивается заданное состояние
if form1.RadioButton1.Checked=true then automats[yy,xx]:=0;
if form1.RadioButton2.Checked=true then begin ref[yy,xx]:=form1.
SpinEdit1.Value;automats[yy,xx]:=3;end;
if form1.RadioButton3.Checked=true then begin w[yy,xx]:=form1.
SpinEdit2.Value–1;mas_istochnick_boolean[yy,xx]:=false;automat
s[yy,xx]:=2;name_automat[yy,xx]:=form1.edit2.text;end;
if form1.RadioButton4.Checked=true then automats[yy,xx]:=1;
if form1.RadioButton5.Checked=true then begin w[yy,xx]:=form1.
184

SpinEdit2.Value–2; automats[yy,xx]:=2;mas_istochnick_boolean
[yy,xx]:=true;name_automat[yy,xx]:=form1.edit2.text;end;
showautomats; // прорисовываем поле клеточных автоматов
end;
//Задание визуального набора параметров при выборе состояния клетки
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
if form1.RadioButton1.Checked=true then
begin
form1.Panel1.Visible:=false; form1.Panel2.Visible:=false;
end;
if form1.RadioButton2.Checked=true then
begin
form1.Panel1.Visible:=false; form1.Panel2.Visible:=true;
end;
if form1.RadioButton3.Checked=true then
begin
form1.Panel1.Visible:=true; form1.Panel2.Visible:=false;
end;
if form1.RadioButton4.Checked=true then
begin
form1.Panel1.Visible:=false; form1.Panel2.Visible:=false;
end;
if form1.RadioButton5.Checked=true then
begin
form1.Panel1.Visible:=true; form1.Panel2.Visible:=false;
end;
end;
// Выход из программы
procedure TForm1.Button5Click(Sender: TObject);
begin
Close;
end;
// Установка вероятности перехода возбуждения
procedure TForm1.RxSpinEdit3Change(Sender: TObject);
185

begin
ver:=strtoint(form1.RxSpinEdit3.Text);
end;
//Процедура выполняется при нажатии на клавишу “Очистить
поле”
//сброс значений параметров клеток, все клетки переходят в со-
стояние покоя.
//прорисовка формы
procedure TForm1.Button6Click(Sender: TObject);
var fax,fay:word;
begin
randomize;
for fax:=1 to kol do
for fay:=1 to kol do
begin
name_automat[fax,fay]:='';
mas_istochnick_boolean[fax,fay]:=false;
automats[fax,fay]:=0;
ref[fax,fay]:=0;
automats[fax,fay]:=0;
form1.canvas.Brush.Color:=$0080FFFF;
form1.Canvas.Rectangle(sAx+fAx*shag,sAy+fAy*shag,sAx+(shag
+1)+fAx*shag,sAy+(shag+1)+fAy*shag);
end;
wtmp:=w;
ver:=strtoint(form1.RxSpinEdit3.Text);
end;
// Процедура запускается при создании формы
procedure TForm1.FormCreate(Sender: TObject);
begin
TimeRef:=strtoint(form1.RxSpinEdit1.Text)+1;
end;
end.
186

РЕЗУЛЬТАТЫ ИМИТАЦИОННОГО МОДЕЛИРОВАНИЯ
РАСПРОСТРАНЕНИЯ И КОНКУРЕНЦИИ ИНФОРМАЦИОННЫХ
СИГНАЛОВ В ТОЛПЕ
Рис. 1 (а). Спонтанное начало возбуждения от одного случайного источника
со временем возбуждения 10 тактов, временем рефрактерности 1 такт
при 70% вероятности передачи возбуждений
Рис. 1 (б). Развитие процесса от случайного источника через 100 тактов
от начала процесса при 70% вероятности передачи возбуждений
187

Рис. 1(в). Развитие процесса от случайного источника через 400 тактов
от начала процесса при 70% вероятности передачи возбуждений
Рис. 2 (а). Появление стихийного возбуждения в решетке 9´9 клеток
при времени возбуждения 10 тактов, рефрактерности 1 такт
и вероятности передачи возбуждения 70%
188

Рис. 2 (б). Поддержание автоколебаний в решетке размером 9´9 клеток
после стихийного возбуждения в решетке при вероятности передачи
возбуждения 70%. Время процесса – 200 тактов
Рис. 2 (в). Разбиение решетки 9´9 на две решетки 9´ 5 и 9´3.
189

Рис. 2 (г). Затухание возбуждений в решетке 9´3 после 1000 тактов
при времени возбуждения 10 тактов, времени рефрактерности 1 такт
и вероятности возбуждения 70% и поддержание
при этом автоколебаний в решетке 9
Рис. 2 (д). Затухание возбуждений в решетке 9´5 после 100 тактов
при времени возбуждения 10 тактов, времени рефрактерности 1 такт
и вероятности возбуждения 50%
´5
190
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
