XiongPengNUS / rsome

Robust Stochastic Optimization Made Easy
GNU General Public License v3.0
282 stars 54 forks source link

nonconvex constraints #37

Closed EdwinMeriaux closed 1 year ago

EdwinMeriaux commented 1 year ago

Hello,

I am having an issue with RSOME. I am running a maximization SRO test but it keeps saying "nonconvex constraints" Why doesn't this return: X = 10?

import rsome as rso import numpy as np from rsome import ro from rsome import dro from rsome import E

from rsome import eco_solver as grb

from rsome import grb_solver as grb model = dro.Model('test') # create an RSOME model

x = model.dvar()

model.max(rso.square(x)) #working model.st(x >= 0) model.st(x <= 10)

model.solve(grb)

print(x.get())

EdwinMeriaux commented 1 year ago

I notice I can put the requirement that I want to maximize: rso.square(x-5) in the model.st() but how can i control this in the maximization?

ie this works: model.max(x) #working

model.st(rso.square(x-5) <= 100)

model.st(x <= 10)

model.st(rso.square(x-5))

model.st(x >= 0) model.st(x <= 5)

model.solve(grb)

print(x.get())

but x is bounded by the square as a max bound and not a maximization of that eqs

chenzjames commented 1 year ago

Dear Edwin, The problem is still nonconvex. The RSOME framework relies on the deterministic problem/reformulation be convex so it could be well recognized by the solver.

EdwinMeriaux commented 1 year ago

Hello!

Thank you for your answer. I have to admit I am new to convex problems. I am confused why this is not a convex problem. isn't a parabola of (x-5)^2 a convex problem?

chenzjames commented 1 year ago

Yes, (x-5)^2 is a convex function of x. However, maximizing a convex function is not a convex problem.