scaling parameter for multi objective function

I have two objective functions, but the formulation of one function has larger numbers than the other function. Therefore, the first function is more impact on the result. Probably, I should put a scaling parameter for the functions so that they become the same unit. Is there a any formula or method to determine these scaling numbers?
a=[33.5106 34.9787 36.4468 38.3830 40.3404 42.5213 44.7234 39.6915 33.5745 15.3298 -5.4681 -39.6702 -77.5957
-99.2447 -115.1489 -120.8404 -122.0638 -118.1809 -111.5745 -100.7979 -87.3404 -69.0426 -47.0213 -26.1489 -6.3298 9.8617
22.0957 34.6489 47.6170 58.0000 64.3617 69.0213 70.4894 70.6915 68.0000 64.3511 57.9894 49.6064 33.9468
18.5851 4.6383 -7.2660 -5.5532 -3.3511 3.9894 11.3191 18.4149 25.5106];
p(48) is variable
obj 1: (norm((( a + p)))^2
obj 2 : sum(0.004*(p^2)+0.075.*p+0.003)
obj1 + obj2
And I think, for example, because the coefficient of the objective function 2 is 0.004, it makes its effect very low on result. So objs should be united somehow

12 件のコメント

Torsten
Torsten 2022 年 11 月 11 日
編集済み: Torsten 2022 年 11 月 11 日
No. That's the essence of multiobjective optimization: You must weigh the two (usually conflicting) targets of the two objectives according to your preferences.
Of course, if the outcomes of both objectives share the same physical quantity (e.g. energy), the unit should be the same for both objectives (e.g. Kilojoule). But usually, the units are not comparable (e.g. costs and environmental impact). Here, it's up to you to prescribe the appropriate weights.
mohammad
mohammad 2022 年 11 月 11 日
I edited my question more clearly, I don't mean the weighting factor , I want them to be the same unit
Torsten
Torsten 2022 年 11 月 11 日
I don't understand your objective functions. What is sum_square(aaa+p) ? What is aaa ? Why does aaa not appear in obj 2 ? sum(0.004*(p^2)+0.075.*p+0.003) is minimized if 0.004*(p^2)+0.075.*p+0.003 is minimal, thus for p = -0.075/0.008.
mohammad
mohammad 2022 年 11 月 11 日
I edited it. There are 48 variables in 'p' and the objective functions has a series of constrians that I did not mention
Torsten
Torsten 2022 年 11 月 11 日
And the answer remains the same: scaling is weighing. It is up to you to decide how you want to weigh the two objectives.
If you want to weigh them equally, you can put the constraint obj1 = obj2.
If you want to weigh them differently, you can put the constraint alpha*obj1 = obj2 for an alpha ~= 1.
mohammad
mohammad 2022 年 11 月 11 日
i didn't understand. what the mean obj1 = obj2 ?
Torsten
Torsten 2022 年 11 月 11 日
編集済み: Torsten 2022 年 11 月 11 日
You can put as constraint
alpha * (norm((( a + p)))^2 = sum(0.004*(p^2)+0.075.*p+0.003)
can't you ?
mohammad
mohammad 2022 年 11 月 11 日
No, it is not possible. The structure of the algorithm is multi-agent and two agents solve their objective function separately. It cannot be said that because one of the objectives function is multiplied by 0.004 to equalize the unit, it is multiplied by 250 as a weighting factor ؟
Bjorn Gustavsson
Bjorn Gustavsson 2022 年 11 月 11 日
An alternative view-point is to take inspiration from "weighted least square"-fitting. There you normalize each residual with the corresponding variance:
If you similarly can associate something like a standard-deviation, uncertainty of the two objective functions then you have one way to select their relative weighting.
Torsten
Torsten 2022 年 11 月 11 日
alpha * (norm((( a + p)))^2 = sum(0.004*(p^2)+0.075.*p+0.003)
is a usual nonlinear constraint on the parameter vector p.
It must be able to set it in every optimization code you use.
mohammad
mohammad 2022 年 11 月 11 日
i did't understand . for example for this problem how should do I calculate the weighting factor?
Torsten
Torsten 2022 年 11 月 11 日
編集済み: Torsten 2022 年 11 月 11 日
You can't calculate a weighting factor. If you want to weigh both objectives equally, put the constraint
(norm((( a + p)))^2 = sum(0.004*(p^2)+0.075.*p+0.003)
If you think that minimizing objective 1 is twice as important as minimizing objective 2, set the constraint
2*(norm((( a + p)))^2 = sum(0.004*(p^2)+0.075.*p+0.003)

サインインしてコメントする。

回答 (0 件)

質問済み:

2022 年 11 月 11 日

編集済み:

2022 年 11 月 11 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by