# NMaximize gets different results on different runs; must Quit and restart

GROUPS:
 Hi, hola and Hallo!I have to optimize some contrained functions and I am trying to use NMaximize. I have the following problem (see code below). I use NMaximize for the first function f1 (constraints c1 and variables with start intervals vs1) and get what I want to get. After that I use NMaximize for the function f2 (with c2 and vs2). After this second numerical optimization I run again the very same optimization for f1 again and get a different result although I have not changed the start intervals.Could you please explain this? The only way I have found to solve this, is to restart everything with Quit[] but maybe you know a easier way to restart only the command NMaximize. I have also tried to set the Method for all optimizations but it does not make any difference, the results still vary.Thank you very much, muchas gracias, Dankeschön! f1 = 1445250/(13229 - 4223 Sqrt[30] (v1 + v2)); c1 = Sqrt[30] + 30 v1 >= 0 && Sqrt[30] + 30 v2 >= 0 &&     Sqrt[30] + 30 v3 >= 0 &&     2 + 45 v2 v3 + 45 v1 (v2 + v3) >= 2 Sqrt[30] (v1 + v2 + v3) &&     v1 + v2 + v3 <= Sqrt[(2/15)]; vs1 = {{v1, 0, 0.01}, {v2, 0, 0.01}, {v3, 0, 0.01}};  f2 = 1445250/(13229 - 8446 Sqrt[30] v1); c2 = 45 v1 <= Sqrt[30] && Sqrt[30] + 30 v1 >= 0;vs2 = {{v1, 0, 0.01}};NMaximize[{f1, c1}, vs1]NMaximize[{f2, c2}, vs2]NMaximize[{f1, c1}, vs1]Out[8]= {190.206, {v1 -> 0.121716, v2 -> 0.121716, v3 -> -0.0111781}}Out[9]= {190.206, {v1 -> 0.121716}}During evaluation of In[1]:= NMaximize::cvmit: Failed to converge to the requested accuracy or precision within 100 iterations. >>Out[10]= {190.253, {v1 -> 0.121759, v2 -> 0.121754, v3 -> -0.0111782}}I also triedSeedRandom[0]NMaximize[{f1, c1}, vs1]SeedRandom[0]NMaximize[{f2, c2}, vs2]SeedRandom[0]NMaximize[{f1, c1}, vs1]andBlockRandom[NMaximize[{f1, c1}, vs1]]BlockRandom[NMaximize[{f2, c2}, vs2]]BlockRandom[NMaximize[{f1, c1}, vs1]]but sadly with NO improvement
4 years ago
8 Replies
 Are you sure that the first part is correct? You only have 2 variabled in f1 but there are 3 variables in the constraints.
4 years ago
 Jepp, it is correct, that function is only a special case of a more general one with all 3 variables v1,v2,v3
4 years ago
 Ilian Gachevski 2 Votes This shouldn't happen, thank you for bringing this to our attention. For the time being, please try evaluating the following first OptimizationNonlinearInteriorPoint; OptimizationNonlinearInteriorPointDump`norm[x_] := If[x === {}, 0, Norm[Normal[x], Infinity]] Then the example should give consistent results:  In[2]:= f1 = 1445250/(13229 - 4223 Sqrt[30] (v1 + v2)); c1 = Sqrt[30] + 30 v1 >= 0 && Sqrt[30] + 30 v2 >= 0 &&     Sqrt[30] + 30 v3 >= 0 &&     2 + 45 v2 v3 + 45 v1 (v2 + v3) >= 2 Sqrt[30] (v1 + v2 + v3) &&     v1 + v2 + v3 <= Sqrt[(2/15)]; vs1 = {{v1, 0, 0.01}, {v2, 0, 0.01}, {v3, 0, 0.01}};  f2 = 1445250/(13229 - 8446 Sqrt[30] v1); c2 = 45 v1 <= Sqrt[30] && Sqrt[30] + 30 v1 >= 0;vs2 = {{v1, 0, 0.01}};NMaximize[{f1, c1}, vs1]NMaximize[{f2, c2}, vs2]NMaximize[{f1, c1}, vs1]Out[8]= {190.206, {v1 -> 0.121716, v2 -> 0.121716, v3 -> -0.0111781}}Out[9]= {190.206, {v1 -> 0.121716}}Out[10]= {190.206, {v1 -> 0.121716, v2 -> 0.121716, v3 -> -0.0111781}}
4 years ago
 Sander Huisman 1 Vote Running NMaximize does not change the actual values of v1 v2 and v3, it only give you back the solution back as rules, but the values of v1 v2 and v3 are still value-less, they are symbolic.
4 years ago
 Ilian Gachevski 1 Vote The point is that Out[8] and Out[10] should be consistent, because they are the same NMaximize call, and computing Out[9] in-between should not change anything.