special_structure
Command¶
This command can be used to run the special structure detection rules implemented by SUSPECT.
Usage¶
galini special_structure [-h] problem
Example¶
Given the following input file problem.py
import pyomo.environ as aml
def get_pyomo_model():
m = aml.ConcreteModel()
m.x = aml.Var(range(2), bounds=(0, 4.0))
m.y = aml.Var(range(2), bounds=(0, 1), domain=aml.Integers)
m.obj = aml.Objective(expr=m.y[0] + m.y[1] + m.x[0]**2 + m.x[1]**2)
m.c0 = aml.Constraint(expr=(m.x[0] - 2)**2 - m.x[1] <= 0)
m.c1 = aml.Constraint(expr=m.x[0] - 2*m.y[0] >= 0)
m.c2 = aml.Constraint(expr=m.x[0] - m.x[1] - 3*(1 - m.y[0]) <= 0)
m.c3 = aml.Constraint(expr=m.x[0] - (1 - m.y[0]) >= 0)
m.c4 = aml.Constraint(expr=m.x[1] - m.y[1] >= 0)
m.c5 = aml.Constraint(expr=m.x[0] + m.x[1] >= 3*m.y[0])
m.c6 = aml.Constraint(expr=m.y[0] + m.y[1] >= 1)
we run galini special_structure
and obtain the following output:
Var. Dom. LB UB
===========================
x[0] R 0.000 4.000
x[1] R 0.000 4.000
y[0] I 0.000 1.000
y[1] I 0.000 1.000
Obj. LB UB Cvx Mono
======================================
obj 0.000 inf Convex Nondecr.
Cons. LB UB Cvx Mono
==========================================
c0 -4.000 inf Convex
c1 -2.000 4.000 Linear
c2 -7.000 4.000 Linear
c3 -1.000 4.000 Linear Nondecr.
c4 -1.000 4.000 Linear
c5 -8.000 3.000 Linear
c6 0.000 2.000 Linear Nondecr.