Python回调函数
(类来自 pyomo.core.base.external)
- class pyomo.core.base.external.PythonCallbackFunction(*args, **kwargs)[source]
基础类:
ExternalFunction- __init__(*args, **kwargs)[source]
构造对外部函数的引用。
有两种基本接口由
ExternalFunction支持:Python回调函数和AMPL外部函数。Python回调函数 (
PythonCallbackFunction接口)Python回调函数可以通过以下两种方式指定:
FGH 接口:
一个与签名匹配的单个外部函数调用
evaluate_fgh()方法。独立函数:
一到三个可以评估函数值、函数相对于其输入的梯度[偏导数]以及函数的Hessian[偏二阶导数]的函数。
function接口期望一个符合原型的函数:def function(*args): float
gradient和hessian接口期望函数符合以下原型:def gradient_or_hessian(args, fixed=None): List[float]
其中
args是函数参数的元组,而fixed要么是 None,要么是一个与args长度相等的值列表,指示哪些参数当前是固定的(True)或可变的(False)。ASL 函数库 (
AMPLExternalFunction接口)Pyomo 还可以调用作为 AMPL 外部函数库一部分编译的函数(参见 用户定义函数 部分 在 将求解器连接到 AMPL 报告中)。这些函数的链接通过创建一个
ExternalFunction并将编译的库名称(或路径)传递给library关键字,将函数名称传递给function关键字来声明。
方法
__init__(*args, **kwargs)构造对外部函数的引用。
clear_suffix_value(suffix_or_name[, expand])清除此组件数据的后缀值
cname(*args, **kwds)已弃用。
construct([data])用于构建组件的API定义
display([ostream, verbose, prefix])evaluate(args)返回给定指定参数的函数值
evaluate_fgh(args[, fixed, fgh])评估给定指定参数的函数和梯度
返回此ExternalFunctions参数的单元
get_suffix_value(suffix_or_name[, default])获取此组件数据的后缀值
返回此ExternalFunction的单位
getname([fully_qualified, name_buffer, ...])返回与此对象关联的组件名称。
如果此类是Pyomo组件,则返回True
如果这个类已经被构造,则返回True
is_expression_type([expression_system])如果此数值是一个表达式,则返回 True
如果此组件已索引,则返回true
如果此类是Pyomo布尔对象,则返回True。
如果此数值是一个命名表达式,则返回 True
如果此类是Pyomo数值对象,则返回True
除非此类是参数对象,否则返回 False
如果此对象是引用,则返回 True。
除非此类是变量对象,否则返回 False
model()返回与此对象关联的模型。
返回此对象的父对象。
返回与此对象关联的组件。
pprint([ostream, verbose, prefix])打印组件信息
reconstruct([data])已移除:reconstruct() 在 Pyomo 6.0 中被移除。
register_instance(instance)返回 self.model()
set_suffix_value(suffix_or_name, value[, expand])设置此组件数据的后缀值
type()已弃用。
如果这可以用作模型组件,则返回True。
属性
返回活动属性
返回此组件的类类型
global_id_to_fidglobal_registry仅在直接父容器的上下文中获取组件名称。
获取完全限定的组件名称。
成员文档
- clear_suffix_value(suffix_or_name, expand=True)
清除此组件数据的后缀值
- cname(*args, **kwds)
已弃用。
自版本5.0起已弃用:cname() 方法已重命名为 getname()。 获取组件名称的首选方法是使用 .name 属性,该属性返回完全限定的组件名称。 .local_name 属性将仅在直接父容器的上下文中返回组件名称。
- construct(data=None)
用于构建组件的API定义
- evaluate(args)
返回给定指定参数的函数值
- Parameters:
args (Iterable) – 包含传递给外部函数的参数的可迭代对象。非原生类型的元素将使用
value()函数转换为原生值。- Returns:
函数在args处求值的返回值
- Return type:
- evaluate_fgh(args, fixed=None, fgh=2)
评估给定指定参数的函数和梯度
这将根据指定的参数评估函数,返回一个三元组(函数值 [f],一阶偏导数列表 [g],以及Hessian矩阵的上三角部分 [h])。
- Parameters:
args (Iterable) – 包含要传递给外部函数的参数的可迭代对象。非原生类型的元素将使用
value()函数转换为原生值。fixed (可选[列表[bool]]) – 指示相应参数值是否固定的值列表。任何固定的索引保证返回0作为一阶和二阶导数,无论外部函数计算的是什么。
fgh ({0, 1, 2}) –
返回哪些评估结果:
0: 仅返回函数评估
1: 返回函数和一阶导数
2: 返回函数、一阶导数和海森矩阵
未请求的返回值将为 None。
- Returns:
f (float) – 函数在 args 处求值的返回值
g (List[float] or None) – 一阶偏导数的列表
h (List[float] or None) – Hessian 矩阵(二阶偏导数)的上三角部分,按列存储。元素 \(H_{i,j}\)(其中 \(0 <= i <= j < N\))使用 \(h[i + j*(j + 1)/2] == H_{i,j}\) 进行映射。
- get_arg_units()
返回此ExternalFunctions参数的单元
- get_suffix_value(suffix_or_name, default=None)
获取此组件数据的后缀值
- get_units()
返回此ExternalFunction的单位
- getname(fully_qualified=False, name_buffer=None, relative_to=None)
返回与此对象关联的组件名称。
- is_component_type()
如果此类是Pyomo组件,则返回True
- is_constructed()
如果这个类已经被构造,则返回True
- is_expression_type(expression_system=None)
如果此数值是一个表达式,则返回 True
- is_indexed()
如果此组件已索引,则返回true
- is_logical_type()
如果此类是Pyomo布尔对象,则返回True。
布尔对象包括常量、变量或逻辑表达式。
- is_named_expression_type()
如果此数值是一个命名表达式,则返回 True
- is_numeric_type()
如果此类是Pyomo数值对象,则返回True
- is_parameter_type()
除非此类是参数对象,否则返回 False
- is_reference()
如果此对象是引用,则返回 True。
- is_variable_type()
除非此类是变量对象,否则返回 False
- model()
返回与此对象关联的模型。
- parent_block()
返回此对象的父对象。
- parent_component()
返回与此对象关联的组件。
- pprint(ostream=None, verbose=False, prefix='')
打印组件信息
- reconstruct(data=None)
已移除:reconstruct() 在 Pyomo 6.0 中被移除。
重新构建模型组件是脆弱的,并且不能正确更新在其他组件或上下文中使用的组件实例(这对于Var、Param和Set尤其成问题)。希望重现reconstruct()旧行为的用户,如果愿意操作非公开接口,并且愿意花时间验证他们的模型是否正确执行,可以通过以下方式近似实现reconstruct的旧行为:
component.clear() component._constructed = False component.construct()
- root_block()
返回 self.model()
- set_suffix_value(suffix_or_name, value, expand=True)
设置此组件数据的后缀值
- type()
已弃用。
返回此组件的类类型
自版本5.7起已弃用:Component.type() 方法已被 .ctype 属性取代。
- valid_model_component()
如果这可以用作模型组件,则返回True。
- property active
返回活动属性
- property ctype
返回此组件的类类型
- property local_name
仅在直接父容器的上下文中获取组件名称。
- property name
获取完全限定的组件名称。