From 49edb1ac6a441dfeda639dfef3c6b11e1d1e0758 Mon Sep 17 00:00:00 2001 From: Devon-Peroutky Date: Wed, 26 Nov 2014 01:35:43 -0500 Subject: [PATCH 1/3] Added code to track percentage of player membership --- src/lineup/LineUp.java | 4 ++++ src/main/FindOptimalLineups.java | 31 ++++++++++++++++++++++--------- src/playertypes/Player.java | 10 ++++++++++ src/playertypes/QB.java | 2 +- 4 files changed, 37 insertions(+), 10 deletions(-) diff --git a/src/lineup/LineUp.java b/src/lineup/LineUp.java index f317ac9..df5cb79 100644 --- a/src/lineup/LineUp.java +++ b/src/lineup/LineUp.java @@ -72,6 +72,10 @@ public double getPts() { } return pts; } + + public void updatePlayerDemographics() { + for(Player p : _getPlayers()) p.incrementMembership(); + } private ArrayList _getPlayers() { return players; diff --git a/src/main/FindOptimalLineups.java b/src/main/FindOptimalLineups.java index bc2bbe8..75e0a0a 100644 --- a/src/main/FindOptimalLineups.java +++ b/src/main/FindOptimalLineups.java @@ -89,21 +89,16 @@ public static void main (String[] args) throws FileNotFoundException { // The core of everything. The recursive call to generate the lineups. // TODO make this not recursive to save the stack. generateLineUps(1, new LineUp(budget), maxCosts); - - + System.out.println("DONE"); - System.out.println(lineUps.size()); + System.out.println("Total Lineups Generated: " + lineUps.size()); Collections.sort(lineUps); for (int i = 0; i < 50; i++) { System.out.println("index " + (i * 100) + ": " + lineUps.get(i*100)); } System.out.println("PLAYERS IN COMBINATIONS"); - System.out.println(qbs); - System.out.println(rbs); - System.out.println(wrs); - System.out.println(tes); - System.out.println(dsts); + outputPositions(qbs, rbs, wrs, tes, dsts); int medianValue = 163; @@ -112,6 +107,23 @@ public static void main (String[] args) throws FileNotFoundException { printWinningPercentage(2000, medianValue); printWinningPercentage(200, medianValue); printWinningPercentage(20, medianValue); + + printDemographics(lineUps.size()); + } + + public static void outputPositions(ArrayList... args) { + for (ArrayList position : args) System.out.println(position); + } + + public static void printDemographics(int totalTeams) { + System.out.println("\nDemographic Data"); + System.out.println("-----------------"); + for (ArrayList position : playerMatrix) { + for (Player p : position) { + double percentage = ((double) p.getMembership()*100) / totalTeams; + System.out.printf(p.getName()+": " + "%1.2f" + "%%\n", percentage); + } + } } public static void printWinningPercentage(int freq, int threshold) { @@ -238,8 +250,9 @@ public static void generateLineUps(int depth, LineUp curLineUp, int[] maxCosts) if (depth == 10) { if (lineUps.size() % 10000 == 0) { //System.out.println(lineUps.size()); - } + } lineUps.add(curLineUp); + curLineUp.updatePlayerDemographics(); return; } ArrayList toAdd; diff --git a/src/playertypes/Player.java b/src/playertypes/Player.java index 916e760..749b5a0 100644 --- a/src/playertypes/Player.java +++ b/src/playertypes/Player.java @@ -8,6 +8,7 @@ public abstract class Player implements Comparable { protected String name; protected int cost; protected double pts; + protected int membership; public abstract double getProjection(); //public abstract double getFantasyPts(); @@ -17,6 +18,15 @@ public abstract class Player implements Comparable { public Player(String name) { this.name = name; pts = .001; + membership = 0; + } + + public int getMembership() { + return this.membership; + } + + public void incrementMembership(){ + this.membership++; } public String getName() { diff --git a/src/playertypes/QB.java b/src/playertypes/QB.java index cda5996..8c2ac8e 100644 --- a/src/playertypes/QB.java +++ b/src/playertypes/QB.java @@ -49,4 +49,4 @@ public void loadProjections(String data) { this.projRushTds = Double.parseDouble(d[9]); this.projFumbles = Double.parseDouble(d[10]); } -} \ No newline at end of file +} From c2b0d684823ab7b72585cae767be70c7562b8c38 Mon Sep 17 00:00:00 2001 From: kmwhelan93 Date: Thu, 27 Nov 2014 11:48:51 -0500 Subject: [PATCH 2/3] made global setting to find demographics for top X lineups --- src/main/FindOptimalLineups.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/main/FindOptimalLineups.java b/src/main/FindOptimalLineups.java index 75e0a0a..90dc3e4 100644 --- a/src/main/FindOptimalLineups.java +++ b/src/main/FindOptimalLineups.java @@ -22,6 +22,7 @@ public class FindOptimalLineups { private static final int minProj = 2; // tweak this number to change the number of combinations that are tried. private static final int cutOffNum = 5; + private static final int topLineUpsDemographics = 200; // CLASS SPECIFIC THINGS private static ArrayList qbs; @@ -108,7 +109,8 @@ public static void main (String[] args) throws FileNotFoundException { printWinningPercentage(200, medianValue); printWinningPercentage(20, medianValue); - printDemographics(lineUps.size()); + updateDemographics(FindOptimalLineups.topLineUpsDemographics); + printDemographics(topLineUpsDemographics); } public static void outputPositions(ArrayList... args) { @@ -116,7 +118,7 @@ public static void outputPositions(ArrayList... args) { } public static void printDemographics(int totalTeams) { - System.out.println("\nDemographic Data"); + System.out.println("\nDemographic Data for top " + topLineUpsDemographics + " lineups"); System.out.println("-----------------"); for (ArrayList position : playerMatrix) { for (Player p : position) { @@ -126,6 +128,12 @@ public static void printDemographics(int totalTeams) { } } + public static void updateDemographics(int numPlayers) { + for (int i = 0; i < numPlayers; i++) { + lineUps.get(i).updatePlayerDemographics(); + } + } + public static void printWinningPercentage(int freq, int threshold) { int winners = 0; for (int i = 0; i < freq; i++) { @@ -252,7 +260,6 @@ public static void generateLineUps(int depth, LineUp curLineUp, int[] maxCosts) //System.out.println(lineUps.size()); } lineUps.add(curLineUp); - curLineUp.updatePlayerDemographics(); return; } ArrayList toAdd; From cc41116979726cca730d938cb1154cb35d3dd466 Mon Sep 17 00:00:00 2001 From: Devon-Peroutky Date: Thu, 27 Nov 2014 21:15:44 -0500 Subject: [PATCH 3/3] Added hack solution for printing out demographics for Top-K teams --- src/main/FindOptimalLineups.java | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/main/FindOptimalLineups.java b/src/main/FindOptimalLineups.java index 90dc3e4..a33e65d 100644 --- a/src/main/FindOptimalLineups.java +++ b/src/main/FindOptimalLineups.java @@ -22,7 +22,7 @@ public class FindOptimalLineups { private static final int minProj = 2; // tweak this number to change the number of combinations that are tried. private static final int cutOffNum = 5; - private static final int topLineUpsDemographics = 200; + private static final int topLineUpsDemographics = 20; // CLASS SPECIFIC THINGS private static ArrayList qbs; @@ -110,7 +110,6 @@ public static void main (String[] args) throws FileNotFoundException { printWinningPercentage(20, medianValue); updateDemographics(FindOptimalLineups.topLineUpsDemographics); - printDemographics(topLineUpsDemographics); } public static void outputPositions(ArrayList... args) { @@ -118,20 +117,24 @@ public static void outputPositions(ArrayList... args) { } public static void printDemographics(int totalTeams) { - System.out.println("\nDemographic Data for top " + topLineUpsDemographics + " lineups"); + System.out.println("\nDemographic Data for top " + totalTeams + " lineups"); System.out.println("-----------------"); - for (ArrayList position : playerMatrix) { - for (Player p : position) { - double percentage = ((double) p.getMembership()*100) / totalTeams; - System.out.printf(p.getName()+": " + "%1.2f" + "%%\n", percentage); - } + for (int i=0; i