package neuralnets; import java.util.ArrayList; import java.util.Iterator; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.io.File; public class KWTAData { private double ext; private double step; private int stepnum; private int extnum; private ArrayList energyData; private double[] initialActivations; private double[] finalActivations; public KWTAData(double step, int stepnum, double ext, int extnum) { this.ext = ext; this.step = step; this.extnum = extnum; this.stepnum = stepnum; energyData = new ArrayList(); } public void addEnergyData( int index, double data) { energyData.add(new EnergyPoint(index, data)); } public void setInitialActivations( double[] activations) { initialActivations = new double[activations.length]; for (int i = 0; i< activations.length; i++) initialActivations[i] = activations[i]; } public void setFinalActivations( double[] activations) { finalActivations = new double[activations.length]; for (int i = 0; i< activations.length; i++) finalActivations[i] = activations[i]; } public void writeEnergyToFile() { String filename = "c:\\ext" + extnum + "step" + stepnum + ".csv"; try { BufferedWriter out = new BufferedWriter(new FileWriter(new File(filename))); for (Iterator i = energyData.iterator(); i.hasNext();) { EnergyPoint epoint = (EnergyPoint)i.next(); out.write(epoint.getIndex()+","+epoint.getData()+"\n"); } out.close(); } catch(IOException e){ e.printStackTrace(); } } public String toString() { StringBuffer sbuf = new StringBuffer(); sbuf.append("ext: "+ext+"\tstep: "+step+"\n"); sbuf.append("node\tinitial\t\t\tfinal\n"); for (int i= 0; i < initialActivations.length; i++) { sbuf.append("a["+i+"]\t"+initialActivations[i]+"\t" +finalActivations[i]+"\n"); } sbuf.append("\n"); return sbuf.toString(); } } //A class representing the points to be plotted class EnergyPoint { private int index; private double data; public EnergyPoint(int index, double data) { this.index = index; this.data = data; } public int getIndex() { return this.index; } public double getData() { return this.data; } }