GAMS Studio 39.3中Error 148维度不匹配问题求助
修复GAMS Error 148(维度不匹配)问题
错误根源分析
你的代码中有多处维度声明与引用不匹配的问题,直接触发Error 148:
- 标量
Pev被错误引用:Pev声明为无维度的标量,但在方程中被当作带(ev,t,w)三个索引的符号使用,维度完全不匹配。 - 参数
Asev维度缺失且引用错误:Asev未声明维度,且在方程中用字符串'ev,t,w'作为索引,不符合GAMS的索引规则。 - 变量引用错误:方程中误将标量
Pev当作变量使用,实际应该引用你声明的3维度变量As。 - 中文单引号问题:代码中部分集合/参数的注释使用了中文单引号
’,GAMS仅识别英文单引号',可能引发语法解析问题。
修复后的代码
Sets EV 'EV unit'/ev1*ev1/ Asev1 'set ev index for values of sch' /1*2/ taev 'set of arrival'/taev1*taev1/ tdev 'set of departure'/tdev1*tdev1/ t 'time periods' /t1*t2/ w 'scenarios' /w1*w2/; SCALAR Pev 'EV power traded in the Energy market'/7.8/; PARAMETER Asev(Asev1) 'alphasch values of alphasch' /1 0 2 1/; PARAMETER weigth(w) 'weight of scenarios' /w1 0.05 w2 0.05/; POSITIVE VARIABLES As(ev,t,w) 'EV scheduling in time period t'; EQUATION Pev1 'power output of EV'; # 若需结合Asev1维度求和,按此写法;若逻辑是EV对应单个Asev值,可调整Asev维度为Asev(ev)并修改赋值 Pev1(t,w).. Pev = e= sum((ev, a), As(ev,t,w)*Asev(a));
关键修复说明
- 修正
Pev的引用:方程中不再使用Pev(ev,t,w),改为引用正确的变量As(ev,t,w)。 - 补全
Asev维度:根据你的赋值逻辑,将Asev声明为Asev(Asev1),匹配赋值时的1、2索引;如果每个EV对应单独的Asev值,可改为Asev(ev),赋值调整为ev1 0或ev1 1。 - 修正方程索引逻辑:确保sum中的索引数量与对应符号的声明维度一致,避免维度不匹配。
- 替换中文单引号:所有注释的单引号改为英文格式,消除语法解析隐患。
内容的提问来源于stack exchange,提问作者Asad
相关产品推荐
相关产品推荐

