How to define a range for multi-objective optimization?

Hey guys, I have a question; normally multi (single)-objective optimization works towards minimizing or maximizing values. But what if we want to find the optimized parameters for a range? for instance, what if we want to set a glazing ratio in a way that we have the maximum daylit hours in a year between 300 - 2000 lux (in Octopus preferably).

Thanks for your help.

Hi

You need to get a bit creative to do this. I would put the number of hours a year that are in your desirable range in a list and then use list count to count how many items are in your list. Since you want to maximize that number, you can use the number calculated as (1/ number of hours in the range I want) as your objective.
Hope this makes sense

Ellika

1 Like

@EllikaCachat, thank you; I will try it on my model to see what happens and I will let you know!

Thank you!

1 Like

Hello,
It is unclear to me what you are trying to do.

My guess is: You analyze a grid of points and want to find a solution where FOR EACH of the points minimum value is 300lux and maximum value is 2000lux? And you want to maximize number of points that fall between the range?
I post my advices below with that assumption:

First of all you do not need multi-objective optimization for that. Galapagos/Silverye/any other single-objective solver would work. If you want to use Octopus, it is also capable of single-objective optimization as well.

Secondly what you need are so-called penalty functions. You put a penalty on each result that is outside of your range. This would work that way:

-Maximize number of grid points that get a value of “1” (fall within your range), in the same time you put “0” to each point that does not fall between the range. Please see an example below (I used random number to generate values + seed as optimized slider)

Please note that if you are looking for a solution where, for example, you need only 70% of area to fall between this range you could compare number of “1 value” points (x) against lenght of a list of all poins (y) and put another penalty function: If (x/y>0.7, x, 0). This would give a value of 0 to all solutions that are below the 70% threshold, and a positive value to all solutions that are >70%:

I advice you to read through great David Rutten’s posts on optimization. These can be found on his blog - https://ieatbugsforbreakfast.wordpress.com/

In galapagos window you will find direct links to these articles:

Hope that it helps,
Have a good one!

@Wujo thank you very much. This is exactly what I was looking for but unfortunately, I do not have access to my PC for carrying out the project. I will do it asap n let you know! thank you for the detailed illustrations.