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

集成pevch与pevdis方程后CPLEX无解决方案技术求助

问题描述

在集成pevch[i][j](电动汽车充电功率)和pevdis[i][j](电动汽车放电功率)的约束方程后,CPLEX未输出任何解决方案。以下是对应的OPL代码:

int t=24;
int n=10;
int j=0;
range number =1..n; // 电动汽车编号范围
range tavail=1..t; // 时段范围(1-24)
float soc[number][tavail]=...; // 各时段每辆电动汽车的SOC(荷电状态),未初始化
// 24个时段的预测负荷
float pl[tavail]=[10000000,7000000,9000000,6000000,12000000,6000000,4000000,15000000,9000000,12000000,6000000,8000000,10000000,7000000,9000000,6000000,12000000,6000000,4000000,15000000,9000000,12000000,6000000,8000000];
// 24个时段的发电量
float pg[tavail]=[10000000,9500000,8500000,11000000,600000,7500000,10000000,9500000,8500000,11000000,600000,7500000,10000000,9500000,8500000,11000000,600000,7500000,10000000,9500000,8500000,11000000,600000,7500000];
// 24个时段的目标负荷
float pt[tavail]=[10000000,10000000,10000000,10000000,10000000,10000000,10000000,10000000,10000000,10000000,10000000,10000000,10000000,10000000,10000000,10000000,10000000,10000000,10000000,10000000,10000000,10000000,10000000,10000000];
// 24个时段的母线电压
float v[tavail]=[240,232,229,233,230,235,228,234,227,229,231,230,226,232,233,230,236,233,231,232,232,233,233,230];
// 24个时段的目标母线电压
float vt[tavail]=[230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230];
// 电动汽车充电功率决策变量(范围0-100000)
dvar float pevch[tavail][number] in 0..100000;
// 电动汽车放电功率决策变量(范围0-100000)
dvar float pevdis[tavail][number] in 0..100000;
// 目标函数
minimize sum(i in tavail)((pt[i]-pl[i])-sum(j in number)pevch[i][j]+sum(j in number)pevdis[i][j]);
subject to

forall(i in tavail,j in number)
if(pt[i]-pl[i]<0 && soc[j][i]>0.7&& v[i]<vt[i])
pevch[i][j]==(0.9-soc[j][i])*100000/(24-i);
else
pevdis[i][j]==0;


forall(i in tavail,j in number)
if(pt[i]-pl[i]>0 && soc[j][i]<=0.7 && v[i]>vt[i])
pevch[i][j]==(0.7-soc[j][i])*100000/(24-i);
else
pevch[i][j]==0;
// 原代码末尾多余的}已移除

导致无可行解的常见原因及修正方向

  • 约束冲突:两个forall约束对pevch[i][j]的赋值可能存在重叠场景。比如某个时段i和车辆j同时满足两个if的条件,此时pevch会被要求等于两个不同值,直接导致模型不可行。需重新梳理逻辑,确保各条件互斥,或调整约束优先级。
  • 目标函数语法错误:原目标函数中sum(j in number)-pevch[i][j]的写法逻辑错误,应改为-sum(j in number)pevch[i][j],否则会引发计算混乱,甚至模型解析失败。
  • 放电变量约束缺失:当前仅强制pevdis[i][j]==0的场景,未定义pevdis可取值的条件,导致pevdis始终为0,既失去决策意义,也可能让目标函数无法达到优化空间。
  • SOC未初始化:soc[number][tavail]=...未给出具体数值,若实际SOC值不满足约束中的阈值条件(如soc[j][i]>0.7或<=0.7均不成立),会导致所有pevch和pevdis被强制为0,或引发约束矛盾。
  • 除以零风险:当i=24时,24-i=0,约束中的计算式会出现除以零错误,需单独处理i=24的特殊情况(比如限制该时段不进行充放电操作)。
  • 语法错误:原代码末尾多余的}属于语法错误,会导致OPL编译失败,直接无法运行求解。

内容的提问来源于stack exchange,提问作者Haripriya M R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 03:21:30