Quanto è utile/interessante questa discussione:
Autore |
Discussione |
|
domi84
Moderatore
Città: Glasgow
1724 Messaggi |
Inserito il - 21 settembre 2007 : 13:18:18
|
Chiedo ancora aiuto... Non ho molto capito cosa sono questi algoritmi genetici. Ho capito che servono per diminuire i tempi di calcolo, avendo una buona approssimazione del risultato finale... ...ma non ho capito cosa sono questi geni e cromosomi... ...me lo potete spiegare alla vostra maniera?!?...così capisco!!!
|
Il mio blog: http://domi84.blogspot.com/ Le foto che ho scattato... |
|
|
dallolio_gm
Moderatore
Prov.: Bo!
Città: Barcelona/Bologna
2445 Messaggi |
Inserito il - 21 settembre 2007 : 15:04:44
|
Ci provo...
Immagina di dover trovare il punto di minimo di una funzione con molte variabili:
DG = x^2 + y^3 + 4*z^6 - 2*k^2 + 1/9*d^4 - 2*e^3 + 2*f^8
Immagina che questa funzione abbia tante variabile da rendere impossibile l'utilizzo del metodo delle derivate parziali in tempi accettabili.
Per risolvere con gli algoritmi genetici, potresti prendere dei set di valori per le variabili della funzione (x, y, z, k, d, e, f) a caso:
set1 = 1 2 3 3 5 6 7
set2 = 2 3 4 5 6 7 8
set3 = 1 3 4 5 5 5 5
set4 = 2 4 1 5 2 3 1 Ognuno di questi set e' un 'cromosoma', e i valori delle variabili fungono da 'geni'. Ora, ti calcoli i valori della funzione per ognuno dei precedenti 'set' di valori.
DG(set1) = 2
DG(set2) = 10
DG(set3) = 1
DG(set4) = 8 Dopodiche', prendi solo i due set che ti danno il valore piu' basso, il primo e il terzo:
set1 = 1 2 3 3 5 6 7
set3 = 1 3 4 5 5 5 5 Secondo le regole degli algoritmi genetici, puoi fare due tipi di operazioni: la prima e' l'incrocio:
set5 = 1 2 3 3 5 5 5
set6 = 1 3 4 5 5 6 7 e la mutazione casuale (es. cambiamo la posizione 1 nel set1 da 1 a 3):
set7 = 3 2 3 3 5 6 7
A questo punto, sei nella seconda generazione della simulazione, e ti calcoli i valori corrispondenti ai set 1, 3, 5, 6 e 7. Tra questi, scegli i due o tre set che danno punteggio migliore e ritorni a fare i passaggi di mutazione e crossing-over.
E' chiaro che con questa tecnica e' molto difficile beccare il punto di minimo esatto di una funzione... pero', prendendo ogni volta i valori piu' bassi, sperando di non bloccarsi in un punto di minimo locale, e sperando che la funzione sia concava intorno al punto di minimo (che per fortuna, nel caso della energia libera di una proteina, dovrebbe essere vero), dovresti riuscire a trovare un valore vicino al minimo, e in ogni caso, piu' basso della media.
Un altro esempio lo potresti fare con le parole che formano una query su google.
Immagina di voler trovare le parole chiave che ti permettano di trovare al primo colpo questo topic del forum su google.
Potresti partire da un set di cromosomi come questi:
set1 = ['molecularlab', '"algoritmi genetici"', '"pesce spada"', 'bioinformatica']
set2 = ['dalloliogm', 'domi84', "frittate"]
set3 = ['frittate', 'faccine', 'molecularlab', 'cromosomi']
E' piuttosto strana questa ultima cosa che ho scritto, ma spero che tu abbia capito.. |
Il mio blog di bioinformatics (inglese): BioinfoBlog Sono un po' lento a rispondere, posso tardare anche qualche giorno... ma abbiate fede! :-) |
|
|
domi84
Moderatore
Città: Glasgow
1724 Messaggi |
Inserito il - 21 settembre 2007 : 15:34:27
|
E stato invece molto chiarificatore l'ultimo esempio!!!(Avevo letto in qualche altro post che volevi usare questi algoritmi genetici per fare ricerche su google) Quindi così facendo, l'algoritmo dovrebbe fare uno o più reincroci, finche non ottiene tipo: setn = ['molecularlab', '"algoritmi genetici"', '"domi84"', 'dalloliogm'] che dovrebbe essere il migliore... idem ovviamente con ac.nucleici/proteine! Un'ultima cosa...cosa si intende per fitness?! |
Il mio blog: http://domi84.blogspot.com/ Le foto che ho scattato... |
|
|
dallolio_gm
Moderatore
Prov.: Bo!
Città: Barcelona/Bologna
2445 Messaggi |
Inserito il - 21 settembre 2007 : 15:42:57
|
Citazione: Messaggio inserito da domi84
Quindi così facendo, l'algoritmo dovrebbe fare uno o più reincroci, finche non ottiene tipo: setn = ['molecularlab', '"algoritmi genetici"', '"domi84"', 'dalloliogm'] che dovrebbe essere il migliore...
Probabile pero' che si fermi ad un insieme vicino al migliore, non necessariamente a quello. Dipende da quante generazioni fai correre nella simulazione. Sicuramente pero' nel risultato finale non vi saranno termini come 'frittate', questo perche' gli algoritmi genetici sono una tecnica empirica che da una soluzione che si approssima al risultato ideale.
Citazione: idem ovviamente con ac.nucleici/proteine! Un'ultima cosa...cosa si intende per fitness?!
E' il punteggio di ogni cromosoma... per esempio, nel caso dell'equazione, e' il valore di DG(setn). A sua volta l'equazione viene chiamata 'funzione di fitness'.
Vedi se le applet su questa pagina ti possono essere utili: - http://cs.felk.cvut.cz/~xobitko/ga/ |
Il mio blog di bioinformatics (inglese): BioinfoBlog Sono un po' lento a rispondere, posso tardare anche qualche giorno... ma abbiate fede! :-) |
|
|
domi84
Moderatore
Città: Glasgow
1724 Messaggi |
|
atreliu
Amministratore
Prov.: Milano
Città: Milano
2484 Messaggi |
Inserito il - 21 settembre 2007 : 17:50:31
|
Il geniale dallolio ha colpito ancora |
MolecularLab.it - Animazioni, News, didattica & Community su bioinformatica, biologia molecolare ed ingegneria genetica.
BUONE REGOLE DEL FORUM: - Prima di postare qualunque cosa leggere il Regolamento! - Hai provato a cercare prima di postare il tuo problema? |
|
|
chick80
Moderatore
Città: Edinburgh
11491 Messaggi |
|
domi84
Moderatore
Città: Glasgow
1724 Messaggi |
|
chick80
Moderatore
Città: Edinburgh
11491 Messaggi |
|
serbring
Utente Junior
486 Messaggi |
Inserito il - 12 aprile 2011 : 20:22:22
|
Citazione: Messaggio inserito da dallolio_gm
Ci provo...
Immagina di dover trovare il punto di minimo di una funzione con molte variabili:
DG = x^2 + y^3 + 4*z^6 - 2*k^2 + 1/9*d^4 - 2*e^3 + 2*f^8
Immagina che questa funzione abbia tante variabile da rendere impossibile l'utilizzo del metodo delle derivate parziali in tempi accettabili.
Per risolvere con gli algoritmi genetici, potresti prendere dei set di valori per le variabili della funzione (x, y, z, k, d, e, f) a caso:
set1 = 1 2 3 3 5 6 7
set2 = 2 3 4 5 6 7 8
set3 = 1 3 4 5 5 5 5
set4 = 2 4 1 5 2 3 1 Ognuno di questi set e' un 'cromosoma', e i valori delle variabili fungono da 'geni'. Ora, ti calcoli i valori della funzione per ognuno dei precedenti 'set' di valori.
DG(set1) = 2
DG(set2) = 10
DG(set3) = 1
DG(set4) = 8 Dopodiche', prendi solo i due set che ti danno il valore piu' basso, il primo e il terzo:
set1 = 1 2 3 3 5 6 7
set3 = 1 3 4 5 5 5 5 Secondo le regole degli algoritmi genetici, puoi fare due tipi di operazioni: la prima e' l'incrocio:
set5 = 1 2 3 3 5 5 5
set6 = 1 3 4 5 5 6 7 e la mutazione casuale (es. cambiamo la posizione 1 nel set1 da 1 a 3):
set7 = 3 2 3 3 5 6 7
A questo punto, sei nella seconda generazione della simulazione, e ti calcoli i valori corrispondenti ai set 1, 3, 5, 6 e 7. Tra questi, scegli i due o tre set che danno punteggio migliore e ritorni a fare i passaggi di mutazione e crossing-over.
E' chiaro che con questa tecnica e' molto difficile beccare il punto di minimo esatto di una funzione... pero', prendendo ogni volta i valori piu' bassi, sperando di non bloccarsi in un punto di minimo locale, e sperando che la funzione sia concava intorno al punto di minimo (che per fortuna, nel caso della energia libera di una proteina, dovrebbe essere vero), dovresti riuscire a trovare un valore vicino al minimo, e in ogni caso, piu' basso della media.
Un altro esempio lo potresti fare con le parole che formano una query su google.
Immagina di voler trovare le parole chiave che ti permettano di trovare al primo colpo questo topic del forum su google.
Potresti partire da un set di cromosomi come questi:
set1 = ['molecularlab', '"algoritmi genetici"', '"pesce spada"', 'bioinformatica']
set2 = ['dalloliogm', 'domi84', "frittate"]
set3 = ['frittate', 'faccine', 'molecularlab', 'cromosomi']
E' piuttosto strana questa ultima cosa che ho scritto, ma spero che tu abbia capito..
Stavo giusto cercando qualcosa sugli algoritmi genetici su google ed ho trovato questo topic. Ottima spiegazione, complimenti davvero...Comunque ho qualche dubbio nel capire perchè nel mio caso non ottengo i risultati sperati, quando riescirò ad avere le idee più chiare, vi formulerò il domandone :) |
|
|
serbring
Utente Junior
486 Messaggi |
|
dallolio_gm
Moderatore
Prov.: Bo!
Città: Barcelona/Bologna
2445 Messaggi |
Inserito il - 14 aprile 2011 : 16:17:19
|
eheh, adesso che lavoro in un laboratorio di genetica, il mio sogno è quello di implementare l'esperimento delle query di google... ho giá pronto qualcosa, quando sará in uno stato piu' accettabile ve lo presento :-) |
Il mio blog di bioinformatics (inglese): BioinfoBlog Sono un po' lento a rispondere, posso tardare anche qualche giorno... ma abbiate fede! :-) |
|
|
serbring
Utente Junior
486 Messaggi |
Inserito il - 19 aprile 2011 : 09:36:28
|
Son curioso di vederlo
Venendo al mio problema, sto facendo un fitting con un algoritmo genetico implementato in Matlab. Il problema di fondo è che l'algoritmo è molto lento nel convergere, mentre risulta molto veloce se i bounds sono confinati vicino alla soluzione. Che consiglio mi date per raggiungere più velocemente il punto di ottimo senza variare continuamente i bounds per trovare il valore ottimale per ogni caso? Spero che esista un buon consiglio per questo :)
Grazie |
|
|
serbring
Utente Junior
486 Messaggi |
Inserito il - 18 maggio 2011 : 09:01:15
|
Citazione: Messaggio inserito da serbring
Son curioso di vederlo
Venendo al mio problema, sto facendo un fitting con un algoritmo genetico implementato in Matlab. Il problema di fondo è che l'algoritmo è molto lento nel convergere, mentre risulta molto veloce se i bounds sono confinati vicino alla soluzione. Che consiglio mi date per raggiungere più velocemente il punto di ottimo senza variare continuamente i bounds per trovare il valore ottimale per ogni caso? Spero che esista un buon consiglio per questo :)
Grazie
Up! |
|
|
|
Discussione |
|
|
|
Quanto è utile/interessante questa discussione:
MolecularLab.it |
© 2003-18 MolecularLab.it |
|
|
|