I am using Jupyter Notebook. I have tried defining a function with an optimization model, it seems to work outside of my main model. When I tried using the function on a variable inside my main model, at first the kernel dies, when I have updated Anaconda, it now seems to be doing nothing.

My function:

def optfunc(x):
    
    mod = Model()
      
    y = mod.addVar("y", ub = 2, lb = -1)
    consl = mod.addCons(y + x <= 3, "cons")
    mod.setObjective(y, "maximize")
    mod.optimize()
    sol = mod.getBestSol()
    
    return mod.getSolVal(sol, y)

My main model:

mainfunc = Model()

n = mainfunc.addVar("n",lb=1,ub=3)

c = optfunc(n)

const = mainfunc.addCons(n + 0.5 == 1, "cons")
mainfunc.setObjective(n, "maximize")
mainfunc.optimize()
sol = mainfunc.getBestSol()

print(mainfunc.getSolVal(sol,n))
1

There are 1 answers

0
mattmilten On

This does not work. You cannot have a Model inside another Model - especially, assigning a variable from the main Model (x) to be also a variable in the sub-model.