PMTSetup
This function is called once at
initialization. It creates a PMT dependent on the parameters
specified.
void
PMTSetup(
unsigned int
Pattern_Memory_ID_Capacity,
unsigned int
Max_Input_Value,
unsigned int
Pattern_Length,
unsigned int
Cluster_Noise_Immunity,
unsigned int
Speed_Optimization,
unsigned int Accuracy_Optimization,
unsigned int
PMT_Generator_Seed)
Pattern_Memory_ID_Capacity: (Max -
dependent on available memory)
This parameter relates to the maximum number of different patterns or
similar clusters that can be uniquely identified with an ID. If the
pattern set contains random patterns the number of IDs can be used up
quickly since they probably occur only once and are assigned a unique
ID. PMT deals with this by
automatically deleting IDs that occur only once after a set number of
patterns which is the Pattern_Memory_ID_Capacity. In this sense it
defines a window in which members of a similar cluster must occur more
than once to be detected. Deleting ID's after this window allows PMT to
be used in a real time environment on a continuous signal; Identifying
new clusters as they occur.
Max_Input_Value: (Max of 9)
The maximum value of any digit in the pattern
Pattern_Length: (Max of 100)
The maximum length of the pattern
Cluster_Noise_Immunity: (0 to 20%)
The user can adjust the degree of cluster similarity appropriate for a
specific application. Since PMT is a randomized algorithm and therefore
probabilistic the percentages will be approximate.
Speed_Optimization: (a relative
scale from 0 to 10)
Increasing this parameter will increase PMT speed with a potential cost
of more errors. Internal to PMT, it relates mostly to the number of
pattern samples taken.
Accuracy_Optimization: (a relative
scale from 0 to 4)
This parameter is related to the number of errors as shown in the
results section. Increasing this parameter will reduce the number of
errors with a potential cost of identifying fewer cluster members.
Internal to PMT, it relates to the number of memory locations that agree
on the same ID.
PMT_Generator_Seed: (32 bit signed
integer)
PMT is basically a randomized algorithm. Changing the PMT seed creates a
completely new and independent PMT
RecognizePattern
This function is called in real time and returns the memory
locations generated by the pattern. It must be called before
TrainNewPattern and ReEnforceLearning since the same memory locations
are used for those functions.
unsigned int PatternID =
RecognizePattern(
unsigned char* Pattern_Input,
unsigned int* Memory_Locations,
unsigned int Cluster_ID,
unsigned int Accuracy_Optimization)
Pattern_ID:
Returns a Pattern Identity if recognized or zero if not recognized
Pattern_Input (Single dimension array):
Pattern to be Recognized (max length 100)
Memory_Locations (Single dimension array):
Returns the memory locations (Hash Values)generated from the
pattern (max of 50)
Cluster_ID:
If non zero,
RecognizePattern will only recognize patterns with the cluster number
specified
Accuracy_Optimization (Relative scale from 0 to
4):
This parameter relates to the number of memory locations that
agree on the same ID
ReEnforceLearning
This function is called after a successful recognition has occurred.
Given that a pattern has been recognized it is likely it is a similar
pattern from the one originally trained the ID. Therefore the memory
locations generated by the pattern are expanded to the nearby memory
locations and assigned with same ID that was recognized. This expands
the cluster of similar ID's and extends the learning process for that ID
and allows it to emerge as a cluster member.
unsigned int TrainStatus =
ReEnforceLearning(
unsigned int* Memory_Locations
unsigned int PatternID)
TrainStatus:
Returns status of training: 0 implies training failed, >0 implies
training was successful. Failer implies the memory locations were
already filled.
Memory_Locations (Single dimension array):
Sends the memory locations (Hash Values)generated by Recognizepattern
(max of 50)
PatternID:
Identified by the previous call to RecognizePattern. The ID is assigned
to nearby memory locations to expand the scope of similarity by the
recognized pattern.
TrainNewPattern
This function assigns a new ID to unrecognized patterns.
unsigned int TrainStatus = TrainNewPattern(
unsigned int* Memory_Locations,
BOOL Supervised_Training_Mode)
TrainStatus:
Returns status of training: 0 implies training failed; >0 implies
training was successful and the value is the new ID. Failure implies the
memory locations were already filled.
Memory_Locations (Single dimension array):
Sends the memory locations (Hash Values)generated by Recognizepattern
(max of 50)
Supervised_Training_Mode:
Trains known patterns when TRUE
PMTShutdown
void PMTShutdown(void);
Used at the end of program to delete all of the dynamically allocated
memory