@RobPratt
When I am running your code, and get these error info .
1 OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;
68
69 %let numVars = 6;
70
71 data have;
72 input id target var1-var&numVars;
73 cards;
NOTE: 数据集 WORK.HAVE 有 2 个观测和 8 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.00 秒
用户 CPU 时间 0.00 秒
系统 CPU 时间 0.00 秒
内存 672.21k
OS 内存 19876.00k
时间戳 2025-09-10 上午07:23:33
Step Count 24 Switch Count 2
页错误数 0
页回收数 139
页交换数 0
主动上下文切换数 10
被动上下文切换数 0
块输入操作数 0
块输出操作数 264
76 ;
77
78 proc optmodel printlevel=0;
79 set IDS;
80 num target {IDS};
81 set VARS_ALL = 1..&numVars;
82 set VARS {IDS};
83 num a {id in IDS, VARS[id]};
84 read data have into IDS=[id] target {j in VARS_ALL} <a[id,j]=col('var'||j)>;
ERROR: 数组元素“VARS[1]”在第 83 行第 22 列没有值。
NOTE: 从数据集 WORK.HAVE. 读取了 1 个观测
85 for {id in IDS} VARS[id] = {j in VARS_ALL: a[id,j] ne .};
ERROR: 数组元素“VARS[1]”在第 83 行第 22 列没有值。
86
87 num id_this;
88 var Select {VARS[id_this]} binary;
89 con SumToTarget:
90 sum {j in VARS[id_this]} a[id_this,j] * Select[j] = target[id_this];
91
92 set SOLS {IDS};
93 num SelectSol {id in IDS, SOLS[id], VARS[id]};
94 cofor {id in IDS} do;
95 put id=;
96 id_this = id;
97 solve with clp / findallsolns;
98 SOLS[id_this] = 1.._NSOL_;
99 for {s in SOLS[id_this], j in VARS[id_this]} SelectSol[id_this,s,j] = Select[j].sol[s];
100 end;
NOTE: The COFOR statement is executing in single-machine mode.
id=1
NOTE: 问题生成将使用 2 个线程。
NOTE: 先前的错误可能会导致问题无法正确解决。
ERROR: 数组元素“VARS[1]”在第 88 行第 16 列没有值。
NOTE: 由于先前的错误,无法创建问题实例。
101
102 create data want(drop=j) from [id solution j]={id in IDS, s in SOLS[id], j in VARS[id]} var=('var'||j) value=a[id,j]
102 ! sol=SelectSol;
ERROR: 数组元素“SOLS[1]”在第 102 行第 67 列没有值。
103 quit;
NOTE: 由于出错,SAS 系统停止处理该步。
NOTE: “PROCEDURE OPTMODEL”所用时间(总处理时间):
实际时间 0.01 秒
用户 CPU 时间 0.01 秒
系统 CPU 时间 0.00 秒
内存 1077.60k
OS 内存 20648.00k
时间戳 2025-09-10 上午07:23:33
Step Count 25 Switch Count 6
页错误数 4
页回收数 501
页交换数 0
主动上下文切换数 48
被动上下文切换数 0
块输入操作数 928
块输出操作数 168
104
105 OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;
115
... View more