Está en la página 1de 6

Aquí tienes tres ejemplos adicionales de cómo programar restricciones de implicación en Pyomo

en Python:

1. Restricción de Implicación con Condiciones Compuestas:

from pyomo.environ import *


# Crear una instancia de modelo de optimización

model = ConcreteModel()

# Conjunto de índices

model.I = RangeSet(1, 5)

# Variables de decisión

model.x = Var(model.I, within=Binary)

# Restricciones de implicación con condiciones compuestas

def implication_rule(model, i):

if i == 2 or i == 4:

return model.x[i] == 1 # Implicación para índices 2 y 4

elif i == 3:

return model.x[i] == 0 # Implicación para el índice 3

else:

return Constraint.Skip # Restricción omitida para otros índices

model.imply_constraint = Constraint(model.I, rule=implication_rule)

# Función objetivo

model.obj = Objective(expr=summation(model.x), sense=maximize)

# Resolver el modelo

solver = SolverFactory('glpk')

solver.solve(model)

# Imprimir resultados
for i in model.I:

print(f"x[{i}] = {value(model.x[i])}")

print(f"Función objetivo = {value(model.obj)}")

2. Restricción de Implicación con Variables Continuas:

from pyomo.environ import *

# Crear una instancia de modelo de optimización

model = ConcreteModel()

# Variables de decisión continuas

model.x = Var(within=Reals)

# Restricción de implicación con variable continua


model.imply_constraint = Constraint(expr=imply(model.x >= 0, model.x**2 <= 10))

# Función objetivo

model.obj = Objective(expr=model.x, sense=maximize)

# Resolver el modelo

solver = SolverFactory('glpk')

solver.solve(model)

# Imprimir resultados

print(f"x = {value(model.x)}")

print(f"Función objetivo = {value(model.obj)}")

3. Restricción de Implicación en un Modelo con Restricciones Adicionales:


from pyomo.environ import *

# Crear una instancia de modelo de optimización

model = ConcreteModel()

# Variables de decisión

model.x = Var(within=NonNegativeReals)

model.y = Var(within=NonNegativeReals)

# Restricciones adicionales

model.constraint1 = Constraint(expr=model.x >= 5)


model.constraint2 = Constraint(expr=model.y <= 10)

# Restricción de implicación

model.imply_constraint = Constraint(expr=imply(model.x >= 7, model.y <= 5))

# Función objetivo

model.obj = Objective(expr=model.x + model.y, sense=maximize)

# Resolver el modelo

solver = SolverFactory('glpk')

solver.solve(model)

# Imprimir resultados

print(f"x = {value(model.x)}")

print(f"y = {value(model.y)}")

print(f"Función objetivo = {value(model.obj)}")

Estos ejemplos ilustran cómo implementar restricciones de implicación en Pyomo en una variedad
de contextos, incluyendo condiciones compuestas, variables continuas y modelos con restricciones
adicionales. Asegúrate de adaptar y ajustar estos ejemplos según los requisitos específicos de tu
problema de optimización.

También podría gustarte