📄 art_ext.c
字号:
net->map.artA.beta=beta;
}
else if (component==ARTB)
{
if ((net->type!=ARTMAP)||(net->map.artB.type==ART_TYPE_NONE))
return 1;
net->map.artB.beta=beta;
}
else if (component==ART)
{
if (net->type!=ART)
return 1;
net->art.beta=beta;
}
else
return 1;
/* New Recoding Rate So Training No Longer Up To Date */
net->doneB = FALSE;
return 0;
}
/* ------------------------------------------------------------------------- */
/* GetArtVigil */
/* Given a pointer to a network, a network component and a */
/* float pointer, sets the float pointer value to the */
/* compenent's vigilence level. */
/* */
/* Arguments: */
/* net - A pointer to an initialized netowrk of type netTYPE */
/* component - ARTA, ARTB, or ART */
/* vigil - A pointer to a float */
/* */
/* Return Value: */
/* 0 - When successful: */
/* 1 - Network not initialized or NULL */
/* 2 - ARTMAP component given for ART net type */
/* 3 - ART component given for ARTMAP net type */
/* 4 - Invalid component name given */
/* ------------------------------------------------------------------------- */
int GetArtVigil(netPTR net, int component, float *vigil)
{
if ((net==NULL)||(net->initB!=TRUE))
return 1;
/* Check network type and set */
if (component==ARTA)
{
if (net->type!=ARTMAP)
return 2;
*vigil = net->map.base_vigil;
return 0;
}
else if (component==ARTB)
{
if ((net->type!=ARTMAP)||(net->map.artB.type==ART_TYPE_NONE))
return 2;
*vigil = net->map.artB.vigil;
return 0;
}
else if (component==ART)
{
if (net->type!=ART)
return 3;
*vigil = net->art.vigil;
return 0;
}
else
return 4;
}
/* ------------------------------------------------------------------------- */
/* GetArtWinner */
/* Given a pointer to a network and an Art component returns */
/* the most recent winning category of the Art component. */
/* */
/* Arguments: */
/* net - A pointer to an initialized netowrk of type netTYPE */
/* component - ARTA, ARTB, or ART */
/* */
/* Return Values: */
/* winner - When successful */
/* -1 - When no category met the vigilence level (no winner) */
/* -2 - When network type incompatible, net uninitialized or NULL */
/* ------------------------------------------------------------------------- */
int GetArtWinner(netPTR net, int component)
{
if ((net==NULL)||(net->initB!=TRUE))
return -2;
/* Check network type and set */
if (component==ARTA)
{
if (net->type!=ARTMAP)
return -2;
return net->map.artA.win_cat;
}
else if (component==ARTB)
{
if ((net->type!=ARTMAP)||(net->map.artB.type==ART_TYPE_NONE))
return -2;
return net->map.artB.win_cat;
}
else if (component==ART)
{
if (net->type!=ART)
return -2;
return net->art.win_cat;
}
else
return -2;
}
/* ------------------------------------------------------------------------- */
/* GetArtBeta */
/* Given a pointer to a network, a network component, and a */
/* pointer to a float, sets the float pointer value to the */
/* current recoding rate of the component. */
/* */
/* Arguments: */
/* net - A pointer to an initialized netowrk of type netTYPE */
/* component - ART, ARTA, or ARTB */
/* beta - A pointer to a float */
/* */
/* Return Values: */
/* 0 - When successful */
/* 1 - Network not initialized or NULL */
/* 2 - Incomptible component and type given */
/* 3 - Invalid component type given */
/* ------------------------------------------------------------------------- */
int GetArtBeta(netPTR net, int component, float *beta)
{
if ((net==NULL)||(net->initB!=TRUE))
return 1;
/* Check network type and set */
if (component==ARTA)
{
if (net->type!=ARTMAP)
return 2;
*beta = net->map.artA.beta;
return 0;
}
else if (component==ARTB)
{
if ((net->type!=ARTMAP)||(net->map.artB.type==ART_TYPE_NONE))
return 2;
*beta = net->map.artB.beta;
return 0;
}
else if (component==ART)
{
if (net->type!=ART)
return 2;
*beta = net->art.beta;
return 0;
}
else
return 3;
}
/* ------------------------------------------------------------------------- */
/* GetMap */
/* Given a pointer to a network of type ARTMAP, and a pointer */
/* to a list of floats, set the values in the list to the */
/* current mapfield activations. */
/* */
/* Arguments: */
/* net - A pointer to an initialized network of type netTYPE */
/* list - A pointer to a list of floats of size GetMapSize */
/* */
/* Return Values: */
/* 0 - When successful: */
/* 1 - Network not initialized of NULL */
/* 2 - Network not of type ARTMAP */
/* ------------------------------------------------------------------------- */
int GetMap(netPTR net, float *list)
{
int i;
if ((net==NULL)||(net->initB!=TRUE))
return 1;
/* Check network type and set */
if (net->type!=ARTMAP)
return 2;
else
{
for (i=0;i<net->map.artB.nodes_used;i++)
*(list+i)=(*(net->map.map+i));
return 0;
}
}
/* ------------------------------------------------------------------------- */
/* GetMapSize */
/* Given a pointer to a network of type ARTMAP, returns the */
/* current number of mapfield nodes. */
/* */
/* Arguments: */
/* net - A pointer to an initialized network of type netTYPE */
/* */
/* Return Values: */
/* When successful: */
/* The number of MapField Nodes */
/* When network is not of type ARTMAP, uninitialized or NULL */
/* -1 */
/* ------------------------------------------------------------------------- */
int GetMapSize(netPTR net)
{
if ((net==NULL)||(net->initB!=TRUE))
return -1;
/* Check network type and set */
if (net->type!=ARTMAP)
return -1;
else
return net->map.artB.nodes_used;
}
/* ------------------------------------------------------------------------- */
/* GetArtSize */
/* Given a pointer to a network, and a component type, returns */
/* current size of the art component. */
/* */
/* Arguments: */
/* net - A pointer to an initialized netowrk of type netTYPE */
/* component - ART, ARTA, or ARTB */
/* */
/* Return Values: */
/* When successful: */
/* Size of Art Component */
/* When network type incompatible, network uninitialized or NULL */
/* -1 */
/* ------------------------------------------------------------------------- */
int GetArtSize(netPTR net, int component)
{
if ((net==NULL)||(net->initB!=TRUE))
return -1;
/* Check network type and set */
if (component==ARTA)
{
if (net->type!=ARTMAP)
return -1;
else
return net->map.artA.nodes_used;
}
else if (component==ARTB)
{
if (net->type!=ARTMAP)
return -1;
else
return net->map.artB.nodes_used;
}
else if (component==ART)
{
if (net->type!=ART)
return -1;
else
return net->art.nodes_used;
}
else
return -1;
}
/* ------------------------------------------------------------------------- */
/* GetSetInput */
/* Given a pointer to a pattern set, a pattern number, and a */
/* pointer to a list of floats of size GetSetInSize, sets the */
/* values of the list to the inputs of the given pattern. */
/* */
/* Arguments: */
/* set - A pointer to a set of patterns of type setTYPE */
/* pat_num - A pattern number (integer) */
/* list - A pointer to a list of floats of size GetSetInSize */
/* */
/* Return Values: */
/* 0 - When successful: */
/* 1 - Set not initialized or NULL */
/* 2 - Pattern number out of bounds */
/* ------------------------------------------------------------------------- */
int GetSetInput(setPTR set, int pat_num, float *list)
{
int i;
if ((set==NULL)||(set->initB!=TRUE))
return 1;
else if ((pat_num<0)||(pat_num > set->num_patterns))
return 2;
else
{
for (i=0;i<set->num_inputs;i++)
list[i]=set->pattern[pat_num].input[i];
return 0;
}
}
/* ------------------------------------------------------------------------- */
/* GetSetInSize */
/* Given a pointer to a pattern set, returns the size of the */
/* inputs patterns of the set. */
/* */
/* Arguments: */
/* set - A pointer to a set of patterns of type setTYPE */
/* */
/* Retrun Values: */
/* When successful: */
/* The number of inputs
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -