home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 February / PCWK0297.iso / technika / nnmodel / nndefs.h < prev    next >
C/C++ Source or Header  |  1996-04-18  |  9KB  |  344 lines

  1. #ifndef __NNDEFS_H__
  2. #define __NNDEFS_H__
  3.  
  4. #define VERBOSE
  5.  
  6. #define EXPORTVERSION 4
  7. #define REVLEVEL      4
  8.  
  9. #define UNIPOLAR
  10. #define MAXVARS     256
  11. #define MAXPOINTS 3000
  12. #define NRAVEPTS    64
  13. #define MAXBUF    2400 // maximum record length in input data
  14. #define MAXCSTRING 64
  15.  
  16. #define MAXVARWIDTH 20
  17. #define MAXFMTSTR   10
  18. #define MAXFORMAT    9
  19. #define MAXSTRING   13
  20. #define MAXFACT        32    // maximum number of factors in a design
  21. #define MAXIMPORTDISP 12 // max # of records displayed in raw load dialog
  22.  
  23. #define LO_SEARCHCENTER  1
  24. #define LO_SEARCHSTAR    2
  25. #define LO_SEARCHFACTOR  4
  26. #define LO_SEARCHBALANCE 8
  27.  
  28. #define NFobject_exists         0x1L
  29. #define NFnum_col_known         0x2L
  30. #define NFtrainmat_loaded       0x4L
  31. #define NFreference_loaded      0x8L
  32. #define NFtitle_known           0x10L
  33. #define NFdesc_known            0x20L
  34. #define NFraw_file_known        0x40L
  35. #define NFcol_usage_known       0x80L
  36. #define NFloader_known          0x100L
  37. #define NFunscaled_loaded       0x200L
  38. #define NFavail                 0x400L
  39. #define NFtestmat_loaded        0x800L
  40. #define NFrow_usage_known       0x1000L
  41. #define NFdesigned_matrix       0x2000L
  42. #define NFdisplaying_coded      0x4000L
  43. #define NFi_o_col_known         0x8000L
  44. #define NFedit_training         0x10000L
  45.  
  46. #define EDIT_LABEL            1
  47. #define EDIT_FORMAT         2
  48. #define EDIT_SCALE_TYPE     4
  49. #define EDIT_SCALE          8
  50. #define EDIT_OFFSET         16
  51. #define EDIT_LSHIFT         32
  52. #define EDIT_MINIMUM        64
  53. #define EDIT_MAXIMUM        128
  54. #define EDIT_COLUMN_USAGE   256
  55.  
  56. // coldesc.flag bit mask flag
  57. #define SCALE_LOG     1    // scale linear if zero else log
  58. #define EQUATION      2
  59.  
  60.     typedef union {
  61.         long d;
  62.         float f;
  63.         char c[4];
  64.     } uunion;
  65.  
  66.     typedef struct Symbol {
  67.         char    *name;
  68.         short   type;
  69.         short   flag;
  70.         short    colnum;
  71.         union {
  72.             double  val;
  73.             double  (*ptr)(double);
  74.             double  (*ptr1)(char *, double, int, void *);
  75.         } u;
  76.         struct Symbol *next;
  77.     } Symbol;
  78.  
  79.     typedef struct {
  80.         int numfact; // # of factors from design dialog
  81.         int numresp; // # of responces from design dialog
  82.         int dtype; // type of design matrix
  83.         int dsel; // type of design matrix (combo selection)
  84.         int scope; // scope of design                        
  85.         int phase; // not used yet
  86.         int ncenter;    // number of center points
  87.         int mlevels[MAXFACT+1]; // multilevels
  88.         int mode;
  89.         float scale;
  90.     } DESIGN_DESC;
  91.     
  92.     typedef struct {
  93.         int rectype;
  94.         float goodness;
  95.         float fields[1];
  96.     } SparseDataRecord;
  97.  
  98.     typedef struct {
  99.         char rowtype;    // ie. star,simplex,factorial,center
  100.         char rep;        // replicate number
  101.         int seq;        // sequence number
  102.         float goodness;    // sum total of row's goodness number
  103.     } ROW_DESC;
  104.  
  105.     typedef struct {
  106.         char  vlab[MAXFORMAT];   // variable label
  107.         char  format[MAXFORMAT];   // variable format
  108.     } LAB_DESC;
  109.     
  110.     typedef struct {
  111.         float upperlimit;
  112.         float lowerlimit;
  113.         float ideal;
  114.     } LEVEL_DESC;
  115.     
  116.     typedef struct {
  117.         int numlevels;
  118.         LEVEL_DESC* levels;
  119.     } COLUMN_LEVEL;
  120.  
  121.     typedef struct {
  122.         float fscale;   // scaling multiplier
  123.         float foffset;  // scaling offset
  124.         float max;
  125.         float min;
  126.         float cliphi;    // set to missing if value is above
  127.         float cliplo;    // or below the clip levels
  128.         float dfield;    // equparse data field
  129. //        int len;      // field length
  130.         int flag;     // equation
  131.         int fieldtype; // type of scaling (float,number,etc)
  132.         int colwidth;    // column width in grid
  133.         char  field_type; // type of variable 
  134.         char  col_usage; // usage of variable I,O,S
  135.         char  format[MAXFORMAT]; // character convertion format
  136.         char  vlab[MAXFORMAT];   // variable label
  137.         char  units[MAXFORMAT];   // units
  138.         char  convstr[MAXVARWIDTH];   // converted variable
  139.         Symbol* dfieldsym;
  140. // the following are used in DM row matching
  141.         
  142. // possible other members
  143. //              char description[64];
  144. //              int color; // color of line in graph
  145. //              int linetype; // line type in graph
  146. //              char symbol; // character marker in graph
  147.     } COL_DESC;
  148.  
  149.  
  150.     typedef struct {
  151.         float ave;
  152.         double sum;
  153.         float min;
  154.         float max;
  155.         float range;
  156.         float foffset;
  157.         float fscale;
  158.         float count;
  159.         double sumsq;
  160.         int digbefore;
  161.         int digafter;
  162.         int fieldtype;
  163.         int flag;
  164. //        int len;
  165.         unsigned int digsigned : 1;
  166.         unsigned int digstring : 1;
  167.         char fmt[MAXFMTSTR];
  168.         char units[MAXFMTSTR];
  169.         char fieldname[MAXFORMAT];
  170.     } LOAD_DESC ;
  171.  
  172.     // Grid1 (DDL) is Optimizer I/O
  173.     typedef struct  {
  174.         char iotype;
  175.         char cfreeze;
  176.         char varlabel[10];
  177.         char min[14];
  178.         char max[14];
  179.         char obj[14];
  180.         char pred[14];
  181.     } * LPGRID1BUF;
  182.     
  183.     // Grid2 (VBX) is input grid for interogate model class
  184.     typedef struct  {
  185.         char label[14];
  186.         char value[14];
  187.         char min[14];
  188.         char max[14];
  189.     } GRID2BUF;
  190.  
  191.     // Grid3 (VBX) is output grid for interogate model class
  192.     typedef struct  {
  193.         char label[14];
  194.         char value[14];
  195.     } GRID3BUF;
  196.  
  197.     typedef struct {
  198.         char cfreeze;
  199.         float min;            // constrain min
  200.         float max;            // constrain max
  201.         float obj;            // Objective function
  202.         float pred;            // Prediction
  203.         float limitmin;    // absolute min (from DM)
  204.         float limitmax;    // absolute max (from DM)
  205.         float mincostshft;
  206.         float maxcostshft;
  207.         float OC_limit;
  208.         float OC_last;
  209.         short int useminlim;
  210.         short int usemaxlim;
  211.         short int OC_forward;
  212.         short int OC_missed;
  213.         char format[10];
  214.         } OPTIMSTR;
  215.  
  216.     typedef struct {
  217.         float *G3darray;
  218.         float *G2darray;
  219.         float *G2dearray;
  220.         float *GCarray;
  221.         float f1,f2,f3,f4;
  222.         float rotinc;
  223.         float axiswidth;
  224.         float camloc[3],xylim[6][2];
  225.         float distance;
  226.         float chrsiz;
  227.         float swait;
  228.         float cosmax;
  229.         float width;
  230.         float zoffset;
  231.         float xorig,xmax;
  232.         float yorig,ymax,zorig,zmax,zmin;
  233.         int nobars;
  234.         int runave;
  235. //        int Xext,Yext,Xorg,Yorg;
  236. //        int ylpstart,xlpstart,ylpinc,xlpinc;
  237.         int graphic3d_flag;
  238.         int graphic_clevels,graphic_curves;
  239.         int Xsel,Ysel,Zsel,Esel;
  240.         int varindx[8];
  241.         long graphic_flag;
  242.         char xformat[32],yformat[32],zformat[32];
  243. #define MAXLEVELS 17
  244.         float conlev[MAXLEVELS];
  245.         char clab[MAXLEVELS][16];
  246.         int ic[MAXLEVELS];
  247.         int icn[MAXLEVELS];
  248.         int linsty[MAXLEVELS];
  249.     } GRAPHSTR;
  250.  
  251.     typedef struct {
  252.         double rq  ;
  253.         double sumins  ;
  254.         double sumpred ;
  255.         double summeas ;
  256.         double sumres  ;
  257.         double aveins  ;
  258.         double avemeas ;
  259.         double avepred ;
  260.         double averes  ;
  261.         double minins  ;
  262.         double minmeas ;
  263.         double minpred ;
  264.         double minres  ;
  265.         double maxins  ;
  266.         double maxmeas ;
  267.         double maxpred ;
  268.         double maxres  ;
  269.         double stdins  ;
  270.         double stdmeas ;
  271.         double stdpred ;
  272.         double stdres  ;
  273.         } STATS;
  274.  
  275.     float  **alloc_2d_floats( int hi1d, int hi2d );
  276.     void free_2d_floats( float **array, int hi1d);
  277.         
  278.  
  279. #ifdef UNIPOLAR
  280.     // unipolar nerual function (0,1)
  281.     #define dafunc(x) (x - x*x)
  282.     #define afunc(x)  (float)(1.f / (1.f + exp (-x)))
  283. #else
  284.     // bipolar neural function (-1,1.0) 
  285.     #define dafunc(x) ( (1.f - x*x)/2.f )
  286.     #define afunc(x) (float) (2.f / (1.f + exp (-x))-1.f)
  287. #endif
  288.  
  289. // Training flags mask positions
  290. #define TF_STOPONTOL 1    // stop if all TM values are within tolerance
  291. #define TF_STOPONERR 2    // stop if total sum sq err is less then errtol
  292. #define TF_STOPONRSQ 4    // stop if R square is higher then goodrsq
  293. #define TF_NOINTOOUT 8    // use input to output connections
  294. #define TF_CGOPTIM   16    // use conjugate gradient optimization after eon
  295.  
  296. // 2D & 3D graphs
  297. #define NUMPOINTS  256
  298. #define NUMEFFECTS 10
  299. #define N3DPOINTS 20  // # of divisions on 3d graph
  300.  
  301. #define DT_TWOLEVEL            1
  302. #define DT_THREELEVEL        2
  303. #define DT_MULTILEVEL        4
  304. #define DT_SIMPLEX            8
  305. #define DT_STARSIMPLEX        16
  306. #define DT_CENTRALCOMP        32
  307. #define DT_MIXTURE            64
  308.                         
  309. // defines for design options m_design.mode
  310. #define DO_ROTATE            1
  311. #define DO_FACECENTERED        2
  312. #define DO_USERSCALED        4
  313. #define DO_AUTOLOAD            8
  314. #define DO_KEEPREJECTS        16
  315. #define DO_USEOLDDATA        32
  316. #define DO_AUTORESCALE        64
  317. #define DO_ADVISOR            128
  318. #define DO_SETFORMAT        256
  319.  
  320.  
  321. // defines for print options
  322. #define PO_HORIZ        1
  323. #define PO_VERT            2
  324. #define PO_TITLE        4
  325. #define PO_DATE            8
  326. #define PO_PAGE            16
  327. #define PO_RANDOM        32
  328.  
  329. // coldesc.fieldtypes
  330. #define FIELDTYPE_FLOAT            0
  331. #define FIELDTYPE_STRING        1
  332. #define FIELDTYPE_TIMESTAMP        2
  333. #define FIELDTYPE_RECORDTYPE    3
  334. #define FIELDTYPE_TIMEONLY        4
  335. #define FIELDTYPE_DATEONLY        5
  336.  
  337.     typedef union  {
  338.             double val;
  339.             Symbol *sym;
  340.         } YYSTYPE;
  341.  
  342.  
  343. #endif
  344.