获取_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:
- 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:
RuntimeError – 当ipopt或k_aug或dotsens不可用时
Exception – 当ipopt失败时