gmonterovillar / HAMON

Optimization platform based on evolutionary algorithms.
MIT License
5 stars 2 forks source link

General List of Proposed Improvements and Bugs #3

Open danlindb opened 5 years ago

danlindb commented 5 years ago
  1. In multi objective optimization, HAMON does not warn the user if the list max_min contains too few items, i.e. when len(max_min) < n_of. When the optimization runs, all individuals are always rank 1, which should not be possible. With respect to this, Hamon should preferably print out a list of all objectives, with names, and specify how it will optimise these objectives. This makes it easier for the user to see what they put in.

  2. Does Hamon have post routines to print results which end up in EA_data/ ?

danlindb commented 5 years ago
  1. The number of input parameters to the code can easily be minimised. Let for example the variables n_of and n_lim simply be given indirectly by the length of the lists var_range and lim_range_orig. It must then be specified in the documentation that these lists must be provided. By making length of input list the way the code figures out the number of objectives and constraints, one minimises the risk of wrongly specifying the setup, and makes the input file shorter and easier to read.
danlindb commented 5 years ago
  1. When more than one element in the list min_max is specified in the input file, whereas the number of objectives are specified to 1 (n_of=1), the optimization does not work. In other words, independently on the number of generations run, the objective function stays constant. Clearly a bug related to how the code runs through the different objectives, and it is possible that a simplification like the previous point (3.) can help this to some extent. It is also possible that a unified class structure that contains the setup of the problem can help this. This way, the class can make checks to make sure that all its necessary values have been set, and set some to default.
danlindb commented 5 years ago
  1. Split the analytical functions into analytical constraints and analytical objective functions. This implies that there should be two functions: getAnalyticalObjectives() getAnalyticalConstraints()

This should facilitate the use of objectives and constraints for cases when RBF is used for objectives, but an analytical function is used as a constraint. In general, it is probably a good idea to figure out how the code should handle mixed analytical/numerical objectives and constraints. Can we for example model a constraint with a RBF?

danlindb commented 5 years ago
  1. Hamon reports that all individuals have rank=1 in the fg_summary.csv file, even though some individuals are not rank=1 when the Pareto front is plotted at the end of the simulation. Something is clearly wrong with respect to this. It is also interesting to note that some individuals are classified as non-feasible, whereas they indeed are set as rank=1 in the output file.
danlindb commented 5 years ago
  1. Add functionality to plot the number of individuals that are feasible after mutation and recombination in DE/GA. This could help figure out if the mutation is too aggressive and thereby constantly produces individuals which violate the constraints. This could indicate that one needs to use smaller values of mut_rate in DE for example. Similar to this, it can be useful to have a plot which shows how many of the individuals in the mutated population that made it into the new pupulation, i.e. that won the tournament selection. This can help indicate how efficient the mutation is at producing better individuals.