【发布时间】:2021-04-17 07:53:34
【问题描述】:
我是编程初学者,我的代码显示错误 cplex(默认)无法提取表达式。我的模型应该通过比较不同的运输方式来最小化排放成本(帕累托优化)。当我只用最小成本或最小排放量运行模型时,它工作得很好,但是一旦我分别添加排放量或成本的主观因素,就会发生错误。 我用较小的输入数据测试了模型,效果很好。
错误是:
- Cplex(默认)无法提取表达式:emission_constraint: TotalEmission
- CPLEX(default) 无法提取表达式:forall(a in 1..13462) emits_constraint: TotalEmission
- OPL 无法提取表达式:emissions_constraint: TotalEmission
有人可以帮我找出问题所在吗?谢谢!
以下是我的代码的一部分:
// Parameters
int a=...; // Set of arcs available from departure to destination
int m=...; // Set of transport modes for direct shipment (trucks)
int n=...; // Set of transport modes for multi-mode shipments (train, vessel, airplane)
range arc =1..a;
range transport_dir =1..m;
range transport_mm=1..n;
// decision variables
dvar boolean Y[arc];
dvar boolean X_dir[arc][transport_dir];
dvar boolean X_mm[arc][transport_mm];
// expression costs
dexpr float TotalCost_dir = sum(a in arc, m in transport_dir) cost_dir[a][m]*shipments_dir[a]*X_dir[a][m];
dexpr float TotalCost_mm = sum(a in arc, n in transport_mm) cost_mm[a][n]*shipments_dir[a]*X_mm[a][n];
dexpr float TotalCost = TotalCost_dir + TotalCost_mm;
//expression emissions
dexpr float TotalEmission_dir = sum(a in arc, m in transport_dir) emissions_dir[a][m]*shipments_dir[a]*X_dir[a][m];
dexpr float TotalEmission_mm = sum(a in arc, n in transport_mm) emissions_mm[a][n]*shipments_dir[a]*X_mm[a][n];
dexpr float TotalEmission = TotalEmission_dir + TotalEmission_mm;
// objective
//minimize TotalEmission;
minimize TotalCost;
subject to {
//General Emission constraint - subject to min. cost
forall (a in arc)
emissions_constraint:
TotalEmission <= 976222726;}
【问题讨论】: