Git Product home page Git Product logo

Comments (7)

blankjul avatar blankjul commented on June 10, 2024 1

It sounds to me that your problem is not that sometimes you don't have a solution (because the simulation crashes) but more that your evaluation function is non-deterministic. You are right that NSGA-II makes the assumption that you have a deterministic function and will not re-evaluate a solution for this reason.

What about adding retry if it fails and just assuming after n attempts it truly fails?

from pymoo.

blankjul avatar blankjul commented on June 10, 2024

What about simply setting the objective(s) to a very large value, e.g. 1e12 or so?
I am not exactly what you are trying to do in your code, but for the algorithm, it would be also okay to consider a solution simply as infeasible if the evaluation fails (also referred to as death penalty). This might be the cleanest way of implementing this.

If you know before running your third-party code a solution will fail, you can also filter them out beforehand.

from pymoo.

miraclema999 avatar miraclema999 commented on June 10, 2024

The fact is, bacause of the insteability of the simulation software, it is impossible to decide which solution will fail. And the solution of the same variables may be OK if I run it again. So if I set the objectives to a very large value, I wonder the algorithm will not consider the solutions in the following generations, and that will affect the final search space I think. I am not sure my assumption is right or wrong? If the large penalty of these solutions doesn't affect the final searching space, I think it is a cleanest way.

from pymoo.

jacktang avatar jacktang commented on June 10, 2024

Hello @miraclema999 , I would suggest you to create surrogate model for the simulation if possible.

from pymoo.

miraclema999 avatar miraclema999 commented on June 10, 2024

What about adding retry if it fails and just assuming after n attempts it truly fails?

Sorry for the late reply. I agree with your suggestion. This way will not affect the number of solutions in each generation.
To be honest, I'm not doing well in scripting, can you tell me how to modify this script, to let it retry the generation? Thank you

from pymoo.

miraclema999 avatar miraclema999 commented on June 10, 2024

Hello @miraclema999 , I would suggest you to create surrogate model for the simulation if possible.

Thank you bro, did you mean that I switch to another algorithm?

from pymoo.

jacktang avatar jacktang commented on June 10, 2024

@miraclema999 I meant creating surrogate model with the samples from simulation software and replace it, and finally verify the result with simulation software. Here is the explanation of surrogate model on wikipedia. And here are some mainly steps:

  1. Generate samples using simulation software
  2. Create surrogate models by using the samples, and validate/test the surrogate model to make sure the quality
  3. Replace the simulation by surrogate model in optimization program
  4. Validate the optimization result in simulation software.

from pymoo.

Related Issues (20)

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.