SlideShare una empresa de Scribd logo
1 de 40
Descargar para leer sin conexión
Simulating Large-scale Aggregate MASs with Alchemist
and Scala
Roberto Casadei, Danilo Pianini, Mirko Viroli
roberto.casadei12@studio.unibo.it
{danilo.pianini, mirko.viroli}@unibo.it
Alma Mater Studiorum—Universit`a di Bologna
10th International Workshop on Multi-Agent Systems and Simulation (MAS&S’16)
September 14th, 2016 - Gdansk, Poland
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 1 / 30
Outline
1 Context and Motivation
2 Aggregate Programming
Basics
In Scala
3 Alchemist
4 Example
5 Conclusion
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 2 / 30
Context and Motivation
Outline
1 Context and Motivation
2 Aggregate Programming
Basics
In Scala
3 Alchemist
4 Example
5 Conclusion
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 3 / 30
Context and Motivation
Context: large scale situated systems
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 3 / 30
Context and Motivation
Motivation
Questions
What would be the single agent goal / plan / program?
How can we link agent behaviour with overall global effect?
Can we reach predictable levels of resiliency?
Which methods can support reuse and compositional behaviours?
A proper computational model
Hides complexity under the hood
Allows for describing the problem, not “hacking a solution”
A paradigm shift
Provide means for the designer to reason in terms of aggregate, rather
than single agents
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 4 / 30
Aggregate Programming
Outline
1 Context and Motivation
2 Aggregate Programming
Basics
In Scala
3 Alchemist
4 Example
5 Conclusion
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 5 / 30
Aggregate Programming Basics
Aggregate programming
Atomic manipulations of computational fields: a map Space ⇒ Value
neighborhood
device
Based on programming languages rather than frameworks
Complexity is offloaded to compilers and interpreters
Compositional by design
Based on Field Calculus (functional with higher order)
Computational-round based model
Clear operational semantics
Mathematical proofs about soundness, consistency, type systems...
Novel abstractions, low level mechanisms ⇒ steep learning curve
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 5 / 30
Aggregate Programming In Scala
Scala
An attempt to address shortcomings and criticisms of Java
General purpose, multi-paradigm language
Very strong static typing
Compiles in JVM bytecode
Java interoperable
Nice support to DSL definition
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 6 / 30
Aggregate Programming In Scala
Basic constructs
trait Constructs {
// Evolution over time (maintain state over rounds)
def rep[A](init: A)(fun: (A) => A): A
// Share and gather information from neighborhood
def nbr[A](expr: => A): A
def foldhood[A](init: => A)(acc: (A,A)=>A)(expr: => A): A
// Domain restriction
def branch[A](cond: => Boolean)(th: => A)(el: => A): A
// Access local and neighborhood sensors
def sense[A](name: LSNS): A
def nbrvar[A](name: NSNS): A
}
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 7 / 30
Aggregate Programming In Scala
How it works: apply functions over fields
e(0, 1)
()0
1
+
-
1
-1
(ef 0 1)
ef
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 8 / 30
Aggregate Programming In Scala
How it works: evolution over time
rep(0) { x => x + 1 }
rep
0
(fun (x) (+ x 1))
t
v0
t
v1
..
(rep x 0 (+ x 1))
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 9 / 30
Aggregate Programming In Scala
How it works: gather data from neighborhood
nbr{ e }
nbr de
(nbr e)
φd=[d1→v1,..,dn→vn]
// A field of the number of neighbours
foldhood(0)(_+_){ nbr{ 1 } }
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 10 / 30
Aggregate Programming In Scala
How it works: domain restriction (distributed if)
branch ( e ) { channel() } { false }
if
eb
if
cond
then
else
(if eb e false)
false
e
The channel computes in a different domain, but does not get disrupted!
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 11 / 30
Aggregate Programming In Scala
Get to the higher level
These are the very low level mechanisms
Upon them, three “building blocks” are defined
They can be leveraged to realise reusable, higher level algorithms
G: spreading
3
1
7
0
2
T: time decay
1
4
3
3
C: collecting
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 12 / 30
Aggregate Programming In Scala
Examples with G
// A field of the same value
def broadcast[V](source: Boolean, field: V)
(implicit ev: OrderingFoldable[V]): V =
G[V](source, field, x=>x, nbrRange())
// A field of distances from an area (linear gradient in space)
def distanceTo(source: Boolean): Double =
G[Double](source, 0, _ + nbrRange(), nbrRange())
// A field of the shortest distance between two areas
def distBetween(source: Boolean, target: Boolean): Double =
broadcast(source, distanceTo(target))
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 13 / 30
Aggregate Programming In Scala
Examples with G and C
// A field of the sum of a value across the whole network
def summarize(sink: Boolean,
acc: (Double,Double)=>Double,
local: Double,
Null: Double): Double =
broadcast(sink, C(distanceTo(sink), acc, local, Null))
// A field of the average of a value across the whole network
def average(sink: Boolean, value: Double): Double =
summarize(sink, (a,b)=>{a+b}, value, 0.0) /
summarize(sink, (a,b)=>a+b, 1, 0.0)
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 14 / 30
Aggregate Programming In Scala
Examples with T
// A field of the time left to a certain moment
def timer[V](length: V)
(implicit ev: Numeric[V]) = T[V](length)
// A field holding a value until the timer goes, and another
// value thereafter
def limitedMemory[V,T](value: V, expValue: V, timeout: T)
(implicit ev: Numeric[T]) = {
val t = timer[T](timeout)
(mux(ev.gt(t, ev.zero)){value}{expValue}, t)
}
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 15 / 30
Alchemist
Outline
1 Context and Motivation
2 Aggregate Programming
Basics
In Scala
3 Alchemist
4 Example
5 Conclusion
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 16 / 30
Alchemist
A fast, biochemistry-inspired, discrete event (meta-)simulator
Presented first here at MAS&S in 2011 :)
Now a much more sophisticated tool
Written (mostly) in Java, simulation specifications in YAML
Based on an extended version of Gibson-Bruck’s kinetic Monte Carlo
Defines a set of abstract entities (with names inspired by chemistry),
whose actual implementation is left to the so-called incarnations
Incarnations ready to use for:
The SAPERE EU Project [ZOA+
15] (tuple manipulation in a chemical
fashion across networks)
Protelis [PVB15] (Aggregate programming)
Multicellular biological systems (working, but under development)
Scafi incarnation to be included soon
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 16 / 30
Alchemist
Typical simulated scenarios
Many, possibly mobile nodes
Non trivial environment setups
Screenshots
Plant images can be used as indoor scenarios
Support for simulating on OpenStreetMaps
Support for navigating nodes along streets pedestrian, bike, mountain
bike, motorcycle or car streets
Support for GPS traces, with interpolation along streets
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 17 / 30
Alchemist
Alchemist distribution (shameless plug)
Visit alchemistsimulator.github.io
Runnable JAR
Guides
Tutorial for Protelis at https://github.com/
AlchemistSimulator/Protelis-Incarnation-tutorial
Gradle users
Import Alchemist from Maven Central in your build with:
compile 'it.unibo.alchemist:alchemist:+'
Maven users
Import Alchemist from Maven Central in your build with:
<dependency>
<groupId>it.unibo.alchemist</groupId>
<artifactId>alchemist</artifactId>
<version>LATEST</version>
</dependency>
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 18 / 30
Alchemist
Alchemist and Scafi
The Scafi incarnation is ready and working
Still, not distributed, we are waiting for Scafi to be released on Maven
Central
All the Alchemist major features are incarnation independent, and as
such available immediately
Write once, simulate and deploy
The simulator executes exactly the same Scafi code that will be
deployed
Of course you can still break the toy by referencing internal Alchemist
entities from Scafi via Java interoperability
But there’s no cure for bad programming :)
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 19 / 30
Example
Outline
1 Context and Motivation
2 Aggregate Programming
Basics
In Scala
3 Alchemist
4 Example
5 Conclusion
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 20 / 30
Example
Crowd sensing and warning
Real data from the Vienna City Marathon 2013
We want to realise a system (potentially full P2P) which is able to
detect areas where there is a dangerous crowd in the making
We also want the system to warn those that have been close to such
areas for a while
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 20 / 30
Example
Case Study: crowd safety in a mass event
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 21 / 30
Example
Scafi code I
Define three crowding levels
val (high,low,none) = (2,1,0) // crowd level
Locally estimate crowd density
def unionHoodPlus[A](expr: => A): List[A] =
foldhoodPlus(List[A]())(_++_){ List[A](expr) }
def densityEst(p: Double, range: Double): Double = {
val nearby = unionHoodPlus(
mux (nbrRange < range) { nbr(List(mid())) } { List() }
)
nearby.size / p / (Math.PI * Math.pow(range,2))
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 22 / 30
Example
Scafi code II
Map each area to a danger level, depending on the average density sensed
locally
def managementRegions(grain: Double,
metric: => Double): Boolean = S(gran,metric)
def dangerousDensity(p: Double, r: Double) = {
val mr = managementRegions(r*2, () => { nbrRange })
val danger = average(mr, densityEst(p, r)) > 2.17 &&
summarize(mr, (_:Double)+(_:Double), 1 / p, 0) > 300
mux(danger){ high }{ low }
}
S is a building block similar to G, C, and T that operates a division of the
network.
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 23 / 30
Example
Scafi code III
Measure if the dangerous situation held for long enough
def recentTrue(state: Boolean, memTime: Double): Boolean = {
branch(state) {
true
}{
limitedMemory[Boolean,Double](started, false, memTime)._1
}
}
def crowdTracking(p: Double, r: Double, t: Double) = {
val crowdRgn = recentTrue(densityEst(p, r)>1.08, t)
branch(crowdRgn){ dangerousDensity(p, r) }{ none }
}
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 24 / 30
Example
Scafi code IV
Warn users of those devices located near areas which have remained
crowded for a long time
def crowdWarning(p: Double, r: Double,
warn: Double, t: Double): Boolean = {
distanceTo(crowdTracking(p,r,t) == high) < warn
}
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 25 / 30
Example
Alchemist simulation code I
Describe the environment and its geometry
environment:
type: OSMEnvironment
parameters: ["vcm.pbf","vcmuser.agt",12000]
positions:
type: LatLongPosition
Describe the network connectivity model
network-model:
type: EuclideanDistance
parameters: [100]
Select the incarnation
incarnation: scafi
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 26 / 30
Example
Alchemist simulation code II
Select which events will run, and their time distribution
pools:
- pool: &program
- time-distribution: 1
program: crowdWarning(0.005, 30, 60, 60)
- pool: &move
- time-distribution: 0.1
type: Event
actions:
- type: GPSTraceWalker
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 27 / 30
Example
Alchemist simulation code III
Displace the network nodes and program them
displacements:
- in:
type: Rectangle
parameters: [1479, 48.17, 16.3, 0.09, 0.15]
programs:
- *program
- *move
contents: []
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 28 / 30
Conclusion
Outline
1 Context and Motivation
2 Aggregate Programming
Basics
In Scala
3 Alchemist
4 Example
5 Conclusion
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 29 / 30
Conclusion
Conclusion I
Aggregate programming
A promising approach for engineering large, situated systems
A paradigm shift
Scafi
A Scala implementation of the field calculus
Strong, static type system
Complex behaviours can be expressed compositionally
Modern, concise, consistent syntax
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 29 / 30
Conclusion
Conclusion II
Contribution
We integrated Scafi (existing but very fresh Scala-based DSL for aggregate
programming) and Alchemist (an existing simulator)
Scafi + Alchemist
Behaviour verification in articulated environment
Performance measurement
Parameter tuning
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 30 / 30
References
References I
Danilo Pianini, Mirko Viroli, and Jacob Beal.
Protelis: practical aggregate programming.
In Proceedings of the 30th Annual ACM Symposium on Applied Computing, Salamanca,
Spain, April 13-17, 2015, pages 1846–1853, 2015.
Franco Zambonelli, Andrea Omicini, Bernhard Anzengruber, Gabriella Castelli, Francesco
L. De Angelis, Giovanna Di Marzo Serugendo, Simon A. Dobson, Jose Luis
Fernandez-Marquez, Alois Ferscha, Marco Mamei, Stefano Mariani, Ambra Molesini, Sara
Montagna, Jussi Nieminen, Danilo Pianini, Matteo Risoldi, Alberto Rosi, Graeme
Stevenson, Mirko Viroli, and Juan Ye.
Developing pervasive multi-agent systems with nature-inspired coordination.
Pervasive and Mobile Computing, 17:236–252, 2015.
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 30 / 30
Supplementary information
Implementation of G
def G[V](src: Boolean, field: V, acc: V=>V, metric: =>Double)
(implicit ev: OrderingFoldable[V]): V =
rep( (Double.MaxValue, field) ){ // (distance,value)
dv => mux(src) {
(0.0, field) // ..on sources
} {
minHoodPlus { // minHood except myself
val (d, v) = nbr { dv }
(d + metric, acc(v))
}
}
}._2 // yielding the resulting field of values
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 30 / 30
Supplementary information
Implementation of C
def C[V](potential: V, acc: (V,V)=>V, local: V, Null: V)
(implicit ev: OrderingFoldable[V]): V = {
rep(local){ v =>
acc(local, foldhood(Null)(acc){
mux(nbr(findParent(potential)) == mid()){
nbr(v)
} {
nbr(Null)
}
})
}
}
def findParent[V](potential: V)
(implicit ev: OrderingFoldable[V]): ID = {
mux(ev.compare(minHood{ nbr(potential) }, potential)<0 ){
minHood{ nbr{ Tuple2[V,ID](potential, mid()) } }._2
}{ Int.MaxValue }
}
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 30 / 30
Supplementary information
Implementation of T
def T[V](initial: V, floor: V, decay: V=>V)
(implicit ev: Numeric[V]): V = {
rep(initial){ v =>
ev.min(initial, ev.max(floor, decay(v)))
}
}
def T[V](initial: V)
(implicit ev: Numeric[V]): V = {
T(initial, ev.zero, (t:V)=>ev.minus(t, ev.one))
}
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 30 / 30
Supplementary information
Implementation of S
def S(grain: Double, metric: Double): Boolean =
breakUsingUids(randomUid, grain, metric)
def breakUsingUids(uid: (Double,ID), grain: Double,
metric: => Double): Boolean =
uid == rep(uid) { lead:(Double,ID) =>
val acc = (_:Double)+metric
distanceCompetition(G[Double](uid==lead, 0, acc, metric),
lead, uid, grain, metric)
}
def distanceCompetition(d: Double, lead: (Double,ID),
uid: (Double,ID), grain: Double, metric: => Double) = {
val inf:(Double,ID) = (Double.PositiveInfinity, uid._2)
mux(d > grain){ uid }{
mux(d >= (0.5*grain)){ inf }{
minHood{mux(nbr{d}+metric>=0.5*grain){nbr{inf}}{nbr{lead}}}
}
}
}
Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 30 / 30

Más contenido relacionado

La actualidad más candente

OCL Visualization A Reality Check
OCL Visualization A Reality CheckOCL Visualization A Reality Check
OCL Visualization A Reality CheckEdward Willink
 
Learn C# Programming Polymorphism & Operator Overloading
Learn C# Programming Polymorphism & Operator OverloadingLearn C# Programming Polymorphism & Operator Overloading
Learn C# Programming Polymorphism & Operator OverloadingEng Teong Cheah
 
Algorithm(BFS, PRIM, DIJKSTRA, LCS)
Algorithm(BFS, PRIM, DIJKSTRA, LCS)Algorithm(BFS, PRIM, DIJKSTRA, LCS)
Algorithm(BFS, PRIM, DIJKSTRA, LCS)TanvirAhammed22
 
Data structures question paper anna university
Data structures question paper anna universityData structures question paper anna university
Data structures question paper anna universitysangeethajames07
 
Contention - Aware Scheduling (a different approach)
Contention - Aware Scheduling (a different approach)Contention - Aware Scheduling (a different approach)
Contention - Aware Scheduling (a different approach)Dimos Raptis
 
Data structures and algorithms lab2
Data structures and algorithms lab2Data structures and algorithms lab2
Data structures and algorithms lab2Bianca Teşilă
 
Data structures and algorithms lab3
Data structures and algorithms lab3Data structures and algorithms lab3
Data structures and algorithms lab3Bianca Teşilă
 
GTC 2009 OpenGL Barthold
GTC 2009 OpenGL BartholdGTC 2009 OpenGL Barthold
GTC 2009 OpenGL BartholdMark Kilgard
 

La actualidad más candente (13)

OCL Visualization A Reality Check
OCL Visualization A Reality CheckOCL Visualization A Reality Check
OCL Visualization A Reality Check
 
C++11
C++11C++11
C++11
 
Learn C# Programming Polymorphism & Operator Overloading
Learn C# Programming Polymorphism & Operator OverloadingLearn C# Programming Polymorphism & Operator Overloading
Learn C# Programming Polymorphism & Operator Overloading
 
Algorithm(BFS, PRIM, DIJKSTRA, LCS)
Algorithm(BFS, PRIM, DIJKSTRA, LCS)Algorithm(BFS, PRIM, DIJKSTRA, LCS)
Algorithm(BFS, PRIM, DIJKSTRA, LCS)
 
Data structures question paper anna university
Data structures question paper anna universityData structures question paper anna university
Data structures question paper anna university
 
Contention - Aware Scheduling (a different approach)
Contention - Aware Scheduling (a different approach)Contention - Aware Scheduling (a different approach)
Contention - Aware Scheduling (a different approach)
 
Data structures and algorithms lab2
Data structures and algorithms lab2Data structures and algorithms lab2
Data structures and algorithms lab2
 
Polymorphismupload
PolymorphismuploadPolymorphismupload
Polymorphismupload
 
Data structures and algorithms lab3
Data structures and algorithms lab3Data structures and algorithms lab3
Data structures and algorithms lab3
 
Scilab vs matlab
Scilab vs matlabScilab vs matlab
Scilab vs matlab
 
IXP SDK
IXP SDKIXP SDK
IXP SDK
 
GTC 2009 OpenGL Barthold
GTC 2009 OpenGL BartholdGTC 2009 OpenGL Barthold
GTC 2009 OpenGL Barthold
 
C++11
C++11C++11
C++11
 

Destacado

Software development made serious
Software development made seriousSoftware development made serious
Software development made seriousDanilo Pianini
 
Democratic process and electronic platforms: concerns of an engineer
Democratic process and electronic platforms: concerns of an engineerDemocratic process and electronic platforms: concerns of an engineer
Democratic process and electronic platforms: concerns of an engineerDanilo Pianini
 
Protelis: Practical Aggregate Programming - Symposium on Applied Computing (S...
Protelis: Practical Aggregate Programming - Symposium on Applied Computing (S...Protelis: Practical Aggregate Programming - Symposium on Applied Computing (S...
Protelis: Practical Aggregate Programming - Symposium on Applied Computing (S...Danilo Pianini
 
A Framework to Specify and Verify Computational Fields for Pervasive Computin...
A Framework to Specify and Verify Computational Fields for Pervasive Computin...A Framework to Specify and Verify Computational Fields for Pervasive Computin...
A Framework to Specify and Verify Computational Fields for Pervasive Computin...Danilo Pianini
 
Gradient-based Self-organisation Patterns of Anticipative Adaptation
Gradient-based Self-organisation Patterns of Anticipative AdaptationGradient-based Self-organisation Patterns of Anticipative Adaptation
Gradient-based Self-organisation Patterns of Anticipative AdaptationDanilo Pianini
 
Engineering Complex Computational Ecosystems (PhD defense)
Engineering Complex Computational Ecosystems (PhD defense)Engineering Complex Computational Ecosystems (PhD defense)
Engineering Complex Computational Ecosystems (PhD defense)Danilo Pianini
 

Destacado (7)

Software development made serious
Software development made seriousSoftware development made serious
Software development made serious
 
Democratic process and electronic platforms: concerns of an engineer
Democratic process and electronic platforms: concerns of an engineerDemocratic process and electronic platforms: concerns of an engineer
Democratic process and electronic platforms: concerns of an engineer
 
Protelis: Practical Aggregate Programming - Symposium on Applied Computing (S...
Protelis: Practical Aggregate Programming - Symposium on Applied Computing (S...Protelis: Practical Aggregate Programming - Symposium on Applied Computing (S...
Protelis: Practical Aggregate Programming - Symposium on Applied Computing (S...
 
A Framework to Specify and Verify Computational Fields for Pervasive Computin...
A Framework to Specify and Verify Computational Fields for Pervasive Computin...A Framework to Specify and Verify Computational Fields for Pervasive Computin...
A Framework to Specify and Verify Computational Fields for Pervasive Computin...
 
Gradient-based Self-organisation Patterns of Anticipative Adaptation
Gradient-based Self-organisation Patterns of Anticipative AdaptationGradient-based Self-organisation Patterns of Anticipative Adaptation
Gradient-based Self-organisation Patterns of Anticipative Adaptation
 
SAPERE Analysis tools
SAPERE Analysis toolsSAPERE Analysis tools
SAPERE Analysis tools
 
Engineering Complex Computational Ecosystems (PhD defense)
Engineering Complex Computational Ecosystems (PhD defense)Engineering Complex Computational Ecosystems (PhD defense)
Engineering Complex Computational Ecosystems (PhD defense)
 

Similar a Simulating Large-scale Aggregate MASs with Alchemist and Scala

Practical Aggregate Programming in Scala
Practical Aggregate Programming in ScalaPractical Aggregate Programming in Scala
Practical Aggregate Programming in ScalaRoberto Casadei
 
Scala(e) to the large. Concurrent programming in Scala and relevant Frameworks
Scala(e) to the large. Concurrent programming in Scala and relevant FrameworksScala(e) to the large. Concurrent programming in Scala and relevant Frameworks
Scala(e) to the large. Concurrent programming in Scala and relevant FrameworksGianluca Aguzzi
 
Scafi: Scala with Computational Fields
Scafi: Scala with Computational FieldsScafi: Scala with Computational Fields
Scafi: Scala with Computational FieldsRoberto Casadei
 
Large scale landuse classification of satellite imagery
Large scale landuse classification of satellite imageryLarge scale landuse classification of satellite imagery
Large scale landuse classification of satellite imagerySuneel Marthi
 
Programming in Scala: Notes
Programming in Scala: NotesProgramming in Scala: Notes
Programming in Scala: NotesRoberto Casadei
 
Shape Safety in Tensor Programming is Easy for a Theorem Prover -SBTB 2021
Shape Safety in Tensor Programming is Easy for a Theorem Prover -SBTB 2021Shape Safety in Tensor Programming is Easy for a Theorem Prover -SBTB 2021
Shape Safety in Tensor Programming is Easy for a Theorem Prover -SBTB 2021Peng Cheng
 
A Programming Framework for Collective Adaptive Ecosystems
A Programming Framework for Collective Adaptive EcosystemsA Programming Framework for Collective Adaptive Ecosystems
A Programming Framework for Collective Adaptive EcosystemsRoberto Casadei
 
Automated Program Repair Keynote talk
Automated Program Repair Keynote talkAutomated Program Repair Keynote talk
Automated Program Repair Keynote talkAbhik Roychoudhury
 
Aggregate Computing Platforms: Bridging the Gaps
Aggregate Computing Platforms: Bridging the GapsAggregate Computing Platforms: Bridging the Gaps
Aggregate Computing Platforms: Bridging the GapsRoberto Casadei
 
Factorization Machines and Applications in Recommender Systems
Factorization Machines and Applications in Recommender SystemsFactorization Machines and Applications in Recommender Systems
Factorization Machines and Applications in Recommender SystemsEvgeniy Marinov
 
Automated Program Repair, Distinguished lecture at MPI-SWS
Automated Program Repair, Distinguished lecture at MPI-SWSAutomated Program Repair, Distinguished lecture at MPI-SWS
Automated Program Repair, Distinguished lecture at MPI-SWSAbhik Roychoudhury
 
Towards Automated Engineering for Collective Adaptive Systems: Vision and Res...
Towards Automated Engineering for Collective Adaptive Systems: Vision and Res...Towards Automated Engineering for Collective Adaptive Systems: Vision and Res...
Towards Automated Engineering for Collective Adaptive Systems: Vision and Res...Roberto Casadei
 
Software Testing (in Scala): A Practitioner's Survey (Quickly)
Software Testing (in Scala): A Practitioner's Survey (Quickly)Software Testing (in Scala): A Practitioner's Survey (Quickly)
Software Testing (in Scala): A Practitioner's Survey (Quickly)Roberto Casadei
 
Towards Aggregate Programming in Scala
Towards Aggregate Programming in ScalaTowards Aggregate Programming in Scala
Towards Aggregate Programming in ScalaRoberto Casadei
 
Metaprogramming and Reflection in Common Lisp
Metaprogramming and Reflection in Common LispMetaprogramming and Reflection in Common Lisp
Metaprogramming and Reflection in Common LispDamien Cassou
 
Bridging the Pervasive Computing Gap: An Aggregate Perspective
Bridging the Pervasive Computing Gap: An Aggregate PerspectiveBridging the Pervasive Computing Gap: An Aggregate Perspective
Bridging the Pervasive Computing Gap: An Aggregate PerspectiveRoberto Casadei
 

Similar a Simulating Large-scale Aggregate MASs with Alchemist and Scala (20)

Practical Aggregate Programming in Scala
Practical Aggregate Programming in ScalaPractical Aggregate Programming in Scala
Practical Aggregate Programming in Scala
 
Scala(e) to the large. Concurrent programming in Scala and relevant Frameworks
Scala(e) to the large. Concurrent programming in Scala and relevant FrameworksScala(e) to the large. Concurrent programming in Scala and relevant Frameworks
Scala(e) to the large. Concurrent programming in Scala and relevant Frameworks
 
DynaML: Splash 2016
DynaML: Splash 2016DynaML: Splash 2016
DynaML: Splash 2016
 
Elm talk bayhac2015
Elm talk bayhac2015Elm talk bayhac2015
Elm talk bayhac2015
 
Scafi: Scala with Computational Fields
Scafi: Scala with Computational FieldsScafi: Scala with Computational Fields
Scafi: Scala with Computational Fields
 
Large scale landuse classification of satellite imagery
Large scale landuse classification of satellite imageryLarge scale landuse classification of satellite imagery
Large scale landuse classification of satellite imagery
 
ScaRR
ScaRRScaRR
ScaRR
 
Programming in Scala: Notes
Programming in Scala: NotesProgramming in Scala: Notes
Programming in Scala: Notes
 
Javantura v2 - All Together Now - making Groovy and Scala sing together - Din...
Javantura v2 - All Together Now - making Groovy and Scala sing together - Din...Javantura v2 - All Together Now - making Groovy and Scala sing together - Din...
Javantura v2 - All Together Now - making Groovy and Scala sing together - Din...
 
Shape Safety in Tensor Programming is Easy for a Theorem Prover -SBTB 2021
Shape Safety in Tensor Programming is Easy for a Theorem Prover -SBTB 2021Shape Safety in Tensor Programming is Easy for a Theorem Prover -SBTB 2021
Shape Safety in Tensor Programming is Easy for a Theorem Prover -SBTB 2021
 
A Programming Framework for Collective Adaptive Ecosystems
A Programming Framework for Collective Adaptive EcosystemsA Programming Framework for Collective Adaptive Ecosystems
A Programming Framework for Collective Adaptive Ecosystems
 
Automated Program Repair Keynote talk
Automated Program Repair Keynote talkAutomated Program Repair Keynote talk
Automated Program Repair Keynote talk
 
Aggregate Computing Platforms: Bridging the Gaps
Aggregate Computing Platforms: Bridging the GapsAggregate Computing Platforms: Bridging the Gaps
Aggregate Computing Platforms: Bridging the Gaps
 
Factorization Machines and Applications in Recommender Systems
Factorization Machines and Applications in Recommender SystemsFactorization Machines and Applications in Recommender Systems
Factorization Machines and Applications in Recommender Systems
 
Automated Program Repair, Distinguished lecture at MPI-SWS
Automated Program Repair, Distinguished lecture at MPI-SWSAutomated Program Repair, Distinguished lecture at MPI-SWS
Automated Program Repair, Distinguished lecture at MPI-SWS
 
Towards Automated Engineering for Collective Adaptive Systems: Vision and Res...
Towards Automated Engineering for Collective Adaptive Systems: Vision and Res...Towards Automated Engineering for Collective Adaptive Systems: Vision and Res...
Towards Automated Engineering for Collective Adaptive Systems: Vision and Res...
 
Software Testing (in Scala): A Practitioner's Survey (Quickly)
Software Testing (in Scala): A Practitioner's Survey (Quickly)Software Testing (in Scala): A Practitioner's Survey (Quickly)
Software Testing (in Scala): A Practitioner's Survey (Quickly)
 
Towards Aggregate Programming in Scala
Towards Aggregate Programming in ScalaTowards Aggregate Programming in Scala
Towards Aggregate Programming in Scala
 
Metaprogramming and Reflection in Common Lisp
Metaprogramming and Reflection in Common LispMetaprogramming and Reflection in Common Lisp
Metaprogramming and Reflection in Common Lisp
 
Bridging the Pervasive Computing Gap: An Aggregate Perspective
Bridging the Pervasive Computing Gap: An Aggregate PerspectiveBridging the Pervasive Computing Gap: An Aggregate Perspective
Bridging the Pervasive Computing Gap: An Aggregate Perspective
 

Más de Danilo Pianini

Time fluid field-based Coordination
Time fluid field-based CoordinationTime fluid field-based Coordination
Time fluid field-based CoordinationDanilo Pianini
 
Engineering the Aggregate - Talk at Software Engineering for Intelligent and ...
Engineering the Aggregate - Talk at Software Engineering for Intelligent and ...Engineering the Aggregate - Talk at Software Engineering for Intelligent and ...
Engineering the Aggregate - Talk at Software Engineering for Intelligent and ...Danilo Pianini
 
Versioning and License selection
Versioning and License selectionVersioning and License selection
Versioning and License selectionDanilo Pianini
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous IntegrationDanilo Pianini
 
Enforce reproducibility: dependency management and build automation
Enforce reproducibility: dependency management and build automationEnforce reproducibility: dependency management and build automation
Enforce reproducibility: dependency management and build automationDanilo Pianini
 
Productive parallel teamwork: Decentralized Version Control Systems
Productive parallel teamwork: Decentralized Version Control SystemsProductive parallel teamwork: Decentralized Version Control Systems
Productive parallel teamwork: Decentralized Version Control SystemsDanilo Pianini
 
Computational Fields meet Augmented Reality: Perspectives and Challenges
Computational Fields meet Augmented Reality: Perspectives and ChallengesComputational Fields meet Augmented Reality: Perspectives and Challenges
Computational Fields meet Augmented Reality: Perspectives and ChallengesDanilo Pianini
 
Practical Aggregate Programming with Protelis @ SASO2017
Practical Aggregate Programming with Protelis @ SASO2017Practical Aggregate Programming with Protelis @ SASO2017
Practical Aggregate Programming with Protelis @ SASO2017Danilo Pianini
 
Towards a Foundational API for Resilient Distributed Systems Design
Towards a Foundational API for Resilient Distributed Systems DesignTowards a Foundational API for Resilient Distributed Systems Design
Towards a Foundational API for Resilient Distributed Systems DesignDanilo Pianini
 
Continuous integration and delivery
Continuous integration and deliveryContinuous integration and delivery
Continuous integration and deliveryDanilo Pianini
 
Extending the Gillespie's Stochastic Simulation Algorithm for Integrating Dis...
Extending the Gillespie's Stochastic Simulation Algorithm for Integrating Dis...Extending the Gillespie's Stochastic Simulation Algorithm for Integrating Dis...
Extending the Gillespie's Stochastic Simulation Algorithm for Integrating Dis...Danilo Pianini
 
Engineering computational ecosystems (2nd year PhD seminar)
Engineering computational ecosystems (2nd year PhD seminar)Engineering computational ecosystems (2nd year PhD seminar)
Engineering computational ecosystems (2nd year PhD seminar)Danilo Pianini
 
From Engineer to Alchemist, There and Back Again: An Alchemist Tale
From Engineer to Alchemist, There and Back Again: An Alchemist TaleFrom Engineer to Alchemist, There and Back Again: An Alchemist Tale
From Engineer to Alchemist, There and Back Again: An Alchemist TaleDanilo Pianini
 
SAPERE WP1 Alchemist status at 02/2013
SAPERE WP1 Alchemist status at 02/2013SAPERE WP1 Alchemist status at 02/2013
SAPERE WP1 Alchemist status at 02/2013Danilo Pianini
 
Engineering Computational Ecosystems
Engineering Computational EcosystemsEngineering Computational Ecosystems
Engineering Computational EcosystemsDanilo Pianini
 
Recipes for Sabayon: cook your own Linux distro within two hours
Recipes for Sabayon: cook your own Linux distro within two hoursRecipes for Sabayon: cook your own Linux distro within two hours
Recipes for Sabayon: cook your own Linux distro within two hoursDanilo Pianini
 
Towards a comprehensive approach to spontaneous self-composition in pervasive...
Towards a comprehensive approach to spontaneous self-composition in pervasive...Towards a comprehensive approach to spontaneous self-composition in pervasive...
Towards a comprehensive approach to spontaneous self-composition in pervasive...Danilo Pianini
 

Más de Danilo Pianini (17)

Time fluid field-based Coordination
Time fluid field-based CoordinationTime fluid field-based Coordination
Time fluid field-based Coordination
 
Engineering the Aggregate - Talk at Software Engineering for Intelligent and ...
Engineering the Aggregate - Talk at Software Engineering for Intelligent and ...Engineering the Aggregate - Talk at Software Engineering for Intelligent and ...
Engineering the Aggregate - Talk at Software Engineering for Intelligent and ...
 
Versioning and License selection
Versioning and License selectionVersioning and License selection
Versioning and License selection
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Enforce reproducibility: dependency management and build automation
Enforce reproducibility: dependency management and build automationEnforce reproducibility: dependency management and build automation
Enforce reproducibility: dependency management and build automation
 
Productive parallel teamwork: Decentralized Version Control Systems
Productive parallel teamwork: Decentralized Version Control SystemsProductive parallel teamwork: Decentralized Version Control Systems
Productive parallel teamwork: Decentralized Version Control Systems
 
Computational Fields meet Augmented Reality: Perspectives and Challenges
Computational Fields meet Augmented Reality: Perspectives and ChallengesComputational Fields meet Augmented Reality: Perspectives and Challenges
Computational Fields meet Augmented Reality: Perspectives and Challenges
 
Practical Aggregate Programming with Protelis @ SASO2017
Practical Aggregate Programming with Protelis @ SASO2017Practical Aggregate Programming with Protelis @ SASO2017
Practical Aggregate Programming with Protelis @ SASO2017
 
Towards a Foundational API for Resilient Distributed Systems Design
Towards a Foundational API for Resilient Distributed Systems DesignTowards a Foundational API for Resilient Distributed Systems Design
Towards a Foundational API for Resilient Distributed Systems Design
 
Continuous integration and delivery
Continuous integration and deliveryContinuous integration and delivery
Continuous integration and delivery
 
Extending the Gillespie's Stochastic Simulation Algorithm for Integrating Dis...
Extending the Gillespie's Stochastic Simulation Algorithm for Integrating Dis...Extending the Gillespie's Stochastic Simulation Algorithm for Integrating Dis...
Extending the Gillespie's Stochastic Simulation Algorithm for Integrating Dis...
 
Engineering computational ecosystems (2nd year PhD seminar)
Engineering computational ecosystems (2nd year PhD seminar)Engineering computational ecosystems (2nd year PhD seminar)
Engineering computational ecosystems (2nd year PhD seminar)
 
From Engineer to Alchemist, There and Back Again: An Alchemist Tale
From Engineer to Alchemist, There and Back Again: An Alchemist TaleFrom Engineer to Alchemist, There and Back Again: An Alchemist Tale
From Engineer to Alchemist, There and Back Again: An Alchemist Tale
 
SAPERE WP1 Alchemist status at 02/2013
SAPERE WP1 Alchemist status at 02/2013SAPERE WP1 Alchemist status at 02/2013
SAPERE WP1 Alchemist status at 02/2013
 
Engineering Computational Ecosystems
Engineering Computational EcosystemsEngineering Computational Ecosystems
Engineering Computational Ecosystems
 
Recipes for Sabayon: cook your own Linux distro within two hours
Recipes for Sabayon: cook your own Linux distro within two hoursRecipes for Sabayon: cook your own Linux distro within two hours
Recipes for Sabayon: cook your own Linux distro within two hours
 
Towards a comprehensive approach to spontaneous self-composition in pervasive...
Towards a comprehensive approach to spontaneous self-composition in pervasive...Towards a comprehensive approach to spontaneous self-composition in pervasive...
Towards a comprehensive approach to spontaneous self-composition in pervasive...
 

Último

Seismic Method Estimate velocity from seismic data.pptx
Seismic Method Estimate velocity from seismic  data.pptxSeismic Method Estimate velocity from seismic  data.pptx
Seismic Method Estimate velocity from seismic data.pptxAlMamun560346
 
Conjugation, transduction and transformation
Conjugation, transduction and transformationConjugation, transduction and transformation
Conjugation, transduction and transformationAreesha Ahmad
 
COST ESTIMATION FOR A RESEARCH PROJECT.pptx
COST ESTIMATION FOR A RESEARCH PROJECT.pptxCOST ESTIMATION FOR A RESEARCH PROJECT.pptx
COST ESTIMATION FOR A RESEARCH PROJECT.pptxFarihaAbdulRasheed
 
Kochi ❤CALL GIRL 84099*07087 ❤CALL GIRLS IN Kochi ESCORT SERVICE❤CALL GIRL
Kochi ❤CALL GIRL 84099*07087 ❤CALL GIRLS IN Kochi ESCORT SERVICE❤CALL GIRLKochi ❤CALL GIRL 84099*07087 ❤CALL GIRLS IN Kochi ESCORT SERVICE❤CALL GIRL
Kochi ❤CALL GIRL 84099*07087 ❤CALL GIRLS IN Kochi ESCORT SERVICE❤CALL GIRLkantirani197
 
biology HL practice questions IB BIOLOGY
biology HL practice questions IB BIOLOGYbiology HL practice questions IB BIOLOGY
biology HL practice questions IB BIOLOGY1301aanya
 
PSYCHOSOCIAL NEEDS. in nursing II sem pptx
PSYCHOSOCIAL NEEDS. in nursing II sem pptxPSYCHOSOCIAL NEEDS. in nursing II sem pptx
PSYCHOSOCIAL NEEDS. in nursing II sem pptxSuji236384
 
High Class Escorts in Hyderabad ₹7.5k Pick Up & Drop With Cash Payment 969456...
High Class Escorts in Hyderabad ₹7.5k Pick Up & Drop With Cash Payment 969456...High Class Escorts in Hyderabad ₹7.5k Pick Up & Drop With Cash Payment 969456...
High Class Escorts in Hyderabad ₹7.5k Pick Up & Drop With Cash Payment 969456...chandars293
 
GBSN - Microbiology (Unit 1)
GBSN - Microbiology (Unit 1)GBSN - Microbiology (Unit 1)
GBSN - Microbiology (Unit 1)Areesha Ahmad
 
Pests of cotton_Borer_Pests_Binomics_Dr.UPR.pdf
Pests of cotton_Borer_Pests_Binomics_Dr.UPR.pdfPests of cotton_Borer_Pests_Binomics_Dr.UPR.pdf
Pests of cotton_Borer_Pests_Binomics_Dr.UPR.pdfPirithiRaju
 
FAIRSpectra - Enabling the FAIRification of Spectroscopy and Spectrometry
FAIRSpectra - Enabling the FAIRification of Spectroscopy and SpectrometryFAIRSpectra - Enabling the FAIRification of Spectroscopy and Spectrometry
FAIRSpectra - Enabling the FAIRification of Spectroscopy and SpectrometryAlex Henderson
 
Justdial Call Girls In Indirapuram, Ghaziabad, 8800357707 Escorts Service
Justdial Call Girls In Indirapuram, Ghaziabad, 8800357707 Escorts ServiceJustdial Call Girls In Indirapuram, Ghaziabad, 8800357707 Escorts Service
Justdial Call Girls In Indirapuram, Ghaziabad, 8800357707 Escorts Servicemonikaservice1
 
❤Jammu Kashmir Call Girls 8617697112 Personal Whatsapp Number 💦✅.
❤Jammu Kashmir Call Girls 8617697112 Personal Whatsapp Number 💦✅.❤Jammu Kashmir Call Girls 8617697112 Personal Whatsapp Number 💦✅.
❤Jammu Kashmir Call Girls 8617697112 Personal Whatsapp Number 💦✅.Nitya salvi
 
High Profile 🔝 8250077686 📞 Call Girls Service in GTB Nagar🍑
High Profile 🔝 8250077686 📞 Call Girls Service in GTB Nagar🍑High Profile 🔝 8250077686 📞 Call Girls Service in GTB Nagar🍑
High Profile 🔝 8250077686 📞 Call Girls Service in GTB Nagar🍑Damini Dixit
 
SAMASTIPUR CALL GIRL 7857803690 LOW PRICE ESCORT SERVICE
SAMASTIPUR CALL GIRL 7857803690  LOW PRICE  ESCORT SERVICESAMASTIPUR CALL GIRL 7857803690  LOW PRICE  ESCORT SERVICE
SAMASTIPUR CALL GIRL 7857803690 LOW PRICE ESCORT SERVICEayushi9330
 
Dopamine neurotransmitter determination using graphite sheet- graphene nano-s...
Dopamine neurotransmitter determination using graphite sheet- graphene nano-s...Dopamine neurotransmitter determination using graphite sheet- graphene nano-s...
Dopamine neurotransmitter determination using graphite sheet- graphene nano-s...Mohammad Khajehpour
 
Module for Grade 9 for Asynchronous/Distance learning
Module for Grade 9 for Asynchronous/Distance learningModule for Grade 9 for Asynchronous/Distance learning
Module for Grade 9 for Asynchronous/Distance learninglevieagacer
 
module for grade 9 for distance learning
module for grade 9 for distance learningmodule for grade 9 for distance learning
module for grade 9 for distance learninglevieagacer
 
Call Girls Alandi Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Alandi Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Alandi Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Alandi Call Me 7737669865 Budget Friendly No Advance Bookingroncy bisnoi
 

Último (20)

Seismic Method Estimate velocity from seismic data.pptx
Seismic Method Estimate velocity from seismic  data.pptxSeismic Method Estimate velocity from seismic  data.pptx
Seismic Method Estimate velocity from seismic data.pptx
 
CELL -Structural and Functional unit of life.pdf
CELL -Structural and Functional unit of life.pdfCELL -Structural and Functional unit of life.pdf
CELL -Structural and Functional unit of life.pdf
 
Conjugation, transduction and transformation
Conjugation, transduction and transformationConjugation, transduction and transformation
Conjugation, transduction and transformation
 
COST ESTIMATION FOR A RESEARCH PROJECT.pptx
COST ESTIMATION FOR A RESEARCH PROJECT.pptxCOST ESTIMATION FOR A RESEARCH PROJECT.pptx
COST ESTIMATION FOR A RESEARCH PROJECT.pptx
 
Kochi ❤CALL GIRL 84099*07087 ❤CALL GIRLS IN Kochi ESCORT SERVICE❤CALL GIRL
Kochi ❤CALL GIRL 84099*07087 ❤CALL GIRLS IN Kochi ESCORT SERVICE❤CALL GIRLKochi ❤CALL GIRL 84099*07087 ❤CALL GIRLS IN Kochi ESCORT SERVICE❤CALL GIRL
Kochi ❤CALL GIRL 84099*07087 ❤CALL GIRLS IN Kochi ESCORT SERVICE❤CALL GIRL
 
Clean In Place(CIP).pptx .
Clean In Place(CIP).pptx                 .Clean In Place(CIP).pptx                 .
Clean In Place(CIP).pptx .
 
biology HL practice questions IB BIOLOGY
biology HL practice questions IB BIOLOGYbiology HL practice questions IB BIOLOGY
biology HL practice questions IB BIOLOGY
 
PSYCHOSOCIAL NEEDS. in nursing II sem pptx
PSYCHOSOCIAL NEEDS. in nursing II sem pptxPSYCHOSOCIAL NEEDS. in nursing II sem pptx
PSYCHOSOCIAL NEEDS. in nursing II sem pptx
 
High Class Escorts in Hyderabad ₹7.5k Pick Up & Drop With Cash Payment 969456...
High Class Escorts in Hyderabad ₹7.5k Pick Up & Drop With Cash Payment 969456...High Class Escorts in Hyderabad ₹7.5k Pick Up & Drop With Cash Payment 969456...
High Class Escorts in Hyderabad ₹7.5k Pick Up & Drop With Cash Payment 969456...
 
GBSN - Microbiology (Unit 1)
GBSN - Microbiology (Unit 1)GBSN - Microbiology (Unit 1)
GBSN - Microbiology (Unit 1)
 
Pests of cotton_Borer_Pests_Binomics_Dr.UPR.pdf
Pests of cotton_Borer_Pests_Binomics_Dr.UPR.pdfPests of cotton_Borer_Pests_Binomics_Dr.UPR.pdf
Pests of cotton_Borer_Pests_Binomics_Dr.UPR.pdf
 
FAIRSpectra - Enabling the FAIRification of Spectroscopy and Spectrometry
FAIRSpectra - Enabling the FAIRification of Spectroscopy and SpectrometryFAIRSpectra - Enabling the FAIRification of Spectroscopy and Spectrometry
FAIRSpectra - Enabling the FAIRification of Spectroscopy and Spectrometry
 
Justdial Call Girls In Indirapuram, Ghaziabad, 8800357707 Escorts Service
Justdial Call Girls In Indirapuram, Ghaziabad, 8800357707 Escorts ServiceJustdial Call Girls In Indirapuram, Ghaziabad, 8800357707 Escorts Service
Justdial Call Girls In Indirapuram, Ghaziabad, 8800357707 Escorts Service
 
❤Jammu Kashmir Call Girls 8617697112 Personal Whatsapp Number 💦✅.
❤Jammu Kashmir Call Girls 8617697112 Personal Whatsapp Number 💦✅.❤Jammu Kashmir Call Girls 8617697112 Personal Whatsapp Number 💦✅.
❤Jammu Kashmir Call Girls 8617697112 Personal Whatsapp Number 💦✅.
 
High Profile 🔝 8250077686 📞 Call Girls Service in GTB Nagar🍑
High Profile 🔝 8250077686 📞 Call Girls Service in GTB Nagar🍑High Profile 🔝 8250077686 📞 Call Girls Service in GTB Nagar🍑
High Profile 🔝 8250077686 📞 Call Girls Service in GTB Nagar🍑
 
SAMASTIPUR CALL GIRL 7857803690 LOW PRICE ESCORT SERVICE
SAMASTIPUR CALL GIRL 7857803690  LOW PRICE  ESCORT SERVICESAMASTIPUR CALL GIRL 7857803690  LOW PRICE  ESCORT SERVICE
SAMASTIPUR CALL GIRL 7857803690 LOW PRICE ESCORT SERVICE
 
Dopamine neurotransmitter determination using graphite sheet- graphene nano-s...
Dopamine neurotransmitter determination using graphite sheet- graphene nano-s...Dopamine neurotransmitter determination using graphite sheet- graphene nano-s...
Dopamine neurotransmitter determination using graphite sheet- graphene nano-s...
 
Module for Grade 9 for Asynchronous/Distance learning
Module for Grade 9 for Asynchronous/Distance learningModule for Grade 9 for Asynchronous/Distance learning
Module for Grade 9 for Asynchronous/Distance learning
 
module for grade 9 for distance learning
module for grade 9 for distance learningmodule for grade 9 for distance learning
module for grade 9 for distance learning
 
Call Girls Alandi Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Alandi Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Alandi Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Alandi Call Me 7737669865 Budget Friendly No Advance Booking
 

Simulating Large-scale Aggregate MASs with Alchemist and Scala

  • 1. Simulating Large-scale Aggregate MASs with Alchemist and Scala Roberto Casadei, Danilo Pianini, Mirko Viroli roberto.casadei12@studio.unibo.it {danilo.pianini, mirko.viroli}@unibo.it Alma Mater Studiorum—Universit`a di Bologna 10th International Workshop on Multi-Agent Systems and Simulation (MAS&S’16) September 14th, 2016 - Gdansk, Poland Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 1 / 30
  • 2. Outline 1 Context and Motivation 2 Aggregate Programming Basics In Scala 3 Alchemist 4 Example 5 Conclusion Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 2 / 30
  • 3. Context and Motivation Outline 1 Context and Motivation 2 Aggregate Programming Basics In Scala 3 Alchemist 4 Example 5 Conclusion Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 3 / 30
  • 4. Context and Motivation Context: large scale situated systems Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 3 / 30
  • 5. Context and Motivation Motivation Questions What would be the single agent goal / plan / program? How can we link agent behaviour with overall global effect? Can we reach predictable levels of resiliency? Which methods can support reuse and compositional behaviours? A proper computational model Hides complexity under the hood Allows for describing the problem, not “hacking a solution” A paradigm shift Provide means for the designer to reason in terms of aggregate, rather than single agents Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 4 / 30
  • 6. Aggregate Programming Outline 1 Context and Motivation 2 Aggregate Programming Basics In Scala 3 Alchemist 4 Example 5 Conclusion Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 5 / 30
  • 7. Aggregate Programming Basics Aggregate programming Atomic manipulations of computational fields: a map Space ⇒ Value neighborhood device Based on programming languages rather than frameworks Complexity is offloaded to compilers and interpreters Compositional by design Based on Field Calculus (functional with higher order) Computational-round based model Clear operational semantics Mathematical proofs about soundness, consistency, type systems... Novel abstractions, low level mechanisms ⇒ steep learning curve Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 5 / 30
  • 8. Aggregate Programming In Scala Scala An attempt to address shortcomings and criticisms of Java General purpose, multi-paradigm language Very strong static typing Compiles in JVM bytecode Java interoperable Nice support to DSL definition Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 6 / 30
  • 9. Aggregate Programming In Scala Basic constructs trait Constructs { // Evolution over time (maintain state over rounds) def rep[A](init: A)(fun: (A) => A): A // Share and gather information from neighborhood def nbr[A](expr: => A): A def foldhood[A](init: => A)(acc: (A,A)=>A)(expr: => A): A // Domain restriction def branch[A](cond: => Boolean)(th: => A)(el: => A): A // Access local and neighborhood sensors def sense[A](name: LSNS): A def nbrvar[A](name: NSNS): A } Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 7 / 30
  • 10. Aggregate Programming In Scala How it works: apply functions over fields e(0, 1) ()0 1 + - 1 -1 (ef 0 1) ef Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 8 / 30
  • 11. Aggregate Programming In Scala How it works: evolution over time rep(0) { x => x + 1 } rep 0 (fun (x) (+ x 1)) t v0 t v1 .. (rep x 0 (+ x 1)) Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 9 / 30
  • 12. Aggregate Programming In Scala How it works: gather data from neighborhood nbr{ e } nbr de (nbr e) φd=[d1→v1,..,dn→vn] // A field of the number of neighbours foldhood(0)(_+_){ nbr{ 1 } } Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 10 / 30
  • 13. Aggregate Programming In Scala How it works: domain restriction (distributed if) branch ( e ) { channel() } { false } if eb if cond then else (if eb e false) false e The channel computes in a different domain, but does not get disrupted! Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 11 / 30
  • 14. Aggregate Programming In Scala Get to the higher level These are the very low level mechanisms Upon them, three “building blocks” are defined They can be leveraged to realise reusable, higher level algorithms G: spreading 3 1 7 0 2 T: time decay 1 4 3 3 C: collecting Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 12 / 30
  • 15. Aggregate Programming In Scala Examples with G // A field of the same value def broadcast[V](source: Boolean, field: V) (implicit ev: OrderingFoldable[V]): V = G[V](source, field, x=>x, nbrRange()) // A field of distances from an area (linear gradient in space) def distanceTo(source: Boolean): Double = G[Double](source, 0, _ + nbrRange(), nbrRange()) // A field of the shortest distance between two areas def distBetween(source: Boolean, target: Boolean): Double = broadcast(source, distanceTo(target)) Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 13 / 30
  • 16. Aggregate Programming In Scala Examples with G and C // A field of the sum of a value across the whole network def summarize(sink: Boolean, acc: (Double,Double)=>Double, local: Double, Null: Double): Double = broadcast(sink, C(distanceTo(sink), acc, local, Null)) // A field of the average of a value across the whole network def average(sink: Boolean, value: Double): Double = summarize(sink, (a,b)=>{a+b}, value, 0.0) / summarize(sink, (a,b)=>a+b, 1, 0.0) Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 14 / 30
  • 17. Aggregate Programming In Scala Examples with T // A field of the time left to a certain moment def timer[V](length: V) (implicit ev: Numeric[V]) = T[V](length) // A field holding a value until the timer goes, and another // value thereafter def limitedMemory[V,T](value: V, expValue: V, timeout: T) (implicit ev: Numeric[T]) = { val t = timer[T](timeout) (mux(ev.gt(t, ev.zero)){value}{expValue}, t) } Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 15 / 30
  • 18. Alchemist Outline 1 Context and Motivation 2 Aggregate Programming Basics In Scala 3 Alchemist 4 Example 5 Conclusion Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 16 / 30
  • 19. Alchemist A fast, biochemistry-inspired, discrete event (meta-)simulator Presented first here at MAS&S in 2011 :) Now a much more sophisticated tool Written (mostly) in Java, simulation specifications in YAML Based on an extended version of Gibson-Bruck’s kinetic Monte Carlo Defines a set of abstract entities (with names inspired by chemistry), whose actual implementation is left to the so-called incarnations Incarnations ready to use for: The SAPERE EU Project [ZOA+ 15] (tuple manipulation in a chemical fashion across networks) Protelis [PVB15] (Aggregate programming) Multicellular biological systems (working, but under development) Scafi incarnation to be included soon Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 16 / 30
  • 20. Alchemist Typical simulated scenarios Many, possibly mobile nodes Non trivial environment setups Screenshots Plant images can be used as indoor scenarios Support for simulating on OpenStreetMaps Support for navigating nodes along streets pedestrian, bike, mountain bike, motorcycle or car streets Support for GPS traces, with interpolation along streets Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 17 / 30
  • 21. Alchemist Alchemist distribution (shameless plug) Visit alchemistsimulator.github.io Runnable JAR Guides Tutorial for Protelis at https://github.com/ AlchemistSimulator/Protelis-Incarnation-tutorial Gradle users Import Alchemist from Maven Central in your build with: compile 'it.unibo.alchemist:alchemist:+' Maven users Import Alchemist from Maven Central in your build with: <dependency> <groupId>it.unibo.alchemist</groupId> <artifactId>alchemist</artifactId> <version>LATEST</version> </dependency> Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 18 / 30
  • 22. Alchemist Alchemist and Scafi The Scafi incarnation is ready and working Still, not distributed, we are waiting for Scafi to be released on Maven Central All the Alchemist major features are incarnation independent, and as such available immediately Write once, simulate and deploy The simulator executes exactly the same Scafi code that will be deployed Of course you can still break the toy by referencing internal Alchemist entities from Scafi via Java interoperability But there’s no cure for bad programming :) Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 19 / 30
  • 23. Example Outline 1 Context and Motivation 2 Aggregate Programming Basics In Scala 3 Alchemist 4 Example 5 Conclusion Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 20 / 30
  • 24. Example Crowd sensing and warning Real data from the Vienna City Marathon 2013 We want to realise a system (potentially full P2P) which is able to detect areas where there is a dangerous crowd in the making We also want the system to warn those that have been close to such areas for a while Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 20 / 30
  • 25. Example Case Study: crowd safety in a mass event Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 21 / 30
  • 26. Example Scafi code I Define three crowding levels val (high,low,none) = (2,1,0) // crowd level Locally estimate crowd density def unionHoodPlus[A](expr: => A): List[A] = foldhoodPlus(List[A]())(_++_){ List[A](expr) } def densityEst(p: Double, range: Double): Double = { val nearby = unionHoodPlus( mux (nbrRange < range) { nbr(List(mid())) } { List() } ) nearby.size / p / (Math.PI * Math.pow(range,2)) Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 22 / 30
  • 27. Example Scafi code II Map each area to a danger level, depending on the average density sensed locally def managementRegions(grain: Double, metric: => Double): Boolean = S(gran,metric) def dangerousDensity(p: Double, r: Double) = { val mr = managementRegions(r*2, () => { nbrRange }) val danger = average(mr, densityEst(p, r)) > 2.17 && summarize(mr, (_:Double)+(_:Double), 1 / p, 0) > 300 mux(danger){ high }{ low } } S is a building block similar to G, C, and T that operates a division of the network. Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 23 / 30
  • 28. Example Scafi code III Measure if the dangerous situation held for long enough def recentTrue(state: Boolean, memTime: Double): Boolean = { branch(state) { true }{ limitedMemory[Boolean,Double](started, false, memTime)._1 } } def crowdTracking(p: Double, r: Double, t: Double) = { val crowdRgn = recentTrue(densityEst(p, r)>1.08, t) branch(crowdRgn){ dangerousDensity(p, r) }{ none } } Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 24 / 30
  • 29. Example Scafi code IV Warn users of those devices located near areas which have remained crowded for a long time def crowdWarning(p: Double, r: Double, warn: Double, t: Double): Boolean = { distanceTo(crowdTracking(p,r,t) == high) < warn } Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 25 / 30
  • 30. Example Alchemist simulation code I Describe the environment and its geometry environment: type: OSMEnvironment parameters: ["vcm.pbf","vcmuser.agt",12000] positions: type: LatLongPosition Describe the network connectivity model network-model: type: EuclideanDistance parameters: [100] Select the incarnation incarnation: scafi Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 26 / 30
  • 31. Example Alchemist simulation code II Select which events will run, and their time distribution pools: - pool: &program - time-distribution: 1 program: crowdWarning(0.005, 30, 60, 60) - pool: &move - time-distribution: 0.1 type: Event actions: - type: GPSTraceWalker Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 27 / 30
  • 32. Example Alchemist simulation code III Displace the network nodes and program them displacements: - in: type: Rectangle parameters: [1479, 48.17, 16.3, 0.09, 0.15] programs: - *program - *move contents: [] Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 28 / 30
  • 33. Conclusion Outline 1 Context and Motivation 2 Aggregate Programming Basics In Scala 3 Alchemist 4 Example 5 Conclusion Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 29 / 30
  • 34. Conclusion Conclusion I Aggregate programming A promising approach for engineering large, situated systems A paradigm shift Scafi A Scala implementation of the field calculus Strong, static type system Complex behaviours can be expressed compositionally Modern, concise, consistent syntax Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 29 / 30
  • 35. Conclusion Conclusion II Contribution We integrated Scafi (existing but very fresh Scala-based DSL for aggregate programming) and Alchemist (an existing simulator) Scafi + Alchemist Behaviour verification in articulated environment Performance measurement Parameter tuning Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 30 / 30
  • 36. References References I Danilo Pianini, Mirko Viroli, and Jacob Beal. Protelis: practical aggregate programming. In Proceedings of the 30th Annual ACM Symposium on Applied Computing, Salamanca, Spain, April 13-17, 2015, pages 1846–1853, 2015. Franco Zambonelli, Andrea Omicini, Bernhard Anzengruber, Gabriella Castelli, Francesco L. De Angelis, Giovanna Di Marzo Serugendo, Simon A. Dobson, Jose Luis Fernandez-Marquez, Alois Ferscha, Marco Mamei, Stefano Mariani, Ambra Molesini, Sara Montagna, Jussi Nieminen, Danilo Pianini, Matteo Risoldi, Alberto Rosi, Graeme Stevenson, Mirko Viroli, and Juan Ye. Developing pervasive multi-agent systems with nature-inspired coordination. Pervasive and Mobile Computing, 17:236–252, 2015. Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 30 / 30
  • 37. Supplementary information Implementation of G def G[V](src: Boolean, field: V, acc: V=>V, metric: =>Double) (implicit ev: OrderingFoldable[V]): V = rep( (Double.MaxValue, field) ){ // (distance,value) dv => mux(src) { (0.0, field) // ..on sources } { minHoodPlus { // minHood except myself val (d, v) = nbr { dv } (d + metric, acc(v)) } } }._2 // yielding the resulting field of values Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 30 / 30
  • 38. Supplementary information Implementation of C def C[V](potential: V, acc: (V,V)=>V, local: V, Null: V) (implicit ev: OrderingFoldable[V]): V = { rep(local){ v => acc(local, foldhood(Null)(acc){ mux(nbr(findParent(potential)) == mid()){ nbr(v) } { nbr(Null) } }) } } def findParent[V](potential: V) (implicit ev: OrderingFoldable[V]): ID = { mux(ev.compare(minHood{ nbr(potential) }, potential)<0 ){ minHood{ nbr{ Tuple2[V,ID](potential, mid()) } }._2 }{ Int.MaxValue } } Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 30 / 30
  • 39. Supplementary information Implementation of T def T[V](initial: V, floor: V, decay: V=>V) (implicit ev: Numeric[V]): V = { rep(initial){ v => ev.min(initial, ev.max(floor, decay(v))) } } def T[V](initial: V) (implicit ev: Numeric[V]): V = { T(initial, ev.zero, (t:V)=>ev.minus(t, ev.one)) } Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 30 / 30
  • 40. Supplementary information Implementation of S def S(grain: Double, metric: Double): Boolean = breakUsingUids(randomUid, grain, metric) def breakUsingUids(uid: (Double,ID), grain: Double, metric: => Double): Boolean = uid == rep(uid) { lead:(Double,ID) => val acc = (_:Double)+metric distanceCompetition(G[Double](uid==lead, 0, acc, metric), lead, uid, grain, metric) } def distanceCompetition(d: Double, lead: (Double,ID), uid: (Double,ID), grain: Double, metric: => Double) = { val inf:(Double,ID) = (Double.PositiveInfinity, uid._2) mux(d > grain){ uid }{ mux(d >= (0.5*grain)){ inf }{ minHood{mux(nbr{d}+metric>=0.5*grain){nbr{inf}}{nbr{lead}}} } } } Casadei, Pianini, Viroli (UniBo) Alchemist and Scafi 2016-09-14 MAS&S 30 / 30