solving an iterated optimization problem

asked 6 years ago

CEL gravatar image

I have the following problem, which I intend to solve using SAGE.

Given m2 non-linear (smooth) functions fij(x,y):[0,1]2R, for 1i,jm I want to solve

minx[0,1]max(F1(x),,Fm(x)) where for any 1im: Fi(x)=miny[0,1]max(fi1(x,y),,fim(x,y))

I had thought of solving the inner Minimax problem Fi(x) as a non-linear optimization problem with inequality constraints as

minz fij(x,y)z0,1jm y10andy0 using the SAGE function sage.numerical.optimize.minimize_constrained. This works fine for a fixed value of x, but not in case x is a free parameter. What I get is a TypeError: unable to simplify to float approximation

For instance the following code

x,y,z =var('x,y,z')

f = lambda (x,y,z): z

c_1 = lambda (x,y,z): z-0.25*(x+y+sqrt(x^2+1)+sqrt(y^2+4)+1)

c_2 = lambda (x,y,z): z-0.2150407*(x+sqrt((y-1)^2)+sqrt(2)+sqrt(x^2+1)+sqrt(y^2+4))

c_3 = lambda (x,y,z): 1-y

c_4 = lambda (x,y,z): y

minimize_constrained(f,[c_1,c_2,c_3,c_4],[x,0.5,0], algorithm='l-bfgs-b');

produces the error:

File "sage/symbolic/expression.pyx", line 1410, in sage.symbolic.expression.Expression.__float__ (/build/sagemath-zWcbUi/sagemath-7.4/sage/src/build/cythonized/sage/symbolic/expression.cpp:11031) TypeError: unable to simplify to float approximation

Does someone have an idea how to use minimize_constrained for functions with a free parameter? Are there other alternatives (except doing everything from scratch)?

Preview: (hide)

Comments

minimize_constrained expects [x,0.5,0] to be the initial point for finding the minimum, but the 1st entry, x, is a symbolic expression. Perhaps you can let min_fx = lambda x: minimize_constrained(f, [c_1,c_2,c_3,c_4], [x, 0.5, 0], algorithm='l-bfgs-b') and then operate on min_fx?

mforets gravatar imagemforets ( 6 years ago )