My project is to optimize wind turbine placement in a given area. In
order to do this, I'm using both a wind simulation program (openWind:
awsopenwind.org) and the a genetic algorithm code base (Evolving
Objects: eodev.sourceforge.net).

The process should work like this:

openWind will randomly place wind turbines in its simulated
environment and I will copy the coordinates of these turbines into the
evolving objects program. A wind farm of 20 turbine placements will
constitute an individual, and perhaps 500 or 1000 individuals will
constitute the population.

EO will perform the mutation, crossover, and selection procedures on
the population and output the resulting population as a list of
coordinate pairs for each individual. I will then transfer (copy and
paste unless the process can be easily automated) the coordinates for
the wind turbines into openWind, which will calculate how much energy
each wind farm can produce. Each production figure will then be transferred into
EO as a fitness value for the corresponding wind farm. I'll repeat
this process x amount of times unless someone finds an easy way to
automate it.

The aspects preventing the completion of this process are EO's ability
to display population data and to accept fitness values rather than
calculate them itself.

You can contact me at <<Email>>

Recommended Answers

All 2 Replies

Sounds cool - good luck with that!

If you look at the code of tutorial 1 for a real-valued problem, from the EO homepage. You see the very first function called "real_value". This calculates the fitness value for an individual. You can reprogram that function to do whatever you like. In your case, it should (somehow) give the set of coordinates (the vector of the individual) and hand it over to openWind, run the simulation and get the energy (or power) produced by each generator, sum it up and return that as the fitness value. If you cannot automate this process, don't even try to use a genetic algorithm for this project. GAs are based on massive trial-and-error approach with some breeding which makes it better than just trying things at random. But still, this requires a massive amount for simulation runs.. don't copy-paste individuals and enter the fitness after... this would be ridiculously time-consuming.

IMO, the EO side is easy.. I was able to find out how to do this in less than five minutes. What your biggest problem is, is how to run openWind simulation from the program (from within this "real_value" fitness function). It seems that openWind is an application, but it is open-source, so you can probably figure out how to make an API call to it to run a simulation and get the result (you might have to save the individual's data to a config file, then load and run openWind, and read the result file to calculate the fitness value).

EDIT: From the looks of it... I hope you have a very powerful computer and a lot of time to wait for the results to come back... I wouldn't be surprised if the whole optimization takes weeks to converge to a solution (at least from my experience on other different yet computationally equivalent simulations in-the-loop of a GA, this will take a lot of time and computer-power!).

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.