## Appendix A  
This section contains additional information related to the details of the IMGAMO algorithm. The algorithm works for an arbitrary (determined by user) number of design variables and number of objectives. To run the algorithm, a few parameters have to be set. The first of them is population size (popSize)--the size of the population for each player is stored. Another parameter is the number of clones (clonNumb)--number of clones which will be created in each iteration. Iterations store data about number of iterations in algorithm, and dSup--is suppression distance. It is the minimal distance between individuals in objective space. Such parameters should be selected, taking into account the difficulty of the optimization problem. Problems with higher numbers of design variables and higher numbers of objectives are understood to be more difficult. Very often, practical engineering problems belong to the class of NP-hard optimization problems, so the application of the metaheuristic approaches can be the only solution in this situation. Determination of the values of the parameters allows for control of the exploitation near the probable optimum and the exploration of the search space. Moreover, the user has an influence of the size of the set of optimal Pareto solutions. It should be underlined that, due to the probabilistic character of the IMGAMO algorithm (like for all metaheuristic approaches), different runs with the same value of the parameters do not guarantee obtaining the same results. Figure A1 presents the schema of the IMGAMO algorithm.  
IMGAMO algorithm sequence of operations, which is graphically presented in Figure 10 can be expressed as follows:  
1. \(k\) _is the number of objectives in the problem;_
2. \(k\) _players are created and populations initialized with size population size are created for each of them;_
3. _Empty population result is created;_
4. _Each design variable of the problem is randomly assigned to one of the players;_
5. _iter = 0, iterations of whole algorithm;_
6. _Exchange iter = 0, iterations inside the player._
7. _Each player runs the clonal selection procedure:_  
1. _Calculate the fitness (assigned_ \(t\) _player) of the solution;_
2. _Sort the population taking into account the fitness;_
3. _The best solution creates_ _clon_number clones;_
4. _Each next solution creates one clone less;_
5. _Each clone is mutated (only parameters optimized by this player are mutated)--dipersomatic mutation_
6. _If the fitness of the mutated clone is better than the parent replace parent with clone._
8. _Each player run the Suppression procedure:_  
1. _For each individual check if in the result population exists solutions dominated by this one--if yes, they are replaced;_
2. _For each individual check if it is non-dominated in result-populations--if yes, store it to result population_ \(a\)_;_
3. _Before adding the solution, do result population check if it not to close to already stored solutions (using_ \(d\)_sup parameter)._
9. _If exchange iter =_clon_iter__,_  
1. _Take the best solutions from each player;_
2. _Store optimized parameters from each player to other populations as constant;_
3. _Each parameter of the problem is randomly assigned to one of the players._
10. _Exchange iter++,_
11. _iter++,_
12. _if iter < iterations go to point 7,_
13. _The solution of the problem (Pareto front) is stored in population results._