## 4 Proposed Framework of IWO Algorithm
### Inspiration for NoC Application Mapping
As the population size can be set to any number, various individual \(T_{(s-map)}\) mapping solutions are generated as an initial generation, e.g., for 16 tasks to be mapped onto a 4 \(\times\) 4 Mesh 2D NoC platform, we can set m to a certain number and set \(popSize\) to another number for which diverse task mapping solutions are to be created. The algorithm of the good point set method is provided in Algorithm 1. The set of initial mappings generated using the good point set method can be considered as one of the pools of the initial mapping \(initMapping_{gps}\). The good point set method does not use any key characteristics such as communication between tasks and the number of connected neighbors. Thus, application task graph expert knowledge can be utilized to generate initial solutions. This initial mapping can be placed in a second pool based on communication between the cores, termed \(initMapping_{comm}\). The final initial mappings are selected from the top-ranked mappings of both pools, which participate in the optimization algorithm. The second pool of initial mappings maps application tasks to the NoC platform using the communication weights between core edges. A core is first selected from the core graph and that specific core's total communication bandwidth and average communication are noted. ```
Initialization: Input:\(popSize,m\) stopCriteria:\(popSize\) while\(stopCriteria\)do for\(i\gets 1\) to \(m\)do  Calculate \(r_{i}\) using Equation (19) to generate mapping points considering value of \(P\)  Create Tasks to core mappings \(T_{(s-map)}\) using Equation (20) endfor \(initMapping_{gps}=T_{(s-map)}\) endwhile
```  
**Algorithm 1** Initial Mapping Algorithm  
The total weight \(TW\) of the selected core is provided by  
\[TW_{i}=\sum_{\alpha j\epsilon/E}tw_{ij}. \tag{21}\]  
The average communication is expressed as follows:  
\[TW_{i}=\sum_{\alpha j\epsilon/E}tw_{ij}\times(1/N_{c_{i}}) \tag{22}\]  
where \(TW_{i}\) is the total communication weight between the cores and \(N_{(c_{i})}\) is the number of available neighbor cores of core \(c_{i}\). In this way, the total communication and average communication of each specific core are calculated and the neighbors of every core are noted along with communication-related details. The first task to be selected is the one with the highest total communication bandwidth, which is placed onto the NoC platform at any location, and its neighbors are mapped next. If multiple neighbors are available, then the neighbor with a higher communication weight with the mapped task is placed at the closest location to the NoC. Then, the other neighbors of the first mapped task are placed based on their communication weights. When all the neighbors of the mapped task have been placed, the neighbors of already-mapped (recently mapped) tasks are placed. The choice is based on the mapped task with the maximum weight; this core is selected and its neighbors mapped using the same communication weight criteria as above. All of the cores are mapped in this manner. This initial mapping procedure assumes that any job mapped to a core must not be mapped to any other NoC location or considered for any other placement. To serve this statement well in the implementation of this algorithm, a list of tasks that have been mapped is maintained in the list \(T_{mapped}\), while the unallocated cores are maintained in \(T_{un-allocated}\). While mapping neighbors of already mapped cores, these two lists are referenced to reach the appropriate decision. As the algorithm runs, various mappings are achieved based on placement of cores on the NoC platform in different orders. The communication cost for both pools is computed and the top-ranked elite mappings are taken from both initial mapping pools to generate an enhanced initial mapping solution. The reason for retaining and finally gathering mappings from both pools is to improve the overall diversity of the solution.