Code Monkey home page Code Monkey logo

desdeo-emo's Introduction

desdeo-emo

Binder

The evolutionary algorithms package within the DESDEO framework.

Code for the SoftwareX paper can be found in this notebook.

Currently supported:

  • Multi-objective optimization with visualization and interaction support.
  • Preference is accepted as a reference point.
  • Surrogate modelling (neural networks and genetic trees) evolved via EAs.
  • Surrogate assisted optimization
  • Constraint handling using RVEA
  • IOPIS optimization using RVEA and NSGA-III

Currently NOT supported:

  • Binary and integer variables.

To test the code, open the binder link and read example.ipynb.

Read the documentation here

Requirements

Installation process for normal users

  • Create a new virtual enviroment for the project
  • Run: pip install desdeo_emo

Installation process for developers

  • Download and extract the code or git clone
  • Create a new virtual environment for the project
  • Run poetry install inside the virtual environment shell.

Citation

If you decide to use DESDEO is any of your works or research, we would appreciate you citing the appropiate paper published in IEEE Access (open access).

desdeo-emo's People

Contributors

bshavazipour avatar chaosex avatar delamorte avatar gialmisi avatar giomara-larraga avatar jpajasmaa avatar light-weaver avatar ppouyaa avatar risshi1999 avatar sauvikpal1998 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

desdeo-emo's Issues

Problem in maximization

An error occurred when I used maximization :
f1 = _ScalarObjective(name='f1', evaluator=f_1, maximize=True)

This is the error :
File "/home/ai/anaconda3/lib/python3.7/site-packages/desdeo_problem/Problem.py", line 718, in init
to_maximize = sum(to_maximize, []) # To flatten the list
TypeError: can only concatenate list (not "bool") to list

Getting the reference point iteratively

If you are not using the Jupiter notebook, and try to give the reference point within the after the first iteration you will get an error.

This is the code for getting the reference point :

while evolver.continue_evolution():

##getting the reference point:

for index in range(n_obj):
    pref_val = float(
        input("Please input the reference point: ")
        )
    refpoint[index] = pref_val
pref.response = pd.DataFrame([refpoint], columns=pref.content['dimensions_data'].columns)
plot= evolver.iterate(pref)
figure = animate_next_(
    plot[0].content['data'].values,
    figure,
    filename="river.html",
    generation=evolver._iteration_counter,
)

Here is the error that I get:
"Wrong preference object sent. Expected id = 1389300906.
Recieved id = 9506779031"

Problem with multi-scenario example

EMO to solve an multi-scenarioS-MOP example notebook does not work, because a file dependency notebook_extras/selected_scenarios_river(12.5.22).csv is missing from the repository.

Model management

When using surrogates, we need to access the actual objective functions to update them in online optimization problems.

More details: lets introduce a new term here as interactions. Each interaction is consists of a number of iterations, which is consists of a number of generations.

In each generation, we run an EMO algorithm.
In each iteration, we select some solutions to evaluate with original objectives and update the surrogates.
In each interaction, we select some solutions to evaluate them with original objectives and show them to the DM.

So since I really like the way the selection methods are handled, my suggestion is to do the same thing with the model management (if possible).

Interactive RVEA final solutions

I think there should be a K-means clustering at the end of each iteration with S centers (S is the number of solutions that the DM wants to see) so that the DM does not have to see all the solutions.

Remove pyGMO as a dependency

This will enable support for more versions of python. But we need to replace the code for non-dominated sorting.

getting ideal and Nadir

sometimes we only know the ideal point in advance and we have no idea about Nadir. However in the current implementation, one cannot use only one of them as input (check line 26-28 in Ppoulationl.py).

It should be split into two "if"s so we can just give one of the Ideal or Nadir points as input

README.md clarity

Some users may not be aware of what virtual environments are. Make the concept clearer. Provide some links perhaps, or code.

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.