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

AMPL语法报错:定义变量rita时公式编写出现语法错误如何修复

问题原因与修复方案

1 语法错误根源

你定义rita变量时重复声明了索引域:var rita{k in K, d in D,m in M}已经明确了每个rita对应的索引,等号右侧不需要再加{k in K, d in D,m in M}遍历前缀,这是语法报错的直接原因。

另外你当前的写法仍然属于非线性分式表达,哪怕修复语法错误,CPLEX作为线性规划求解器也无法求解这类模型,需要做线性化处理。

2 核心修改点

  • 删去非线性的rita变量定义,将速率约束直接线性化:原约束rita[k,d,m] >= rmin等价于 p[k,d,m] * gmk[m,k] >= rmin * (I[k,d,m] + rou)(分母是干扰+噪声,恒为正,不等号方向不变),转换后为线性约束,可直接被CPLEX求解。
  • 修复cal2约束的索引不匹配问题:原约束左侧I[k,2,m]没有n维度,右侧却出现了n in M的遍历索引,需要根据你的干扰物理模型调整,这里假设你是对所有非m的基站干扰求和,修改为对应求和格式。

修改后的完整代码

set M;
set K;
set D;
param Pmax;
param rmin;
param rou;
param x_k {s in K} :=Uniform (0, 1000);
param y_k {s in K} :=Uniform (0, 1000);
param x_b{M};
param y_b{M};
param R1{i in M, t in K} =
  sqrt((x_b[i] - x_k[t])^2 + (y_b[i]-y_k[t])^2);
param gmk{i in M, t in K} =
   103.8 + 20.9 *log10(R1[i,t]/1000);
param R2{i in K, t in K} =
   sqrt((x_k[i] - x_k[t])^2 + (y_k[i]-y_k[t])^2);
param gjk{j in K, k in K:j<>k} =
   if R2[j,k] <=50 then 98.45 + 20*log10(R2[j,k]/1000)
      else 55.28 + 40*log10(R2[j,k]);
param R4{i in M, t in M} =
     sqrt((x_b[i] - x_b[t])^2 + (y_b[i]-y_b[t])^2);
param gnm{i in M, t in M:i<>t} =
     40*log10(R4[i,t]/1000) + 169.36;
var beta{M,D};
var p{K,D,M};
var I{K,D,M};

minimize total: (sum{k in K, d in D,m in M} I[k,d,m]) - (sum {m in M,k in K, d in D}p[k,d,m])  ;

subject to C1: sum{k in K, d in D,m in M} p[k,d,m] <= Pmax;

subject to C2{k in K,d in D,m in M}: p[k,d,m] >= 0;

# 替换原rita约束的线性化版本
subject to C3{k in K, d in D,m in M}: p[k,d,m] * gmk[m,k] >= rmin * (I[k,d,m] + rou);

subject to C4{d in D,m in M}: sum{k in K} p[k,d,m] >= beta[m,d];

subject to C5{d in D,m in M}: sum{k in K} p[k,d,m] <= 1000 * beta[m,d];

subject to C6{m in M}: sum{d in D} beta[m,d] = 1;

subject to cal1{k in K, m in M}: I[k,1,m] = sum{j in K} p[j,1,m] * gmk[m,j] + sum{j in K:j<>k} p[j,2,m] * gjk[j,k];

# 修复索引不匹配问题,对所有非m基站的干扰求和
subject to cal2{k in K, m in M}: I[k,2,m] = sum{j in K} p[j,2,m] * gmk[m,j] + sum{j in K, n in M:n<>m} p[j,1,m] * gnm[n,m];

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:45:06