algorithmic modeling for Rhino
I have some questions concerning the plugin 'Galapagos'. I'm using this tool for my thesis research in which I try to optimize a folded steel plate structure.
I wonder if it is possible to give a value to the mutation degree of the evolution, so that I can have more control over the optimalisation process. I know it's a black-box so changing the value isn't realy an option but is there a way to know how it is set now? Or to have more of an insight how the black-box actually generates its values?
And another thing I wonder if it is possible to make Galapagos run multiple times in a row automatically?I want to make sure that I don't get al local best value, so I would like to run the same fitness function multiple times through grasshopper. And if this is possible, is it also possible to collect the requested data of the best fitness conditions (or best ten conditions)? Someone that can help me?
You can use the Simulated Annealing solver to run multiple solutions. SA basically runs different solutions until you tell it to stop, so it's a pretty good way to find the most promising peaks. The evolutionary solver on the other hand is better at really optimising a local solution.
It is possible to collect and write out data from a solver process using a separate scripting component. I can try and come up with a prototype for this sometime later today. It would basically involve a script which runs once every iteration, collects the fitness value, the slider values and either stores that information in memory or on disk. Reinstating such saved solutions will require further custom coding, but should also be possible.
So here's a first stab at recording every iteration. The idea is that the fitness value is plugged into the script component*, as well as a piece of text describing all sliders to include and a file location. You'll have to specify a new file location, one that's in a folder that actually exists on your machine.
Every time the fitness value updates the component will append a new line to the file containing the current fitness and the current slider layout. The component will output the entire text file, line by line.
If this is going in the right direction we can start adding additional features such as sorting of the data, including time-stamps, limiting data to the N best results etc. etc.
* Careful, Galapagos will average the values if the fitness contains a list of numbers, but the script won't. So if you're implicitly using the averaging feature, you must actually compute the average yourself explicitly, or make the script smarter.
Wow this is great! It's exactly what I need. The suggestion too limit the data to the N best results seems like a great idea to me. Do you think it's also possible to give the results on which my fitness is based in the output. Like if I try to minimize the mass, that I also can see the min. mass corresponding to the slider values?
I have some more questions, your tool works realy fine. I can easily get all the result of a galapagos run and transform them in a readable excel table. It works fine for all the sliders except my last one. I know galapagos changes it's values in the proces because I can sea them change and in the resulttab of galapagos I also can see it (see picture 1 and 2). But if I import the text output into my excel I always get the same value for 'Thickness' (picture 3). This is a bit strange since the best two iterations are the ones I also get in the Galapagos outputscreen, but there they have the right thickness. The values I get in excel are always the same and are equal to the startposition of the slider. You can see in picture 4 that it works fine for the other sliders. (You can see the amount each value appears in the solutions.) Do you think it's something with the script? I tried changing the names, so they don't include strange characters, but that didn't help. Can you help me? I'll add my file, it is a bit large and maybe chaotic, but the galapagos element and your script are on the left.
The rest of the files