NSGA-II binary solution success limitations

Visto 28 veces
Saltar al primer mensaje no leído

Nelda Liebenberg

no leída,
10 sept 2018, 8:11:4610/9/18
a Inspyred
Hi,

I was looking at an example Aaron Garrett worked on (attached file) on forest optimization using NSGA-II.

I was wondering, can you limit the number of success binaries in the output (i.e. 1's)? For example, you only want to buy the 5 best parcels so your solution will consist of a string with 5 1's and 95 0's?

Thanks
forest_optimization.py

Aaron Garrett

no leída,
10 sept 2018, 17:58:1310/9/18
a insp...@googlegroups.com
Yes, you could do that. You'd be adding an additional constraint to the evaluation (or you could modify the operators to enforce the constraint). It really depends on your particular problem how best to accomplish it. Do you have a specific problem in mind?

--
You received this message because you are subscribed to the Google Groups "Inspyred" group.
To unsubscribe from this group and stop receiving emails from it, send an email to inspyred+u...@googlegroups.com.
To post to this group, send email to insp...@googlegroups.com.
Visit this group at https://groups.google.com/group/inspyred.
For more options, visit https://groups.google.com/d/optout.
--
Aaron Garrett, Ph.D.
Assistant Professor
Computer Science
Wofford College
429 North Church Street
Spartanburg, SC 29303

Nelda Liebenberg

no leída,
11 sept 2018, 2:20:2211/9/18
a insp...@googlegroups.com
Hi,

Yes, my problem was adapted from the forest optimization example. 

A company wants to upgrade 100 of their 500 silo tubes while taking three objectives into consideration, i.e. max market shares,  max customer satisfaction, and min total project cost. I have built a small scale NSGA-II using 50 silo tubes as attributes and thus want the best 10 silo tubes as a solution. I attached my example. What would you recommend I use modifying the operators or adding an additional constraint? 

Thanks
nsga2_50silotube_test.py

Aaron Garrett

no leída,
11 sept 2018, 19:15:1011/9/18
a insp...@googlegroups.com
OK. So my understanding of your problem is that you really have some kind of multiobjective variant of the 0/1 Knapsack Problem (https://en.wikipedia.org/wiki/Knapsack_problem#0/1_knapsack_problem). So my first suggestion would be to investigate to see what existing approaches there are for that problem to see if they fit your needs.

As given, your problem doesn't really fit a binary representation, because you only want to count 10 out of the 50. So every candidate solution for you will have 10 ones and 40 zeros. It would almost certainly be better to have a representation where you just track the 10 IDs you care about, but that means that you'd have to change your crossover/mutator, as well as your generator. I don't know what crossover would be best, but here is an example of your problem where I just did a stupid random-replace mutator: https://repl.it/@agarrett/InspyredForumPost11Sep2018. I think that code still does the same kind of thing that your original code was trying to do.

That example is just a jumping-off point for illustration. You may find the the 0/1 Knapsack has a good multiobjective solution that you can apply using some other software or tool. It's a very well known problem, so that seems pretty likely.

Responder a todos
Responder al autor
Reenviar
0 mensajes nuevos