/***************************************************************************** FILE : $Source: /projects/higgs1/SNNS/CVS/SNNS/kernel/sources/kr_ui.ph,v $ SHORTNAME : kr_ui.ph SNNS VERSION : 4.2 PURPOSE : SNNS-Kernel User Interface Function Prototypes NOTES : AUTHOR : Niels Mache DATE : 27.02.90 CHANGED BY : Michael Vogt, Guenter Mamier, Christine Bagdi RCS VERSION : $Revision: 2.25 $ LAST CHANGE : $Date: 1998/02/25 15:27:17 $ Copyright (c) 1990-1995 SNNS Group, IPVR, Univ. Stuttgart, FRG Copyright (c) 1996-1998 SNNS Group, WSI, Univ. Tuebingen, FRG ******************************************************************************/ #ifndef _KR_UI_DEFINED_ #define _KR_UI_DEFINED_ /* begin global definition section */ #include "krui_typ.h" /* Interface function prototypes */ /* #ifdef __MSDOS__ #ifndef int #define int long #endif #endif */ void (*krui_errorHandler)(int)=NULL; int krui_error_code; bool rpckernel=FALSE; int krui_getNoOfUnits(void); int krui_getFirstUnit(void); int krui_getNextUnit(void); int krui_getCurrentUnit(void); krui_err krui_setCurrentUnit(int unit_no); char *krui_getUnitName(int UnitNo); krui_err krui_setUnitName(int unit_no, char *unit_name); int krui_searchUnitName(char *unit_name); int krui_searchNextUnitName(void); char *krui_getUnitOutFuncName(int UnitNo); krui_err krui_setUnitOutFunc(int unit_no, char *unitOutFuncName); char *krui_getUnitActFuncName(int UnitNo); krui_err krui_setUnitActFunc(int unit_no, char *unitActFuncName); char *krui_getUnitFTypeName(int UnitNo); FlintType krui_getUnitActivation(int UnitNo); krui_err krui_setUnitActivation(int UnitNo, FlintTypeParam unit_activation); FlintType krui_getUnitInitialActivation(int UnitNo); void krui_setUnitInitialActivation(int UnitNo, FlintTypeParam unit_i_activation); FlintType krui_getUnitOutput(int UnitNo); krui_err krui_setUnitOutput(int unit_no, FlintTypeParam unit_output); FlintType krui_getUnitBias(int UnitNo); void krui_setUnitBias(int UnitNo, FlintTypeParam unit_bias); FlintType krui_getUnitValueA(int UnitNo); void krui_setUnitValueA(int UnitNo, FlintTypeParam unit_valueA); int krui_getUnitSubnetNo(int UnitNo); void krui_setUnitSubnetNo(int UnitNo, int subnet_no); unsigned short krui_getUnitLayerNo(int UnitNo); void krui_setUnitLayerNo(int UnitNo, int layer_no); void krui_getUnitPosition(int UnitNo, struct PosType *position); void krui_setUnitPosition(int UnitNo, struct PosType *position); int krui_getUnitNoAtPosition(struct PosType *position, int subnet_no); int krui_getUnitNoNearPosition(struct PosType *position, int subnet_no, int range, int gridWidth); int krui_getUnitTType(int unit_no); krui_err krui_setUnitTType(int unit_no, int UnitTType); krui_err krui_freezeUnit(int unit_no); krui_err krui_unfreezeUnit(int unit_no); bool krui_isUnitFrozen(int unit_no); int krui_getUnitInputType(int unit_no); int krui_createDefaultUnit(void); int krui_createUnit(char *unit_name, char *out_func_name, char *act_func_name, FlintTypeParam i_act, FlintTypeParam bias); krui_err krui_deleteUnit(int unit_no); krui_err krui_deleteUnitList(int no_of_units, int unit_list[]); int krui_createFTypeUnit(char *Ftype_symbol); krui_err krui_setUnitFType(int unit_no, char *Ftype_symbol); int krui_copyUnit(int unit_no, int copy_mode); bool krui_setFirstFTypeEntry(void); bool krui_setNextFTypeEntry(void); bool krui_setFTypeEntry(char *Ftype_symbol); char *krui_getFTypeName(void); krui_err krui_setFTypeName(char *Ftype_symbol); char *krui_getFTypeActFuncName(void); krui_err krui_setFTypeActFunc(char *act_func_name); krui_err krui_setFTypeOutFunc(char *out_func_name); bool krui_setFirstFTypeSite(void); bool krui_setNextFTypeSite(void); char *krui_getFTypeSiteName(void); krui_err krui_setFTypeSiteName(char *FType_site_name); krui_err krui_createFTypeEntry(char *Ftype_symbol, char *act_func_name, char *out_func_name, int no_of_sites, char **array_of_site_names); krui_err krui_deleteFTypeEntry(char *Ftype_symbol); int krui_getNoOfFunctions(void); void krui_getFuncInfo(int func_no, char **func_name, int *func_type); bool krui_isFunction(char *func_name, int func_type); bool krui_getFuncParamInfo(char *func_name, int func_type, int *no_of_input_params, int *no_of_output_params); bool krui_getFirstSiteTableEntry(char **site_name, char **site_func); bool krui_getNextSiteTableEntry(char **site_name, char **site_func); char *krui_getSiteTableFuncName(char *site_name); krui_err krui_createSiteTableEntry(char *site_name, char *site_func); krui_err krui_changeSiteTableEntry(char *old_site_name, char *new_site_name, char *new_site_func); krui_err krui_deleteSiteTableEntry(char *site_name); bool krui_setFirstSite(void); bool krui_setNextSite(void); krui_err krui_setSite(char *site_name); FlintType krui_getSiteValue(void); char *krui_getSiteName(void); krui_err krui_setSiteName(char *site_name); char *krui_getSiteFuncName(void); krui_err krui_addSite(char *site_name); bool krui_deleteSite(void); int krui_getFirstPredUnit(FlintType *strength); int krui_getNextPredUnit(FlintType *strength); int krui_getFirstPredUnitAndData(FlintType *strength,float *val_a,float *val_b, float *val_c); int krui_getNextPredUnitAndData(FlintType *strength,float *val_a,float *val_b, float *val_c); int krui_getCurrentPredUnit(FlintType *strength); int krui_getFirstSuccUnit(int source_unit_no, FlintType *weight); int krui_getNextSuccUnit(FlintType *weight); bool krui_areConnected(int source_unit_no, int target_unit_no); bool krui_areConnectedWeight(int source_unit_no, int target_unit_no, FlintType *weight); bool krui_isConnected(int source_unit_no); FlintType krui_getLinkWeight(void); void krui_setLinkWeight(FlintTypeParam weight); krui_err krui_createLink(int source_unit_no, FlintTypeParam weight); struct Link* krui_createLinkWithAdditionalParameters (int source_unit_no, FlintTypeParam weight,float val_a,float val_b,float val_c); krui_err krui_deleteLink(void); krui_err krui_deleteAllInputLinks(void); krui_err krui_deleteAllOutputLinks(void); void krui_jogWeights(FlintTypeParam minus, FlintTypeParam plus); krui_err krui_jogCorrWeights(FlintTypeParam minus, FlintTypeParam plus, FlintTypeParam mincorr); krui_err krui_updateSingleUnit(int unit_no); char *krui_getUpdateFunc(void); krui_err krui_setUpdateFunc(char *update_func); krui_err krui_setRemapFunc(char *name, float *params); krui_err krui_updateNet(float *parameterInArray, int NoOfInParams); char *krui_getInitialisationFunc(void); krui_err krui_setInitialisationFunc(char *initialisation_func); krui_err krui_initializeNet(float *parameterInArray, int NoOfInParams); char *krui_getLearnFunc(void); krui_err krui_setLearnFunc(char *learning_func); krui_err krui_trainNetwork(NetLearnParameters *parameters); krui_err krui_getNetworkErrorArray(double **learnErrors,int **atEpoch,int *noOfErrors); krui_err krui_stopTraining(void); krui_err krui_learnAllPatterns(float *parameterInArray, int NoOfInParams, float **parameterOutArray, int *NoOfOutParams); krui_err krui_testAllPatterns(float *parameterInArray, int NoOfInParams, float **parameterOutArray, int *NoOfOutParams); /* joe */ krui_err krui_learnSinglePattern(int pattern_no, float *parameterInArray, int NoOfInParams, float **parameterOutArray, int *NoOfOutParams); krui_err krui_testSinglePattern(int pattern_no, float *parameterInArray, int NoOfInParams, float **parameterOutArray, int *NoOfOutParams); /* joe */ int krui_checkPruning (); krui_err krui_learnAllPatternsFF(float *parameterInArray, int NoOfInParams, float **parameterOutArray, int *NoOfOutParams); krui_err krui_learnSinglePatternFF(int pattern_no, float *parameterInArray, int NoOfInParams, float **parameterOutArray, int *NoOfOutParams); char *krui_getPrunFunc (void); krui_err krui_setPrunFunc (char *pruning_func); extern char *krui_getFFLearnFunc (void); extern krui_err krui_setFFLearnFunc (char *FF_learning_func); krui_err krui_setClassDistribution(unsigned int *classDist); krui_err krui_setClassInfo(char *name); krui_err krui_useClassDistribution(bool use_it); krui_err krui_showPattern(int mode); krui_err krui_allocNewPatternSet(int *set_no); krui_err krui_newPattern(void); krui_err krui_setPatternNo(int pattern_no); krui_err krui_getPatternNo(void); krui_err krui_deletePattern(void); krui_err krui_modifyPattern(void); void krui_deleteAllPatterns(void); krui_err krui_shufflePatterns(bool on_or_off); krui_err krui_shuffleSubPatterns(bool on_or_off); int krui_getNoOfPatterns(void); int krui_getTotalNoOfSubPatterns(void); krui_err krui_loadNewPatterns(char *filename, int *number); krui_err krui_setCurrPatSet(int number); krui_err krui_saveNewPatterns(char *filename, int number); krui_err krui_deletePatSet(int number); krui_err krui_GetPatInfo(pattern_set_info *set_info, pattern_descriptor *pat_info); krui_err krui_DefShowSubPat(int *insize, int *outsize, int *inpos, int *outpos); krui_err krui_DefTrainSubPat(int *insize, int *outsize, int *instep, int *outstep, int *max_n_pos); krui_err krui_AlignSubPat(int *inpos, int *outpos, int *no); krui_err krui_GetShapeOfSubPattern(int *insize, int *outsize, int *inpos, int *outpos, int n_pos); krui_err krui_saveNet(char *filename, char *netname); krui_err krui_loadNet(char *filename, char **netname); krui_err krui_saveResultParam(char *filename, bool create, int startpattern, int endpattern, bool includeinput, bool includeoutput, float *Update_param_array, int NoOfUpdateParam); krui_err krui_allocateUnits(int no_of_units); void krui_deleteNet(void); bool krui_getFirstSymbolTableEntry(char **symbol_name, int *symbol_type); bool krui_getNextSymbolTableEntry(char **symbol_name, int *symbol_type); bool krui_symbolSearch(char *symbol, int symbol_type); char *krui_getVersion(void); void krui_getNetInfo(int *no_of_sites, int *no_of_links, int *no_of_STable_entries, int *no_of_FTable_entries); void krui_getMemoryManagerInfo(int *unit_bytes, int *site_bytes, int *link_bytes, int *NTable_bytes, int *STable_bytes, int *FTable_bytes); void krui_getUnitDefaults(FlintType *act, FlintType *bias, int *st, int *subnet_no, int *layer_no, char **act_func, char **out_func); krui_err krui_setUnitDefaults(FlintTypeParam act, FlintTypeParam bias, int st, int subnet_no, int layer_no, char *act_func, char *out_func); void krui_resetNet(void); void krui_setSeedNo(long int seed); int krui_getNoOfInputUnits(void); int krui_getNoOfOutputUnits(void); int krui_getNoOfTTypeUnits(int UnitTType); int krui_getNoOfSpecialInputUnits(void); int krui_getNoOfSpecialOutputUnits(void); krui_err krui_xyTransTable(int op, int *x, int *y, int z); krui_err krui_getUnitCenters(int unit_no, int center_no, struct PositionVector **unit_center); krui_err krui_setUnitCenters(int unit_no, int center_no, struct PositionVector *unit_center); char *krui_error(int error_code); /* for statistics */ float krui_getVariance (void); int krui_countLinks(void); /* for the network-analyzer tool */ float krui_NA_Error(int currentPattern, int error_unit, int error, bool ave); #ifdef MASPAR_KERNEL krui_err krui_MasPar( mode ); krui_err krui_getMasParStatus(void); krui_err krui_MasParBenchmark( func_type, cycles, result ); #endif krui_err krui_setSpecialNetworkType(int net_type); int krui_getSpecialNetworkType(void); void krui_kohonen_SetExtraParameter(int x); void krui_spanning_tree(void); void krui_cc_updatePosOfSpecialUnits(void); krui_err krui_cc_deleteAllSpecialUnits(void); int krui_getErrorCode(void); krui_err krui_setErrorHandler(void(* error_Handler )(int)); void krui_execHandler(int error_code); /* #ifdef __MSDOS__ #ifndef KR_TYPES #undef int #endif #endif */ /* end global definition section */ /* begin private definition section */ static char *krui_topo_err_msg(void); /*################################################# GROUP: Local Var's #################################################*/ static int UICurrentNameSearchUnitNo = 0; static struct Site *UICurrentFtypeSite = NULL; static struct FtypeUnitStruct *UICurrentFtypeEntry = NULL; static char *UICurrentNameSearchUnitSymbolPtr = NULL; static bool dotraining; /* If True => train Network */ static int noOfStoredErrors=0; static double storedLearnErrors[NO_OF_STORED_ERRORS+1]; static int storedAtEpoch[NO_OF_STORED_ERRORS+1]; /*################################################# GROUP: Macros #################################################*/ /* Check operation for compatibility with MasPar parallel network implementation */ #ifdef MASPAR_KERNEL #define MASPAR_FF1_VALIDATE_OP \ if (specialNetworkType == NET_TYPE_FF1)\ { KernelErrorCode = KRERR_MODE_FF1_INVALID_OP;\ return( KRERR_MODE_FF1_INVALID_OP ); }\ #endif /* end private definition section */ #endif