home *** CD-ROM | disk | FTP | other *** search
/ ProfitPress Mega CDROM2 …eeware (MSDOS)(1992)(Eng) / ProfitPress-MegaCDROM2.B6I / PROG / MISC / DATAREP.ZIP / BSB.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1990-02-22  |  6.3 KB  |  205 lines

  1. PROGRAM BSB (Input, Output, 
  2.              F_file, G_file, T_file, Nfile);   {Data files.}
  3.  
  4. {Copyright 1989 James Anderson, Psychology Department, Brown University.}
  5. {This research was primarily supported by National Science              }
  6. {Foundation Grants BNS-82-14728 and BNS-85-18675                        }
  7. {to James Anderson,  Department of Cognitive and Linguistic Sciences,   }
  8. {Brown University, Providence, RI 02912.                                }
  9. {Please acknowledge these grants if you make use of these programs in   }
  10. {published material.                                                    }
  11.  
  12. CONST Dimensionality = 200;   {The program is written so
  13.                                the dimensionality can be increased
  14.                                simply by changing this number.}
  15.  
  16.       Maximum_set_size = 100;
  17.  
  18. TYPE    Vector = ARRAY  [1..Dimensionality] OF REAL;
  19.  
  20.         String = PACKED ARRAY [1..60] OF CHAR;
  21.  
  22.         Stimulus = RECORD
  23.                    Name: String;
  24.                    Val: Vector;
  25.                    END;
  26.  
  27.         Synapse = RECORD Strength: REAL;
  28.                          From: INTEGER;
  29.                          END;
  30.     
  31.         Neuron = RECORD Activity: REAL;
  32.                         Synapses: ARRAY [1..Dimensionality] OF Synapse;
  33.                         Neuron_output: REAL;
  34.                         Learningp: REAL;
  35.                         Neuron_Upper_limit: REAL;
  36.                         Neuron_Lower_limit: REAL;
  37.                         END;
  38.  
  39.                              
  40. VAR     Neurons:        ARRAY [1..Dimensionality] OF Neuron;
  41.  
  42.         Number_in_test_file, 
  43.              Avg_number_of_synapses,
  44.              Seed, Real_it_number, 
  45.              It_Number, Depth: INTEGER;
  46.  
  47.         Number_of_synapses   : ARRAY [1..Dimensionality] OF INTEGER;
  48.  
  49.         Threshold, 
  50.              Upper_limit, 
  51.              Lower_limit: REAL;
  52.  
  53.         F_file, G_file, T_file: FILE OF Stimulus;
  54.  
  55.         Template: VARYING [132] OF Char;
  56.  
  57.         Input_char, Which_file: CHAR;
  58.  
  59.         Neuron_file_Present,
  60.              Exit, 
  61.              FG_mode, 
  62.              VT100            : BOOLEAN;
  63.  
  64.         Nfile                 : FILE OF Neuron;
  65.  
  66.         F_set, G_set, T_set   : ARRAY [0..Maximum_set_size] OF Stimulus;
  67.  
  68.         Command_String: VARYING [132] OF Char;
  69.  
  70. %INCLUDE 'VT100CTRL.INC'
  71.  
  72. %INCLUDE 'NUMPRES.INC'
  73.    
  74. %INCLUDE 'INTERP.INC'
  75.  
  76. %INCLUDE 'LIST.INC'
  77.  
  78. %INCLUDE 'READF.INC'
  79.  
  80. %INCLUDE 'WRITEF.INC'
  81.  
  82. %INCLUDE 'MAKESTIM.INC'
  83.  
  84. %INCLUDE 'READNF.INC'
  85.  
  86. %INCLUDE 'BSBPROC.INC'
  87.  
  88. PROCEDURE Set_Threshold;
  89.         BEGIN
  90.         WRITE ('  Old threshold : ',Threshold: 10);
  91.         WRITE ('  Set threshold : ');
  92.         READLN (Threshold);
  93.         END;
  94.  
  95.  
  96. PROCEDURE File_initialize;
  97.     BEGIN
  98.     Clear_block;
  99.     Top_of_block;
  100.     WRITELN ('Initializing Files.'                             );
  101.     WRITELN ('Reading neuron and stimulus files from disk.'    );
  102.     WRITELN ('Reading F file.');
  103.     Save_cursor; Read_file ('F');         Restore_cursor;
  104.     WRITELN ('Reading G file.');
  105.     Save_cursor; Read_file ('G');         Restore_cursor;
  106.     WRITELN ('Reading T file.');
  107.     Save_cursor; Read_file ('T');         Restore_cursor;
  108.     WRITELN ('Reading neuron file (autoassociative).');
  109.     Save_cursor; Read_Neuron_File;   Restore_cursor;
  110.     END;
  111.  
  112. PROCEDURE Help_info;
  113.  BEGIN
  114.  WRITELN;
  115.  Clear_box;
  116.  Scroll_box;
  117.  WRITELN ('BSB Neural Net Program. 3-89   B)SB.  C)hange. E)xit. H)elp.');
  118.  WRITELN ('L)ist. M)ode. N)eurons. R)ead. S)ave. T)hreshold.  W)rite.  ');
  119.  WRITELN ('Threshold: ',Threshold:8,
  120.           '  F File: ',Number_present_in_set ('F'):4,
  121.           '  G File: ',Number_present_in_set ('G'):4,
  122.           '  T File: ',Number_present_in_set ('T'):4);
  123.  IF Neuron_file_Present 
  124.     THEN WRITE   ('Synapses : ', Avg_number_of_synapses: 4);
  125.  IF NOT Neuron_file_Present THEN WRITE   ('NO NEURON FILE.');
  126.  IF FG_mode     THEN WRITELN ('  Display FG.');
  127.  IF NOT FG_mode THEN WRITELN ('  Display TF.');
  128.  END;
  129.  
  130. PROCEDURE Do_option (Option: CHAR);
  131.     BEGIN
  132.     CASE Option OF
  133.        'B','b': IF Neuron_file_present
  134.                    THEN BSBProc ELSE WRITE ('No neuron file present.');
  135.        'C','c': Make_stimulus;
  136.        'E','e': Exit:= TRUE;
  137.        'F','f': BEGIN
  138.                 Bottom_line;  Erase_line;
  139.                 WRITELN ('Reinitialize Files? Y/N ');
  140.                 READLN (Input_char);
  141.                 IF Input_char IN ['Y','y'] THEN File_initialize
  142.                                       ELSE WRITELN ('No reinitialization.');
  143.                 END;
  144.        'H','h': Help_info;
  145.        'L','l': List_test_set;
  146.        'M','m': FG_mode:= NOT FG_mode;
  147.        'N','n': BEGIN
  148.                 Bottom_line;
  149.                 WRITE ('Read neuron file ');
  150.                 Read_neuron_file;
  151.                 END;
  152.        'R','r': BEGIN
  153.                 Bottom_line;
  154.                 WRITE  ('Read which file F, G, T,  A)ll? ');
  155.                 READLN (Which_file);
  156.                 Read_file (Which_file);
  157.                 END;
  158.        'S','s': BEGIN
  159.                 Bottom_line;
  160.                 WRITE  ('Store which file F, G, or T? ');
  161.                 READLN (Which_file);
  162.                 Write_file (Which_file);
  163.                 END;
  164.        'T','t': Set_Threshold; 
  165.      END;
  166.     END;
  167.  
  168. PROCEDURE Get_command_string;
  169.     VAR I: INTEGER;
  170.     BEGIN
  171.     Help_info;
  172.     Bottom_line;
  173.     WRITE ('C>'); 
  174.     READLN (Command_string); 
  175.     FOR I:=1 TO Length (Command_string) DO Do_option (Command_string [I]);
  176.     WRITELN;
  177.     END;
  178.  
  179. PROCEDURE Initialize;
  180.         VAR I: INTEGER;
  181.             VT100_Char: CHAR;
  182.         BEGIN
  183.         WRITE   ('VT100 Terminal? Y/N : ');         READLN (VT100_Char);
  184.         IF VT100_Char IN ['Y','y'] THEN VT100:= TRUE ELSE VT100:= FALSE;
  185.         Clear_screen;
  186.         Blank_f_set;
  187.         Blank_g_set;
  188.         Blank_t_set;
  189.         Threshold := 0.5;    
  190.         Neuron_file_present:= FALSE;
  191.         FG_mode:= FALSE;
  192.         Exit:= False;
  193.         Template.Length:= 60;
  194.         FOR I:= 1 TO (Dimensionality DIV 8) DO     
  195.                       Template [I]:= CHR (48 + I MOD 10);  {Make template.}
  196.         END;
  197.  
  198. BEGIN {Main program}
  199. Initialize;
  200. File_initialize;
  201. REPEAT Get_command_string UNTIL Exit;
  202. Restore_scrolling;
  203. Clear_screen;      {Tidy up for exit by restoring terminal to original.}
  204. END. {main program}
  205.