/* * CASimulator.java * * Created on September 6, 2007, 3:45 PM * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.util.Iterator; import java.util.Locale; import java.util.Random; import java.util.Vector; import javax.imageio.IIOImage; import javax.imageio.ImageIO; import javax.imageio.ImageWriteParam; import javax.imageio.ImageWriter; import javax.imageio.plugins.jpeg.JPEGImageWriteParam; import javax.imageio.stream.ImageOutputStream; /** * * @author a1flecke */ public class CASimulator { private int numStates=5; private int radius=1; private int neighborhood=2*radius+1; private int[] seed=new int[200]; private int experiment; private int[] ruleTable=new int[13]; private int[][] board=new int[1000][seed.length]; private int numExperiments; private double lambdaT; private double HT; private double lambda; private double H; private double zeta; private Color[] stateColors=new Color[numStates]; private Vector toBeDecimated; private Random rand; private long randSeed; private String ruleString; /** Creates a new instance of CASimulator */ public CASimulator(int numExperiments) { this.numExperiments=numExperiments; Random seedRandom = new Random(); randSeed=seedRandom.nextLong(); rand=new Random(randSeed); //yes this is hard-coded stateColors[0]=Color.BLACK; stateColors[1]=Color.BLUE; stateColors[2]=Color.GREEN; stateColors[3]=Color.YELLOW; stateColors[4]=Color.ORANGE; } public void simulate(){ try{ File fyle = new File("MasterExperiment.csv"); FileOutputStream fos = new FileOutputStream(fyle); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos)); bw.write("Your, Name, \n"); bw.write("Wrap:,true\n"); bw.write("K(states):,"+numStates+"\n"); bw.write("Radius:,"+radius+"\n"); bw.write("Quiescence:,true\n"); bw.write("random seed:,"+randSeed+"\n"); new File("Experiments").mkdir(); for(int experiment=0; experimentExperiment "+experiment+"\n"); bwh.write("

Experiment "+experiment+"

\n"); for(int i=0;i<=12;i++) bwh.write("\n"); bwh.write("
Step 0Step 1Step 2Step 3Step 4Step 5Step 6Step 7Step 8Step 9Step 10Step 11Step 12
\n"); fs.flush(); bwh.flush(); fs.close(); bwh.close(); } catch (IOException ie){ } StringBuilder sb = new StringBuilder(); for(int x=0; x(); ruleTable[0]=0; sb.append(""+0); for(int x=1; x0){ indexTo0=toBeDecimated.remove(rand.nextInt(toBeDecimated.size())); } for(int x=0; x0; x--){ int index=columnIndex-radius; if(index<0){ sum+=row[row.length+index]; }else{ sum+=row[index]; } } //look to my right (and me) for(int x=0; x<=radius; x++){ int index=columnIndex+x; if(index>=row.length){ sum+=row[index-row.length]; }else{ sum+=row[index]; } } return sum; } private int calculateRuleSum(int columnIndex){ int sum=0; //look to my left for(int x=radius; x>0; x--){ int index=columnIndex-radius; if(index<0){ sum+=ruleTable[ruleTable.length+index]; }else{ sum+=ruleTable[index]; } } //look to my right (and me) for(int x=0; x<=radius; x++){ int index=columnIndex+x; if(index>=ruleTable.length){ sum+=ruleTable[index-ruleTable.length]; }else{ sum+=ruleTable[index]; } } return sum; } public void dumpImgToFile( BufferedImage img, File f ) throws IOException { ImageWriter writer = null; Iterator iter = ImageIO.getImageWritersByFormatName("jpg"); if( iter.hasNext() ) writer = (ImageWriter)iter.next(); ImageOutputStream ios = ImageIO.createImageOutputStream( f ); writer.setOutput(ios); ImageWriteParam iwparam = new JPEGImageWriteParam( Locale.getDefault() ); iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT) ; iwparam.setCompressionQuality(0.98f); writer.write(null, new IIOImage(img, null, null), iwparam); } public static void main(String[] args) { // TODO code application logic here if(args.length==0){ System.out.println("USAGE: java CASimulator NUM_EXPERIMENTS"); return; } try{ CASimulator cas = new CASimulator(Integer.parseInt(args[0])); cas.simulate(); }catch(NumberFormatException nfe){ System.out.println("USAGE: java CASimulator NUM_EXPERIMENTS"); return; } } }