📄 inputswitchsynapse.java
字号:
package org.joone.io;import java.util.*;import java.io.*;import org.joone.util.*;import org.joone.engine.Monitor;import org.joone.engine.Pattern;/** This class acts as a switch that can connect its output to one of its connected * input synapses. * Many input synapses can be attached to the switch calling the method addInputSynapse, * but only one is attached to the output; which one is comnnected is determined * by the call to the method setActiveInput, passing to it the name of * the selected synapse. */public class InputSwitchSynapse extends StreamInputSynapse implements Serializable { protected Vector inputs; private StreamInputSynapse activeSynapse; private StreamInputSynapse defaultSynapse; private String name; private Monitor mon; private int outputDimension; private static final long serialVersionUID = 9025876263540714672L; /** The constructor */ public InputSwitchSynapse() { initSwitch(); mon = null; outputDimension = 0; } protected void initSwitch() { inputs = new Vector(); activeSynapse = defaultSynapse = null; } public void init() { super.init(); for (int i=0; i < inputs.size(); ++i) { StreamInputSynapse inp = (StreamInputSynapse)inputs.elementAt(i); inp.init(); } } /** Resets the switch, connecting the default synapse to the output */ public void resetSwitch() { setActiveSynapse(getDefaultSynapse()); } public void reset() { for (int i=0; i < inputs.size(); ++i) { StreamInputSynapse inp = (StreamInputSynapse)inputs.elementAt(i); inp.reset(); } } /** Removes an input synapse from the switch * @param inputName The name of the synapse to remove * @return false if the synapse cannot be found */ public boolean removeInputSynapse(String inputName) { boolean retValue = false; StreamInputSynapse sis = getInputSynapse(inputName); if (sis != null) { inputs.removeElement(sis); sis.setInputFull(false); if (inputs.size() > 0) { if (getActiveInput().equalsIgnoreCase(inputName)) setActiveSynapse((StreamInputSynapse)inputs.elementAt(0)); if (getDefaultInput().equalsIgnoreCase(inputName)) setDefaultSynapse((StreamInputSynapse)inputs.elementAt(0)); } else { setActiveInput(""); setDefaultInput(""); } retValue = true; } return retValue; } protected StreamInputSynapse getInputSynapse(String inputName) { StreamInputSynapse inp = null; for (int i=0; i < inputs.size(); ++i) { inp = (StreamInputSynapse)inputs.elementAt(i); if (inp.getName().equalsIgnoreCase(inputName)) { return inp; } } return null; } /** Adds an input synapse to the switch * @param newInput the new input synapse */ public boolean addInputSynapse(StreamInputSynapse newInput) { boolean retValue = false; if (!inputs.contains(newInput)) { if (!newInput.isInputFull()) { inputs.addElement(newInput); newInput.setOutputDimension(outputDimension); newInput.setMonitor(mon); newInput.setStepCounter(super.isStepCounter()); newInput.setInputFull(true); if (inputs.size() == 1) { setDefaultInput(newInput.getName()); setActiveInput(newInput.getName()); } retValue = true; } } return retValue; } /** Returns the name of the actual connected input synapse * @return The name of the connected input synapse */ public String getActiveInput(){ if (activeSynapse != null) return activeSynapse.getName(); else return ""; } /** Sets the input synapse connected to the output * @param newActiveInput the name of the input synapse to connect */ public void setActiveInput(String newActiveInput) { StreamInputSynapse inp = getInputSynapse(newActiveInput); this.activeSynapse = inp; } /** Returns the name of the default input synapse that is connected * when the reset method is called * @return the name of the default synapse */ public String getDefaultInput() { if (defaultSynapse != null) return defaultSynapse.getName(); else return ""; } /** Sets the name of the default input synapse that is connected * when the reset method is called * @param newDefaultInput the name of the default input synapse */ public void setDefaultInput(String newDefaultInput) { StreamInputSynapse inp = getInputSynapse(newDefaultInput); defaultSynapse = inp; } /** Getter for property activeSynapse. * @return Value of property activeSynapse. */ protected StreamInputSynapse getActiveSynapse() { return activeSynapse; } /** Setter for property activeSynapse. * @param activeSynapse New value of property activeSynapse. */ protected void setActiveSynapse(StreamInputSynapse activeSynapse) { this.activeSynapse = activeSynapse; } /** Getter for property defaultSynapse. * @return Value of property defaultSynapse. */ protected StreamInputSynapse getDefaultSynapse() { return defaultSynapse; } /** Setter for property defaultSynapse. * @param defaultSynapse New value of property defaultSynapse. */ protected void setDefaultSynapse(StreamInputSynapse defaultSynapse) { this.defaultSynapse = defaultSynapse; } /** Returns the name of the input synapse * @return <{String}> */ public String getName() { return name; } /** Sets the name of the input synapse * @param name String */ public void setName(String name) { this.name = name; } //------ Methods and parameters mapped on the active input synapse ------- /** Sets the dimension of the input synapse * @param newOutputDimension int */ public void setOutputDimension(int newOutputDimension) { this.outputDimension = newOutputDimension; for (int i=0; i < inputs.size(); ++i) { StreamInputSynapse inp = (StreamInputSynapse)inputs.elementAt(i); inp.setOutputDimension(newOutputDimension); } } /** Method to put an error pattern backward to the previous layer * @param pattern neural.engine.Pattern */ public void revPut(Pattern pattern) { if (activeSynapse != null) activeSynapse.revPut(pattern); } /** Returns the pattern coming from the previous layer during the recall phase * @return neural.engine.Pattern */ public Pattern fwdGet() { if (activeSynapse != null) return activeSynapse.fwdGet(); else return null; } /** Returns the pattern coming from the previous layer during the recall phase. * This method is called by the InputConnector class * @return neural.engine.Pattern */ public Pattern fwdGet(InputConnector conn) { if (activeSynapse != null) return activeSynapse.fwdGet(conn); else return null; } /** Returns the dimension of the input synapse * @return int */ public int getOutputDimension() { return outputDimension; } /** Returns the monitor * @return <{Monitor}> */ public Monitor getMonitor() { return mon; } /** Sets the Monitor object of the input synapse * @param newMonitor org.joone.engine.Monitor */ public void setMonitor(Monitor newMonitor) { this.mon = newMonitor; for (int i=0; i < inputs.size(); ++i) { StreamInputSynapse inp = (StreamInputSynapse)inputs.elementAt(i); inp.setMonitor(newMonitor); } } protected void backward(double[] pattern) { // Not used } protected void forward(double[] pattern) { // Not used } public Vector getAllInputs() { return inputs; } public void setAllInputs(Vector inps) { inputs = inps; if (inputs != null) { for (int i=0; i < inputs.size(); ++i) { StreamInputSynapse inp = (StreamInputSynapse)inputs.elementAt(i); inp.setInputFull(true); } } } public void resetInput() { for (int i=0; i < inputs.size(); ++i) { StreamInputSynapse inp = (StreamInputSynapse)inputs.elementAt(i); inp.resetInput(); } this.reset(); } protected void initInputStream() { // Not used } public void setStepCounter(boolean newStepCounter) { super.setStepCounter(newStepCounter); for (int i=0; i < inputs.size(); ++i) { StreamInputSynapse inp = (StreamInputSynapse)inputs.elementAt(i); inp.setStepCounter(newStepCounter); } } /** * Point to the indicated line into the input stream */ public void gotoLine(int numLine) throws IOException { if (activeSynapse != null) activeSynapse.gotoLine(numLine); } public void dataChanged(PlugInEvent data) { // Not used } public void setDecimalPoint(char dp) { if (activeSynapse != null) activeSynapse.setDecimalPoint(dp); } /** * Returns if reached the EOF * (10/04/00 23.16.20) * @return boolean */ public boolean isEOF() { if (activeSynapse != null) return activeSynapse.isEOF(); else return false; } public void readAll() { if (activeSynapse != null) activeSynapse.readAll(); } /** * @param newBuffered boolean */ public void setBuffered(boolean newBuffered) { if (activeSynapse != null) activeSynapse.setBuffered(newBuffered); } /** * Returns if the input synapse is buffered * (10/04/00 23.11.30) * @return boolean */ public boolean isBuffered() { if (activeSynapse != null) return activeSynapse.isBuffered(); else return false; } /** * @return neural.engine.ConverterPlugIn */ public ConverterPlugIn getPlugIn() { if (activeSynapse != null) return activeSynapse.getPlugIn(); else return null; } /** * Returns if this input layer is an active counter of the steps. * Warning: in a neural net there can be only one StepCounter element! * (10/04/00 23.23.26) * @return boolean */ public boolean isStepCounter() { if (activeSynapse != null) return activeSynapse.isStepCounter(); else return false; } public void gotoFirstLine() throws IOException { if (activeSynapse != null) activeSynapse.gotoFirstLine(); } public void removeAllInputs() { for (int i=0; i < inputs.size(); ++i) { StreamInputSynapse inp = (StreamInputSynapse)inputs.elementAt(i); inp.setInputFull(false); } initSwitch(); } /** * Check that parameters are set correctly. * * @see Synapse * @return validation errors. */ public TreeSet check() { // Get the parent's cehck messages. TreeSet checks = new TreeSet(); StreamInputSynapse inp; for (int i=0; i < inputs.size(); ++i) { inp = (StreamInputSynapse)inputs.elementAt(i); checks.addAll(inp.check()); } return checks; } /** @return int * */ public int getFirstRow() { if (activeSynapse != null) return activeSynapse.getFirstRow(); else return 0; } /** @return int * */ public int getLastRow() { if (activeSynapse != null) return activeSynapse.getLastRow(); else return 0; } public Collection getInspections() { if (activeSynapse != null) return activeSynapse.Inspections(); else return null; } public int numColumns() { if (activeSynapse != null) return activeSynapse.numColumns(); else return 0; } public String getAdvancedColumnSelector() { if (activeSynapse != null) return activeSynapse.getAdvancedColumnSelector(); else return ""; } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -