I'm using a GA to find the best set of parameters to maximize a fitness function. I want to draw a fitness landscape to visualize the effectiveness of the algorithm. The fitness function, calculated using a DNN, has 8 input variables. The landscape I want to plot is 3 dimensional (x,y,fitness). What data should I assign to the x and y axes? Or should I avoid such a plot entirely? Which other types of plots would be better?
-
$\begingroup$ Can you clarify what you mean by "The landscape I want to plot is 3 dimensional"? Why is it 3d? How can we know what you should assign to x and y, if we don't actually know what these axes are supposed to represent in your context? Are your individuals 2d points? If yes, then having a 3d fitness landscape may make sense. $\endgroup$– nbroCommented Jul 18, 2023 at 10:26
-
$\begingroup$ @nbro the individuals have 8 dimensions. Thats why I wasn't sure how to plot them on 2 axis. Thank you, $\endgroup$– program1232123Commented Jul 18, 2023 at 21:52
1 Answer
I understood your question as being "I have a fitness function based on 8 parameters" how can I display that graphically.
Visualising a multi-dimensional landscape is a hard problem. If you convert it to some kind of 3d plot you are inevitably losing information. It would help to consider what you are actually trying to achieve by doing so. Do you have a practical use for the plot or is it just a bright shiny.
If you want to show something specific such as how one algorithm is better than another, you may be better off trying to visualise something else entirely. Commonly you can look at the average fitness over time instead.
A better algorithm is typically one that increases fitness more quickly and/or with fewer resources.
So you could plot fitness by time by population with different coloured lines for each algorithm variation say.
That said if you really want to visualise the fitness landscape:
There a some useful information on or linked to the wikipedia page on Fitness_landscapes
You could also try:
Dimensionality Reduction
You could try [dimensionality reduction](Dimensionality reduction) to reduce the number of parameters down to something you can plot.
Identify dimensions with the most interesting properties
Look at which dimensions have the most intersting changes over time
Plot individual dimensions
Create multiple plots for different interesting pairs fo dimensions
Innovate ways to plot other dimensions
Why stick with 3D? Consider using:
- colour
- size
- texture
Make your model interactive
Look here and elsewhere for inspiration
Why not provide a way of controlling which dimensions are displayed and how.
-
$\begingroup$ Can you explain why plotting a 3d fitness landscape (the OP's problem) is a hard problem? Because it shouldn't. If the individuals have more than 2 dimensions, then yes I agree that you may need some dimensionality reduction. So, I think you should address the OP's problem directly too in this answer. In any case, they don't explain what x and y are. It's unclear if their individuals are 2d points or not (probably yes). $\endgroup$– nbroCommented Jul 18, 2023 at 14:01
-
$\begingroup$ I understood the individuals as having 8 dimensions. $\endgroup$ Commented Jul 18, 2023 at 15:30
-
$\begingroup$ thank you this makes sense. I kind of knew it wouldn't really make sense to try as 8 is not the same as 2. Ill go with the option to use multiple plots. It is mostly to generate something shiny, a figure which makes the whole objective of the algorithm easy to understand. $\endgroup$ Commented Jul 18, 2023 at 21:51