Commit f4aaae84 authored by Björn Richerzhagen's avatar Björn Richerzhagen
Browse files
parents d6acdb69 c1761134
...@@ -20,24 +20,13 @@ ...@@ -20,24 +20,13 @@
package de.tud.kom.p2psim.impl.topology.movement.modular.transition; package de.tud.kom.p2psim.impl.topology.movement.modular.transition;
import java.util.ArrayList; import java.util.*;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.Random;
import java.util.Set;
import java.util.Vector;
import de.tud.kom.p2psim.api.common.SimHost; import de.tud.kom.p2psim.api.common.SimHost;
import de.tud.kom.p2psim.api.common.SimHostComponent; import de.tud.kom.p2psim.api.common.SimHostComponent;
import de.tud.kom.p2psim.api.scenario.ConfigurationException; import de.tud.kom.p2psim.api.scenario.ConfigurationException;
import de.tud.kom.p2psim.api.topology.Topology; import de.tud.kom.p2psim.api.topology.Topology;
import de.tud.kom.p2psim.api.topology.movement.MovementSupported;
import de.tud.kom.p2psim.api.topology.movement.SimLocationActuator; import de.tud.kom.p2psim.api.topology.movement.SimLocationActuator;
import de.tud.kom.p2psim.api.topology.social.SocialView; import de.tud.kom.p2psim.api.topology.social.SocialView;
import de.tud.kom.p2psim.impl.simengine.Simulator; import de.tud.kom.p2psim.impl.simengine.Simulator;
...@@ -51,7 +40,7 @@ import de.tudarmstadt.maki.simonstrator.api.Randoms; ...@@ -51,7 +40,7 @@ import de.tudarmstadt.maki.simonstrator.api.Randoms;
/** /**
* This is a {@link TransitionStrategy} for the Social Case. It will be try to * This is a {@link TransitionStrategy} for the Social Case. It will be try to
* build groups based on the {@link SocialView} information. For this, it tries * build groups based on the {@link SocialView} information. For this, it tries
* to assignment the given {@link MovementSupported} objects to the given * to assignment the given {@link SimLocationActuator} objects to the given
* {@link AttractionPoint}s. For the {@link SocialView}, it is required a * {@link AttractionPoint}s. For the {@link SocialView}, it is required a
* {@link #socialId}, to find the right {@link SocialView}. * {@link #socialId}, to find the right {@link SocialView}.
* *
...@@ -65,7 +54,7 @@ import de.tudarmstadt.maki.simonstrator.api.Randoms; ...@@ -65,7 +54,7 @@ import de.tudarmstadt.maki.simonstrator.api.Randoms;
* {@link AttractionPoint}. For that, it will be used only the AttractionPoints, * {@link AttractionPoint}. For that, it will be used only the AttractionPoints,
* of the hosts, which are in the same SocialCluster or are SocialNeighbors. For * of the hosts, which are in the same SocialCluster or are SocialNeighbors. For
* this AttractionPoints it will be find the highest scoring, which is to found * this AttractionPoints it will be find the highest scoring, which is to found
* in {@link #score(MovementSupported, AttractionPoint, List, List, List, List)} * in {@link #score(SimLocationActuator, AttractionPoint, List, List, List, List)}
* . * .
* *
* <br> * <br>
...@@ -205,7 +194,7 @@ public class SocialTransitionStrategy implements TransitionStrategy, ...@@ -205,7 +194,7 @@ public class SocialTransitionStrategy implements TransitionStrategy,
private AttractionPoint findHighestScore(SimLocationActuator ms, private AttractionPoint findHighestScore(SimLocationActuator ms,
List<AttractionPoint> apFavorites, List<AttractionPoint> apFriends, List<AttractionPoint> apFavorites, List<AttractionPoint> apFriends,
List<AttractionPoint> apClusters, List<AttractionPoint> apRandom) { List<AttractionPoint> apClusters, List<AttractionPoint> apRandom) {
Set<AttractionPoint> aps = new HashSet<AttractionPoint>(); Set<AttractionPoint> aps = new LinkedHashSet<AttractionPoint>();
aps.addAll(apFavorites); aps.addAll(apFavorites);
aps.addAll(apFriends); aps.addAll(apFriends);
aps.addAll(apClusters); aps.addAll(apClusters);
...@@ -226,7 +215,7 @@ public class SocialTransitionStrategy implements TransitionStrategy, ...@@ -226,7 +215,7 @@ public class SocialTransitionStrategy implements TransitionStrategy,
} }
/** /**
* Score the given AttractionPoint for the given {@link MovementSupported}. <br> * Score the given AttractionPoint for the given {@link SimLocationActuator}. <br>
* (clusterScore/#NodesInAp + friendsScore + 1/#NodesInAp) * socialFactor + * (clusterScore/#NodesInAp + friendsScore + 1/#NodesInAp) * socialFactor +
* (distanceScore + penalty) + (1-socialFactor) <br> * (distanceScore + penalty) + (1-socialFactor) <br>
* *
...@@ -303,7 +292,7 @@ public class SocialTransitionStrategy implements TransitionStrategy, ...@@ -303,7 +292,7 @@ public class SocialTransitionStrategy implements TransitionStrategy,
private List<AttractionPoint> getRandomPlaces(SimLocationActuator ms, private List<AttractionPoint> getRandomPlaces(SimLocationActuator ms,
int number) { int number) {
Collections.shuffle(aPoints); Collections.shuffle(aPoints, rand);
List<AttractionPoint> result = new Vector<AttractionPoint>(); List<AttractionPoint> result = new Vector<AttractionPoint>();
Iterator<AttractionPoint> iAP = aPoints.iterator(); Iterator<AttractionPoint> iAP = aPoints.iterator();
for (int i = 0; i < number && iAP.hasNext(); i++) { for (int i = 0; i < number && iAP.hasNext(); i++) {
...@@ -346,7 +335,7 @@ public class SocialTransitionStrategy implements TransitionStrategy, ...@@ -346,7 +335,7 @@ public class SocialTransitionStrategy implements TransitionStrategy,
} }
private AttractionPoint getRandomPlace(SimLocationActuator ms) { private AttractionPoint getRandomPlace(SimLocationActuator ms) {
Collections.shuffle(aPoints); Collections.shuffle(aPoints, rand);
return aPoints.iterator().next(); return aPoints.iterator().next();
} }
...@@ -384,7 +373,7 @@ public class SocialTransitionStrategy implements TransitionStrategy, ...@@ -384,7 +373,7 @@ public class SocialTransitionStrategy implements TransitionStrategy,
} }
private void assignFavoritePlaces(SimLocationActuator ms) { private void assignFavoritePlaces(SimLocationActuator ms) {
Set<AttractionPoint> msFavoritePlaces = new HashSet<AttractionPoint>(); Set<AttractionPoint> msFavoritePlaces = new LinkedHashSet<AttractionPoint>();
LinkedList<AttractionPoint> temp = new LinkedList<AttractionPoint>( LinkedList<AttractionPoint> temp = new LinkedList<AttractionPoint>(
aPoints); aPoints);
Collections.shuffle(temp, rand); Collections.shuffle(temp, rand);
......
...@@ -23,7 +23,6 @@ package de.tud.kom.p2psim.impl.topology.movement.modularosm.transition; ...@@ -23,7 +23,6 @@ package de.tud.kom.p2psim.impl.topology.movement.modularosm.transition;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.LinkedList; import java.util.LinkedList;
...@@ -224,7 +223,7 @@ public class SocialTransitionStrategy implements ITransitionStrategy, ...@@ -224,7 +223,7 @@ public class SocialTransitionStrategy implements ITransitionStrategy,
private AttractionPoint findHighestScore(SimLocationActuator ms, private AttractionPoint findHighestScore(SimLocationActuator ms,
List<AttractionPoint> apFavorites, List<AttractionPoint> apFriends, List<AttractionPoint> apFavorites, List<AttractionPoint> apFriends,
List<AttractionPoint> apClusters, List<AttractionPoint> apRandom) { List<AttractionPoint> apClusters, List<AttractionPoint> apRandom) {
Set<AttractionPoint> aps = new HashSet<AttractionPoint>(); Set<AttractionPoint> aps = new LinkedHashSet<AttractionPoint>();
aps.addAll(apFavorites); aps.addAll(apFavorites);
aps.addAll(apFriends); aps.addAll(apFriends);
aps.addAll(apClusters); aps.addAll(apClusters);
...@@ -322,7 +321,7 @@ public class SocialTransitionStrategy implements ITransitionStrategy, ...@@ -322,7 +321,7 @@ public class SocialTransitionStrategy implements ITransitionStrategy,
private List<AttractionPoint> getRandomPlaces(SimLocationActuator ms, private List<AttractionPoint> getRandomPlaces(SimLocationActuator ms,
int number) { int number) {
Collections.shuffle(aPoints); Collections.shuffle(aPoints, rand);
List<AttractionPoint> result = new Vector<AttractionPoint>(); List<AttractionPoint> result = new Vector<AttractionPoint>();
Iterator<AttractionPoint> iAP = aPoints.iterator(); Iterator<AttractionPoint> iAP = aPoints.iterator();
for (int i = 0; i < number && iAP.hasNext(); i++) { for (int i = 0; i < number && iAP.hasNext(); i++) {
...@@ -365,7 +364,7 @@ public class SocialTransitionStrategy implements ITransitionStrategy, ...@@ -365,7 +364,7 @@ public class SocialTransitionStrategy implements ITransitionStrategy,
} }
private void assignFavoritePlaces(SimLocationActuator ms) { private void assignFavoritePlaces(SimLocationActuator ms) {
Set<AttractionPoint> msFavoritePlaces = new HashSet<AttractionPoint>(); Set<AttractionPoint> msFavoritePlaces = new LinkedHashSet<AttractionPoint>();
LinkedList<AttractionPoint> temp = new LinkedList<AttractionPoint>( LinkedList<AttractionPoint> temp = new LinkedList<AttractionPoint>(
aPoints); aPoints);
Collections.shuffle(temp, rand); Collections.shuffle(temp, rand);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment