For the function
$$ f(x_1,x_2;a_0,b_0)=\\\small\cases{\frac{1}{2}\left[x_1+x_2-x_1x_2+\left(\frac{-1+b_0(1-a_0)}{a_0}x_1+1\right)\left(\frac{-1+b_0(1-a_0)}{a_0}x_2+1\right)\right],\quad 0 \leq x_1\leq a_0,\, 0 \leq x_2\leq a_0\\ \frac{1}{2}\left[x_1+x_2-x_1x_2+\left(\frac{-1+b_0(1-a_0)}{a_0}x_1+1\right)b_0(-x_2+1)\right],\quad\quad\,\,\,\,\,\quad 0 \leq x_1\leq a_0,\, a_0 \leq x_2\leq 1\\ \frac{1}{2}\left[x_1+x_2-x_1x_2+b_0(-x_1+1)\left(\frac{-1+b_0(1-a_0)}{a_0}x_2+1\right)\right],\quad\quad\,\,\,\,\quad a_0 \leq x_1\leq 1,\, 0 \leq x_2\leq a_0\\ \frac{1}{2}\left[x_1+x_2-x_1x_2+b_0(-x_1+1)b_0(-x_2+1)\right],\quad\quad\quad\quad\quad\quad\quad a_0 \leq x_1\leq 1,\, a_0 \leq x_2\leq 1}$$
and
$$f(x_1=x_2;a_0,b_0)=\cases{\frac{1}{2}\left[2x_1-{x_1}^2+\left(1+\frac{x_1(1+b_0(1-a_0))}{a_0}\right)^2\right],\quad 0 \leq x_1 \leq a_0\\\frac{1}{2}\left[2x_1+b_0^2(1-x_1)^2-x_1^2\right],\quad\quad\quad\quad\,\quad a_0 \leq x_1 \leq 1}$$
I would like to solve the following optimization problem:
$$\max_{a_0,b_0\in[0,1]}\left[\min_{{x_1=x_2\in[0,1]}}f(x_1,x_2;a_0,b_0) -\min_{{x_1,x_2\in[0,1]}}f(x_1,x_2;a_0,b_0)\right]$$
Here is my code for the function $f$:
f[x1_, x2_] := Piecewise[{{(1/2)*(x1 + x2 - x1*x2 + ((-1 + b0*(1 - a0)) x1/a0 + 1) ((-1 + b0*(1 - a0)) x2/a0 + 1)), 0 <= x1 <= a0 && 0 <= x2 <= a0}, {(1/2)*(x1 + x2 - x1*x2 + ((-1 + b0*(1 - a0)) x1/a0 + 1)*b0 (-x2 + 1)), 0 <= x1 <= a0 && a0 <= x2 <= 1}, {(1/2)*(x1 + x2 - x1*x2 + ((-1 + b0*(1 - a0)) x2/a0 + 1)*b0 (-x1 + 1)), a0 <= x1 <= 1 && 0 <= x2 <= a0}, {(1/2)*(x1 + x2 - x1*x2 + b0 (-x1 + 1)*b0 (-x2 + 1)), a0 <= x1 <= 1 && a0 <= x2 <= 1}}]
Would it be possible also to solve this analytically with Mathematica?
Answer
It is a minmax-problem which you can solve numerically as follows:
f[x1_?NumericQ, x2_?NumericQ, a0_?NumericQ, b0_?NumericQ ] :=
Piecewise[{{(1/2)*(x1 + x2 -x1*x2 + ((-1 + b0*(1 - a0)) x1/a0 +1) ((-1 + b0*(1 - a0)) x2/a0 + 1)),
0 <= x1 <= a0 && 0 <= x2 <= a0},
{ (1/2)*(x1 + x2 - x1*x2 + ((-1 + b0*(1 - a0)) x1/a0 + 1)*b0 (-x2 + 1)),
0 <= x1 <= a0 &&a0 < x2 <=1},
{(1/2)*(x1 + x2 -x1*x2 + ((-1 + b0*(1 - a0)) x2/a0 + 1)*b0 (-x1 + 1)),
a0 < x1 <= 1 &&0 <= x2 <=a0},
{(1/2)*(x1 + x2 - x1*x2 + b0 (-x1 + 1)*b0 (-x2 + 1)),
a0 < x1 <= 1 && a0 < x2 <= 1}}, 0]
You need two functions for the inner -minimization:
jeq [a0_?NumericQ, b0_?NumericQ] :=NMinimize[{f[x, x, a0, b0], 0 < x < 1}, x][[1]]
juq [a0_?NumericQ, b0_?NumericQ] :=NMinimize[{f[x1, x2, a0, b0], 0 < x1 < 1, 0 < x2 < 1}, {x1, x2}][[1]]
Now your problem can be formulated as
max=NMaximize[ {jeq[a0, b0] - juq[a0, b0], {0 <= a0 <= 1,0 <= b0 <= 1}}, {a0, b0}]
(* after 10 minutes: {0.293779, {a0 -> 0.415495, b0 -> 0.00202345}}*)
The values x,x1,x2
for optimal a0,b0
are
NMinimize[{f[x, x, a0, b0] /. max[[2]], 0 < x < 1}, x] [[2]]
(*{x -> 0.293779}*)
NMinimize[{f[x1, x2, a0, b0] /. max[[2]], 0 < x1 < 1,0 < x2 < 1}, {x1, x2}][[2]]
(*{x1 -> -2.16855*10^-28, x2 -> 0.417829}*)
Comments
Post a Comment