Spiegazioni programma del torneo per generazioni
simulazione strategie evolutive Tit for Tat

Tornate all'indice di questo articolo

Come configurare il torneo per generazioni

Per configurare le strategie, bisogna modificate il file generazioni.js che viene fornito assieme a tutti gli altri file nel pacchetto .ZIP alla pagina di download.
Nel file si possono configurare:
1. numero di generazioni
2. percentuale della soglia di estinzione

Aprite il file con un editor di testo (Notepad o simili), troverete subito due parametri:

generazioni=10;
percentuale=85;

Il torneo si ripete per 10 generazioni (8 per la versione on-line), il numero si può aumentare facendo attenzione a non rallentare troppo il PC. A volte il browser chiede di interompere lo script, ma si può tentare di continuare. Salvate eventuali dati, documenti aperti prima di iniziare il torneo per evitare di perderli.
85 indica la percentuale del punteggio che le strategie otterrebero collaborando sempre. Se il punteggio finale è inferiore a questa soglia, la strategia muta.

Come funziona lo script

Dopo aver configurato i parametri personalizzabili, appare sullo schermo la situazione attuale:

document.write(percentuale+"% è la percentuale del punteggio ottenuto se tutti avessero sempre collaborato che bisogna raggiungere per NON mutare.");
percentuale=percentuale/100;
document.write(" Punteggio minimo ="+cicli*tot*3*percentuale);

A seguire, inizia il ciclo che si ripeterà per tutte le generazioni:

for (gen = 2; gen <= generazioni; gen++)
{

Poi inzia il ciclo che controlla il punteggio di ciascuna strategia ha ottenuto nel torneo precedente:

for (x = 1; x <= tot; x++)
{
if (punti[x]<=cicli*tot*3*percentuale) {

Se risulta inferiore, la strategia muta:

nome[x]="Mutazione di "+nome[x];

mutaAP=DNA[x].substr(2,1); // estrae il 3 carattere
mutaSTR=DNA[x].substr(3,3); // estrae il 4,5,6 carattere

mutazione=Math.floor(Math.random()*2);
if (mutazione==1) {
switch (mutaAP)
{case "A": mutaAP="C";break
case "T": mutaAP="G";break
case "C": mutaAP="T";break
default: mutaAP="A";
}
}

if (mutazione==0) {
switch (mutaSTR)
{case "TTT": mutaSTR="TTG";break
case "TTG": mutaSTR="AAG";break
case "AAG": mutaSTR="AAA";break
case "AAA": mutaSTR="TTA";break
case "TTA": mutaSTR="TTC";break
case "TTC": mutaSTR="AAC";break
case "AAC": mutaSTR="TTT";break
}
}

DNA[x]=DNA[x].substr(0,1)+"U"+mutaAP+mutaSTR+DNA[x].substr(6,2);
// nota il secondo carattere muta in U

}
}

Con la parte sopra, si estraggono le parti del DNA, poi a caso si decide se mutare il terzo, oppure il 4,5,6 carattere.
Come indicato, nel caso di mutazione del primo carattere, se avremo estratto una "A" diventerà una "C", oppure una "T" diventerà una "G" e così via.
Nel caso di mutazione della strategia, se avremo estratto dal DNA "TTT", muterà in "TTG", oppure "TTG" diventerà "AAG" e così via.

situazione ();
torneo ();
classifica ();
}

Poi si richiamano le funzioni:
situazione che è spiegata di seguito, poi il torneo e la classifica che sono le stesse funzioni spiegate alla pagina del torneo singolo

Per finire, con la funzione situazione () si Visualizzano sullo schermo le mutazioni avvenute.

function situazione ()
{
document.write("<table summary='mutanti' border='1' align='center'>");

document.write("<tr><td colspan=2>Mutazioni della <b>generazione numero "+gen+"<\/b><\/td><\/tr>");

// inizio ciclo for per nr nomi
for (x = 1; x <= tot; x++) {

// estrazione del primo gene ** colore **
colore[x]=DNA[x].substr(0,1); // estrae il 1o carattere
switch (colore[x])
{case "A": colore[x]="green";break
case "C": colore[x]="yellow";break
case "G": colore[x]="orange";break
case "T": colore[x]="red";break
default: document.write("
* Errore 1 su DNA di "+[x]+" * ");
}
// estrazione del secondo gene ** mutazione **
controllo=DNA[x].substr(1,1); // estrae il 2o carattere
if (controllo=="U") {colore[x]="blue"};

document.write("<tr><td bgcolor='"+colore[x]+"' valign='top'>");
document.write(x+") "+nome[x]+"<<td>");
document.write("<td>DNA="+DNA[x]+"<\/td><\/tr>");
}
document.write("<\/table>");
}

Tornate all'indice generale di questo articolo

Andate ai tornei per generazioni