Parallelisering/Distribuering af Genetiske Algoritmer Hvorfor parallelisere/distribuere? Standard GA algoritme Modeller Embarassing parallel Global (fitness evaluering) Island (subpopulation) Grid/Cellular (individuel) Eksempel på en PGA anvendelse - CGATTO
Hvorfor parallelisere/distribuere? Hastighedsfordele Speed-up effekt, da GA er som oftest beregningstunge algoritmer Forhindre for hurtig konvergering i lokalt minimum Delpopulationer søger i forskellige dele af problemdomænet Senere samling giver dermed globalt optimum Oplagt at parallelisere for at efterligne naturens virke Hvis man simulerer naturen skal dette foregå efter samme model
Standard GA algoritme opret udgangs population (størrelsen N) while not (stopkriterie) do Fitness evaluering og selektion af bedste individer Producer nye individer Muter nogle/udvalgte individer end while
Modeller Embarassing parallel Køre flere instanser af det samme program parallelt Opsamling af statistik Starte instanser med forskellige parametre for fx crossover og mutation
Modeller Global parallelisering af fitness-niveauet opret udgangs population (størrelsen N) for alle individer do in parallel fitnessevaluering af alle individer end parallel for while not (stopkriterie) do Selektion af fitter individer for reproduktion Producer nye individer Muter nogle/udvalgte individer for alle individer do in parallel fitnessevaluering af alle individer end parallel for Producer en ny generation udfra fitnessevaluering end while - Foretages per individ og er uafhængigt af populationen - load balancing (strø model hvis flere individer end slaver) - Ofte er fitness evaluering et tungt problem
Modeller Island parallelisering af subpopulationer opret udgangs population (størrelsen N) generation og frekvens sættes til ønskede værdier while not (stopkriterie) do foreach subpopulation do in parallel Fitness evaluering og selektion af bedste individer if generation mod frekvens then Send K < N af de bedste individer til en nabo subpopulation Modtag K individer fra en nabo subpopulation Udskift K individer i subpopulationen end if Producer nye individer Muter nogle/udvalgte individer end parallel for end while - Simulering af geografiske adskilte populationer - Tilfældig dynamisk topologi, giver de bedste resultater - Sikrer forskellighed i subpopulationer (emigration : fx ring, ø, buffer) - Forskellige subpopulationer udforsker forskellige dele af udfaldsrummet
Modeller - Grid/Cellular parallelisering af individer (N individer og N celler) for alle celler i griddet do in parallel producer et tilfældigt individ i end parallel for while not (stopkriterie) do foreach celle i griddet do in parallel Fitnessevaluering af individet i Find et naboindivid k Producer et afkom fra i og k Placer afkommet i i's celle Muter i end parallel for end while - Naboindividet er fra en af de otte omkring liggende celler - Isolated-by-distance : To individers påvirkning af hinanden afhænger af afstanden imellem disse
Modeller - Hybrider Mange hybridkombinationer fx: benytte en Island-model på det øverste niveau Kombineret med en grid-model i hver enkelt subpopulation Opdeling/Model skal vælges efter problemdomænet
Et PGA eksempel - CGATTO Algoritme som vha. af test sekvenser finder fejl i digitale kredsløb. (GATTO) Stadigt voksende industrielt problem eftersom digitale kredsløb vokser i antallet af gates Algoritmen består af 3 faser.
GATTO algoritmen Fase 1. (find target fault) Dannelse af tilfældige sekvenser Find en sekvens som udspænder mindst en utestet fejl (Target Fault) Fase 2. (find en testsekvens som tester target fault) Et individ er en testsekvens Mutation og crossover sikrer nye individer Fitness = hvor tæt på target fault er individet? Senest efter maximalt antal generationer afbrydes fase 2. (fejlen er aborted) Fase 3. Fejl simulering for at se om den evt. dannede testsekvens dækker flere utestede fejl (fault dropping) Gentages indtil alle fejl er fundet/aborted eller maximalt antal iterationer er opnået
CGATTO algoritmen En paralleliseret version af GATTO Modificeringer Fase 1. Sekvens partition af den samlede mængde target faults Inddeling af grupper som arbejder på en given sekvens Fase 2. Se næste slide Fase 3. Fejl partitionering således alle processorer simulerer den samme sekvens i den samme delmængde af sekvens partitionen Forskellige parametre benyttes i de forskellige subpopukationer i en given gruppe
CGATTO fase 2. TEST_SEQUENCE phase2(fault target_fault) { for( s=0; s<max_gen/cmp_step; s++ ) { for every processor i in parallel { j = get_group(i); load_weight_values(j); for( k=0; k<cmp_step; k++ ) { Pki = compute_new_generation(pki-1); if(detecting_sequence_found()) return( get_detecting_sequence()); } besti = get_best_individual_from(pki); fi = evaluation_function(besti); } sort_groups_according_to_best_elements(); move_processors_from_worst_to_best_groups(); } return(no_sequence); }
CGATTO Afviklingsomgivelser Implementeret i C, hvor PVM biblioteker stiller kommunikationsmuligheder til rådighed 16 DEC Alpha AXP 3000/500 maskiner Forbundet gennem en GIGAswitch