获取_dfds_dcds

(函数来自 pyomo.contrib.sensitivity_toolbox.sens)

pyomo.contrib.sensitivity_toolbox.sens.get_dfds_dcds(model, theta_names, tee=False, solver_options=None)[source]

此函数计算目标函数和约束条件相对于变量和参数的梯度向量。

例如,给定:

\[\begin{split}\min f:\ & p1*x1 + p2*(x2^2) + p1*p2 \\ s.t.\ & c1: x1 + x2 = p1 \\ & c2: x2 + x3 = p2 \\ & 0 <= x1, x2, x3 <= 10 \\ & p1 = 10 \\ & p2 = 5\end{split}\]
  • 变量 = (x1, x2, x3, p1, p2)

  • 使用估计值修复p1和p2

以下术语用于定义输出维度: - Ncon = 约束数量 - Nvar = 变量数量 (Nx + Ntheta) - Nx = 决策(原始)变量数量 - Ntheta = 不确定参数数量。

Parameters:
  • model (Pyomo ConcreteModel) – 模型应包含一个目标函数

  • theta_names (list of strings) – 变量名称列表

  • tee (bool, optional) – 表示ef求解器的输出应该被复制

  • solver_options (dict, 可选) – 提供求解器的选项(也是一个属性的名称)

Returns:

  • gradient_f (numpy.ndarray) – 长度为Nvar的数组。目标函数关于(决策变量,参数)在最优解处的梯度向量

  • gradient_c (scipy.sparse.csr.csr_matrix) – Ncon乘以Nvar大小的稀疏矩阵。约束关于(决策变量,参数)在最优解处的雅可比矩阵。每行包含[行号,列号,值],列顺序遵循col中的变量顺序,索引从0开始。注意它遵循k_aug。如果没有约束存在,返回[]

  • col (list) – 大小为Nvar的变量名称列表

  • row (list) – 大小为Ncon+1的约束和目标函数名称列表。最后一个元素是目标函数名称。

  • line_dic (dict) – 模型中theta_names的列号。索引从1开始

Raises: