5
$\begingroup$

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?

$\endgroup$
  • $\begingroup$ I cannot find conditions concerning b0 in your function definition, something seems to be wrong! $\endgroup$ – Ulrich Neumann Aug 3 '18 at 9:46
  • $\begingroup$ @UlrichNeumann please see the problem definition. $a_0$ and $b_0$ are in $[0,1]$. Does this clarify your question? $\endgroup$ – Seyhmus Güngören Aug 3 '18 at 9:51
  • $\begingroup$ Unfortunately not. The restriction 0<b0<1 doesn't appear in your Piecewise-function. For numerical optimization your function must return a numerical value! $\endgroup$ – Ulrich Neumann Aug 3 '18 at 10:27
  • $\begingroup$ @UlrichNeumann you said optimization and for optimization you already have it. I don't understand you at all. The function can be general and I may be interested in making an optimization for some certain part of this function. Forget the function $f$ completely. Just insert this function in to the problem definition. Then delete the function $f$. Now you have a problem which is valid and independent of $f$. $\endgroup$ – Seyhmus Güngören Aug 3 '18 at 10:33
  • $\begingroup$ Sorry for trying to help: I adapted your function definition f[x1_ ?NumericQ, x2_?NumericQ , a0 _?NumericQ , b0_?NumericQ ]:=... .The test f[.9, .8, 0.1, .7] keeps unevaluated. So any numerical programm cannot succeed $\endgroup$ – Ulrich Neumann Aug 3 '18 at 10:47
4
$\begingroup$

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}*)
$\endgroup$
  • $\begingroup$ Thank you very much for the answer. Wow, 10 minutes! It means If I have more variables then I will have troubles.. $\endgroup$ – Seyhmus Güngören Aug 3 '18 at 11:40
  • $\begingroup$ Would it be possible to get $x_1$ and $x_2$ just at the output of the optimization? I run the same code as you posted and got surprisingly a different result. a0=0.911439 and b0=0.808984 and the maximum value is 0.495. I have version 10.3. I think both results are problematic. I just checked your result and I found $x_1=x_2=0.2935$ and $x__1=0.4155$ with $x_2=0$. For this the result is $0.086$. $\endgroup$ – Seyhmus Güngören Aug 3 '18 at 13:43
  • $\begingroup$ One more thing: I have the feeling that your result for $a_0$ and $b_0$ are almost correct. I guess $a_0=0.4155$ and $b_0=0$ should be the correct values. $\endgroup$ – Seyhmus Güngören Aug 3 '18 at 14:01
  • $\begingroup$ The function jeq[a0, b0] - juq[a0, b0] you try to maximize seems to be very complicated. I tried a Plot3d[jeq[a0, b0] - juq[a0, b0],...] but mathematica didn't finish the plot after 1hour... $\endgroup$ – Ulrich Neumann Aug 3 '18 at 14:28
  • $\begingroup$ Thank you very much. $\endgroup$ – Seyhmus Güngören Aug 3 '18 at 22:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.