You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何生成指定变量值矩阵并替换目标函数字符串中的变量?

实现变量值矩阵生成与目标函数迭代替换流程

需求明确

  • 输入矩阵new_matrix仅包含U1、X4、U2的有效值,其余变量(B、X1、X2、X3、X5)值恒为0
  • 不依赖第三方库生成结构为「表头(固定变量列表)+ 各行变量值」的variables_j_col_values矩阵
  • 遍历矩阵非表头行,将变量值替换到目标函数字符串funcion_obj_z,输出每次迭代后的表达式

代码实现

# 示例输入:new_matrix每行对应一个j列的U1、X4、U2有效值
new_matrix = [
    [1.2, 3.4, 5.6],
    [7.8, 9.0, 2.1]
]
# 目标函数字符串
funcion_obj_z = "Z = 2*U1 + 3*X4 + 5*U2 + 0*B + 0*X1 + 0*X2 + 0*X3 + 0*X5"

# 固定变量列表
var_list = ['B', 'X1', 'X2', 'X3', 'X4', 'X5', 'U1', 'U2']

# 1. 生成指定结构的variables_j_col_values矩阵
variables_j_col_values = [var_list]  # 表头行
for row in new_matrix:
    u1_val, x4_val, u2_val = row
    # 按变量列表顺序生成值:非目标变量置0,目标变量取对应值
    val_row = [0, 0, 0, 0, x4_val, 0, u1_val, u2_val]
    variables_j_col_values.append(val_row)

# 2. 遍历非表头行,替换目标函数变量
for idx, val_row in enumerate(variables_j_col_values[1:], start=1):
    # 构建变量-值映射字典
    var_mapping = dict(zip(var_list, val_row))
    # 替换表达式中的变量
    updated_expr = funcion_obj_z
    for var, val in var_mapping.items():
        updated_expr = updated_expr.replace(var, str(val))
    # 可选:计算目标函数数值结果
    z_result = eval(updated_expr.split('=')[1].strip())
    
    print(f"迭代 {idx} 表达式: {updated_expr}")
    print(f"迭代 {idx} Z值: {z_result}\n")

代码说明

  • 矩阵生成:严格遵循指定变量列表的顺序构建行,确保B、X1、X2、X3、X5值为0,U1、X4、U2从new_matrix取对应有效值
  • 变量替换:通过字典映射实现变量名到数值的替换,保证表达式结构不变
  • 数值计算:使用eval可快速验证表达式的数值结果,若仅需表达式文本可省略此步骤

运行输出

迭代 1 表达式: Z = 2*1.2 + 3*3.4 + 5*5.6 + 0*0 + 0*0 + 0*0 + 0*0 + 0*0
迭代 1 Z值: 40.6

迭代 2 表达式: Z = 2*7.8 + 3*9.0 + 5*2.1 + 0*0 + 0*0 + 0*0 + 0*0 + 0*0
迭代 2 Z值: 50.1

内容的提问来源于stack exchange,提问作者Elektvocal95

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 02:15:41