NetAttac
From Santa Fe Institute Events Wiki
We're thinking about co-evolving a network and an attacker agent to see which topologies emerge in the network and which strategies may be used by agents within the network to create that topology. The starting point of our idea was the question if networks containing nodes that are "too big too fail" may reduce the resilience if directed attacks against important nodes are performed against the network - or if the networks can in fact reorganize rapidly in case of the failure of a central node.
Open Issues to be discussed
- Define a proper set of research questions: we should probably come up with some guiding research questions.
- Who is evolving? Agents or the Network? We have to decide if our basic building blocks that evolve are the nodes that apply different linking strategies (i.e. every agent has a genome representing linking strategies) or if the network itself evolves (i.e. the network configuration is the genome). The same applies to the attacker: is there one central attacker or do we have a group of attackers (which may cooperate)
- Fitness of Network components and attackers: we have to find a good fitness measure, which very much is connected with the definition of our evolving entities. If we decide that single nodes evolve, fitness of a single node in the network could be simply survival - and to survive, links to neighbours are necessary, e.g. to harvest energy from the network.
- Network aim: what is the main aim of the network? What is transported through the network and how is this related to the fitness of the network (or the nodes in the network)?
- Resource constraints: we could introduce a single resource, e.g. energy, that may be used either for consumption, for building links, or for transporting over these links.
- Genome: how does the genome of attackers and network (or network nodes) look like?
- Strategies for network components and attackers: which strategies may be implemented by the different agents?
- Real world examples: are there any real world examples we can relate to?
Some further questions on the table:
- Do we consider addition of new nodes? (it depends on the idea of network we have and if we consider it a closed or open system)
- Related to the question above, do we consider a fair process, I mean attacker destroys n links, the net replicates creating n new links? Or attacker can blow up nodes? How do we react? Creating as many links as the node degree?
- When does our evolution/attack finish? Do we set n moves that net and attacker can perform?
- Should we put game theory concepts into the picture? (It is a 2/multi player game) Is there a game theory expert in the group?
Minutes of meeting 7th June
We have decided the following in today's meeting:
- Reference real-life example is terrorist vs CIA or mafia vs police situations.
- The attacker tries to fragment the network, the attacked tries to recostruct it.
- The network we are dealing with is at least in the first place to keep things simple:
- undirected
- unweighted
- no self links
- no duplicate links
- We start with a network already in place.
- The attacker has the whole info about the network.
- The attacked has local information (I guess we didn't finally agreed on it, isn't it?).
- Attack is on nodes, one node per iteration can be removed.
- Attacker has the goal to minimize hierarchy.
- Fitness metric: global reach (proxy for hierarchy).
- The network react to the attack on the node (that has a degree d) by: attaching a new node with degree 1 and creating (d-1) new links between existing nodes.
- The "game" finishes when the network is no more connected.
TODO: define the genetic algorithm, the strategy of the attacked since it has local information (or not?)
If I skipped something please add.
Possible Tools
Java with jung library Python with networkX
Comment: I (Andrea) looked into networkX (we were mentioning it yesterday) a bit and all the metrics to anlyze and the generation of graphs seems to be there.
Viualization with gephi ?
Meetings
June 7th, 1h30pm
Next meeting is: Tuesday @ 15.00 (?) other suggestions?