Git Product home page Git Product logo

harveybc / don Goto Github PK

View Code? Open in Web Editor NEW
6.0 2.0 3.0 37.98 MB

Descentralized Optimization Network (DON) is a REST API that allows extending existing evolutionary algorithms to a decentralized architecture to provide collaboration, scalability, event log and fault-tolerance in an optimization process. It also allows external clients to make remote evaluations of data using the most optimized models.

JavaScript 100.00%
blockchain proof-of-work optimization evolutionary genetic p2p decentralized scalability neuroevolution api

don's Introduction

Descentralized Optimization Network (DON)

WORK IN PROGRESS!

The don platform is a REST API that allows extending existing evolutionary algorithms to a decentralized architecture to provide collaboration, scalability, event log and fault-tolerance in an optimization process.

It also allows external clients to make remote evaluations of data using the most optimized model parameters found by the optimizers.

Installation

This process is described for Ubuntu but it can be used also on Windows and other OS.

Step 1 - Setup Dependencies

sudo apt-get install node.js npm

Step 2 - Setup Singularity from GitHub

git clone https://github.com/harveybc/don
cd don
npm install

Step 3 - Configure your IP and port (For both Web Interface and API)

nano .env

Configure your IP address or hostname in the field HOST and an available port for listening connections in the field PORT. You can also configure an external database if not using the default sqlite 3.

Step 4 - Configure a startup/restart script

nano res

For creating the test database and executing the program, make sure the file contains:

#!/bin/bash
git pull
rm database/development.sqlite
./ace migration:run
./ace db:seed
npm run serve:dev

After editing, change the permission of the file to be executable:

chmod 777 res

Step 5 - Start your node

./res

Step 6 - Verify its Working

Access the web interface from a browser in the address and port you configured. Some default test processes and users are created and you can use them to configure your evolutionary algorithm as shown in the following section.

Brief Description of Usage

More detailed documentation coming soon.

Step 1 - Configure a Process in Don.

After installing singularity, access the web interface from the IP address or host name and port with the default credentials, you configured in step 3 for example:

http://192.168.0.241:3338/processes/admin?username=harveybc&pass_hash=$2a$04$ntNHmofQoMoajG89mTEM2uSR66jKXBgRQJnCgqfNN38aq9UkN4Y6q&process_hash=ph

You can change the initial credentials in the file database/seeds/Authentication.js, also you can configure the ip addresses for the devices in your network in the file /database/seeds/Neighbors.js and executing the following commands to reset and populate the database:

rm database/development.sqlite
./ace migration:run
./ace db:seed

Step 2 - Configure Your Evolutionary Algorithm.

Your evolutionary algoritm must perform the migration operator that you decide between iterations, for this you must make an HTTP GET request from your program with your process hash, username and pass_hass to check if a new optimum has been found since the last one and if your algorithm has found some parameters with better fitness than the remote ones, you must migrate the fittest specimens in a population or the representatives of groups or species depending on your needs using an HTTP POST to report your new optimum.

An example of usage and the parameters that the requests must have can be found on:
The gym-forex environment

Step 3 - Monitor Your Optimization Process.

Access the web interface and click on your process to access its detailed view with a graphic of the evolution of the performance in time.

Work In Progress. Proper documentation coming soon. There is a poster and the contents of my MSE thesis (this project) in PDF format in the root folder.

don's People

Contributors

dependabot[bot] avatar harveybc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

don's Issues

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.