diff --git a/VadereGui/src/org/vadere/gui/postvisualization/model/PostvisualizationModel.java b/VadereGui/src/org/vadere/gui/postvisualization/model/PostvisualizationModel.java index d25243d6c9a0659640f787932928a75d9fe45cb9..76aa30c4d3822d50f1e5f7eef15add9b7b066212 100644 --- a/VadereGui/src/org/vadere/gui/postvisualization/model/PostvisualizationModel.java +++ b/VadereGui/src/org/vadere/gui/postvisualization/model/PostvisualizationModel.java @@ -7,8 +7,7 @@ import org.vadere.gui.postvisualization.utils.PotentialFieldContainer; import org.vadere.simulator.projects.Scenario; import org.vadere.state.attributes.AttributesSimulation; import org.vadere.state.attributes.scenario.AttributesAgent; -import org.vadere.state.psychology.cognition.SocialCategory; -import org.vadere.state.psychology.perception.types.Stimulus; +import org.vadere.state.psychology.cognition.SelfCategory; import org.vadere.state.psychology.perception.types.StimulusFactory; import org.vadere.state.scenario.Agent; import org.vadere.state.scenario.Pedestrian; @@ -232,9 +231,9 @@ public class PostvisualizationModel extends SimulationModel pedestrians, double simTimeInSec) { + public void setSelfCategoryOfPedestrian(Collection pedestrians, double simTimeInSec) { // TODO: Include more (pedestrian) attributes into decision process. for (Pedestrian pedestrian : pedestrians) { @@ -42,11 +42,11 @@ public class SocialCategoryProcessor { // Adapt category only if we have seen some footsteps in the past if (footstepHistory.size() >= requiredFootSteps) { if (footstepHistory.getAverageSpeedInMeterPerSecond() <= requiredSpeedInMetersPerSecondToBeCooperative) { - pedestrian.setSocialCategory(SocialCategory.COOPERATIVE); + pedestrian.setSelfCategory(SelfCategory.COOPERATIVE); } else { // TODO: Maybe, check if area directed to target is free for a step // (only then change to "TARGET_ORIENTED"). - pedestrian.setSocialCategory(SocialCategory.TARGET_ORIENTED); + pedestrian.setSelfCategory(SelfCategory.TARGET_ORIENTED); } } } diff --git a/VadereSimulator/src/org/vadere/simulator/models/osm/OSMBehaviorController.java b/VadereSimulator/src/org/vadere/simulator/models/osm/OSMBehaviorController.java index 21c4e4d0559c650a1aea5cf9aa7d69e95c5f7813..1f011bce41be913b910f022cc4ab25fb174c1bef 100644 --- a/VadereSimulator/src/org/vadere/simulator/models/osm/OSMBehaviorController.java +++ b/VadereSimulator/src/org/vadere/simulator/models/osm/OSMBehaviorController.java @@ -5,7 +5,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.vadere.simulator.models.potential.combinedPotentials.CombinedPotentialStrategy; import org.vadere.state.attributes.scenario.AttributesAgent; -import org.vadere.state.psychology.cognition.SocialCategory; +import org.vadere.state.psychology.cognition.SelfCategory; import org.vadere.state.psychology.perception.types.Bang; import org.vadere.state.psychology.perception.types.ChangeTarget; import org.vadere.state.psychology.perception.types.Stimulus; @@ -133,7 +133,7 @@ public class OSMBehaviorController { if (closestPedestrians.size() > 0) { for (Pedestrian closestPedestrian : closestPedestrians) { if(pedestrian.hasNextTarget()) { - boolean closestPedIsCooperative = closestPedestrian.getSocialCategory() == SocialCategory.COOPERATIVE; + boolean closestPedIsCooperative = closestPedestrian.getSelfCategory() == SelfCategory.COOPERATIVE; boolean targetOrientationDiffers = false; // TODO: Use "pedestrian.getTargetGradient()" instead of "calculateAngleBetweenTargets()". diff --git a/VadereSimulator/src/org/vadere/simulator/models/osm/updateScheme/UpdateSchemeEventDriven.java b/VadereSimulator/src/org/vadere/simulator/models/osm/updateScheme/UpdateSchemeEventDriven.java index ac3c5be2114a5f399c5556edb65f61ea7d4f477f..995cf8c4f567998671677daac777337fe0036468 100644 --- a/VadereSimulator/src/org/vadere/simulator/models/osm/updateScheme/UpdateSchemeEventDriven.java +++ b/VadereSimulator/src/org/vadere/simulator/models/osm/updateScheme/UpdateSchemeEventDriven.java @@ -3,7 +3,7 @@ package org.vadere.simulator.models.osm.updateScheme; import org.jetbrains.annotations.NotNull; import org.vadere.simulator.models.osm.OSMBehaviorController; import org.vadere.simulator.models.osm.PedestrianOSM; -import org.vadere.state.psychology.cognition.SocialCategory; +import org.vadere.state.psychology.cognition.SelfCategory; import org.vadere.state.psychology.perception.types.*; import org.vadere.state.scenario.Pedestrian; import org.vadere.state.scenario.Topography; @@ -54,12 +54,12 @@ public class UpdateSchemeEventDriven implements UpdateSchemeOSM { if (mostImportantStimulus instanceof ElapsedTime) { double stepDuration = pedestrian.getDurationNextStep(); - if (pedestrian.getSocialCategory() == SocialCategory.TARGET_ORIENTED) { + if (pedestrian.getSelfCategory() == SelfCategory.TARGET_ORIENTED) { // this can cause problems if the pedestrian desired speed is 0 (see speed adjuster) pedestrian.updateNextPosition(); osmBehaviorController.makeStep(pedestrian, topography, stepDuration); pedestrian.setTimeOfNextStep(pedestrian.getTimeOfNextStep() + stepDuration); - } else if (pedestrian.getSocialCategory() == SocialCategory.COOPERATIVE) { + } else if (pedestrian.getSelfCategory() == SelfCategory.COOPERATIVE) { // this call will also invoke setTimeOfNextStep PedestrianOSM candidate = osmBehaviorController.findSwapCandidate(pedestrian, topography); //TODO: Benedikt Kleinmeier: diff --git a/VadereSimulator/src/org/vadere/simulator/models/osm/updateScheme/UpdateSchemeSequential.java b/VadereSimulator/src/org/vadere/simulator/models/osm/updateScheme/UpdateSchemeSequential.java index 218c03dfa0a441ad10cbc3d4de4b1025dfcbc452..4e9d832823a29f02b1c7686c88b23df09f71e5b1 100644 --- a/VadereSimulator/src/org/vadere/simulator/models/osm/updateScheme/UpdateSchemeSequential.java +++ b/VadereSimulator/src/org/vadere/simulator/models/osm/updateScheme/UpdateSchemeSequential.java @@ -3,7 +3,7 @@ package org.vadere.simulator.models.osm.updateScheme; import org.jetbrains.annotations.NotNull; import org.vadere.simulator.models.osm.OSMBehaviorController; import org.vadere.simulator.models.osm.PedestrianOSM; -import org.vadere.state.psychology.cognition.SocialCategory; +import org.vadere.state.psychology.cognition.SelfCategory; import org.vadere.state.psychology.perception.types.*; import org.vadere.state.scenario.Pedestrian; import org.vadere.state.scenario.Topography; @@ -55,9 +55,9 @@ public class UpdateSchemeSequential implements UpdateSchemeOSM { if (mostImportantStimulus instanceof ElapsedTime) { pedestrian.setTimeCredit(pedestrian.getTimeCredit() + timeStepInSec); pedestrian.clearStrides(); - if (pedestrian.getSocialCategory() == SocialCategory.TARGET_ORIENTED) { + if (pedestrian.getSelfCategory() == SelfCategory.TARGET_ORIENTED) { useTimeCredit(pedestrian, timeStepInSec); - } else if (pedestrian.getSocialCategory() == SocialCategory.COOPERATIVE) { + } else if (pedestrian.getSelfCategory() == SelfCategory.COOPERATIVE) { PedestrianOSM candidate = osmBehaviorController.findSwapCandidate(pedestrian, topography); if(candidate != null) { candidate.setTimeCredit(pedestrian.getTimeCredit() + timeStepInSec); diff --git a/VadereSimulator/src/org/vadere/simulator/projects/dataprocessing/processor/FootStepSocialCategoryProcessor.java b/VadereSimulator/src/org/vadere/simulator/projects/dataprocessing/processor/FootStepSelfCategoryProcessor.java similarity index 70% rename from VadereSimulator/src/org/vadere/simulator/projects/dataprocessing/processor/FootStepSocialCategoryProcessor.java rename to VadereSimulator/src/org/vadere/simulator/projects/dataprocessing/processor/FootStepSelfCategoryProcessor.java index 6c8a0955526f85499d13c9099db7b512bfe007d3..4141e2c8fec01f2f5a30ae165e37bb94be209bba 100644 --- a/VadereSimulator/src/org/vadere/simulator/projects/dataprocessing/processor/FootStepSocialCategoryProcessor.java +++ b/VadereSimulator/src/org/vadere/simulator/projects/dataprocessing/processor/FootStepSelfCategoryProcessor.java @@ -10,14 +10,14 @@ import org.vadere.state.simulation.VTrajectory; import java.util.Collection; /** - * Save social category of a pedestrian in each time step in an own column. + * Save self category of a pedestrian in each time step in an own column. */ @DataProcessorClass() -public class FootStepSocialCategoryProcessor extends DataProcessor { +public class FootStepSelfCategoryProcessor extends DataProcessor { - public static String HEADER = "socialCategory"; + public static String HEADER = "selfCategory"; - public FootStepSocialCategoryProcessor() { + public FootStepSelfCategoryProcessor() { super(HEADER); } @@ -27,9 +27,9 @@ public class FootStepSocialCategoryProcessor extends DataProcessor startTimeKeys; private Set endTimeKeys; private Set mostImportantStimulusKeys; - private Set socialCategoryKeys; + private Set selfCategoryKeys; private List> keys; public static final int NOT_SET_COLUMN_INDEX_IDENTIFIER = -1; @@ -46,7 +46,7 @@ public final class ColumnNames { groupIdKeys = new HashSet<>(); groupSizeKeys = new HashSet<>(); mostImportantStimulusKeys = new HashSet<>(); - socialCategoryKeys = new HashSet<>(); + selfCategoryKeys = new HashSet<>(); startTimeKeys = new HashSet<>(); endTimeKeys = new HashSet<>(); @@ -68,7 +68,7 @@ public final class ColumnNames { groupIdKeys.add("groupId"); groupSizeKeys.add("groupSize"); mostImportantStimulusKeys.add("mostImportantStimulus"); - socialCategoryKeys.add("socialCategory"); + selfCategoryKeys.add("selfCategory"); keys.add(pedestrianIdKeys); keys.add(startX); @@ -79,13 +79,13 @@ public final class ColumnNames { keys.add(groupIdKeys); keys.add(groupSizeKeys); keys.add(mostImportantStimulusKeys); - keys.add(socialCategoryKeys); + keys.add(selfCategoryKeys); keys.add(startTimeKeys); keys.add(endTimeKeys); } - public int getSocialCategoryCol(@NotNull final Table dataFrame) { - return getColId(dataFrame, socialCategoryKeys); + public int getSelfCategoryCol(@NotNull final Table dataFrame) { + return getColId(dataFrame, selfCategoryKeys); } public int getMostImportantStimulusCol(@NotNull final Table dataFrame) { diff --git a/VadereSimulator/src/org/vadere/simulator/projects/migration/jsontranformation/json/TargetVersionV1_5.java b/VadereSimulator/src/org/vadere/simulator/projects/migration/jsontranformation/json/TargetVersionV1_5.java index 1436c4d1aeb87d9d75f892b929e9cf02a04811bc..0667a0e9ba1011d425b36ec186e1bd757ee54a5b 100644 --- a/VadereSimulator/src/org/vadere/simulator/projects/migration/jsontranformation/json/TargetVersionV1_5.java +++ b/VadereSimulator/src/org/vadere/simulator/projects/migration/jsontranformation/json/TargetVersionV1_5.java @@ -44,7 +44,7 @@ import org.vadere.simulator.projects.migration.jsontranformation.SimpleJsonTrans * Also, rename * - "useSalientBehavior" to "usePsychologyLayer" under "attributesSimulation" node * - "FootStepMostImportantEventProcessor" to "FootStepMostImportantStimulusProcessor" - * - "FootStepSalientBehaviorProcessor" to "FootStepSocialCategoryProcessor" + * - "FootStepSalientBehaviorProcessor" to "FootStepSelfCategoryProcessor" * - "salientBehavior" in "dynamicElements" node */ @MigrationTransformation(targetVersionLabel = "1.5") @@ -182,7 +182,7 @@ public class TargetVersionV1_5 extends SimpleJsonTransformation { private void renameOutputProcessorSalientBehavior(JsonNode node) throws MigrationException { String oldName = "FootStepSalientBehaviorProcessor"; - String newName = "FootStepSocialCategoryProcessor"; + String newName = "FootStepSelfCategoryProcessor"; renameOutputProcessor(node, oldName, newName); } @@ -205,7 +205,7 @@ public class TargetVersionV1_5 extends SimpleJsonTransformation { private void renameSalientBehaviorInDynamicElements(JsonNode node) throws MigrationException { String oldName = "salientBehavior"; - String newName = "socialCategory"; + String newName = "selfCategory"; JsonNode dynamicElementsNode = path(node, "scenario/topography/dynamicElements"); diff --git a/VadereState/src/org/vadere/state/psychology/cognition/SelfCategory.java b/VadereState/src/org/vadere/state/psychology/cognition/SelfCategory.java new file mode 100644 index 0000000000000000000000000000000000000000..29ae0e13ee86adbcf85a011114b4509d3b791145 --- /dev/null +++ b/VadereState/src/org/vadere/state/psychology/cognition/SelfCategory.java @@ -0,0 +1,17 @@ +package org.vadere.state.psychology.cognition; + +/** + * According to the self-categorization theory ("reicher-2010"), people define + * themselves as member of a social category. Often, people act collectively + * when being in the same category. E.g., protesters - which define themselves + * as protesers - walk together during a demonstration. + * + * Our agents can use these categorizations to to derive a specific behavior. + * E.g., if an agents is "COOPERATIVE", the pedestrian swaps places + * with other "COOPERATIVE" pedestrians. + * + * Watch out: The self category of an agent can change during a simulation. + */ +public enum SelfCategory { + TARGET_ORIENTED, COOPERATIVE +} diff --git a/VadereState/src/org/vadere/state/psychology/cognition/SocialCategory.java b/VadereState/src/org/vadere/state/psychology/cognition/SocialCategory.java deleted file mode 100644 index 767655e6bcce6b93d842cdbea6957268066ceb31..0000000000000000000000000000000000000000 --- a/VadereState/src/org/vadere/state/psychology/cognition/SocialCategory.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.vadere.state.psychology.cognition; - -/** - * A pedestrian uses these social categories to derive a specific behavior. - * E.g., if a pedestrian is "COOPERATIVE", the pedestrian swaps places - * with other "COOPERATIVE" pedestrians. - * - * Watch out: The social category of a pedestrian can change during a simulation. - */ -public enum SocialCategory { - TARGET_ORIENTED, COOPERATIVE -} diff --git a/VadereState/src/org/vadere/state/scenario/Pedestrian.java b/VadereState/src/org/vadere/state/scenario/Pedestrian.java index 84ca94abe27f392666c17feab197df89b82bc716..44ff38f540c53edb6290d529613bf2394cc00ff3 100644 --- a/VadereState/src/org/vadere/state/scenario/Pedestrian.java +++ b/VadereState/src/org/vadere/state/scenario/Pedestrian.java @@ -1,7 +1,7 @@ package org.vadere.state.scenario; import org.vadere.state.attributes.scenario.AttributesAgent; -import org.vadere.state.psychology.cognition.SocialCategory; +import org.vadere.state.psychology.cognition.SelfCategory; import org.vadere.state.psychology.perception.types.Stimulus; import org.vadere.state.simulation.FootStep; import org.vadere.state.simulation.FootstepHistory; @@ -25,7 +25,7 @@ public class Pedestrian extends Agent { private boolean isChild; // TODO should actually be an attribute or a member of a subclass private boolean isLikelyInjured; // TODO should actually be an attribute or a member of a subclass private Stimulus mostImportantStimulus; /** Evaluated in each time step in "EventCognition". */ - private SocialCategory socialCategory; + private SelfCategory selfCategory; private LinkedList groupIds; // TODO should actually be an attribute or a member of a subclass /** * trajectory is a list of foot steps a pedestrian made during the duration of one time step. @@ -59,7 +59,7 @@ public class Pedestrian extends Agent { isChild = false; isLikelyInjured = false; mostImportantStimulus = null; - socialCategory = SocialCategory.TARGET_ORIENTED; + selfCategory = SelfCategory.TARGET_ORIENTED; groupIds = new LinkedList<>(); groupSizes = new LinkedList<>(); modelPedestrianMap = new HashMap<>(); @@ -74,7 +74,7 @@ public class Pedestrian extends Agent { isChild = other.isChild; isLikelyInjured = other.isLikelyInjured; mostImportantStimulus = other.mostImportantStimulus; - socialCategory = other.socialCategory; + selfCategory = other.selfCategory; if (other.groupIds != null) { groupIds = new LinkedList<>(other.groupIds); @@ -100,7 +100,7 @@ public class Pedestrian extends Agent { return isLikelyInjured; } public Stimulus getMostImportantStimulus() { return mostImportantStimulus; } - public SocialCategory getSocialCategory() { return socialCategory; } + public SelfCategory getSelfCategory() { return selfCategory; } public LinkedList getGroupIds() { return groupIds; } public LinkedList getGroupSizes() { return groupSizes; @@ -148,7 +148,7 @@ public class Pedestrian extends Agent { this.isLikelyInjured = likelyInjured; } public void setMostImportantStimulus(Stimulus mostImportantStimulus) { this.mostImportantStimulus = mostImportantStimulus; } - public void setSocialCategory(SocialCategory socialCategory) { this.socialCategory = socialCategory; } + public void setSelfCategory(SelfCategory selfCategory) { this.selfCategory = selfCategory; } public void setGroupIds(LinkedList groupIds) { this.groupIds = groupIds; }