Click Here for Product Demo
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
Lwerth@PatternMemory.com
Pattern Memory, Inc.  | 4490 Oak Chase Way  |  Eagan, MN 55123  |  USA