CPLEX中execute函数使用问题:三维数组H未显示求助
CPLEX Execute函数中三维数组H未显示的问题排查
针对你遇到的问题,从代码和CPLEX运行逻辑角度,整理几个排查方向:
修复execute块的语法错误
你代码里var count=0语句末尾缺少分号,CPLEX的OLE Script(execute块使用的脚本语言)要求每条语句必须以分号结尾,这个语法错误会导致整个execute块执行失败,H数组自然不会被赋值。修正后代码如下:execute{ var count=0; for (var j in 1..b){ for (var k in 1..c){ for (var l in 1..d){ count=count + 1; H[j][k][l]=Preferenz[count]; }; }; }; };手动验证H数组的赋值结果
即使execute块执行成功,CPLEX默认可能不会自动显示所有变量。可以在execute块末尾添加打印语句,直接输出H的内容,确认赋值是否生效:execute{ var count=0; for (var j in 1..b){ for (var k in 1..c){ for (var l in 1..d){ count=count + 1; H[j][k][l]=Preferenz[count]; }; }; }; // 打印H数组内容 writeln("H数组赋值结果:"); for (var j in 1..b){ for (var k in 1..c){ for (var l in 1..d){ writeln("H[",j,"][",k,"][",l,"] = ", H[j][k][l]); }; }; }; };确认count的取值范围匹配
检查b*c*d的计算结果是否和Preferenz数组的长度完全一致。如果循环结束后count的值超过Preferenz的下标范围,会导致赋值失败。可以在循环后打印count和数组长度进行对比:writeln("循环结束后count值:", count); writeln("Preferenz数组定义长度:", b*c*d);两者必须相等,否则说明循环逻辑或数组长度定义存在问题。
设置CPLEX的变量显示选项
在CPLEX Studio的运行配置中,手动勾选H数组,确保它被包含在输出结果里。默认情况下,CPLEX可能只显示决策变量,而H作为普通整数数组需要手动指定显示。
内容的提问来源于stack exchange,提问作者Yoom
相关产品推荐
相关产品推荐

