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 个评论
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
2022-11-11
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
2022-11-11
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
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
2022-11-11
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
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
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 个)
类别
在 帮助中心 和 File Exchange 中查找有关 General PDEs 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!