The learning engine learns during an initial period of k days. In our simulation, we set k to 7 for a learning period of 1 week. After this initial period, the rule-base engine continuously communicates with the learning engine at a preset timing. As this may cause some latency in the mobile device’s operation, the preset timing was set to midnight when, it is assumed, that user interaction activity would be at its minimum. The timing can, however, be set to any appropriate user-specified timing.

After the learning engine has completed pattern processing and returned the results, a decision will be made on whether to re-configure the screen widgets or maintain current display status. The action taken by the learning engine is determined by the type of learning algorithm implemented (explained in the next section). After the learning engine has performed its action, all widgets for the specified context will be processed for display state changes before the rule-base fires the appropriate rule and returns the action associated with the rule. The rule-base includes helper methods to support rule storage management.

Fig3Intelligent Widget_decrypted
Figure 3: Simulation Process Flow


The objective of the learning engine is to determine trends from the usage pattern data in the current context. Three different learning algorithms were developed for the learning engine: Minimal Intelligence (MI), Single Layer Perceptron with Error Correction (SLP) and Multi Layer Perceptron with Back Propagation (MLP).

Witmate and Joone make use of several libraries not supported by Java ME, such as the Math class (no support for logarithmic, exponential, power etc), file input/output (text file not supported for Java ME), and event handling. As Witmate is a commercial program, no source code is available. Joone, on the other hand, is open source and may be used for the creation of neural networks. Joone codes, however, cannot be pre-verified by the Java ME platform. Therefore, to ensure complete compliance with the preverification process, customized code was developed.