Komputer udający społeczeństwo

Języki programowania można, według kryterium przydatności do zastosowań symulacyjnych, podzielić na trzy zasadnicze kategorie:

Języki programowania można, według kryterium przydatności do zastosowań symulacyjnych, podzielić na trzy zasadnicze kategorie:

- języki ogólnego zastosowania, jak FORTRAN, PASCAL i C

- języki symulacyjne ogólnego zastosowania - poczynając od SIMULI 67, poprzez SIMSCRIPT, GPSS czy SIMPAS. W językach tego typu zwykle obecne są pewne obiekty, zdarzenia i obsługa synchronizacji między nimi

- języki symulacyjne ukierunkowane na określoną dziedzinę - - szczególnie popularne w zastosowaniach inżynierskich: chemii, budownictwie, motoryzacji itp. W językach takich obiekty charakterystyczne dla danej dziedziny są zaimplementowane przez autorów języka. Dzięki temu są bardzo przejrzyste dla specjalistów z danej dziedziny i mogą być używane przez ludzi bez profesjonalnego przygotowania informatycznego. Podstawowe zastosowanie takich języków to modelowanie i symulacja, ale również sporządzenie formalnego opisu zjawiska może być ostatecznym, samoistnym celem dla badacza.

Zdefiniowanie języka symulacyjnego trzeciego z podanych wyżej rodzajów jest szczególnie ważne dla tych dziedzin, które nie wypracowały sobie ścisłych metod postępowania, zaś informatyka nie jest w nich stosowana na większą skalę. Jedną z takich dziedzin są nauki społeczne.

Język Warsaw Simulation Language (WSL) został zdefiniowany przez autora tego artykułu na podstawie prac teoretycznych Bibba Latane oraz pracowników naukowych Wydziału Psychologii Uniwersytetu Warszawskiego właśnie dla potrzeb opisu, modelowania i symulacji procesów społecznych. Jest to pierwszy w świecie język tego rodzaju. Został zaimplementowany dla systemu MS-DOS jako Warsaw Simulation System (WSS).

WSL/WSS był prezentowany przez autora na uniwersytetach i konferencjach w Polsce, Stanach Zjednoczonych, Japonii i kilku krajach europejskich, wzbudzając znaczne zainteresowanie.

Co to jest WSL?

Podstawy teoretyczne WSL są proste. Główny obiekt języka WSL to podmiot społeczny - pojedynczy człowiek. Wszystkie podmioty są rozmieszczone na dwuwymiarowej powierzchni, podzielonej na wiersze i kolumny. Odległości w tej przestrzeni mogą być interpretowane jako dystans fizyczny lub psychologiczny.

Podmioty są opisywane przez numeryczne charakterystyki, czyli funkcje, których dziedziną jest zbiór podmiotów - każdemu podmiotowi można przypisać jakąś wartość, na przykład "1" (podmiot jest w posiadaniu informacji, której społeczna propagacja jest badana) i "0" (podmiot nie posiada informacji).

Podstawowym zadaniem użytkownika WSL jest opisanie zachowania jednego podmiotu w kontaktach z resztą populacji. Istota WSL polega właśnie na tym, że badacz opisuje wyłącznie zjawisko jednostkowe, tzn. oddziaływanie jednego podmiotu na otoczenie, zaś program samodzielnie produkuje sytuację społeczną z wielości takich oddziaływań.

Formalny mechanizm interakcji podmiotu z otoczeniem jest następujący: w kolejnym kroku iteracyjnym losowany jest jeden konkretny podmiot podlegający oddziaływaniu, następnie program sprawdza, czy ktoś w bezpośrednim sąsiedztwie jest posiadaczem informacji (nośnikiem wirusa, eksponentem poglądu politycznego itp.), a jeśli tak, to informacja przechodzi na podmiot zgodnie z zadanym rozkładem prawdopodobieństwa. Oddziaływanie między podmiotami może mieć charakter blokowy (na jeden podmiot oddziaływa wiele podmiotów z bezpośredniego otoczenia) lub pojedynczy.

Do opisu zachowania używana jest prosta notacja algebraiczna, stosowana w proceduralnych językach programowania.

Struktura języka WSL

Opis procesu społecznego - program w WSL - składa się z pięciu części, z których tylko trzy są obowiązkowe. Są to w kolejności występowania w programach:

- specyfikacja powtarzania (opcjonalna)

- opis warunków ogólnych

- inicjalizacja

- opis interakcji

- opis wyników symulacji (opcjonalna).

W przypadku braku opisu rezultatów efektem wykonywania symulacji jest bieżąca prezentacja przebiegu procesu na monitorze.

Warunki ogólne określają rozmiar symulowanego terytorium, nazwy i typ charakterystyk, nazwy zmiennych roboczych, opis pustych przestrzeni i wskazanie metody postępowania. Do dyspozycji jest jedna z dwóch metod: Monte Carlo i równoległa. W metodzie Monte Carlo w danej chwili działa jeden podmiot, a następny krok iteracyjny może zależeć od wyniku tego działania. W metodzie równoległej podmioty działają niezależnie, a proces jest sumą wielu działań jednoczesnych.

Zainicjalizowane muszą być wszystkie charakterystyki. Można inicjalizować zmienne robocze. Charakterystyki i zmienne robocze mogą być inicjalizowane przez program lub ładowane z pliku zawierającego sytuację wyprodukowaną przez wcześniejszą symulację; mogą do tego służyć stałe lub funkcje generujące wartości losowe według zadanych rozkładów prawdopodobieństwa (równomierny, normalny itp.). Każdy podmiot lub grupa podmiotów może być inicjalizowana w inny sposób.

Najbardziej rozbudowana jest ta część WSL, w której opisywana jest interakcja (wzajemne oddziaływanie) podmiotów. Podstawowe instrukcje tej części to przypisanie wartości, konstrukcja warunkowa i pętla. Do konstrukcji wyrażeń arytmetycznych i logicznych, poza stałymi liczbowymi, mogą być używane wartości charakterystyk i funkcji. Istnieje duży zestaw funkcji specjalnych, opisujących własności aktualnej sytuacji, jak np. liczba podmiotów o określonych właściwościach czy liczba grup tworzonych przez podmioty.

Jak już wyżej wspomnieliśmy, opisane powinno być zachowanie jednego abstrakcyjnego podmiotu. Symulacja zachowania populacji odbywa się poprzez wielokrotną repetycję zachowań pojedynczych podmiotów. Podmiot, dla którego w danym momencie wykonywana jest procedura symulacyjna, nazywamy podmiotem aktualnym. Wykonanie symulacji dla jednego podmiotu aktualnego nazywamy przebiegiem. Liczba przebiegów, równa liczebności populacji, nazywana jest krokiem symulacji. Krok to podstawowa jednostka symulacji.

Opis symulacji może się składać z jednego (przeważnie) lub kilku segmentów - różnych części kodu. Segment opisuje fazę procesu, czyli takie jednostki procesu, w których podmioty zachowują się w sposób odrębnie opisany. Przechodzenie z jednej fazy do drugiej odbywa się pod wpływem warunków zdefiniowanych przez programistę.

Programista wskazuje warunek zakończenia symulacji. Często stosowanym warunkiem jest stabilizacja procesu, czyli brak zmian sytuacji w jednym kroku. Innym warunkiem może być wykonanie odpowiedniej liczby kroków. Ogólnie spełnienie dowolnego warunku logicznego może zakończyć symulację.

Wyniki symulacji można wyprowadzać na cztery sposoby: wyniki migawkowe, wyniki końcowe, wyprodukowana sytuacja, poszczególne zmienne.

Wyniki migawkowe służą do śledzenia dynamiki procesu. Zdefiniowane przez użytkownika statystyki, opisujące istotne własności procesu, są zapisywane w zewnętrznym pliku o standardowej strukturze ASCII po każdym kroku (lub po każdej określonej liczbie kroków).

Wyniki końcowe są to statystyki, zapisywane w pewnym pliku, po inicjalizacji i po zakończeniu symulacji. Porównanie początkowych i końcowych statystyk daje informację o ostatecznych wynikach symulacji.

Wyniki końcowe są zapisywane dla każdego powtórzenia symulacji. Jeżeli proces jest parametryzowany, produkowane statystyki można podzielić na zmienne niezależne, którymi zwykle są parametry i zmienne zależne - pozostałe statystyki. Takie potraktowanie wyników końcowych pozwala na śledzenie wpływu poszczególnych parametrów na symulowany proces społeczny.

Jeżeli użytkownik uzna, że funkcje WSL nie są dostatecznie precyzyjne, może wyprowadzić wartości określonych charakterystyk w postaci pliku ASCII, by później analizować je za pomocą dowolnego pakietu obróbki danych.

Ostatni rodzaj wyników to wyprodukowana sytuacja, zakodowana w postaci, która może następnie być załadowana jako sytuacja początkowa dla następnej symulacji.

PRZYKŁAD PROGRAMU

WSL był stosowany do opisu wielu procesów społecznych, takich jak dystrybucja informacji, konformizm, wpływ społeczny, epidemie, dylematy społeczne, gry itp. Poniższy przykład opisuje jeden z prostszych procesów - społeczną dystrybucję informacji, czyli np. mechanizm szerzenia się plotki.

REPETITION SPECIFICATION;

RUN FOR @Prog = (0.3, 0.5, 0.8)

REPEAT 10 TIMES;

PROCESS DESCRIPTION;

MAIN CHARACTERISTICS Plotka VALUES 0 = 'I', 1 = '-';

* 0 nie zna plotki (symbol "I" na ekranie)

* 1 zna plotkę (symbol "-" na ekranie)

* Graficzne reprezentacje wartości głównej charakterystyki

* są na bieżąco wyświetlane na ekranie.

CHARACTERISTICS Podatność REAL;

WORKING Poinformowani INTEGER;

INITIALIZATION;

Plotka FOR ALL IS 0

FOR (20, 10) IS 1;

* na początku nikt nie zna plotki z wyjątkiem osobnika

* o współrzędnych (20,10)

Podatność FOR ALL IS NORMAL (0.5, 0.2, 0, 1);

* prawdopodobieństwo przejęcia plotki jest opisane

* rozkładem normalnym o średniej 0.5, odchyleniu

* standardowym 0.5 i w granicach 0..1

INTERACTION;

Poinformowani = COUNT (1);

* Liczba tych podmiotów, dla których w bezpośrednim

* otoczeniu podmiotu aktualnego główna charakterystyka

* przyjmuje wartość 1.

* RANDOM generuje wartości z przedziału <0, 1>.

* OWN_ wskazuje na charakterystykę podmiotu aktualnego.

IF Poinformowani > 0 AND

OWN_Podatność * RANDOM > @Prog AND

OWN_Plotka = 0 THEN

OWN_Plotka = 1;

END IF;

* Funkcja SHIFTS podaje liczbę zmian wartości

* charakterystyki głównej w danym kroku.

STOP WHEN SHIFTS (ANY) = 0 OR TIME > 20;

RESULTS;

* Dwukropki służą do formatowania danych wyjściowych według

* konwencji Pascala

FINAL STATISTICS @Prog : 3 : 1

TIME

NUMBER (10 / REAL (POPULATION) : 6 : 3;

END PROCESS;

Środowisko WSS

Na środowisko WSS składają się: program główny, sterowany za pomocą systemu menu, kompilator języka, interpreter języka pośredniego, edytor sytuacji i kontekstowy system pomagający.

W trakcie symulacji na ekranie wyświetlane są wartości charakterystyki głównej. Symulacja może być w każdym momencie przerwana w celu obejrzenia, zmodyfikowania lub zapamiętania we wskazanym pliku aktualnej sytuacji.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200