# Numerical Association Rule Mining from a Defined Schema Using the VMO Algorithm
## 2 Preliminaries
### VMO Algorithm  
Variable Mesh Optimization (VMO) [16] was introduced as a population-based meta-heuristic in the year 2012, and we describe it in Algorithm 1. In this meta-heuristic, the population is represented by a mesh of \(p\) nodes \(S=n_{1},n_{2},\ldots,n_{p}\). Each node is composed of an m-dimensional vector \(n_{i}=(v_{1}^{i},v_{2}^{i},\ldots,v_{m}^{i})\) and represents a possible solution to the problem. There are two basic mechanisms of action: expansion and contraction. ```
0: C,k,test_function
0: best,node
1: Create initial mesh (\(N_{0}\)) from test_function
2: Evaluate the nodes of the initial mesh
3: Select the best global node \(n_{g}\)
4:repeat
5:foreach:\(n\in N_{0}\)do
6: Find its closest \(k\) nodes using Euclidean distance with Equation (2)
7: Select the best local node \(n_{i}^{*}\)
8:if\(n_{i}^{*}\) is better than \(n_{i}\)then
9: Calculate near factor \(Pr\) between \(n_{i}\) and \(n_{i}^{*}\) with Equation (1)
10: Create new node \(n_{new}=f(n_{i},n_{i}^{*},Pr)\)
11:foreach:\(n\in N_{0}\)do
12: Calculate near factor \(Pr\) between \(n_{i}\) and \(n_{g}\) with Equation (1)
13: Create new node \(n_{new}=g(n_{i},n_{g},Pr)\)
14: Create \(n_{frontiers}\) frontier nodes using \(n_{new}=h(n_{i},w)\)
15: Fill nodes in the total mesh from \(n_{frontiers}\)
16: Sort the nodes by fitness quality in the total mesh
17: Apply the clearing operator
18: Build the mesh for the next iteration in an elitist way
19:until C iterations
20: best_node is obtained from the mesh (initial index)
21:return best_node
```  
**Algorithm 1** Original VMO algorithm [16]. In lines 1 and 2, an initial population of nodes is created. Each node has a vector of values for the function's variables to be optimized, and all of the variables that make up each node are initialized. In line 3, the optimal node of the global set \(n_{g}\) is obtained, and the expansion process takes place. The expansion process is defined in lines 5-17. In this phase, the population is explored, and the best nodes are selected in the three steps described below. 1. Lines 5-10 define this phase. Here, the local extreme \(n_{i}^{*}\) around the \(k\) closest neighbors of each node \(n_{i}\) is determined, and only when \(n_{i}^{*}\) is better will a new node be generated between \(n_{i}\) and \(n_{i}^{*}\); this is defined in the function \(n_{new}(i)=f(n_{i},n_{i}^{*},Pr(n_{i},n_{i}^{*}))\). The function \(f\) for the generation of new nodes from each node that is not a local extreme and the best neighbor is defined by Equation (3). 2. \[P_{r}(n_{i},n_{i}^{*})=\frac{1}{1+|fitness(n_{i})-fitness(n_{i}^{*})|}\] (1)  
The function \(f\) establishes the procedure by which the new node is generated and may be subject to variations depending on the problem. \(Pr(n_{x},n_{y})\) is a relationship factor between the quality values of a current node and that of its extreme, and it is calculated with Equation (1). \[D_{euclidean}(n_{1},n_{2})=\sqrt{\sum_{j=1}^{M}(v_{j}^{1}-v_{j}^{2})^{2}} \tag{2}\]  
To calculate the closest neighbors of each node of the mesh, the Euclidean distance function is used, as defined in Equation (2). \[n_{new}(i)=\left\{ \begin{array}{ll}vm_{i}&\text{if }|vm_{i}-n_{i}^{*}|> \delta\text{ and }\mathcal{U}[0,1]\leq P_{r}(n_{i},n_{i}^{*})\\ n_{i}^{*}+\mathcal{U}[-\delta,\delta]&\text{if }|vm_{i}-n_{i}^{*}|\leq \delta\\ \mathcal{U}[vm_{i},n_{i}^{*}]&\text{otherwise}\end{array} \right. \tag{3}\]where \(vm_{i}\) represents the mean value between the current node and the local extreme for the \(i\)-th dimension and is calculated with Equation (4). \[vm_{i}=\frac{n_{i}+n_{i}^{*}}{2} \tag{4}\]  
In addition, \(\mathcal{U}[x,y]\) denotes a random value (uniformly) in the interval \([x,y]\), and \(\delta\) is an adaptive distance bound and is calculated according to Equation (5). \[\delta=\left\{