Darwin Machine

Dai diamanti non nasce niente, dal letame nascon i fior. [Fabrizio de Andrè]


A differenza del mio amico Enrico Torazza, il quale è intento a ricercare dove la matematica degenera nel Caos, io sono sempre stato appassionato dal viceversa, ossia dal fatto che azioni casuali ottengano l'ordine o la soluzione di problemi.

Sono quasi trent'anni che, per risolvere problemi ingegneristici vari (ottimizzazioni, ricerche operative, ecc.) uso il metodo che vado ad esporvi, senza mai averlo visto trattare su manuali matematici. Non me ne spiego il perché. Matematici! Questo metodo è troppo empirico o troppo poco classificabile o troppo semplice per meritare di essere trattato in termini matematici puri?

Il metodo si applica alla soluzione di sistemi di equazioni, anche non lineari, anche non continue, ad n incognite.

E' di una semplicità disarmante. L'ho chiamato Darwin Machine per le forti analogie con la teoria evoluzionistica delle forme viventi di Charles Darwin. Provo ad enunciarlo nel modo più sintetico di cui sono capace:

Metodo iterativo per la risoluzione di qualsiasi problema ad n incognite, dove partendo da valori iniziali arbitrari, se ne applicano variazioni casuali: se il risultato migliora, si accettano le variazioni, se no si buttano via.


Darwin Machine - diagramma di flusso

Fibonacci Machine Nr.1


Il metodo converge sempre. L'eventuale lentezza è compensata dalla velocità dei computer di oggi, ma anche dalla semplicità: scrivo in cinque minuti il programma che lascio girare tutta la notte, piuttosto che pensare ad una soluzione per tre giorni, per poi vedere il computer esaurire il suo lavoro in pochi minuti.

Modellando opportunamente il "Caso", si possono ottenere metodi che, da un lato affinano le ottimizzazioni e dall'altro riescono a superare minimi relativi, come tanti metodi classici non riescono a fare.

L'evoluzione stessa è probabilmente piena di minimi relativi nella collina n-dimensionale dei tanti parametri d'ingresso (la felce, la capra).


I migliori risultati li ho ottenuti adottando per coefficiente casuale moltiplicativo una funzione che approssimi una gausiana centrata intorno al valore unitario. Ad esempio:

Caso = 1 + (-1)^Int(RND*2) * RND^n con n>=2

Diagramma del Caso



Vediamo ora un programma in QBasic4 che applichi questo metodo. Proviamo a risolvere la funzione trascendente x-cos(x)=0. Il programma è:

CLS
PRINT "Risoluzione equazione x-cos(x)=0"

REM condizioni iniziali:
x = 1
VecchioRisultato = 1 - COS(1)

DO
    VecchioX = x '(memorizza il valore)
    x = x * (1 + (-1) ^ INT(RND * 2) * RND ^ 5) '(Caso)
    NuovoRisultato = x - COS(x)

    IF ABS(NuovoRisultato) < ABS(VecchioRisultato) THEN
        PRINT NuovoRisultato, x '(Stampa)
        VecchioRisultato = NuovoRisultato
    ELSE
        x = VecchioX '(Ricupera vecchio valore)
    END IF
LOOP

Come vedete, il metodo origina programmi molto semplici, che restano semplici anche per funzioni molto complesse. Potete provare ad usare questo programma, sostistuendo la vostra funzione. Tenete conto che conviene aggiungere al coefficiente casuale moltiplicativo anche un coefficiente casuale additivo per soluzioni vicine allo zero.

Separator


Ottimizzazione della quadratura del cerchio

Per puro divertimento, applichiamo il metodo al problema della quadratura del cerchio presentato in un capitolo precedente. Ricaviamo l'ottimizzazione della copertura del quadrato con un cerchio di pari superficie sezionato da due tagli.

Ottimizzazione della quadratura del cerchio

Una Darwin Machine esegue l'ottimizzazione muovendo come variabili indipendenti x1 e y1.
x4 e y4 si muovono rigidamente a x1 e y1.
x2,y2 e x3,y3 si muovono in senso orizzontale inverso, perché i pezzi B e C sono rovesciati specularmente.

Il programma in QBasic4, di cui potete fare il download, parte dalle condizioni iniziali x1=L e y1=L, che sono quelle del primo disegno del capitolo "Quadratura del cerchio".
Troverà soluzioni interessanti, anche inaspettate!

Separator

Home

Pentamini | Una piastrella | La stella di Peano | La Quadratura del Cerchio | Quadrati | Fibonacci Machine | Tangram | Il Cubo Soma | Il Puzzle del Nonno | La Catasta | HOME

Separator

Qui sotto c'e' una copia del sito di Livio Zucca. Clicca qui per tornare alle mia home