/**
* Copyright (c) 2006, Seweryn Habdank-Wojewodzki
* Copyright (c) 2006, Janusz Rybarski
* Copyright (c) 2014, Sergei Chekanov
*
* All rights reserved.
*
* Redistribution and use in source and binary forms,
* with or without modification, are permitted provided
* that the following conditions are met:
*
* Redistributions of source code must retain the above
* copyright notice, this list of conditions and the
* following disclaimer.
*
* Redistributions in binary form must reproduce the
* above copyright notice, this list of conditions
* and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS
* AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
* WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jhpro.nnet.jknnl;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.io.File;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
import jhplot.PND;
/**
* Default Network Model.
* We can create network with specified topology, inputs for each neuron and maximal value for neurons weights.
* @author Janusz Rybarski
* @author Seweryn Habdank-Wojewodzki
* @author Sergei Chekanov
*/
public class DefaultNetwork implements NetworkModel{
/**
* Array of neurons
*/
private NeuronModel[] neuronList;
/**
* Reference to topology
*/
private TopologyModel topology;
/**
* Create network with specified topology, random weight from
* defined interval and number of inputs
* @param weightNumber number of weights (inputs)
* @param maxWeight array with specified weight
* @param topology Topology
*/
public DefaultNetwork(int weightNumber, double[] maxWeight, TopologyModel topology) {
this.topology = topology;
int numberOfNeurons = topology.getNumbersOfNeurons();
neuronList = new KohonenNeuron[numberOfNeurons];
for (int i=0; i getWeightsAsArray(){
ArrayList data= new ArrayList();
for (int i=0; i< neuronList.length; i++ ){
double[] weight = neuronList[i].getWeight();
data.add(weight);
}
return data;
}
/**
* Returns data representation of the Coords object
* @return Returns PND data representation of the Coords (weights) object
*/
public PND getWeights(){
PND data= new PND("weights");
for (int i=0; i< neuronList.length; i++ ){
double[] weight = neuronList[i].getWeight();
data.add(weight);
}
return data;
}
/**
* Save network into file
* @param fileName File Name
*/
public void networkToFile(String fileName){
File outFile = new File(fileName);
String weightList;
double[] weight;
try{
FileWriter fw = new FileWriter(outFile);
PrintWriter pw = new PrintWriter(fw);
int networkSize = neuronList.length;
for (int i=0; i< networkSize; i++ ){
weightList ="";
weight = neuronList[i].getWeight();
for (int j=0; j< weight.length; j++){
weightList += weight[j];
if (j < weight.length -1){
weightList += "\t";
}
}
pw.println(weightList);
}
fw.close();
}catch(IOException e){
System.out.println("File can not be read!. Error: " + e);
}
}
}
Ads help maintain this website.