MOEAFramework / MOEAFramework

A Free and Open Source Java Framework for Multiobjective Optimization
http://moeaframework.org
Other
326 stars 128 forks source link

"Requires at least two solutions" error message #94

Closed emelmdn closed 7 years ago

emelmdn commented 7 years ago

Hello, My algorithm (NSGA2, NSGA3 and SPEA2 ) produces only one solution instead of pareto optimal set. I run my own Knapsack problem with 2 objectives and the dataset is produced from "USDA National Nutrient Database". I have 1585 items in my dataset with 2 knapsack. I randomly created the profits of each item to the objectives, then also tried to give contradicting (for ex: 1st item gives the biggest profit to the first objective but gives the least to the second objective) profits for the items but again received only one solution. Is there something which I miss to check? Many thanks in advance...

emelmdn commented 7 years ago

Additional remark: I realized that in all of these run where the algorithm finds only one solution, the Knapsacks are always overfilled. I thought they are hard constraints of the problem. Thanks...

dhadka commented 7 years ago

Hi, that would explain why. The MOEAs are designed to return the best solution(s) found given your dominance criteria. For the standard Pareto dominance, this typically means (1) when it finds feasible solutions, it returns the Pareto optimal solutions; and (2) if it's unable to find any feasible solutions, it returns the solution(s) with the smallest constraint violation. It's a good practice to check solution.violatesConstraints(). You could perhaps try increasing the max evaluations to see if that leads to any feasible solutions.

emelmdn commented 7 years ago

Hi, thanks a lot for your detailed answer. That was exactly the case. I increased the number of evaluations per run and could get a pareto front set of solutions. Thanks and regards.