[virtualcommons-svn] commit/foraging: alllee: adding conditional logic to generateVotingResults for
Status: Beta
Brought to you by:
alllee
From: Bitbucket <com...@bi...> - 2012-02-28 07:19:01
|
1 new commit in foraging: https://bitbucket.org/virtualcommons/foraging/changeset/2f8283b23b0c/ changeset: 2f8283b23b0c user: alllee date: 2012-02-28 08:18:03 summary: adding conditional logic to generateVotingResults for imposed condition serializability breaking change for imposed condition; replacing ForagingStrategy with Strategy in most places affected #: 8 files diff -r 9fed51acc53c15790e7b7145d5ba60d07a3392fa -r 2f8283b23b0c06845bc083903801b0c31803aa04 src/main/java/edu/asu/commons/foraging/client/ClientDataModel.java --- a/src/main/java/edu/asu/commons/foraging/client/ClientDataModel.java +++ b/src/main/java/edu/asu/commons/foraging/client/ClientDataModel.java @@ -18,7 +18,7 @@ import edu.asu.commons.foraging.model.ForagingDataModel; import edu.asu.commons.foraging.model.GroupDataModel; import edu.asu.commons.foraging.model.Resource; -import edu.asu.commons.foraging.rules.iu.ForagingStrategy; +import edu.asu.commons.foraging.rules.Strategy; import edu.asu.commons.net.Identifier; import edu.asu.commons.util.Duration; /** @@ -46,7 +46,7 @@ // these are the subjects that have sanctioned us. private Map<Identifier, Duration> sanctioners = new HashMap<Identifier, Duration>(); - private List<ForagingStrategy> selectedRules = new ArrayList<ForagingStrategy>(); + private List<Strategy> selectedRules = new ArrayList<Strategy>(); private ForagingClient client; private volatile boolean explicitCollectionMode = false; @@ -272,11 +272,11 @@ } // FIXME: deprecate and remove these later - public void setSelectedRules(List<ForagingStrategy> selectedRules) { + public void setSelectedRules(List<Strategy> selectedRules) { this.selectedRules = selectedRules; } - public List<ForagingStrategy> getSelectedRules() { + public List<Strategy> getSelectedRules() { return selectedRules; } diff -r 9fed51acc53c15790e7b7145d5ba60d07a3392fa -r 2f8283b23b0c06845bc083903801b0c31803aa04 src/main/java/edu/asu/commons/foraging/conf/RoundConfiguration.java --- a/src/main/java/edu/asu/commons/foraging/conf/RoundConfiguration.java +++ b/src/main/java/edu/asu/commons/foraging/conf/RoundConfiguration.java @@ -3,7 +3,6 @@ import java.awt.Dimension; import java.text.NumberFormat; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.List; @@ -21,7 +20,6 @@ import edu.asu.commons.foraging.model.ResourceDispenser; import edu.asu.commons.foraging.model.ServerDataModel; import edu.asu.commons.foraging.rules.Strategy; -import edu.asu.commons.foraging.rules.iu.ForagingStrategy; import edu.asu.commons.foraging.rules.iu.ForagingStrategyNomination; import edu.asu.commons.net.Identifier; import edu.asu.commons.util.Duration; @@ -58,7 +56,7 @@ private static final double DEFAULT_TOKEN_MOVEMENT_PROBABILITY = 0.2d; private static final double DEFAULT_TOKEN_BIRTH_PROBABILITY = 0.01d; - private List<ForagingStrategy> selectedRules; + private List<Strategy> selectedRules; public double getTrustGamePayoffIncrement() { return getDoubleProperty("trust-game-payoff", 0.25d); @@ -566,10 +564,6 @@ return createStringTemplate(getProperty("initial-voting-instructions")).render(); } - public List<ForagingStrategy> getForagingRules() { - return Arrays.asList(ForagingStrategy.values()); - - } public boolean isVotingAndRegulationEnabled() { return getBooleanProperty("voting-and-regulation-enabled", false); } @@ -729,10 +723,10 @@ return getProperty("submitted-vote-instructions", "<h1>Submitted</h1><hr><p>Your nomination has been recorded. The final results of the nomination will be shown once all the nominations in your group have been received.</p>"); } - public String generateVotingResults(List<ForagingStrategy> selectedRules, Map<ForagingStrategy, Integer> nominations) { + public String generateVotingResults(List<Strategy> selectedRules, Map<Strategy, Integer> nominations) { List<ForagingStrategyNomination> sortedNominations = new ArrayList<ForagingStrategyNomination>(); - for (Map.Entry<ForagingStrategy, Integer> entry: new TreeMap<ForagingStrategy, Integer>(nominations).entrySet()) { - ForagingStrategy strategy = entry.getKey(); + for (Map.Entry<Strategy, Integer> entry: new TreeMap<Strategy, Integer>(nominations).entrySet()) { + Strategy strategy = entry.getKey(); sortedNominations.add(new ForagingStrategyNomination(strategy, entry.getValue(), strategy.equals(selectedRules.get(0)))); } setSelectedRules(selectedRules); @@ -776,11 +770,11 @@ return template.render(); } - public List<ForagingStrategy> getSelectedRules() { + public List<Strategy> getSelectedRules() { return selectedRules; } - public void setSelectedRules(List<ForagingStrategy> selectedRules) { + public void setSelectedRules(List<Strategy> selectedRules) { this.selectedRules = selectedRules; } diff -r 9fed51acc53c15790e7b7145d5ba60d07a3392fa -r 2f8283b23b0c06845bc083903801b0c31803aa04 src/main/java/edu/asu/commons/foraging/event/RuleSelectedUpdateEvent.java --- a/src/main/java/edu/asu/commons/foraging/event/RuleSelectedUpdateEvent.java +++ b/src/main/java/edu/asu/commons/foraging/event/RuleSelectedUpdateEvent.java @@ -5,7 +5,7 @@ import java.util.Map; import edu.asu.commons.event.AbstractPersistableEvent; -import edu.asu.commons.foraging.rules.iu.ForagingStrategy; +import edu.asu.commons.foraging.rules.Strategy; import edu.asu.commons.net.Identifier; /** @@ -21,24 +21,24 @@ public class RuleSelectedUpdateEvent extends AbstractPersistableEvent { private static final long serialVersionUID = 4360213814026474451L; - private final List<ForagingStrategy> selectedStrategies; - private final Map<ForagingStrategy, Integer> votingResults; + private final List<Strategy> selectedStrategies; + private final Map<Strategy, Integer> votingResults; - public RuleSelectedUpdateEvent(Identifier id, List<ForagingStrategy> selectedStrategies, Map<ForagingStrategy, Integer> votingResults) { + public RuleSelectedUpdateEvent(Identifier id, List<Strategy> selectedStrategies, Map<Strategy, Integer> votingResults) { super(id, String.format("Strategies (first is tiebreaker): %s, All nominations: %s", selectedStrategies, votingResults)); this.selectedStrategies = selectedStrategies; this.votingResults = votingResults; } - public ForagingStrategy getSelectedRule() { + public Strategy getSelectedRule() { return selectedStrategies.get(0); } - public List<ForagingStrategy> getSelectedStrategies() { + public List<Strategy> getSelectedStrategies() { return selectedStrategies; } - public Map<ForagingStrategy, Integer> getVotingResults() { + public Map<Strategy, Integer> getVotingResults() { return votingResults; } diff -r 9fed51acc53c15790e7b7145d5ba60d07a3392fa -r 2f8283b23b0c06845bc083903801b0c31803aa04 src/main/java/edu/asu/commons/foraging/model/GroupDataModel.java --- a/src/main/java/edu/asu/commons/foraging/model/GroupDataModel.java +++ b/src/main/java/edu/asu/commons/foraging/model/GroupDataModel.java @@ -79,7 +79,7 @@ private ArrayList<RegulationData> submittedRegulations = new ArrayList<RegulationData>(); - private ArrayList<ForagingStrategy> selectedRules; + private ArrayList<Strategy> selectedRules; public GroupDataModel(ServerDataModel serverDataModel) { this(serverDataModel, nextGroupId++); @@ -766,9 +766,18 @@ public EventChannel getEventChannel() { return serverDataModel.getEventChannel(); } + + public Map<Strategy, Integer> generateVotingResults() { + return generateVotingResults(getRoundConfiguration().isImposedStrategyEnabled()); + } - public Map<ForagingStrategy, Integer> generateVotingResults() { - Map<ForagingStrategy, Integer> tallyMap = new HashMap<ForagingStrategy, Integer>(); + public Map<Strategy, Integer> generateVotingResults(boolean imposedStrategyEnabled) { + Map<Strategy, Integer> tallyMap = new HashMap<Strategy, Integer>(); + if (imposedStrategyEnabled) { + tallyMap.put(getImposedStrategy(), 1); + selectedRules.add(getImposedStrategy()); + return tallyMap; + } for (ClientData client: clients.values()) { ForagingStrategy rule = client.getVotedRule(); Integer count = tallyMap.get(rule); @@ -777,9 +786,9 @@ } tallyMap.put(rule, count + 1); } - selectedRules = new ArrayList<ForagingStrategy>(); + selectedRules = new ArrayList<Strategy>(); Integer maxSeenValue = 0; - for (Map.Entry<ForagingStrategy, Integer> entry : tallyMap.entrySet()) { + for (Map.Entry<Strategy, Integer> entry : tallyMap.entrySet()) { Integer currentValue = entry.getValue(); // getLogger().info("rule : " + entry.getKey() + " has a vote value of " + currentValue); @@ -801,12 +810,12 @@ return tallyMap; } - public List<ForagingStrategy> getSelectedRules() { + public List<Strategy> getSelectedRules() { return selectedRules; } - public ForagingStrategy getSelectedRule() { + public Strategy getSelectedRule() { return selectedRules.get(0); } diff -r 9fed51acc53c15790e7b7145d5ba60d07a3392fa -r 2f8283b23b0c06845bc083903801b0c31803aa04 src/main/java/edu/asu/commons/foraging/rules/iu/ForagingStrategyNomination.java --- a/src/main/java/edu/asu/commons/foraging/rules/iu/ForagingStrategyNomination.java +++ b/src/main/java/edu/asu/commons/foraging/rules/iu/ForagingStrategyNomination.java @@ -1,16 +1,18 @@ package edu.asu.commons.foraging.rules.iu; +import edu.asu.commons.foraging.rules.Strategy; + public class ForagingStrategyNomination { - private final ForagingStrategy strategy; + private final Strategy strategy; private final Integer nominations; private final boolean selected; - public ForagingStrategyNomination(ForagingStrategy strategy, Integer nominations, boolean selected) { + public ForagingStrategyNomination(Strategy strategy, Integer nominations, boolean selected) { this.strategy = strategy; this.nominations = nominations; this.selected = selected; } - public ForagingStrategy getStrategy() { + public Strategy getStrategy() { return strategy; } public Integer getNominations() { diff -r 9fed51acc53c15790e7b7145d5ba60d07a3392fa -r 2f8283b23b0c06845bc083903801b0c31803aa04 src/main/java/edu/asu/commons/foraging/server/ForagingServer.java --- a/src/main/java/edu/asu/commons/foraging/server/ForagingServer.java +++ b/src/main/java/edu/asu/commons/foraging/server/ForagingServer.java @@ -76,7 +76,7 @@ import edu.asu.commons.foraging.model.ResourceDispenser; import edu.asu.commons.foraging.model.ServerDataModel; import edu.asu.commons.foraging.model.TrustGameResult; -import edu.asu.commons.foraging.rules.iu.ForagingStrategy; +import edu.asu.commons.foraging.rules.Strategy; import edu.asu.commons.foraging.ui.Circle; import edu.asu.commons.net.Dispatcher; import edu.asu.commons.net.Identifier; @@ -369,7 +369,6 @@ }); addEventProcessor(new EventTypeProcessor<RuleVoteRequest>(RuleVoteRequest.class) { int votesReceived = 0; - @Override public void handle(RuleVoteRequest request) { sendFacilitatorMessage("Received vote rule request: " + request); @@ -377,19 +376,7 @@ client.setVotedRule(request.getRule()); votesReceived++; if (votesReceived >= clients.size()) { - // calculate votes - for (GroupDataModel group : serverDataModel.getGroups()) { - Map<ForagingStrategy, Integer> votingResults = group.generateVotingResults(); - List<ForagingStrategy> selectedRules = group.getSelectedRules(); - for (Identifier id : group.getClientIdentifiers()) { - sendFacilitatorMessage(String.format( - "%s selected [%s] from all rules (%s)", - group, selectedRules, votingResults)); - - transmit(new RuleSelectedUpdateEvent(id, selectedRules, votingResults)); - } - store(new RuleSelectedUpdateEvent(facilitatorId, selectedRules, votingResults)); - } + processNominations(); } } }); @@ -412,6 +399,23 @@ }); } + + private void processNominations() { + // calculate votes + boolean imposedStrategyEnabled = getCurrentRoundConfiguration().isImposedStrategyEnabled(); + for (GroupDataModel group : serverDataModel.getGroups()) { + Map<Strategy, Integer> votingResults = group.generateVotingResults(imposedStrategyEnabled); + List<Strategy> selectedRules = group.getSelectedRules(); + for (Identifier id : group.getClientIdentifiers()) { + sendFacilitatorMessage(String.format( + "%s selected [%s] from all rules (%s)", + group, selectedRules, votingResults)); + + transmit(new RuleSelectedUpdateEvent(id, selectedRules, votingResults)); + } + store(new RuleSelectedUpdateEvent(facilitatorId, selectedRules, votingResults)); + } + } @Deprecated @SuppressWarnings("unused") diff -r 9fed51acc53c15790e7b7145d5ba60d07a3392fa -r 2f8283b23b0c06845bc083903801b0c31803aa04 src/main/java/edu/asu/commons/foraging/ui/GameWindow2D.java --- a/src/main/java/edu/asu/commons/foraging/ui/GameWindow2D.java +++ b/src/main/java/edu/asu/commons/foraging/ui/GameWindow2D.java @@ -57,7 +57,6 @@ import edu.asu.commons.foraging.model.ClientData; import edu.asu.commons.foraging.model.Direction; import edu.asu.commons.foraging.rules.Strategy; -import edu.asu.commons.foraging.rules.iu.ForagingStrategy; import edu.asu.commons.net.Identifier; import edu.asu.commons.ui.HtmlEditorPane; import edu.asu.commons.ui.UserInterfaceUtils; @@ -756,7 +755,7 @@ showPanel(VotingForm.NAME); } - public void showVotingResults(final List<ForagingStrategy> selectedRules, final Map<ForagingStrategy, Integer> votingResults) { + public void showVotingResults(final List<Strategy> selectedRules, final Map<Strategy, Integer> votingResults) { SwingUtilities.invokeLater(new Runnable() { public void run() { votingPanel.removeAll(); diff -r 9fed51acc53c15790e7b7145d5ba60d07a3392fa -r 2f8283b23b0c06845bc083903801b0c31803aa04 src/test/java/edu/asu/commons/foraging/model/GroupDataModelTest.java --- a/src/test/java/edu/asu/commons/foraging/model/GroupDataModelTest.java +++ b/src/test/java/edu/asu/commons/foraging/model/GroupDataModelTest.java @@ -44,7 +44,7 @@ data.setVotedRule(rule); } // verify that this is the rule in place. - Map<ForagingStrategy, Integer> votingResults = group.generateVotingResults(); + Map<Strategy, Integer> votingResults = group.generateVotingResults(); assertEquals(1, votingResults.size()); assertEquals(rule, group.getSelectedRule()); } @@ -74,7 +74,7 @@ ForagingStrategy votedRule = rules.get(index); data.setVotedRule(votedRule); } - Map<ForagingStrategy, Integer> votingResults = group.generateVotingResults(); + Map<Strategy, Integer> votingResults = group.generateVotingResults(); assertEquals("There should be 3 rules voted on, total: " + votingResults, 3, votingResults.size()); for (ForagingStrategy tieBreaker: tieBreakerRules) { assertEquals(2, votingResults.get(tieBreaker).intValue()); Repository URL: https://bitbucket.org/virtualcommons/foraging/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. |