首页 > 解决方案 > 使用 pyomo.environ 创建多元分段函数

问题描述

我正在尝试从多元非线性函数创建分段线性目标。使用 pyomo 内核库,我想出了以下工作示例:

import pyomo.environ as pyo
import pyomo.kernel as pmo
import numpy as np
from pyomo.core.kernel.piecewise_library.transforms_nd import piecewise_nd

model = pmo.block()
model.x = pmo.variable(lb=0, ub=3)
model.y = pmo.variable(lb=0, ub=3)
model.z = pmo.variable()

def f(x, y):
    return x*y**2 + 20*np.sin(x*y)

var_list = [model.x, model.y]
tri = pmo.piecewise_util.generate_delaunay(var_list, num=20)
values = f(*tri.points.T)

model.pw = piecewise_nd(tri, values, input=var_list, output=model.z)
model.obj = pmo.objective(expr=model.z)

pyo.SolverFactory('glpk').solve(model, tee=True)

由于我想使用使用pyomo.environ组件创建的 pyomo 模型,我更喜欢使用pyomo.environ.Piecewise. 在文档中,没有给出使用多元函数的示例。

问题

是否可以仅使用来自的功能重新创建上述内容pyomo.environ

标签: pythonpyomo

解决方案


推荐阅读