Maximizing two functions simultanously

6 ビュー (過去 30 日間)
charlotte88
charlotte88 2016 年 7 月 5 日
編集済み: Matt J 2016 年 7 月 5 日
Hi everyone,
I am a bit stuck and don't really know where to start. I want to maximize two independent objective functions given by
(1) Max x - b(z(1)+z(2)-s3)^2 s.t. x,z(1) >= 0 and (1-alpha) = z(1) + x
(2) Max y - b(z(1)+z(2)-s3)^2 s.t. y,z(2) >= 0 and alpha = z(2) + y
Equation (1) should be maximized wrt x and z(1), and Equation (2) wrt y and z(2). b, s3 and alpha are parameters. (I know I can calculate this specific function by hand - but I am going to make it more complicated and then it is much more difficult to calculate by hand!).
Any ideas about where to start?
Thanks!

回答 (2 件)

Walter Roberson
Walter Roberson 2016 年 7 月 5 日
It looks like a job for fmincon() with lower bounds and with linear equality constraints
I would suggest, though, that you eliminate z(1) and z(2) from the equation by rewriting:
(1-alpha) = z(1) + x implies z(1) = 1 - alpha - x
alpha = z(2) + y implies z(2) = alpha - y
so
b*(z(1)+z(2)-s3)^2 = b*(1 - alpha - x + alpha - y - s3)^2 = b*(1 - x - y - s3)^2
and then impose constraints to ensure that the appropriate values are non-negative. For example z(1) = 1 - alpha - x implies that x has an upper bound of 1 - alpha, and x >= 0 gives a lower bound for x of 0. Likewise y has an upper bound of alpha and a lower bound of 0.
You did say you want to maximize and fmincon is a minimizer, so use the old trick that to maximize a function, minimize the negative of the function.
  1 件のコメント
charlotte88
charlotte88 2016 年 7 月 5 日
Thanks Walter!
I completely agree with your simplification, however, I am still left with two optimization problems:
(1) max_x: x - b*(1-x-y-s3)^2
(2) max_y: y - b*(1-x-y-s3)^2
So I still don't really get how to do it this way. The thought is that two persons maximize their own utility and take the actions of the other into account (i.e., in (1) the solution to (2) is taken into account and vice versa).

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


Matt J
Matt J 2016 年 7 月 5 日
編集済み: Matt J 2016 年 7 月 5 日
QUADPROG would be the most appropriate optimizer given the form of your functions.
However, it's not quite clear why you consider your objective functions "independent". In particular, z(1) and z(2) appear in both. If you are maximizing wrt z(1) in the first objective, what determines its value in the second objective? Are they completely different variables that have simply been labeled the same?
If the objectives truly are independent, just apply QUADPROG to each one separately. Otherwise, I don't think the problem is well-defined. However, maybe what you really want is to maximize the sum of these objectives, or equivalently to minimize,
min. 2*b*(z(1)+z(2)-s3)^2 - x- y
subject to all the constraints you posted. Here again, QUADPROG would apply.
  4 件のコメント
Torsten
Torsten 2016 年 7 月 5 日
My guess is that Charlotte is looking for Pareto-optima:
Best wishes
Torsten.
Walter Roberson
Walter Roberson 2016 年 7 月 5 日
Pareto was what came to mind for me as well.

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

カテゴリ

Help Center および File ExchangeLinear Least Squares についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by