assert s.weights == (1,2,3) assert len(s.variables) == 3 assert v1 in s assert v2 in s assert v3 in s # # Specifying weights # # using known values s = pmo.sos([v1,v2], weights=[1.2,2.5]) assert s.weights == (1.2,2.5) # using paramters p = pmo.parameter_list( pmo.parameter() for i in range(2)) s = pmo.sos([v1,v2], weights=[p[0]**2, p[1]**2]) assert len(s.weights) == 2 p[0].value = 1 p[1].value = 2 assert tuple(pmo.value(w) for w in s.weights) == (1, 4) # using data expressions d = pmo.expression_list( pmo.data_expression() for i in range(2)) s = pmo.sos([v1,v2], weights=d) assert len(s.weights) == 2 d[0].expr = p[0] + 1 d[1].expr = p[0] + p[1] assert tuple(pmo.value(w) for w in s.weights) == (2, 3)
# # Blocks # # define a simple optimization model b = pmo.block() b.x = pmo.variable() b.c = pmo.constraint(expr=b.x >= 1) b.o = pmo.objective(expr=b.x) # define an optimization model with indexed containers b = pmo.block() b.p = pmo.parameter() b.plist = pmo.parameter_list(pmo.parameter() for i in range(10)) b.pdict = pmo.parameter_dict( ((i, j), pmo.parameter()) for i in range(10) for j in range(10)) b.x = pmo.variable() b.xlist = pmo.variable_list(pmo.variable() for i in range(10)) b.xdict = pmo.variable_dict( ((i, j), pmo.variable()) for i in range(10) for j in range(10)) b.c = pmo.constraint(b.x >= 1) b.clist = pmo.constraint_list( pmo.constraint(b.xlist[i] >= i) for i in range(10)) b.cdict = pmo.constraint_dict(((i, j), pmo.constraint(b.xdict[i, j] >= i * j)) for i in range(10) for j in range(10)) b.o = pmo.objective(b.x + sum(b.xlist) + sum(b.xdict.values()))
# @Parameters_single m.p = pmo.parameter(0) # @Parameters_single # @Parameters_dict # pd[1] = 0, pd[2] = 1 m.pd = pmo.parameter_dict() for k, i in enumerate(m.s): m.pd[i] = pmo.parameter(k) # @Parameters_dict # @Parameters_list # uses 0-based indexing # pl[0] = 0, pl[0] = 1, ... m.pl = pmo.parameter_list() for j in m.q: m.pl.append(pmo.parameter(j)) # @Parameters_list # @Variables_single m.v = pmo.variable(value=1, lb=1, ub=4) # @Variables_single # @Variables_dict m.vd = pmo.variable_dict() for i in m.s: m.vd[i] = pmo.variable(ub=9) # @Variables_dict # @Variables_list # used 0-based indexing m.vl = pmo.variable_list()
# @Parameters_single m.p = pmo.parameter(0) # @Parameters_single # @Parameters_dict # pd[1] = 0, pd[2] = 1 m.pd = pmo.parameter_dict() for k,i in enumerate(m.s): m.pd[i] = pmo.parameter(k) # @Parameters_dict # @Parameters_list # uses 0-based indexing # pl[0] = 0, pl[0] = 1, ... m.pl = pmo.parameter_list() for j in m.q: m.pl.append( pmo.parameter(j)) # @Parameters_list # @Variables_single m.v = pmo.variable(value=1, lb=1, ub=4) # @Variables_single # @Variables_dict m.vd = pmo.variable_dict() for i in m.s: