static void create_net_PROC(void) { int create=1; BN_ERROR = 0; if(krui_getNoOfUnits() != 0) { if(! ui_confirmYes("Create will erase current network. Create?")) { create = 0; } } if(create && (PLANE_length != 0)) { krui_deleteNet(); calculate_first_snns_unit_no_of_plane(); create_snns_unit(); make_links(); krui_setLearnFunc("BPTT"); krui_setUpdateFunc("Hopfield_Synchronous"); krui_setInitialisationFunc("ClippHebb"); ui_NumberOfLearnParamsChanged(); ui_NumberOfUpdateParamsChanged(); ui_NumberOfInitParamsChanged(); bn_basics_refresh(); }/* if */ }
krui_err SnnsCLib::bn_kohonen_createNet(int X, int Y, int IUnits, int HUnits) { int i,j,unit_no; struct PosType unit_pos; krui_err ret; unit_pos.z = 0; /* Allocate units */ ret = krui_allocateUnits( HUnits + IUnits ); CHECK_RETURN ( ret ); /* Create standard (input) Units */ unit_pos.x = 1; for (i = 1; i <= IUnits; i++) { unit_no = krui_createDefaultUnit(); if (unit_no < 0) CHECK_RETURN( unit_no ); ret = krui_setUnitTType( unit_no, INPUT ); CHECK_RETURN( ret ); unit_pos.y = (IUnits<Y)?i+(Y-IUnits)/2:i; krui_setUnitPosition( unit_no, &unit_pos ); } /* Create standard hidden Units. The size of the feature map is X*Y */ for (i = 1; i <= Y; i++) for (j = 1; j <= X; j++) { unit_pos.x = 4+j; unit_no = krui_createDefaultUnit(); if (unit_no < 0) CHECK_RETURN( unit_no ); ret = krui_setUnitTType( unit_no, HIDDEN ); CHECK_RETURN( ret ); unit_pos.y = i; krui_setUnitPosition( unit_no, &unit_pos ); } /* Make connections between input units and hidden units */ /* set all link weights to zero */ for (i = IUnits + 1; i <= IUnits + HUnits; i++) { /* Make hidden unit to current unit */ ret = krui_setCurrentUnit( i ); CHECK_RETURN( ret ); /* (backward) connect current (hidden) unit with input unit */ for (j = 1; j <= IUnits; j++) { ret = krui_createLink( j,0.0); CHECK_RETURN( ret ); } } /* set the update function */ ret = krui_setUpdateFunc (const_cast<char*>(KOHONEN_UPDATE_FUNC_NAME)); CHECK_RETURN( ret ); /* set the learning function */ ret = krui_setLearnFunc (const_cast<char*>(KOHONEN_LEARN_FUNC_NAME)); CHECK_RETURN( ret ); /* set the init function */ ret = krui_setInitialisationFunc (const_cast<char*>(KOHONEN_INIT_FUNC_NAME)); //CHECK_RETURN( ret ); return(ret); } /* bn_kohonen_createNet */
/***************************************************************************** FUNCTION : bn_artmap_createNet PURPOSE : Generation of the ARTMAP network using SNNS kernel functions. NOTES : UPDATE : 20.1.1993 ******************************************************************************/ krui_err SnnsCLib::bn_artmap_createNet(int f1aUnits, int f1aRows, int f2aUnits, int f2aRows, int f1bUnits, int f1bRows, int f2bUnits, int f2bRows) { krui_err ret_code = KRERR_NO_ERROR; int NoOfSites; char **SiteName, **SiteFunc; int i, j; /* Allocate memory for the to pointer Arrays for site names and sitefunc names */ SiteName = (char **) malloc (2*sizeof(char *)); SiteFunc = (char **) malloc (2*sizeof(char *)); if ((SiteName == NULL) || (SiteFunc == NULL)) { return (KRERR_INSUFFICIENT_MEM); } /*if*/ /* Allocate memory to save Site names and Sitefunc names */ *SiteName = (char *)malloc (STRING_LENGTH); *(SiteName+1) = (char *)malloc (STRING_LENGTH); *SiteFunc = (char *)malloc (STRING_LENGTH); *(SiteFunc+1) = (char *)malloc (STRING_LENGTH); if ((*SiteName == NULL) || (*(SiteName+1) == NULL) || (*SiteFunc == NULL) || (*(SiteFunc+1) == NULL) ) { return (KRERR_INSUFFICIENT_MEM); } /*if*/ /********* create ARTa units ******************/ /* create Input Layer for ARTa */ ret_code = bn_artmap_make_layer (f1aUnits, f1aRows, F1a_COLS, INPa_X, INPa_Y, const_cast<char*>("inpa"), INPUT, ACTF_INPa, OUTFUNC, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create Comparison Layer for ARTa */ ret_code = bn_artmap_make_layer (f1aUnits, f1aRows, F1a_COLS, CMPa_X, CMPa_Y, const_cast<char*>("cmpa"), HIDDEN, ACTF_CMPa, OUTFUNC, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create Recognition Layer for ARTa */ ret_code = bn_artmap_make_layer (f2aUnits, f2aRows, F2a_COLS, RECa_X, RECa_Y, const_cast<char*>("reca"), SPECIAL, ACTF_RECa, OUTFUNC, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create Delay Layer for ARTa */ ret_code = bn_artmap_make_layer (f2aUnits, f2aRows, F2a_COLS, DELa_X, DELa_Y, const_cast<char*>("dela"), HIDDEN, ACTF_DELa, OUTFUNC, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create d1a */ ret_code = bn_artmap_make_layer (1, 1, 1, D1a_X, D1a_Y, const_cast<char*>("d1a"), HIDDEN, ACTF_Da, OUTFUNC, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create d2a */ ret_code = bn_artmap_make_layer (1, 1, 1, D2a_X, D2a_Y, const_cast<char*>("d2a"), HIDDEN, ACTF_Da, OUTFUNC, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create d3a */ ret_code = bn_artmap_make_layer (1, 1, 1, D3a_X, D3a_Y, const_cast<char*>("d3a"), HIDDEN, ACTF_Da, OUTFUNC, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create local reset layer */ NoOfSites = 2; strcpy(*SiteName, SITE_NAME_RSTa_SELF); strcpy(*(SiteName+1), SITE_NAME_RSTa_SIGNAL); strcpy(*SiteFunc, SITE_FUNC_RSTa_SELF); strcpy(*(SiteFunc+1), SITE_FUNC_RSTa_SIGNAL); ret_code = bn_artmap_make_layer (f2aUnits, f2aRows, F2a_COLS, RSTa_X, RSTa_Y, const_cast<char*>("rsta"), HIDDEN, ACTF_RSTa, OUTFUNC, NoOfSites, SiteName, SiteFunc); CHECK_RETURN (ret_code); /* create g1a */ NoOfSites = 2; strcpy(*SiteName , SITE_NAME_REC_G1a); strcpy(*(SiteName+1), SITE_NAME_INP_G1a); strcpy(*SiteFunc , SITE_FUNC_REC_G1a); strcpy(*(SiteFunc+1), SITE_FUNC_INP_G1a); ret_code = bn_artmap_make_layer (1, 1, 1, G1a_X, G1a_Y, const_cast<char*>("g1a"), HIDDEN, ACTF_G1a, OUTFUNC, NoOfSites, SiteName, SiteFunc); CHECK_RETURN (ret_code); /* create ria */ NoOfSites = 2; strcpy(*SiteName , SITE_NAME_INP_RIa); strcpy(*(SiteName+1), SITE_NAME_RHO_RIa); strcpy(*SiteFunc , SITE_FUNC_INP_RIa); strcpy(*(SiteFunc+1), SITE_FUNC_RHO_RIa); ret_code = bn_artmap_make_layer (1, 1, 1, RIa_X, RIa_Y, const_cast<char*>("ria"), HIDDEN, ACTF_RIa, OUTFUNC, NoOfSites, SiteName, SiteFunc); CHECK_RETURN (ret_code); /* create rca */ ret_code = bn_artmap_make_layer (1, 1, 1, RCa_X, RCa_Y, const_cast<char*>("rca"), HIDDEN, ACTF_RCa, OUTFUNC, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create rga */ ret_code = bn_artmap_make_layer (1, 1, 1, RGa_X, RGa_Y, const_cast<char*>("rga"), HIDDEN, ACTF_RGa, OUTFUNC, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create cla */ ret_code = bn_artmap_make_layer (1, 1, 1, CLa_X, CLa_Y, const_cast<char*>("cla"), HIDDEN, ACTF_CLa, OUTFUNC, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create nca */ ret_code = bn_artmap_make_layer (1, 1, 1, NCa_X, NCa_Y, const_cast<char*>("nca"), HIDDEN, ACTF_NCa, OUTFUNC, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create rhoa */ ret_code = bn_artmap_make_layer (1, 1, 1, RHOa_X, RHOa_Y, const_cast<char*>("rhoa"), HIDDEN, ACTF_RHOa, OUTFUNC, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create g2a */ ret_code = bn_artmap_make_layer (1, 1, 1, G2a_X, G2a_Y, const_cast<char*>("g2a"), HIDDEN, ACTF_G2a, OUTFUNC, 0, NULL, NULL); CHECK_RETURN (ret_code); /********* create MAP-Field units ******************/ /* create map layer */ ret_code = bn_artmap_make_layer (f2bUnits, f2bRows, F2b_COLS, MAP_X, MAP_Y, const_cast<char*>("map"), HIDDEN, ACTF_MAP, OUTFUNC, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create d1 unit */ ret_code = bn_artmap_make_layer (1, 1, 1, D1_X, D1_Y, const_cast<char*>("d1"), HIDDEN, ACTF_D1, OUTFUNC, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create G unit */ NoOfSites = 2; strcpy(*SiteName , SITE_NAME_ARTa_G); strcpy(*(SiteName+1), SITE_NAME_ARTb_G); strcpy(*SiteFunc , SITE_FUNC_ARTa_G); strcpy(*(SiteFunc+1), SITE_FUNC_ARTb_G); ret_code = bn_artmap_make_layer (1, 1, 1, G_X, G_Y, const_cast<char*>("G"), HIDDEN, ACTF_G, OUTFUNC, NoOfSites, SiteName, SiteFunc); CHECK_RETURN (ret_code); /* create rb unit */ NoOfSites = 2; strcpy(*SiteName , SITE_NAME_B_RB); strcpy(*(SiteName+1), SITE_NAME_RHO_RB); strcpy(*SiteFunc , SITE_FUNC_B_RB); strcpy(*(SiteFunc+1), SITE_FUNC_RHO_RB); ret_code = bn_artmap_make_layer (1, 1, 1, RB_X, RB_Y, const_cast<char*>("rb"), HIDDEN, ACTF_RB, OUTFUNC, NoOfSites, SiteName, SiteFunc); CHECK_RETURN (ret_code); /* create rm unit */ ret_code = bn_artmap_make_layer (1, 1, 1, RM_X, RM_Y, const_cast<char*>("rm"), HIDDEN, ACTF_RM, OUTFUNC, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create rg unit */ ret_code = bn_artmap_make_layer (1, 1, 1, RG_X, RG_Y, const_cast<char*>("rg"), HIDDEN, ACTF_RG, OUTFUNC, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create cl unit */ ret_code = bn_artmap_make_layer (1, 1, 1, CL_X, CL_Y, const_cast<char*>("cl"), HIDDEN, ACTF_CL, OUTFUNC, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create nc unit */ ret_code = bn_artmap_make_layer (1, 1, 1, NC_X, NC_Y, const_cast<char*>("nc"), HIDDEN, ACTF_NC, OUTFUNC, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create rho unit */ ret_code = bn_artmap_make_layer (1, 1, 1, RHO_X, RHO_Y, const_cast<char*>("rho"), HIDDEN, ACTF_RHO, OUTFUNC, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create qu unit */ NoOfSites = 2; strcpy(*SiteName , SITE_NAME_INPa_QU); strcpy(*(SiteName+1), SITE_NAME_CMPa_QU); strcpy(*SiteFunc , SITE_FUNC_INPa_QU); strcpy(*(SiteFunc+1), SITE_FUNC_CMPa_QU); ret_code = bn_artmap_make_layer (1, 1, 1, QU_X, QU_Y, const_cast<char*>("qu"), HIDDEN, ACTF_QU, OUTFUNC, NoOfSites, SiteName, SiteFunc); CHECK_RETURN (ret_code); /* create drho unit */ ret_code = bn_artmap_make_layer (1, 1, 1, DRHO_X, DRHO_Y, const_cast<char*>("drho"), HIDDEN, ACTF_DRHO, OUTFUNC, 0, NULL, NULL); CHECK_RETURN (ret_code); /********* create ARTb units ******************/ /* create Input Layer for ARTb */ ret_code = bn_artmap_make_layer (f1bUnits, f1bRows, F1b_COLS, INPb_X, INPb_Y, const_cast<char*>("inpb"), INPUT, ACTF_INPb, OUTFUNC, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create Comparison Layer for ARTb */ ret_code = bn_artmap_make_layer (f1bUnits, f1bRows, F1b_COLS, CMPb_X, CMPb_Y, const_cast<char*>("cmpb"), HIDDEN, ACTF_CMPb, OUTFUNC, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create Recognition Layer for ARTb */ ret_code = bn_artmap_make_layer (f2bUnits, f2bRows, F2b_COLS, RECb_X, RECb_Y, const_cast<char*>("recb"), SPECIAL, ACTF_RECb, OUTFUNC, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create Delay Layer for ARTa */ ret_code = bn_artmap_make_layer (f2bUnits, f2bRows, F2b_COLS, DELb_X, DELb_Y, const_cast<char*>("delb"), HIDDEN, ACTF_DELb, OUTFUNC, 0, NULL, NULL); /* create d1b */ ret_code = bn_artmap_make_layer (1, 1, 1, D1b_X, D1b_Y, const_cast<char*>("d1b"), HIDDEN, ACTF_Db, OUTFUNC, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create d2b */ ret_code = bn_artmap_make_layer (1, 1, 1, D2b_X, D2b_Y, const_cast<char*>("d2b"), HIDDEN, ACTF_Db, OUTFUNC, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create d3b */ ret_code = bn_artmap_make_layer (1, 1, 1, D3b_X, D3b_Y, const_cast<char*>("d3b"), HIDDEN, ACTF_Db, OUTFUNC, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create local reset layer */ NoOfSites = 2; strcpy(*SiteName , SITE_NAME_RSTb_SELF); strcpy(*(SiteName+1), SITE_NAME_RSTb_SIGNAL); strcpy(*SiteFunc , SITE_FUNC_RSTb_SELF); strcpy(*(SiteFunc+1), SITE_FUNC_RSTb_SIGNAL); ret_code = bn_artmap_make_layer (f2bUnits, f2bRows, F2b_COLS, RSTb_X, RSTb_Y, const_cast<char*>("rstb"), HIDDEN, ACTF_RSTb, OUTFUNC, NoOfSites, SiteName, SiteFunc); CHECK_RETURN (ret_code); /* create g1b */ NoOfSites = 2; strcpy(*SiteName , SITE_NAME_REC_G1b); strcpy(*(SiteName+1), SITE_NAME_INP_G1b); strcpy(*SiteFunc , SITE_FUNC_REC_G1b); strcpy(*(SiteFunc+1), SITE_FUNC_INP_G1b); ret_code = bn_artmap_make_layer (1, 1, 1, G1b_X, G1b_Y, const_cast<char*>("g1b"), HIDDEN, ACTF_G1b, OUTFUNC, NoOfSites, SiteName, SiteFunc); CHECK_RETURN (ret_code); /* create rib */ NoOfSites = 2; strcpy(*SiteName , SITE_NAME_INP_RIb); strcpy(*(SiteName+1), SITE_NAME_RHO_RIb); strcpy(*SiteFunc , SITE_FUNC_INP_RIb); strcpy(*(SiteFunc+1), SITE_FUNC_RHO_RIb); ret_code = bn_artmap_make_layer (1, 1, 1, RIb_X, RIb_Y, const_cast<char*>("rib"), HIDDEN, ACTF_RIb, OUTFUNC, NoOfSites, SiteName, SiteFunc); CHECK_RETURN (ret_code); /* create rcb */ ret_code = bn_artmap_make_layer (1, 1, 1, RCb_X, RCb_Y, const_cast<char*>("rcb"), HIDDEN, ACTF_RCb, OUTFUNC, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create rgb */ ret_code = bn_artmap_make_layer (1, 1, 1, RGb_X, RGb_Y, const_cast<char*>("rgb"), HIDDEN, ACTF_RGb, OUTFUNC, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create clb */ ret_code = bn_artmap_make_layer (1, 1, 1, CLb_X, CLb_Y, const_cast<char*>("clb"), HIDDEN, ACTF_CLb, OUTFUNC, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create ncb */ ret_code = bn_artmap_make_layer (1, 1, 1, NCb_X, NCb_Y, const_cast<char*>("ncb"), HIDDEN, ACTF_NCb, OUTFUNC, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create rhob */ ret_code = bn_artmap_make_layer (1, 1, 1, RHOb_X, RHOb_Y, const_cast<char*>("rhob"), HIDDEN, ACTF_RHOb, OUTFUNC, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create g2b */ ret_code = bn_artmap_make_layer (1, 1, 1, G2b_X, G2b_Y, const_cast<char*>("g2b"), HIDDEN, ACTF_G2b, OUTFUNC, 0, NULL, NULL); CHECK_RETURN (ret_code); /* Make Connections now */ /********* Create Links **************************************/ /********* Links to ARTa units ***********************/ /* TO cmpa units */ for (i=1; i<=f1aUnits; i++) { ret_code = krui_setCurrentUnit (CMPa_UNIT(i)); CHECK_RETURN (ret_code); /* FROM inpa units */ ret_code = krui_createLink (INPa_UNIT(i),0.0); CHECK_RETURN (ret_code); /* FROM g1a unit */ ret_code = krui_createLink (G1a_UNIT, 0.0); CHECK_RETURN (ret_code); /* FROM dela units */ for (j=1; j<=f2aUnits; j++) { ret_code = krui_createLink (DELa_UNIT(j), 0.0); CHECK_RETURN (ret_code); } /*for*/ } /*for*/ /* TO reca units */ for (i=1; i<=f2aUnits; i++) { ret_code = krui_setCurrentUnit (RECa_UNIT(i)); CHECK_RETURN (ret_code); /* FROM cmpa units */ for (j=1; j<=f1aUnits; j++) { ret_code = krui_createLink (CMPa_UNIT(j), 0.0); CHECK_RETURN (ret_code); } /*for*/ /* FROM rga unit */ ret_code = krui_createLink (RGa_UNIT, 0.0); CHECK_RETURN (ret_code); /* FROM rsta units */ ret_code = krui_createLink (RSTa_UNIT(i), 0.0); CHECK_RETURN (ret_code); /* FROM g2a unit */ ret_code = krui_createLink (G2a_UNIT, 0.0); CHECK_RETURN (ret_code); } /*for*/ /* TO dela units */ for (i=1; i<=f2aUnits; i++) { ret_code = krui_setCurrentUnit (DELa_UNIT(i)); CHECK_RETURN (ret_code); /* FROM reca units */ ret_code = krui_createLink (RECa_UNIT(i), 0.0); CHECK_RETURN (ret_code); } /*for*/ /* TO rsta units */ for (i=1; i<=f2aUnits; i++) { ret_code = krui_setCurrentUnit (RSTa_UNIT(i)); CHECK_RETURN (ret_code); /* first Site */ ret_code = krui_setSite (SITE_NAME_RSTa_SELF); CHECK_RETURN (ret_code); /* FROM itself */ ret_code = krui_createLink (RSTa_UNIT(i), 0.0); CHECK_RETURN (ret_code); /* second Site */ ret_code = krui_setSite (SITE_NAME_RSTa_SIGNAL); CHECK_RETURN (ret_code); /* FROM dela units */ ret_code = krui_createLink (DELa_UNIT(i), 0.0); CHECK_RETURN (ret_code); /* FROM rga unit */ ret_code = krui_createLink (RGa_UNIT, 0.0); CHECK_RETURN (ret_code); } /*for*/ /* TO d1a unit */ ret_code = krui_setCurrentUnit (Da_UNIT(1)); CHECK_RETURN (ret_code); /* FROM dela units */ for (j=1; j<=f2aUnits; j++) { ret_code = krui_createLink (DELa_UNIT(j), 0.0); CHECK_RETURN (ret_code); } /*for*/ /* TO d2a unit */ ret_code = krui_setCurrentUnit (Da_UNIT(2)); CHECK_RETURN (ret_code); /* FROM d1a unit */ ret_code = krui_createLink (Da_UNIT(1), 0.0); CHECK_RETURN (ret_code); /* TO d3a unit */ ret_code = krui_setCurrentUnit (Da_UNIT(3)); CHECK_RETURN (ret_code); /* FROM d2a unit */ ret_code = krui_createLink (Da_UNIT(2), 0.0); CHECK_RETURN (ret_code); /* TO g1a unit */ ret_code = krui_setCurrentUnit (G1a_UNIT); CHECK_RETURN (ret_code); /* first Site */ ret_code = krui_setSite (SITE_NAME_REC_G1a); CHECK_RETURN (ret_code); /* FROM reca units */ for (j=1; j<=f2aUnits; j++) { ret_code = krui_createLink (RECa_UNIT(j), 0.0); CHECK_RETURN (ret_code); } /*for*/ /* second Site */ ret_code = krui_setSite (SITE_NAME_INP_G1a); CHECK_RETURN (ret_code); /* FROM inpa units */ for (j=1; j<=f1aUnits; j++) { ret_code = krui_createLink (INPa_UNIT(j), 0.0); CHECK_RETURN (ret_code); } /*for*/ /* TO ria unit */ ret_code = krui_setCurrentUnit (RIa_UNIT); CHECK_RETURN (ret_code); /* first Site */ ret_code = krui_setSite (SITE_NAME_INP_RIa); CHECK_RETURN (ret_code); /* FROM inpa units */ for (j=1; j<=f1aUnits; j++) { ret_code = krui_createLink (INPa_UNIT(j), 0.0); CHECK_RETURN (ret_code); } /*for*/ /* second Site */ ret_code = krui_setSite (SITE_NAME_RHO_RIa); CHECK_RETURN (ret_code); /* from rhoa unit */ ret_code = krui_createLink (RHOa_UNIT, 0.0); CHECK_RETURN (ret_code); /* TO rca unit */ ret_code = krui_setCurrentUnit (RCa_UNIT); CHECK_RETURN (ret_code); /* FROM cmpa units */ for (j=1; j<=f1aUnits; j++) { ret_code = krui_createLink (CMPa_UNIT(j), 0.0); CHECK_RETURN (ret_code); } /*for*/ /* TO rga unit */ ret_code = krui_setCurrentUnit (RGa_UNIT); CHECK_RETURN (ret_code); /* FROM ria unit */ ret_code = krui_createLink (RIa_UNIT, 0.0); CHECK_RETURN (ret_code); /* FROM rca unit */ ret_code = krui_createLink (RCa_UNIT, 0.0); CHECK_RETURN (ret_code); /* TO cla unit */ ret_code = krui_setCurrentUnit (CLa_UNIT); CHECK_RETURN (ret_code); /* FROM d3a unit */ ret_code = krui_createLink (Da_UNIT(3), 0.0); CHECK_RETURN (ret_code); /* FROM rga unit */ ret_code = krui_createLink (RGa_UNIT, 0.0); CHECK_RETURN (ret_code); /* FROM g2a unit */ ret_code = krui_createLink (G2a_UNIT, 0.0); CHECK_RETURN (ret_code); /* TO nca unit */ ret_code = krui_setCurrentUnit (NCa_UNIT); CHECK_RETURN (ret_code); /* FROM rsta units */ for (j=1; j<=f2aUnits; j++) { ret_code = krui_createLink (RSTa_UNIT(j), 0.0); CHECK_RETURN (ret_code); } /*for*/ /* TO rhoa unit */ ret_code = krui_setCurrentUnit (RHOa_UNIT); CHECK_RETURN (ret_code); /* FROM itself */ ret_code = krui_createLink (RHOa_UNIT, 0.0); CHECK_RETURN (ret_code); /* FROM drho unit */ ret_code = krui_createLink (DRHO_UNIT, 0.0); CHECK_RETURN (ret_code); /* TO g2a unit */ ret_code = krui_setCurrentUnit (G2a_UNIT); CHECK_RETURN (ret_code); /* FROM inpa units */ for (j = 1; j <= f1aUnits; j++) { ret_code = krui_createLink (INPa_UNIT(j), 0.0); CHECK_RETURN (ret_code); } /*for*/ /********* Links to MAP Fiels units ***********************/ /* TO map units */ for (i=1; i<=f2bUnits; i++) { ret_code = krui_setCurrentUnit (MAP_UNIT(i)); CHECK_RETURN (ret_code); /* FROM dela units */ for (j=1; j<=f2aUnits; j++) { ret_code = krui_createLink (DELa_UNIT(j), 0.0); CHECK_RETURN (ret_code); } /*for*/ /* FROM delb unit */ ret_code = krui_createLink (DELb_UNIT(i), 0.0); CHECK_RETURN (ret_code); /* FROM G unit */ ret_code = krui_createLink (G_UNIT, 0.0); CHECK_RETURN (ret_code); } /*for*/ /* TO d1 unit */ ret_code = krui_setCurrentUnit (D1_UNIT); CHECK_RETURN (ret_code); /* FROM delb units */ for (j=1; j<=f2bUnits; j++) { ret_code = krui_createLink (DELb_UNIT(j), 0.0); CHECK_RETURN (ret_code); } /*for*/ /* TO G unit */ ret_code = krui_setCurrentUnit (G_UNIT); CHECK_RETURN (ret_code); /* first Site */ ret_code = krui_setSite (SITE_NAME_ARTa_G); CHECK_RETURN (ret_code); /* FROM reca units */ for (j=1; j<=f2aUnits; j++) { ret_code = krui_createLink (RECa_UNIT(j), 0.0); CHECK_RETURN (ret_code); } /*for*/ /* second Site */ ret_code = krui_setSite (SITE_NAME_ARTb_G); CHECK_RETURN (ret_code); /* FROM recb units */ for (j=1; j<=f2bUnits; j++) { ret_code = krui_createLink (RECb_UNIT(j), 0.0); CHECK_RETURN (ret_code); } /*for*/ /* TO rb unit */ ret_code = krui_setCurrentUnit (RB_UNIT); CHECK_RETURN (ret_code); /* first Site */ ret_code = krui_setSite (SITE_NAME_B_RB); CHECK_RETURN (ret_code); /* FROM d1 unit */ ret_code = krui_createLink (D1_UNIT, 0.0); CHECK_RETURN (ret_code); /* second Site */ ret_code = krui_setSite (SITE_NAME_RHO_RB); CHECK_RETURN (ret_code); /* from rho unit */ ret_code = krui_createLink (RHO_UNIT, 0.0); CHECK_RETURN (ret_code); /* TO rm unit */ ret_code = krui_setCurrentUnit (RM_UNIT); CHECK_RETURN (ret_code); /* FROM map units */ for (j=1; j<=f2bUnits; j++) { ret_code = krui_createLink (MAP_UNIT(j), 0.0); CHECK_RETURN (ret_code); } /*for*/ /* TO rg unit */ ret_code = krui_setCurrentUnit (RG_UNIT); CHECK_RETURN (ret_code); /* FROM rb unit */ ret_code = krui_createLink (RB_UNIT, 0.0); CHECK_RETURN (ret_code); /* FROM rm unit */ ret_code = krui_createLink (RM_UNIT, 0.0); CHECK_RETURN (ret_code); /* TO cl unit */ ret_code = krui_setCurrentUnit (CL_UNIT); CHECK_RETURN (ret_code); /* FROM cla unit */ ret_code = krui_createLink (CLa_UNIT, 0.0); CHECK_RETURN (ret_code); /* FROM clb unit */ ret_code = krui_createLink (CLb_UNIT, 0.0); CHECK_RETURN (ret_code); /* FROM rg unit */ ret_code = krui_createLink (RG_UNIT, 0.0); CHECK_RETURN (ret_code); /* TO nc unit */ ret_code = krui_setCurrentUnit (NC_UNIT); CHECK_RETURN (ret_code); /* FROM nca unit */ ret_code = krui_createLink (NCa_UNIT, 0.0); CHECK_RETURN (ret_code); /* FROM ncb unit */ ret_code = krui_createLink (NCb_UNIT, 0.0); CHECK_RETURN (ret_code); /* TO rho unit */ ret_code = krui_setCurrentUnit (RHO_UNIT); CHECK_RETURN (ret_code); /* from itself */ ret_code = krui_createLink (RHO_UNIT, 0.0); CHECK_RETURN (ret_code); /* TO qu unit */ ret_code = krui_setCurrentUnit (QU_UNIT); CHECK_RETURN (ret_code); /* first Site */ ret_code = krui_setSite (SITE_NAME_INPa_QU); CHECK_RETURN (ret_code); /* FROM inpa units */ for (j=1; j <= f1aUnits; j++) { ret_code = krui_createLink (INPa_UNIT(j), 0.0); CHECK_RETURN (ret_code); } /*for*/ /* second Site */ ret_code = krui_setSite (SITE_NAME_CMPa_QU); CHECK_RETURN (ret_code); /* from cmpa units */ for (j=1; j<=f1aUnits; j++) { ret_code = krui_createLink (CMPa_UNIT(j), 0.0); CHECK_RETURN (ret_code); } /*for*/ /* TO drho unit */ ret_code = krui_setCurrentUnit (DRHO_UNIT); CHECK_RETURN (ret_code); /* from itself */ ret_code = krui_createLink (DRHO_UNIT, 0.0); CHECK_RETURN (ret_code); /* from rg unit */ ret_code = krui_createLink (RG_UNIT, 0.0); CHECK_RETURN (ret_code); /* from qu unit */ ret_code = krui_createLink (QU_UNIT, 0.0); CHECK_RETURN (ret_code); /* from rhoa unit */ ret_code = krui_createLink (RHOa_UNIT, 0.0); CHECK_RETURN (ret_code); /* from rga unit */ ret_code = krui_createLink (RGa_UNIT, 0.0); CHECK_RETURN (ret_code); /* from clb unit */ ret_code = krui_createLink (CLb_UNIT, 0.0); CHECK_RETURN (ret_code); /********* Links to ARTb units ***********************/ /* TO cmpb units */ for (i=1; i<=f1bUnits; i++) { ret_code = krui_setCurrentUnit (CMPb_UNIT(i)); CHECK_RETURN (ret_code); /* FROM inpb units */ ret_code = krui_createLink (INPb_UNIT(i),0.0); CHECK_RETURN (ret_code); /* FROM g1b unit */ ret_code = krui_createLink (G1b_UNIT, 0.0); CHECK_RETURN (ret_code); /* FROM delb units */ for (j=1; j<=f2bUnits; j++) { ret_code = krui_createLink (DELb_UNIT(j), 0.0); CHECK_RETURN (ret_code); } /*for*/ } /*for*/ /* TO recb units */ for (i=1; i<=f2bUnits; i++) { ret_code = krui_setCurrentUnit (RECb_UNIT(i)); CHECK_RETURN (ret_code); /* FROM cmpb units */ for (j=1; j<=f1bUnits; j++) { ret_code = krui_createLink (CMPb_UNIT(j), 0.0); CHECK_RETURN (ret_code); } /*for*/ /* FROM rgb unit */ ret_code = krui_createLink (RGb_UNIT, 0.0); CHECK_RETURN (ret_code); /* FROM rstb units */ ret_code = krui_createLink (RSTb_UNIT(i), 0.0); CHECK_RETURN (ret_code); /* FROM g2b unit */ ret_code = krui_createLink (G2b_UNIT, 0.0); CHECK_RETURN (ret_code); } /*for*/ /* TO delb units */ for (i=1; i<=f2bUnits; i++) { ret_code = krui_setCurrentUnit (DELb_UNIT(i)); CHECK_RETURN (ret_code); /* FROM recb units */ ret_code = krui_createLink (RECb_UNIT(i), 0.0); CHECK_RETURN (ret_code); /* FROM map units */ ret_code = krui_createLink (MAP_UNIT(i), 0.0); CHECK_RETURN (ret_code); } /*for*/ /* TO rstb units */ for (i=1; i<=f2bUnits; i++) { ret_code = krui_setCurrentUnit (RSTb_UNIT(i)); CHECK_RETURN (ret_code); /* first Site */ ret_code = krui_setSite (SITE_NAME_RSTb_SELF); CHECK_RETURN (ret_code); /* FROM itself */ ret_code = krui_createLink (RSTb_UNIT(i), 0.0); CHECK_RETURN (ret_code); /* second Site */ ret_code = krui_setSite (SITE_NAME_RSTb_SIGNAL); CHECK_RETURN (ret_code); /* FROM delb units */ ret_code = krui_createLink (DELb_UNIT(i), 0.0); CHECK_RETURN (ret_code); /* FROM rgb unit */ ret_code = krui_createLink (RGb_UNIT, 0.0); CHECK_RETURN (ret_code); } /*for*/ /* TO d1b unit */ ret_code = krui_setCurrentUnit (Db_UNIT(1)); CHECK_RETURN (ret_code); /* FROM delb units */ for (j=1; j<=f2bUnits; j++) { ret_code = krui_createLink (DELb_UNIT(j), 0.0); CHECK_RETURN (ret_code); } /*for*/ /* TO d2b unit */ ret_code = krui_setCurrentUnit (Db_UNIT(2)); CHECK_RETURN (ret_code); /* FROM d1b unit */ ret_code = krui_createLink (Db_UNIT(1), 0.0); CHECK_RETURN (ret_code); /* TO d3b unit */ ret_code = krui_setCurrentUnit (Db_UNIT(3)); CHECK_RETURN (ret_code); /* FROM d2b unit */ ret_code = krui_createLink (Db_UNIT(2), 0.0); CHECK_RETURN (ret_code); /* TO g1b unit */ ret_code = krui_setCurrentUnit (G1b_UNIT); CHECK_RETURN (ret_code); /* first Site */ ret_code = krui_setSite (SITE_NAME_REC_G1b); CHECK_RETURN (ret_code); /* FROM recb units */ for (j=1; j<=f2bUnits; j++) { ret_code = krui_createLink (RECb_UNIT(j), 0.0); CHECK_RETURN (ret_code); } /*for*/ /* second Site */ ret_code = krui_setSite (SITE_NAME_INP_G1b); CHECK_RETURN (ret_code); /* FROM inpb units */ for (j=1; j<=f1bUnits; j++) { ret_code = krui_createLink (INPb_UNIT(j), 0.0); CHECK_RETURN (ret_code); } /*for*/ /* TO rib unit */ ret_code = krui_setCurrentUnit (RIb_UNIT); CHECK_RETURN (ret_code); /* first Site */ ret_code = krui_setSite (SITE_NAME_INP_RIb); CHECK_RETURN (ret_code); /* FROM inpb units */ for (j=1; j<=f1bUnits; j++) { ret_code = krui_createLink (INPb_UNIT(j), 0.0); CHECK_RETURN (ret_code); } /*for*/ /* second Site */ ret_code = krui_setSite (SITE_NAME_RHO_RIb); CHECK_RETURN (ret_code); /* from rhob unit */ ret_code = krui_createLink (RHOb_UNIT, 0.0); CHECK_RETURN (ret_code); /* TO rcb unit */ ret_code = krui_setCurrentUnit (RCb_UNIT); CHECK_RETURN (ret_code); /* FROM cmpb units */ for (j=1; j<=f1bUnits; j++) { ret_code = krui_createLink (CMPb_UNIT(j), 0.0); CHECK_RETURN (ret_code); } /*for*/ /* TO rgb unit */ ret_code = krui_setCurrentUnit (RGb_UNIT); CHECK_RETURN (ret_code); /* FROM rib unit */ ret_code = krui_createLink (RIb_UNIT, 0.0); CHECK_RETURN (ret_code); /* FROM rcb unit */ ret_code = krui_createLink (RCb_UNIT, 0.0); CHECK_RETURN (ret_code); /* TO clb unit */ ret_code = krui_setCurrentUnit (CLb_UNIT); CHECK_RETURN (ret_code); /* FROM d3b unit */ ret_code = krui_createLink (Db_UNIT(3), 0.0); CHECK_RETURN (ret_code); /* FROM rgb unit */ ret_code = krui_createLink (RGb_UNIT, 0.0); CHECK_RETURN (ret_code); /* FROM g2b unit */ ret_code = krui_createLink (G2b_UNIT, 0.0); CHECK_RETURN (ret_code); /* TO ncb unit */ ret_code = krui_setCurrentUnit (NCb_UNIT); CHECK_RETURN (ret_code); /* FROM rstb units */ for (j=1; j<=f2bUnits; j++) { ret_code = krui_createLink (RSTb_UNIT(j), 0.0); CHECK_RETURN (ret_code); } /*for*/ /* TO rhob unit */ ret_code = krui_setCurrentUnit (RHOb_UNIT); CHECK_RETURN (ret_code); /* from itself */ ret_code = krui_createLink (RHOb_UNIT, 0.0); CHECK_RETURN (ret_code); /* TO g2b unit */ ret_code = krui_setCurrentUnit (G2b_UNIT); CHECK_RETURN (ret_code); /* FROM inpb units */ for (j = 1; j <= f1bUnits; j++) { ret_code = krui_createLink (INPb_UNIT(j), 0.0); CHECK_RETURN (ret_code); } /*for*/ /* set the update function */ ret_code = krui_setUpdateFunc (UPDATE_FUNC_NAME); CHECK_RETURN( ret_code ); /* set the learning function */ ret_code = krui_setLearnFunc (LEARN_FUNC_NAME); //ui_NumberOfLearnParamsChanged(); //ui_NumberOfUpdateParamsChanged(); return (ret_code); }
krui_err SnnsCLib::bn_assoz_createNet(int X, int Y) { int i,j,unit_no; struct PosType unit_pos; krui_err ret = KRERR_NO_ERROR; int HUnits= X*Y; int IUnits= X*Y; /* Allocate units */ ret = krui_allocateUnits( IUnits + HUnits ); CHECK_RETURN (ret); /* Create standard input Units. The size of the input layer is X*Y */ for (i = 1; i <= Y; i++) for (j = 1; j <= X; j++) { unit_pos.x = j; unit_no = krui_createDefaultUnit(); if (unit_no < 0) CHECK_RETURN (unit_no); ret = krui_setUnitTType( unit_no, INPUT ); CHECK_RETURN (ret); ret = krui_setUnitActFunc( unit_no, const_cast<char*>("Act_RM") ); CHECK_RETURN (ret); unit_pos.y = i; krui_setUnitPosition( unit_no, &unit_pos ); } /* Create standard hidden Units. The size of the output layer is X*Y */ for (i = 1; i <= Y; i++) for (j = 1; j <= X; j++) { unit_pos.x = X+4+j; unit_no = krui_createDefaultUnit(); if (unit_no < 0) CHECK_RETURN (unit_no); ret = krui_setUnitTType( unit_no, HIDDEN ); CHECK_RETURN (ret); ret = krui_setUnitActFunc( unit_no, const_cast<char*>("Act_RM") ); CHECK_RETURN (ret); unit_pos.y = i; krui_setUnitPosition( unit_no, &unit_pos ); } /* Make connections between input units and hidden units */ for (i = IUnits + 1; i <= IUnits + HUnits; i++) { /* Make hidden unit to current unit */ ret = krui_setCurrentUnit( i ); CHECK_RETURN (ret); /* (backward) connect current (hidden) unit with input unit */ /* set all link weights from the input units to one */ ret = krui_createLink( i-IUnits, 1.0); CHECK_RETURN (ret); /* Make connections from all hidden units */ /* set link weights to zero */ for (j = IUnits + 1; j <= IUnits + HUnits; j++) { if (j != i){ ret = krui_createLink( j, 0.0); CHECK_RETURN (ret); } } } /* set the update function */ ret = krui_setUpdateFunc (const_cast<char*>(ASSOZ_UPDATE_FUNC_NAME)); CHECK_RETURN (ret); /* set the learning function */ ret = krui_setLearnFunc (const_cast<char*>(ASSOZ_LEARN_FUNC_NAME)); CHECK_RETURN (ret); /* set the init function */ ret = krui_setInitialisationFunc (const_cast<char*>(ASSOZ_INIT_FUNC_NAME)); //CHECK_RETURN (ret); return(ret); } /* bn_assoz_createNet */
krui_err SnnsCLib::bn_art2_createNet (int f1Units, int f1Rows, int f2Units, int f2Rows) { krui_err ret_code = KRERR_NO_ERROR; int i, j; /********* create units ******************/ /* create Input Layer */ ret_code = bn_art2_make_layer (f1Units, f1Rows, F1_COLS, INP_X, INP_Y, 1, 1, const_cast<char*>("inp"), INPUT, ACTF_INP, OUTF_INP, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create W-Units */ ret_code = bn_art2_make_layer (f1Units, f1Rows, F1_COLS, W_X, W_Y, F1_SEP_X, F1_SEP_Y, const_cast<char*>("w"), HIDDEN, ACTF_W, OUTF_W, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create X-Units */ ret_code = bn_art2_make_layer (f1Units, f1Rows, F1_COLS, X_X, X_Y, F1_SEP_X, F1_SEP_Y, const_cast<char*>("x"), HIDDEN, ACTF_X, OUTF_X, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create U-Units */ ret_code = bn_art2_make_layer (f1Units, f1Rows, F1_COLS, U_X, U_Y, F1_SEP_X, F1_SEP_Y, const_cast<char*>("u"), HIDDEN, ACTF_U, OUTF_U, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create V-Units */ ret_code = bn_art2_make_layer (f1Units, f1Rows, F1_COLS, V_X, V_Y, F1_SEP_X, F1_SEP_Y, const_cast<char*>("v"), HIDDEN, ACTF_V, OUTF_V, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create P-Units */ ret_code = bn_art2_make_layer (f1Units, f1Rows, F1_COLS, P_X, P_Y, F1_SEP_X, F1_SEP_Y, const_cast<char*>("p"), HIDDEN, ACTF_P, OUTF_P, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create Q-Units */ ret_code = bn_art2_make_layer (f1Units, f1Rows, F1_COLS, Q_X, Q_Y, F1_SEP_X, F1_SEP_Y, const_cast<char*>("q"), HIDDEN, ACTF_Q, OUTF_Q, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create R-Units */ ret_code = bn_art2_make_layer (f1Units, f1Rows, F1_COLS, R_X, R_Y, F1_SEP_X, F1_SEP_Y, const_cast<char*>("r"), HIDDEN, ACTF_R, OUTF_R, 0, NULL, NULL); CHECK_RETURN (ret_code); /* create Recognition Layer */ ret_code = bn_art2_make_layer (f2Units, f2Rows, F2_COLS, REC_X, REC_Y, 1, 1, const_cast<char*>("rec"), SPECIAL, ACTF_REC, OUTF_REC, 0, NULL, NULL); CHECK_RETURN (ret_code); ret_code = bn_art2_make_layer (f2Units, f2Rows, F2_COLS, RST_X, RST_Y, 1, 1, const_cast<char*>("rst"), HIDDEN, ACTF_RST, OUTF_RST, 0, NULL, NULL); CHECK_RETURN (ret_code); /********* Create Links **************************************/ /* TO w units */ for (i=1; i<=f1Units; i++) { ret_code = krui_setCurrentUnit (W_UNIT(i)); CHECK_RETURN (ret_code); /* FROM inp units */ ret_code = krui_createLink (INP_UNIT(i),0.0); CHECK_RETURN (ret_code); /* FROM u units */ ret_code = krui_createLink (U_UNIT(i), 0.0); CHECK_RETURN (ret_code); } /*for*/ /* TO x units */ for (i=1; i<=f1Units; i++) { ret_code = krui_setCurrentUnit (X_UNIT(i)); CHECK_RETURN (ret_code); /* FROM w units */ ret_code = krui_createLink (W_UNIT(i),0.0); CHECK_RETURN (ret_code); } /*for*/ /* TO u units */ for (i=1; i<=f1Units; i++) { ret_code = krui_setCurrentUnit (U_UNIT(i)); CHECK_RETURN (ret_code); /* FROM v units */ ret_code = krui_createLink (V_UNIT(i),0.0); CHECK_RETURN (ret_code); } /*for*/ /* TO v units */ for (i=1; i<=f1Units; i++) { ret_code = krui_setCurrentUnit (V_UNIT(i)); CHECK_RETURN (ret_code); /* FROM x units */ ret_code = krui_createLink (X_UNIT(i),0.0); CHECK_RETURN (ret_code); /* FROM q unit */ ret_code = krui_createLink (Q_UNIT(i), 0.0); CHECK_RETURN (ret_code); } /*for*/ /* TO p units */ for (i=1; i<=f1Units; i++) { ret_code = krui_setCurrentUnit (P_UNIT(i)); CHECK_RETURN (ret_code); /* FROM rec units */ for (j=1; j<=f2Units; j++) { ret_code = krui_createLink (REC_UNIT(j),0.0); CHECK_RETURN (ret_code); } /*for*/ /* FROM u unit */ ret_code = krui_createLink (U_UNIT(i), 0.0); CHECK_RETURN (ret_code); } /*for*/ /* TO q units */ for (i=1; i<=f1Units; i++) { ret_code = krui_setCurrentUnit (Q_UNIT(i)); CHECK_RETURN (ret_code); /* FROM p unit */ ret_code = krui_createLink (P_UNIT(i), 0.0); CHECK_RETURN (ret_code); } /*for*/ /* TO r units */ for (i=1; i<=f1Units; i++) { ret_code = krui_setCurrentUnit (R_UNIT(i)); CHECK_RETURN (ret_code); /* FROM p unit */ ret_code = krui_createLink (P_UNIT(i), 0.0); CHECK_RETURN (ret_code); /* FROM inp unit */ ret_code = krui_createLink (INP_UNIT(i), 0.0); CHECK_RETURN (ret_code); } /*for*/ /* TO rec units */ for (i=1; i<=f2Units; i++) { ret_code = krui_setCurrentUnit (REC_UNIT(i)); CHECK_RETURN (ret_code); /* FROM p units */ for (j=1; j<=f1Units; j++) { ret_code = krui_createLink (P_UNIT(j), 0.0); CHECK_RETURN (ret_code); } /*for*/ /* FROM rst unit */ ret_code = krui_createLink (RST_UNIT(i), 0.0); CHECK_RETURN (ret_code); } /*for*/ /* TO rst units */ for (i=1; i<=f2Units; i++) { ret_code = krui_setCurrentUnit (RST_UNIT(i)); CHECK_RETURN (ret_code); /* FROM rec units */ ret_code = krui_createLink (REC_UNIT(i), 0.0); CHECK_RETURN (ret_code); } /*for*/ //printf (" Done.\n"); /* set the update function */ ret_code = krui_setUpdateFunc (UPDATE_FUNC_NAME); CHECK_RETURN( ret_code ); /* set the learning function */ ret_code = krui_setLearnFunc (LEARN_FUNC_NAME); return (ret_code); }
void ui_list_setUnitValue(Widget w, struct SimpleListType *listDescrPtr, XawListReturnStruct *listStructPtr) { char buf[120]; ui_list_returnIndex = listStructPtr->list_index; /* if no item selected then return */ if (listStructPtr->list_index == XAW_LIST_NONE) return; /* an item is selected */ /* but if no ftypes present when requesting f-types then return */ if (((listDescrPtr->listType == UI_LIST_FTYPE) OR (listDescrPtr->listType == UI_LIST_FTYPE_NAME)) AND (ui_list_noOfFtypes == 0)) return; switch (listDescrPtr->listType) { case UI_LIST_IOTYPE: listDescrPtr->unitPtr->iotype = (listStructPtr->list_index + 1); break; case UI_LIST_FTYPE: sprintf(listDescrPtr->unitPtr->ftype, "%s", listStructPtr->string); break; case UI_LIST_ACT_FUNC: sprintf(listDescrPtr->unitPtr->actFuncName, "%s", listStructPtr->string); break; case UI_LIST_OUT_FUNC: sprintf(listDescrPtr->unitPtr->outFuncName, "%s", listStructPtr->string); break; case UI_LIST_FTYPE_ACT_FUNC: case UI_LIST_FTYPE_OUT_FUNC: case UI_LIST_FTYPE_NAME: case UI_LIST_SITE_FUNC: case UI_LIST_SITE: case UI_LIST_UNIT_SITE: /* site functions are requested only during editing sites! Thus this must be handled in a different way. */ sprintf(ui_list_returnName, "%s", listStructPtr->string); break; case UI_LIST_LEARN_FUNC: ui_checkError(krui_setLearnFunc(listStructPtr->string)); sprintf(buf,"Learning func: %s\n",listStructPtr->string); ui_tw_printMessage(buf); ui_xSetLabel(ui_controlMessageWidget, buf); ui_NumberOfLearnParamsChanged(); break; case UI_LIST_UPDATE_FUNC: ui_checkError(krui_setUpdateFunc(listStructPtr->string)); sprintf(buf,"Update func : %s\n",listStructPtr->string); ui_tw_printMessage(buf); ui_xSetLabel(ui_controlMessageWidget, buf); ui_NumberOfUpdateParamsChanged(); break; case UI_LIST_INIT_FUNC: ui_checkError(krui_setInitialisationFunc(listStructPtr->string)); sprintf(buf,"Init. func : %s\n",listStructPtr->string); ui_tw_printMessage(buf); ui_xSetLabel(ui_controlMessageWidget, buf); ui_NumberOfInitParamsChanged(); break; case UI_LIST_FF_LEARN_FUNC: ui_checkError (krui_setFFLearnFunc (listStructPtr->string)); sprintf (buf, "Learning function: %s", listStructPtr->string); ui_tw_printMessage (buf); ui_xSetLabel (pr_learnFuncText, buf); break; case UI_LIST_PRUN_FUNC: ui_checkError (krui_setPrunFunc (listStructPtr->string)); sprintf (buf, "Pruning function: %s\n", listStructPtr->string); ui_tw_printMessage (buf); ui_xSetLabel (pr_prunFuncText, buf); break; } /* unitPtr may be NULL as well ! */ if (listDescrPtr->unitPtr == &ui_targetUnit) { ui_info_getDisplayedUnitAttributes(&ui_targetWidgets, &ui_targetUnit); ui_info_setUnitItems(ui_targetWidgets, ui_targetUnit); } else { if (listDescrPtr->unitPtr == &ui_sourceUnit) { ui_info_getDisplayedUnitAttributes(&ui_sourceWidgets, &ui_sourceUnit); ui_info_setUnitItems(ui_sourceWidgets, ui_sourceUnit); } } }
void create_network(char *weight_file) { FILE *fp; float val; /* Allocate units (the user may or may not use this function, there is no need to do this) */ ret = krui_allocateUnits( OUnits + HUnits + IUnits ); errChk( ret ); printf( "\n\nCreate Units now\n" ); /* Create standard (input) Units */ unit_pos.x = 1; for (i = 1; i <= IUnits; i++) { unit_no = krui_createDefaultUnit(); if (unit_no < 0) errChk( unit_no ); ret = krui_setUnitTType( unit_no, INPUT ); errChk( ret ); unit_pos.y = (IUnits<Y)?i+(Y-IUnits)/2:i; krui_setUnitPosition( unit_no, &unit_pos ); } /* Create standard (hidden) Units */ for (i = 1; i <= Y; i++) for (j = 1; j <= X; j++) { unit_pos.x = 4+j; unit_no = krui_createDefaultUnit(); if (unit_no < 0) errChk( unit_no ); ret = krui_setUnitTType( unit_no, HIDDEN ); errChk( ret ); unit_pos.y = i; krui_setUnitPosition( unit_no, &unit_pos ); } /* Create standard (output) Units */ unit_pos.x = 4+X+3; if (OUnits) for (i = 1; i <= OUnits; i++) { unit_no = krui_createDefaultUnit(); if (unit_no < 0) errChk( unit_no ); ret = krui_setUnitTType( unit_no, OUTPUT ); errChk( ret ); unit_pos.y = (OUnits<Y)?i+(Y-OUnits)/2:i; krui_setUnitPosition( unit_no, &unit_pos ); } /* Make Connections now */ /* Make connections between hidden units and output units first ! */ for (i = IUnits + HUnits + 1; i <= IUnits + HUnits + OUnits; i++) { /* Make output unit to current unit */ ret = krui_setCurrentUnit( i ); errChk( ret ); for (j = IUnits + 1; j <= IUnits + HUnits; j++) { /* connect current (output) unit with hidden unit. REMEMBER: The hidden unit #j is the predecessor of the (output) unit #i (it is a backward connection) */ ret = krui_createLink( j, 0 ); errChk( ret ); } } /* Make connections between input units and hidden units and set link weight with datas from output_file */ printf("\nSet link weights now\n"); if((fp=fopen(weight_file,"r"))!=NULL) for (i = IUnits + 1; i <= IUnits + HUnits; i++) { /* Make hidden unit to current unit */ ret = krui_setCurrentUnit( i ); errChk( ret ); for (j = 1; j <= IUnits; j++) { /* (backward) connect current (hidden) unit with input unit */ fscanf(fp,"%s",string); val = atof(string); ret = krui_createLink( j,val); errChk( ret ); } } else{ /* set all link weights to zero */ for (i = IUnits + 1; i <= IUnits + HUnits; i++) { /* Make hidden unit to current unit */ ret = krui_setCurrentUnit( i ); errChk( ret ); for (j = 1; j <= IUnits; j++) {/* (backward) connect current (hidden) unit with input unit */ ret = krui_createLink( j,0); errChk( ret ); } } printf("\nWeight file %s could not be opened!\n",weight_file); printf("All weights have been set to zero!\n"); } fclose(fp); /* set the update function */ ret = krui_setUpdateFunc (KOHONEN_UPDATE_FUNC_NAME); errChk( ret ); /* set the learning function */ ret = krui_setLearnFunc (KOHONEN_LEARN_FUNC_NAME); errChk( ret ); /* set the init function */ ret = krui_setInitialisationFunc (KOHONEN_INIT_FUNC_NAME); errChk( ret ); printf("\nEnter Filename of the Network to save: "); scanf("%s", name); strcat(name,".net"); printf("Save Network\n"); /* save the network */ ret = krui_saveNet( name, NULL ); errChk( ret ); printf( "\nCreate Patterns now\n" ); } /* end of create_network */