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

在元组中更新Damageline数据:时间依赖修改的OPL CPLEX代码

OPL CPLEX 分时段更新线路损伤状态实现代码

以下是符合需求的OPL CPLEX代码,通过定义时段更新规则,在执行块中完成指定线路的Damageline字段更新:

// 原始线路参数定义
tuple LineParameter {
    int Line;
    string Damageline;
}

// 初始线路数据
LineParameter linedata[1..9] = [
    <1,  "ND">,
    <2,  "ND">,
    <3,  "D">,
    <4,  "ND">,
    <5,  "ND">,
    <6,  "D">,
    <7,  "ND">,
    <8,  "D">,
    <9,  "D">,
];

// 定义各时段的更新任务:小时数 + 需更新的线路集合
tuple UpdateTask {
    int hour;
    {int} linesToUpdate;
}

UpdateTask updateTasks[] = [
    <2, {3,6}>,  // 第2小时更新线路3、6
    <4, {8,9}>   // 第4小时更新线路8、9
];

// 执行更新逻辑
execute {
    // 遍历每个更新任务
    for (var task in updateTasks) {
        writeln("===== 第 ", task.hour, " 小时更新 =====");
        // 处理当前时段内的所有待更新线路
        for (var line in task.linesToUpdate) {
            var current = linedata[line];
            if (current.Damageline == "D") {
                // 仅当当前状态为"D"时执行更新
                linedata[line] = <line, "ND">;
                writeln("线路 ", line, " 状态已从'D'更新为'ND'");
            } else {
                writeln("线路 ", line, " 当前状态为'", current.Damageline, "',无需更新");
            }
        }
    }
    
    // 输出最终所有线路的状态
    writeln("\n===== 更新完成后线路状态 =====");
    for (var idx in 1..9) {
        writeln("线路 ", idx, ": Damageline = ", linedata[idx].Damageline);
    }
}

代码说明

  • 用UpdateTask tuple统一管理各时段的更新规则,便于后续扩展更多时段的更新需求
  • 在execute块中实现具体的更新逻辑,加入状态判断避免重复更新
  • 包含日志输出,可直观查看每个时段的更新操作和最终结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 02:15:14