public class TPZSGfp { // Fictitious play for two-person, zero-sum game // See p. 744 of Raghavan, T.E.S., Handbook of Game Theory 2, 1994, "Zero-Sum Two-Person Games". private static void test(String description, double[][] payoff, double epsilon, int iterations) { StdOut.println(); StdOut.println(description); StdOut.println("------------------------------------"); int m = payoff.length; int n = payoff[0].length; double[] x=new double[n]; double[] y=new double[m]; int[] colCount=new int[n]; int[] rowCount=new int[m]; int minCol,maxRow; double minVal,maxVal,work; double gameValue=999999999,oldGameValue; // Uses "alternating" vs. "simultaneous" updating. // See Berger, U., J. Economic Theory 135 (1), 2007, 572-578, "Brown's Original Fictitious Play". berger.pdf for (int k=0; kmaxVal) { maxVal=work; maxRow=i; } } rowCount[maxRow]++; if (k%1000==999 || k==iterations-1) { oldGameValue=gameValue; for (int i=0; i