I have a networkX graph with few nodes and these nodes have attributes such as "demand".
def mygraph():
G = nx.Graph()
G.add_nodes_from([("N1", {"demand": 10}),
("N2"{"demand": 12}),
("N3", {"demand": 25}),
("N4"{"demand": 18})])
I want my Pyomo Abstract model to create constraints and decision variables dynamically. Like,
def mymodel():
model = AbstractModel()
g=mygraph() #mygraph passed to abstract model
model.nodes_range = RangeSet(1,len(g))# this creates a parameter with same size of the graph
model.C = Param(model.nodes_range, within=pyo.NonNegativeIntegers) #one parameter for each node
def constraint_rule(model, i): #dummy constraint
return sum(model.decision_var*demand_node1)<=something
model.const1=Constraint(model.nodes_range, rule=constraint_rule)
model.obj1 = Objective(my objective) #my dummy objective
status = SolverFactory('glpk')
results = status.solve(model)
assert_optimal_termination(results)
model.display()
mymodel()
But the model.const1.pprint() command is giving 0 constraints. Can you guide me with the logic?