// Michael S. Branicky, 08 April 2008: Translation into Java of mdp.cc // // This code offered with no guarantees whatsoever. // public class mdp { /* // States in 4x3 grid world are defined as follows: // 3 5 8 11 // 2 7 10 // 1 4 6 9 */ public static double T(int s, int a, int nexts) { if (s==10) { // return ((double) (nexts==10)); if (nexts==10) return 1; return 0; } if (s==11) { // return ((double) (nexts==11)); if (nexts==11) return 1; return 0; } switch (a) { case 1: // Up switch (s) { case 1: if(nexts==2) return 0.8; if(nexts==1) return 0.1; if(nexts==4) return 0.1; return 0.; case 2: if(nexts==3) return 0.8; if(nexts==2) return 0.2; return 0.; case 3: if(nexts==3) return 0.9; if(nexts==5) return 0.1; return 0.; case 4: if(nexts==4) return 0.8; if(nexts==1) return 0.1; if(nexts==6) return 0.1; return 0.; case 5: if(nexts==5) return 0.8; if(nexts==3) return 0.1; if(nexts==8) return 0.1; return 0.; case 6: if(nexts==7) return 0.8; if(nexts==4) return 0.1; if(nexts==9) return 0.1; return 0.; case 7: if(nexts==8) return 0.8; if(nexts==7) return 0.1; if(nexts==10) return 0.1; return 0.; case 8: if(nexts==8) return 0.8; if(nexts==5) return 0.1; if(nexts==11) return 0.1; return 0.; case 9: if(nexts==10) return 0.8; if(nexts==6) return 0.1; if(nexts==9) return 0.1; return 0.; } case 2: // Left switch (s) { case 1: if(nexts==1) return 0.9; if(nexts==2) return 0.1; return 0.; case 2: if(nexts==2) return 0.8; if(nexts==3) return 0.1; if(nexts==1) return 0.1; return 0.; case 3: if(nexts==3) return 0.9; if(nexts==2) return 0.1; return 0.; case 4: if(nexts==1) return 0.8; if(nexts==4) return 0.2; return 0.; case 5: if(nexts==3) return 0.8; if(nexts==5) return 0.2; return 0.; case 6: if(nexts==4) return 0.8; if(nexts==7) return 0.1; if(nexts==6) return 0.1; return 0.; case 7: if(nexts==7) return 0.8; if(nexts==8) return 0.1; if(nexts==6) return 0.1; return 0.; case 8: if(nexts==5) return 0.8; if(nexts==7) return 0.1; if(nexts==8) return 0.1; return 0.; case 9: if(nexts==6) return 0.8; if(nexts==10) return 0.1; if(nexts==9) return 0.1; return 0.; } case 3: // Right switch (s) { case 1: if(nexts==4) return 0.8; if(nexts==1) return 0.1; if(nexts==2) return 0.1; return 0.; case 2: if(nexts==2) return 0.8; if(nexts==1) return 0.1; if(nexts==3) return 0.1; return 0.; case 3: if(nexts==5) return 0.8; if(nexts==3) return 0.1; if(nexts==2) return 0.1; return 0.; case 4: if(nexts==6) return 0.8; if(nexts==4) return 0.2; return 0.; case 5: if(nexts==8) return 0.8; if(nexts==5) return 0.2; return 0.; case 6: if(nexts==9) return 0.8; if(nexts==7) return 0.1; if(nexts==6) return 0.1; return 0.; case 7: if(nexts==10) return 0.8; if(nexts==8) return 0.1; if(nexts==6) return 0.1; return 0.; case 8: if(nexts==11) return 0.8; if(nexts==7) return 0.1; if(nexts==8) return 0.1; return 0.; case 9: if(nexts==9) return 0.9; if(nexts==10) return 0.1; return 0.; } case 4: // Down switch (s) { case 1: if(nexts==1) return 0.9; if(nexts==4) return 0.1; return 0.; case 2: if(nexts==1) return 0.8; if(nexts==2) return 0.2; return 0.; case 3: if(nexts==2) return 0.8; if(nexts==5) return 0.1; if(nexts==3) return 0.1; return 0.; case 4: if(nexts==4) return 0.8; if(nexts==1) return 0.1; if(nexts==6) return 0.1; return 0.; case 5: if(nexts==5) return 0.8; if(nexts==3) return 0.1; if(nexts==8) return 0.1; return 0.; case 6: if(nexts==6) return 0.8; if(nexts==4) return 0.1; if(nexts==9) return 0.1; return 0.; case 7: if(nexts==6) return 0.8; if(nexts==7) return 0.1; if(nexts==10) return 0.1; return 0.; case 8: if(nexts==7) return 0.8; if(nexts==5) return 0.1; if(nexts==11) return 0.1; return 0.; case 9: if(nexts==9) return 0.9; if(nexts==6) return 0.1; return 0.; } } return 0.; } public static void main(String[] args) { for(int s=1; s<=11; s++) { for(int a=1; a<=4; a++) { for(int nexts=1; nexts<=11; nexts++) { double tmp=T(s,a,nexts); if (tmp>0.000001) { System.out.print("T( "); System.out.print(s+", "+a+", "+nexts); System.out.println(" ) = "+T(s,a,nexts)); } } } } } } // end class