/*
Running NeuroCode model model0 for usage
Ce code a été crée automatiquement par le module NEURO CODE à partir d'un
modèle neuronal développé avec un outil de la
Suite NEURO ONE
Le présent code source généré par le progiciel NEURO CODE est protégé tant
par les dispositions nationales qu'internationales en matière de droits de
la propriété intellectuelle, dont les droits sont détenus, à titre
exclusif, par la société NETRAL.
L'utilisation et la modification de ce code source est soumise à un contrat
de licence d'utilisation.
La contrefaçon est un délit pénal puni de 2 ans d'emprisonnement et de
150.000 Euros d'amende.
Le modèle du présent code source a fait l'objet d'un dépôt auprès de
l'Agence pour la Protection des Programmes sous le numéro :
IDDN.FR.001.500018.00.S.P.1999.000.20700
NETRAL ne peut en aucun cas être tenu pour responsable des conséquences de
l'utilisation de ce code.
Lisez attentivement le fichier "licfr.txt" joint à ce fichier pour
connaitre vos droits et obligations concernant l'usage de ce code.
Pour obtenir une licence ou tout renseignement complémentaire,
adressez vous à :
NETRAL
14, rue Verdi
9213 Issy-les-Moulineaux
tel : (33) 146 387 512
email: info@netral.com
Date : 25/10/2005
Time : 17:22:28
User : Jean_Luc_PLOIX
Computer : SOPHRONE
Counter : 2
NetworkName : model0
FileName : D:\Program Files\Netral\Data\Exemples\Modeles\Static.NML
*/
/*
# Cette partie du fichier peut être copié dans un éditeur de texte, et sauvegardé
# comme fichier "Makefile" dans le répertoire de ce fichier.
# En fonction de la configuration de votre machine, quelques modifications doivent
# être faites à ce fichier Makefile
# Par exemple, vous pouvez changer :
# le compilateur C
# la localisation des fichiers communs
# Une fois ces modifia=cations apportées, appelez l'utilitaire Make pour compiler
# le programme model0use
#
# Les informations sur le programme model0use sont fournies dans le fichier Use.txt.
# The following part of the file can be copied into a text editor, and saved
# as "Makefile" file in the folder of this file.
# Depending upon the configuration of your machine, some modification must be
# done on this Makefile.
# For instance, you may change :
# the C compiler
# the common files location
# Once the modification are done, call the make utity in order to compile the
# model0use program
#
# Information on model0use program are provided in the Use.txt file
#------------------ Suggested Makefile ----------------------------------------
# Make for model0use project
CC=gcc
NETRALTYPREAD = netraltype.h readfile.c netraltype.h netraltype.c
OBJS = mathplus.o \
netraltype.o \
readfile.o \
model0tfr.o \
model0mainuse.o
model0use : $(OBJS)
$(CC) $(OBJS) -o model0use
readfile.o: $(NETRALTYPREAD)
$(CC) -c readfile.c
mathplus.o: mathplus.h mathplus.c
$(CC) -c mathplus.c
netraltype.o: netraltype.h netraltype.c
$(CC) -c netraltype.c
model0tfr.o : model0tfr.h $(NETRALTYPREAD)
$(CC) -c model0tfr.c
model0mainuse.o : model0mainuse.h $(NETRALTYPREAD) model0tfr.h
$(CC) -c model0mainuse.c
#------------------------------------------------------------------------------
*/
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <ctype.h>
#include <string.h>
/* Please check name and path of included header files */
/* Veuillez vérifier le nom et le chemin des fichiers inclus */
#include "readfile.h" /* reading description and data files.*/
#include "netraltype.h" /* defining real type*/
#include "model0tfr.h"
#define DESC "ndesc.txt" /* default description file.*/
#define USEHIST "usehist" /* tag for usage history files.*/
#define RESU "use" /* tag for usage result files.*/
/* Global variables */
/* Variables globales */
tdatastruct datastruct;
char *curusefile(char *dest, long index)
/* Usage result file name */
/* Nom du fichier des résultats de l'utilisation */
{
sprintf(dest, "%s%s%s%d%s", datastruct.resultpath, MODEL, RESU, index, ".csv");
return dest;
}
char *usehistoryfile(char *dest)
/* Usage history file name */
/* Nom du fichier historique */
{
sprintf(dest, "%s%s%s%s", datastruct.resultpath, MODEL, USEHIST, ".txt");
return dest;
}
long singleuse(long index)
/* Single file usage */
/* Utilisation avec un seul fichier */
{
FILE *sourcefile;
FILE *targetfile;
FILE *historyfile;
char* sourcename;
char* token;
long curline, curval;
long i, j, ii;
char buffer[1024];
real* target = NULL;
real rbuf[255];
real cost = 0;
real curdelta;
extern long verb;
sourcename = datastruct.datafilename[index];
targetfile = fopen(curusefile(buffer, index), "w");
if (targetfile)
{
fprintf(targetfile, ST_USAGEWITH, MODEL, sourcename);
for (i=0; i < datastruct.nindata; i++)
{
for (j=0; j < datastruct.ldepth[i]; j++)
{
if (i + j)
fprintf(targetfile, "%s", datastruct.separator);
fprintf(targetfile, "%s", datastruct.titles[datastruct.colio[i]]);
ii = datastruct.udepth[i*datastruct.ndepth + j];
if (ii)
fprintf(targetfile, "[%ld]", ii);
}
}
for (i=0; i < model0OUTPUTS; i++)
fprintf(targetfile, ST_COMPUTED_, datastruct.separator, datastruct.titles[datastruct.colio[i + datastruct.nindata - model0OUTPUTS]]);
fprintf(targetfile, "\n");
sourcefile = fopen(sourcename, "r");
if (sourcefile)
{
curline = - datastruct.delaymini;
while ((!feof(sourcefile)) && (curline < datastruct.linetoread))
{
token = fgets(buffer, BUFFERSIZE-1, sourcefile);
curval = translateline(token, &datastruct);
if (verb && (curval != datastruct.ndataperline))
{
printf(ST_ERRORFD, sourcename, curline + datastruct.delaymini + 1, curval, datastruct.ndataperline);
}
if (curline >= 0)
{
for (i = 0; i < 255; rbuf[i++] = 0);
target = getline(rbuf, &datastruct);
model0transfer(target, &rbuf[model0INPUTS + model0OUTPUTS]);
curdelta = rbuf[model0INPUTS] - rbuf[model0INPUTS + model0OUTPUTS];
cost += (curdelta)*(curdelta);
for (i=0; i < datastruct.ndatatarget; i++)
{
if (i)
fprintf(targetfile, "%s", datastruct.separator);
fprintf(targetfile, "%g", target[i]);
}
for (i=0; i < model0OUTPUTS; i++)
{
fprintf(targetfile, "%s%g", datastruct.separator, target[model0INPUTS + model0OUTPUTS + i]);
if (verb)
printf("%s%g", datastruct.separator, target[model0INPUTS + model0OUTPUTS + i]);
}
fprintf(targetfile, "\n");
if (verb)
printf("\n");
}
(curline)++;
}
fclose(sourcefile);
cost = sqrt(cost/curline);
printf(ST_DATASTD, sourcename);
printf("%10.4g\n", cost);
historyfile = fopen(usehistoryfile(buffer), "a");
if (historyfile)
{
fprintf(historyfile, ST_DATASTD, sourcename);
fprintf(historyfile, "%20.16f\n", cost);
fclose(historyfile);
}
}
else
{
fprintf(targetfile, ST_SOURCENO, sourcename);
printf(ST_SOURCENO, sourcename);
}
fclose(targetfile);
}
else
printf(ST_TARGETNO, buffer);
return 0;
}
long useall(void)
/* All files Usage */
/* Utilisation avec tous les fichiers */
{
long i;
FILE* historyfile;
char buffer[1024];
if (!model0loadw(datastruct.weightfilename))
{
historyfile = fopen(usehistoryfile(buffer), "w");
if (historyfile)
{
fprintf(historyfile, ST_USEHIST);
fclose(historyfile);
}
for (i=0; i < datastruct.nfile; i++)
{
singleuse(i);
}
}
return 0;
}
long analysecommandline(int argc, char* argv[], char* desc)
/* Command line analysis */
/* Analyse de la ligne de commande */
{
long i=1;
extern long verb;
for (i=0; i < argc; i++)
if ((argv[i][0] == '/')||(argv[i][0] == '-'))
{
if ((strlen(argv[i]) > 2) && ((argv[i][1] == 'd') ||(argv[i][1] == 'D')))
strcpy(desc, &argv[i][2]);
if ((strlen(argv[i]) == 2) && ((argv[i][1] == 'v') || (argv[i][1] == 'V')))
verb = 1;
}
return 0;
}
long model0usemain(int argc, char* argv[])
/* Main program */
/* Programme principal */
{
char bufferdesc[1024];
strcpy(bufferdesc, DESC);
analysecommandline(argc, argv, bufferdesc);
initdata(bufferdesc, &datastruct);
useall();
printf(ST_PRESSANYK);
getchar();
freedata(&datastruct);
return 0;
}
int main(int argc, char* argv[])
{
return model0usemain(argc, argv);
}
NETRAL - Neuro Code 6