According to the Minimize documentation, when provided with approximate inputs, Minimize
invokes NMinimize
. However, different specifications of the same domain give different results when NMinimize
is invoked explicitly versus implicitly via Minimize
.
For example, defining a random input sample:
A = {{0.4277047469835642`,
0.16878397349541197`}, {0.6416571036236569`, 0.5910551264554926`}};
B = {{0.9699948146542698`,
0.8036723082029285`}, {0.02882838531248111`, 0.9544230849675173`}};
b = {0.29803837933767596`, 0.6635349216438007`};
Minimize[
{Norm[A.x - b, Infinity] + Norm[B.x - b, Infinity],
x \[VectorGreaterEqual] 0},
x \[Element] Rectangle[{0, 0}, {1, 1}]]
(* {0.727324, {x -> {0.0802987, 0.50132}}} *)
But calling NMinimize
explicitly gives a higher value:
NMinimize[
{Norm[A.x - b, Infinity] + Norm[B.x - b, Infinity],
x \[VectorGreaterEqual] 0},
x \[Element] Rectangle[{0, 0}, {1, 1}]]
(* {0.746419, {x -> {0.185227, 0.441771}}} *)
Interestingly, other forms of specifying the domain for NMinimize seem to give the global minimum:
NMinimize[
{Norm[A.x - b, Infinity] + Norm[B.x - b, Infinity],
x \[VectorGreaterEqual] 0},
x \[Element] Vectors[2, Reals]]
(* {0.727324, {x -> {0.0802988, 0.50132}}} *)
FWIW, all of this is in 12.0.0 for Mac OS X
Any thoughts? I'm mostly curious how the different domain specifications are changing the numerical optimization procedure.