00001 #ifndef SNNSKRUI_HEADER 00002 #define SNNSKRUI_HEADER 00003 00004 #include <iostream.h> 00005 00006 #include "TObject.h" 00007 #include "snns_kr_ui.h" 00008 00009 class SnnsKrui : virtual public TObject { 00010 00011 public: 00012 00013 SnnsKrui(); 00014 ~SnnsKrui(); 00015 00016 void (*krui_errorHandler)(int); 00017 int krui_error_code; 00018 00019 int getNoOfUnits(void); 00020 int getFirstUnit(void); 00021 int getNextUnit(void); 00022 int getCurrentUnit(void); 00023 krui_err setCurrentUnit(int unit_no); 00024 char *getUnitName(int UnitNo); 00025 krui_err setUnitName(int unit_no, char *unit_name); 00026 int searchUnitName(char *unit_name); 00027 int searchNextUnitName(void); 00028 char *getUnitOutFuncName(int UnitNo); 00029 krui_err setUnitOutFunc(int unit_no, char *unitOutFuncName); 00030 char *getUnitActFuncName(int UnitNo); 00031 krui_err setUnitActFunc(int unit_no, char *unitActFuncName); 00032 char *getUnitFTypeName(int UnitNo); 00033 FlintType getUnitActivation(int UnitNo); 00034 krui_err setUnitActivation(int UnitNo, 00035 FlintTypeParam unit_activation); 00036 FlintType getUnitInitialActivation(int UnitNo); 00037 void setUnitInitialActivation(int UnitNo, 00038 FlintTypeParam unit_i_activation); 00039 FlintType getUnitOutput(int UnitNo); 00040 krui_err setUnitOutput(int unit_no, FlintTypeParam unit_output); 00041 FlintType getUnitBias(int UnitNo); 00042 void setUnitBias(int UnitNo, FlintTypeParam unit_bias); 00043 FlintType getUnitValueA(int UnitNo); 00044 void setUnitValueA(int UnitNo, FlintTypeParam unit_valueA); 00045 int getUnitSubnetNo(int UnitNo); 00046 void setUnitSubnetNo(int UnitNo, int subnet_no); 00047 unsigned short getUnitLayerNo(int UnitNo); 00048 void setUnitLayerNo(int UnitNo, int layer_no); 00049 void getUnitPosition(int UnitNo, struct PosType *position); 00050 void setUnitPosition(int UnitNo, struct PosType *position); 00051 int getUnitNoAtPosition(struct PosType *position, 00052 int subnet_no); 00053 int getUnitNoNearPosition(struct PosType *position, 00054 int subnet_no, 00055 int range, int gridWidth); 00056 int getUnitTType(int unit_no); 00057 krui_err setUnitTType(int unit_no, int UnitTType); 00058 krui_err freezeUnit(int unit_no); 00059 krui_err unfreezeUnit(int unit_no); 00060 bool isUnitFrozen(int unit_no); 00061 int getUnitInputType(int unit_no); 00062 int createDefaultUnit(void); 00063 int createUnit(char *unit_name, char *out_func_name, 00064 char *act_func_name, FlintTypeParam i_act, 00065 FlintTypeParam bias); 00066 krui_err deleteUnit(int unit_no); 00067 krui_err deleteUnitList(int no_of_units, int unit_list[]); 00068 int createFTypeUnit(char *Ftype_symbol); 00069 krui_err setUnitFType(int unit_no, char *Ftype_symbol); 00070 int copyUnit(int unit_no, int copy_mode); 00071 bool setFirstFTypeEntry(void); 00072 bool setNextFTypeEntry(void); 00073 bool setFTypeEntry(char *Ftype_symbol); 00074 char *getFTypeName(void); 00075 krui_err setFTypeName(char *Ftype_symbol); 00076 char *getFTypeActFuncName(void); 00077 krui_err setFTypeActFunc(char *act_func_name); 00078 krui_err setFTypeOutFunc(char *out_func_name); 00079 bool setFirstFTypeSite(void); 00080 bool setNextFTypeSite(void); 00081 char *getFTypeSiteName(void); 00082 krui_err setFTypeSiteName(char *FType_site_name); 00083 krui_err createFTypeEntry(char *Ftype_symbol, char *act_func_name, 00084 char *out_func_name, int no_of_sites, 00085 char **array_of_site_names); 00086 krui_err deleteFTypeEntry(char *Ftype_symbol); 00087 int getNoOfFunctions(void); 00088 void getFuncInfo(int func_no, char **func_name,int *func_type); 00089 bool isFunction(char *func_name, int func_type); 00090 bool getFuncParamInfo(char *func_name, int func_type, 00091 int *no_of_input_params, 00092 int *no_of_output_params); 00093 bool getFirstSiteTableEntry(char **site_name,char **site_func); 00094 bool getNextSiteTableEntry(char **site_name, char **site_func); 00095 char *getSiteTableFuncName(char *site_name); 00096 krui_err createSiteTableEntry(char *site_name, char *site_func); 00097 krui_err changeSiteTableEntry(char *old_site_name, 00098 char *new_site_name, 00099 char *new_site_func); 00100 krui_err deleteSiteTableEntry(char *site_name); 00101 bool setFirstSite(void); 00102 bool setNextSite(void); 00103 krui_err setSite(char *site_name); 00104 FlintType getSiteValue(void); 00105 char *getSiteName(void); 00106 krui_err setSiteName(char *site_name); 00107 char *getSiteFuncName(void); 00108 krui_err addSite(char *site_name); 00109 bool deleteSite(void); 00110 int getFirstPredUnit(FlintType *strength); 00111 int getFirstPredUnitAndData(FlintType *strength,float *val_a,float *val_b, float *val_c); 00112 int getNextPredUnit(FlintType *strength); 00113 int getNextPredUnitAndData(FlintType *strength,float *val_a,float *val_b, float *val_c); 00114 int getCurrentPredUnit(FlintType *strength); 00115 00116 int getFirstSuccUnit(int source_unit_no, FlintType *weight); 00117 int getNextSuccUnit(FlintType *weight); 00118 bool areConnected(int source_unit_no, int target_unit_no); 00119 bool areConnectedWeight(int source_unit_no,int target_unit_no, 00120 FlintType *weight); 00121 bool isConnected(int source_unit_no); 00122 FlintType getLinkWeight(void); 00123 void setLinkWeight(FlintTypeParam weight); 00124 krui_err createLink(int source_unit_no, FlintTypeParam weight); 00125 struct Link* createLinkWithAdditionalParameters( 00126 int source_unit_no, FlintTypeParam weight, 00127 float val_a,float val_b,float val_c); 00128 krui_err deleteLink(void); 00129 krui_err deleteAllInputLinks(void); 00130 krui_err deleteAllOutputLinks(void); 00131 00132 void jogWeights(FlintTypeParam minus, FlintTypeParam plus); 00133 krui_err jogCorrWeights(FlintTypeParam minus, FlintTypeParam plus, 00134 FlintTypeParam mincorr); 00135 krui_err updateSingleUnit(int unit_no); 00136 char *getUpdateFunc(void); 00137 krui_err setUpdateFunc(char *update_func); 00138 krui_err setRemapFunc(char *name, float *params); 00139 krui_err updateNet(float *parameterInArray, int NoOfInParams); 00140 char *getInitialisationFunc(void); 00141 krui_err setInitialisationFunc(char *initialisation_func); 00142 krui_err initializeNet(float *parameterInArray, int NoOfInParams); 00143 char *getLearnFunc(void); 00144 krui_err setLearnFunc(char *learning_func); 00145 krui_err trainNetwork(NetLearnParameters *parameters); 00146 krui_err getNetworkErrorArray(double **learnErrors,int **atEpoch, 00147 int *noOfErrors); 00148 krui_err stopTraining(void); 00149 krui_err learnAllPatterns(float *parameterInArray,int NoOfInParams, 00150 float **parameterOutArray, 00151 int *NoOfOutParams); 00152 krui_err testAllPatterns(float *parameterInArray, int NoOfInParams, 00153 float **parameterOutArray, 00154 int *NoOfOutParams); 00155 krui_err learnSinglePattern(int pattern_no,float *parameterInArray, 00156 int NoOfInParams, 00157 float **parameterOutArray, 00158 int *NoOfOutParams); 00159 krui_err testSinglePattern(int pattern_no, float *parameterInArray, 00160 int NoOfInParams, 00161 float **parameterOutArray, 00162 int *NoOfOutParams); 00163 int checkPruning (void); 00164 krui_err learnAllPatternsFF(float *parameterInArray, 00165 int NoOfInParams, 00166 float **parameterOutArray, 00167 int *NoOfOutParams); 00168 krui_err learnSinglePatternFF(int pattern_no, 00169 float *parameterInArray, 00170 int NoOfInParams, 00171 float **parameterOutArray, 00172 int *NoOfOutParams); 00173 krui_err setClassDistribution(unsigned int *classDist); 00174 krui_err setClassInfo(char *name); 00175 krui_err useClassDistribution(bool use_it); 00176 char *getPrunFunc (void); 00177 char *getFFLearnFunc (void); 00178 krui_err setFFLearnFunc (char *FF_learning_func); 00179 krui_err setPrunFunc (char *pruning_func); 00180 krui_err showPattern(int mode); 00181 krui_err allocNewPatternSet(int *set_no); 00182 krui_err newPattern(void); 00183 krui_err setPatternNo(int pattern_no); 00184 krui_err getPatternNo(void); 00185 krui_err deletePattern(void); 00186 krui_err modifyPattern(void); 00187 void deleteAllPatterns(void); 00188 krui_err shufflePatterns(bool on_or_off); 00189 krui_err shuffleSubPatterns(bool on_or_off); 00190 int getNoOfPatterns(void); 00191 int getTotalNoOfSubPatterns(void); 00192 krui_err loadNewPatterns(char *filename, int *number); 00193 krui_err setCurrPatSet(int number); 00194 krui_err saveNewPatterns(char *filename, int number); 00195 krui_err deletePatSet(int number); 00196 krui_err GetPatInfo(pattern_set_info *set_info, 00197 pattern_descriptor *pat_info); 00198 krui_err DefShowSubPat(int *insize, int *outsize, 00199 int *inpos, int *outpos); 00200 krui_err DefTrainSubPat(int *insize, int *outsize, 00201 int *instep, int *outstep, 00202 int *max_n_pos); 00203 krui_err AlignSubPat(int *inpos, int *outpos, int *no); 00204 krui_err GetShapeOfSubPattern(int *insize, int *outsize, 00205 int *inpos, int *outpos, int n_pos); 00206 krui_err saveNet(char *filename, char *netname); 00207 krui_err loadNet(char *filename, char **netname); 00208 krui_err saveResultParam(char *filename, bool create, 00209 int startpattern, int endpattern, 00210 bool includeinput, bool includeoutput, 00211 float *Update_param_array, 00212 int NoOfUpdateParam); 00213 krui_err allocateUnits(int no_of_units); 00214 void deleteNet(void); 00215 bool getFirstSymbolTableEntry(char **symbol_name, 00216 int *symbol_type); 00217 bool getNextSymbolTableEntry(char **symbol_name, 00218 int *symbol_type); 00219 bool symbolSearch(char *symbol, int symbol_type); 00220 char *getVersion(void); 00221 void getNetInfo(int *no_of_sites, int *no_of_links, 00222 int *no_of_STable_entries, 00223 int *no_of_FTable_entries); 00224 void getMemoryManagerInfo(int *unit_bytes, 00225 int *site_bytes, int *link_bytes, 00226 int *NTable_bytes, int *STable_bytes, 00227 int *FTable_bytes); 00228 void getUnitDefaults(FlintType *act, FlintType *bias, int *st, 00229 int *subnet_no, int *layer_no, char **act_func, 00230 char **out_func); 00231 krui_err setUnitDefaults(FlintTypeParam act, 00232 FlintTypeParam bias, int st, int subnet_no, 00233 int layer_no, char *act_func, char *out_func); 00234 void resetNet(void); 00235 void setSeedNo(long int seed); 00236 int getNoOfInputUnits(void); 00237 int getNoOfOutputUnits(void); 00238 int getNoOfTTypeUnits(int UnitTType); 00239 int getNoOfSpecialInputUnits(void); 00240 int getNoOfSpecialOutputUnits(void); 00241 krui_err xyTransTable(int op, int *x, int *y, int z); 00242 krui_err getUnitCenters(int unit_no, int center_no, 00243 struct PositionVector **unit_center); 00244 krui_err setUnitCenters(int unit_no, int center_no, 00245 struct PositionVector *unit_center); 00246 char *error(int error_code); 00247 float NA_Error(int currentPattern, int error_unit, 00248 int error, bool ave); 00249 00250 float getVariance (void); 00251 int countLinks(void); 00252 00253 #ifdef MASPAR_KERNEL 00254 00255 krui_err MasPar( mode ); 00256 krui_err getMasParStatus(void); 00257 krui_err MasParBenchmark( func_type, cycles, result ); 00258 00259 #endif 00260 00261 krui_err setSpecialNetworkType(int net_type); 00262 int getSpecialNetworkType(void); 00263 int initInversion(void); 00264 void inv_forwardPass(struct UnitList *inputs); 00265 double inv_backwardPass(float learn, float delta_max, 00266 int *err_units, float ratio, 00267 struct UnitList *inputs, 00268 struct UnitList *outputs); 00269 void kohonen_SetExtraParameter(int x); 00270 void spanning_tree(void); 00271 void cc_updatePosOfSpecialUnits(void); 00272 krui_err cc_deleteAllSpecialUnits(void); 00273 int getErrorCode(void); 00274 krui_err setErrorHandler(void(* error_Handler )(int)); 00275 void execHandler(int error_code); 00276 00277 ClassDef(SnnsKrui, 1) 00278 }; 00279 00280 #endif