Giter Site home page Giter Site logo

gitter-badger / windflo Goto Github PK

View Code? Open in Web Editor NEW

This project forked from d9w/windflo

0.0 1.0 0.0 4.8 MB

APIs for the Wind Farm Layout Optimization competition

License: MIT License

C++ 59.87% Makefile 0.08% Java 35.54% MATLAB 2.97% Python 1.55%

windflo's Introduction

WindFLO

APIs for the Wind Farm Layout Optimization competition

Intent

These APIs were used in the 2014 and 2015 Wind Farm Layout Optimization Competition, and are open to the public for the advancement of the wind flow layout optimization benchmarking problem and the application of this problem.

Basic Interface

Methods

Between the C++, Java, and MATLAB implementations, the basic operation is the same and consists of only two main methods:

  • Initialize/construct: The evaluator class must be constructed and initialized with a wind scenario number. We have provided 20 sample Scenarios, which can be found in Scenarios, the latter 10 of which are the same as the first 10 with the addition of two obstacles.

  • Evaluate: This method takes a layout as an n-by-2 matrix, where n is the number of turbines, and the columns represent the x and y coordinates of each turbine, respectively. This method returns the energy cost in Java and C++, sets all variables, and updates the evaluation count.

Variables

Users have read access to the following variables without increasing the evaluation count. All variables are updated by the evaluator class:

  • Energy cost: The cost of energy in the layout, balancing turbine costs and energy capture. More on this function can be viewed at the competition site. This is the 2015 competition fitness, and it should be minimized.

  • Wake free ratio: a value between 0 and 1 representing the energy capture of the field over the theoretical energy capture of the same number of turbines without any inter-turbine wake. If any of the turbines are within 8 radii of each other, given as R in the wind scenarios and here a set value of 38.5m, the layout will be considered invalid and the wake free ratio will be negative.

  • Energy output: the energy capture of the entire field in kWh.

  • Turbine Fitnesses: the wake free ratio for each turbine. This is an n-by-1 matrix with the same turbine order as the input to the evaluate method.

  • Energy outputs: the energy at each turbine location in 24 directional bins. As can be seen in the wind scenario files, the wind distribution is split up over 24 directional bins. This n-by-24 matrix gives the energy capture of each turbine location, in the same order as the input to the evaluate method, for each of the 24 directional bins.

  • Number of evaluations: the number of times the evaluate method has been called so far.

Running the examples

All examples expect the scenario files in the current directory structure, and while you can change this, to make the examples work, you must

$ git clone https://github.com/d9w/WindFLO
$ cd WindFLO

C++

The C++ interface is displayed in main.cpp and GA.cpp. To compile and run using gcc, a makefile has been provided. We are still working on the expectations for C++ submissions, but expect to build your algorithm with a makefile similar to this one. The example GA can be run using (from the WindFLO directory):

$ cd c++
$ make
$ ./eval.o ../Scenarios/00.xml

Java

The Java interface is displayed in main.java and GA.java. To compile and run using Java v6, use (from WindFLO directory):

$ cd Java
$ javac main.java
$ java main

MATLAB

The MATLAB interface is displayed in main.m and GA.m. main.m can be executed in the MATLAB environment if the current directory is WindFLO/MATLAB:

>> cd MATLAB
>> main

Questions, comments, bugs

Information about the WindFLO competition past results and future news can be found at the competition site, as well as the competition organizer contact information.

Bugs and issues concerning the API should be opened here in Github.

windflo's People

Contributors

brianwgoldman avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.