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