implementing parallel evolutionary algorithms in concurrent and functional paradigmsconcurrent lps-p...

Post on 15-Jun-2015

105 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

New Trends in pGAs Modeling pGAs Sample of Canonicals island/GA Results Conclusions

Implementing parallel evolutionary algorithms

in concurrent and functional paradigms

Author: MSc. Jose Albert Cruz AlmaguerTutors: Dr. Juan Julian Merelo Guervos (UGR)

Dr.C. Liesner Acevedo Martınez (UCI)

Universidad de Granada, Grupo GENEURA

New Trends in pGAs Modeling pGAs Sample of Canonicals island/GA Results Conclusions

Summary

1 New Trends in pGAsNovelty

2 Modeling pGAspGA’s ConceptsLanguage comparisons

3 Sample of Canonicals island/GAScala samplesErlang samplesClojure samples

4 Results

5 Conclusions

New Trends in pGAs Modeling pGAs Sample of Canonicals island/GA Results Conclusions

Novelty

Evolutionary Algorithms

New parallel platforms are identified as new

trends in pGAs

Only hardware is considered and softwareplatforms remains practically unexplored

New Trends in pGAs Modeling pGAs Sample of Canonicals island/GA Results Conclusions

Novelty

Software industry

Developing correct software

Two of the more promising are: functional and

concurrent

New Trends in pGAs Modeling pGAs Sample of Canonicals island/GA Results Conclusions

Novelty

Programming paradigms

Functional: functions like first class concepts,

and for encouraging to do not use state changes

Concurrent: characterized by the presence ofprogramming constructs for managing processes

like first class objects

New Trends in pGAs Modeling pGAs Sample of Canonicals island/GA Results Conclusions

Novelty

Programming languages: Clojure

Lisp variant

STM/agent/futures

JVM

New Trends in pGAs Modeling pGAs Sample of Canonicals island/GA Results Conclusions

Novelty

Programming languages: Erlang

Prolog-like

Functional

Actor based concurrency

New Trends in pGAs Modeling pGAs Sample of Canonicals island/GA Results Conclusions

Novelty

Programming languages: Scala

OO/Functional

Akka: Actor based concurrency

JVM

New Trends in pGAs Modeling pGAs Sample of Canonicals island/GA Results Conclusions

pGA’s Concepts

Parallel GA’s components

AG Component Rol

chromosome Representing the solution.

evaluatedchromosome

Pair {chromosome, fitness}.

population Set of chromosomes.

crossover Relation between two chromo-somes producing other two newones.

mutation A chromosome modification.

selection Means of population filtering.

pool Shared population among no-de’s calculating units.

island Topology’s node.

migration Chromosome interchange.

evolution/evaluation Execution.

New Trends in pGAs Modeling pGAs Sample of Canonicals island/GA Results Conclusions

Language comparisons

Language comparisons

Erlang Scala Clojure

Parallel executingunit

actor actor agent

Communication(messages)

tuple tuple function(protocol)

pool ets HashMap hash-map

DS chromosome list list vector

DS population list list lazy list

Compound data tuple tuple/object record/vector

Runtime environ-ment

Erlang VM Java VM Java VM

New Trends in pGAs Modeling pGAs Sample of Canonicals island/GA Results Conclusions

Scala samples

Scala

Listing 1: Actor declaration.

class Island extends Actor {// Set of actors (workers)var workers: Set[ActorRef] = _def receive = {

case ’start =>// All executing units to work!workers.forEach(_ ! ’start)

}}

New Trends in pGAs Modeling pGAs Sample of Canonicals island/GA Results Conclusions

Scala samples

Scala

Listing 2: Functional processing of data.

def bestSolution(): (AnyRef, Int) = {val evals = table.filter((a: (List, (Int, Int))) =>

a._2._2 == 2).toListif (evals.isEmpty) (null, -1)else {

val red = evals.reduce((a: (List, (Int, Int)), b: (List, (Int, Int))) =>if (a._2._1 < b._2._1) b else a)

(red._1, red._2._1)}

}

New Trends in pGAs Modeling pGAs Sample of Canonicals island/GA Results Conclusions

Scala samples

Scala

Listing 3: Main code.

// C r ea t i n g 4 i s l a n d sva l i s l a n d s = f o r ( <− 1 to 4)

y i e l d s y s . a c to rO f ( Props [ I s l a n d ] )

// Put ing the m ig ran t s d e s t i n a t i o n & s t a r t// each i s l a n df o r ( i <− 0 to 3){

i s l a n d s ( i ) ! ( ’ migrant sDes t ,i s l a n d s ( ( i +1)%4))

i s l a n d s ( i ) ! ’ s t a r t}

New Trends in pGAs Modeling pGAs Sample of Canonicals island/GA Results Conclusions

Erlang samples

Erlang

Listing 4: Actor declaration.

-record(island, {workers

}).

-module(island).start() ->

Pid = spawn(island, loop, [#island{}]),Pid.

loop(D) ->receivestart ->lists:foreach(fun(W) -> W ! start end, D#island.workers),loop(D)

end.

New Trends in pGAs Modeling pGAs Sample of Canonicals island/GA Results Conclusions

Erlang samples

Erlang

Listing 5: Functional processing of data.

bestSolution(TableName) ->Sels = ets:select(TableName,

ets:fun2ms(fun({Ind, Fit, State})when State == 2 -> {Ind, Fit} end)),

LSels = length(Sels),if

LSels > 0 ->lists:foldl(

fun({I1, F1}, {I2, F2}) ->if F1 < F2 ->

{I2, F2};true -> {I1, F1}

endend, lists:last(Sels), Sels);

true -> {null, -1}end.

New Trends in pGAs Modeling pGAs Sample of Canonicals island/GA Results Conclusions

Erlang samples

Erlang

Listing 6: Main code.

I s l a n d s = [ i s l a n d : s t a r t ( ) | | <− l i s t s : seq (1 , 4) ]

l i s t s : f o r e a ch ( fun ( I ) −>I e = l i s t s : nth ( I , I s l a n d s ) ,I e ! {migrant sDes t ,

l i s t s : nth ( ( i +1) rem 4 , I s l a n d s ) } ,I e ! s t a r tend ,l i s t s : seq (0 , 3 ) )

New Trends in pGAs Modeling pGAs Sample of Canonicals island/GA Results Conclusions

Clojure samples

Clojure

Listing 7: Data structure declaration.

(defrecord TIsland [workers])

(ns island)(defprotocol Island

(start [self]))

(extend-type TIslandisland/Island

(start [self](doseq [w @(.workers self)](send w worker/start)

))

)

New Trends in pGAs Modeling pGAs Sample of Canonicals island/GA Results Conclusions

Clojure samples

Clojure

Listing 8: Functional processing of data.

(bestSolution [self](let [

evals (for [[ind [fit state]] @(.table self):when (= state 2)]

[ind fit])

](if (empty? evals)

[nil -1](reduce #(if (< (%1 1) (%2 1)) %2 %1) evals))

))

New Trends in pGAs Modeling pGAs Sample of Canonicals island/GA Results Conclusions

Clojure samples

Clojure

Listing 9: Main code.

( l e t[ i s l a n d s ( f o r [ ( range 4 ) ]

( agent ( i s l a n d / c r e a t e ) ) )]

( doseq [ i ( range 4 ) ]( send ( nth i s l a n d s i )

i s l a n d /mig ran t sDes t( nth i s l a n d s

(mod ( inc i ) 4 ) ) )( send ( nth i s l a n d s i )

i s l a n d / s t a r t ))

)

New Trends in pGAs Modeling pGAs Sample of Canonicals island/GA Results Conclusions

Results

Experiment results for the minimum parallel time of all combinationstested

Lang Parallel time± SD (ms)

Wscomb

Seq time(ms)

RSpeedup Speedup

Erlang 2920.40 ±126

25 E,1 R

8143.3 2.7884 0.5519

Clojure 1734.66 ±28.32

10 E,1 R

3340.2222 1.9255 0.9292

Scala 563 ± 24.32 6 E, 1R

1651.8 2.8632 2.8632

New Trends in pGAs Modeling pGAs Sample of Canonicals island/GA Results Conclusions

Results

Experiment results

Fig. 1. Parallel running timesfor one reproducer.

0 5 10 15 20 25 30

1,000

2,000

3,000

4,000

Number of evaluators

Paralleltime(m

s)

ErlangClojureScala

Fig. 2. Parallel running timesfor two reproducers.

0 5 10 15 20 25 300

2,000

4,000

6,000

8,000

Number of evaluatorsParalleltime(m

s)

ErlangClojureScala

New Trends in pGAs Modeling pGAs Sample of Canonicals island/GA Results Conclusions

Conclusions

Conclusions

Simplicity of the implementation of a hybrid parallelgenetic algorithm in functional-concurrent languages

When a shared data structure is needed this languageallows a more direct access and that could be anadvantage

Among the new trends in pGAs are new parallel platforms,the new languages with concurrent abstractions build-inare parallel platforms too

New Trends in pGAs Modeling pGAs Sample of Canonicals island/GA Results Conclusions

Conclusions

Conclusions

The functional side is a key component to composesoftware components and simplify the communicationstrategies among concurrent activities

The performance of Scala is the best and point to Erlangas a very scalable runtime

top related