Skip to content

bilevel is not working #1700

@zwenju

Description

@zwenju

Dear pyomo team,

I try to use pyomo bilevel to solve the following problem, however, the code is not working.
Could you give me some help ?
Best
`
import pyomo.environ as pe
from pao.bilevel import *

M = pe.ConcreteModel()
M.lamb1 = pe.Var(within = pe.NonNegativeReals, initialize=0.5)
M.lamb2 = pe.Var(within = pe.NonNegativeReals, initialize=0.5)
M.sub = SubModel()
M.sub.y = pe.Var(within = pe.Reals, bounds = (0,1), initialize=0.5)
M.sub.x = pe.Var(within = pe.Reals, bounds = (0,1), initialize=0.5)

def obj(M):
model = M.model()
FO = - model.sub.y + model.lamb1 * ( 2 * model.sub.x * model.sub.y
+ model.sub.x * model.sub.x
- model.sub.y * model.sub.y - model.sub.x)
+ model.lamb2 * ( - model.sub.x * model.sub.y
- 0.3 * model.sub.x * model.sub.x
- 0.2 * model.sub.y * model.sub.y
- 0.5 * model.sub.x
+ 1.5 * model.sub.y )
return FO

M.sub.o = pe.Objective(rule= obj, sense=pe.minimize)
M.o = pe.Objective(rule= obj, sense=pe.maximize)
opt = pe.SolverFactory('ipopt')

status = opt.solve(M)
print (value(M.o), value (M.lamd1), value(M.lamd2) )

`

image

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions