cplex - 为什么我的模型只能得到一个轻松的解决方案?
问题描述
我尝试编写 Nourinejad 等人 2005 年“单向汽车共享系统中的车辆迁移和员工再平衡”的模型。
我的模型没有错误,但我得到的只是一个轻松的解决方案。我不明白为什么。
int n = 4;
range user = 1..n;
int vehicle_relocation_time[user][user]=...;
int staff_rebalance_time[user][user]=...;
tuple User{
int origin;
int destination;
int departure_time;
int arrival_time;
}
{User} Users = ...;
int c_reloc = 40;
int c_rebal = 40;
dvar boolean x1[user][user];
dvar boolean x2[user][user][user][user];
minimize
sum(i,j in Users) vehicle_relocation_time[i.destination][j.origin]*x1[i.destination,j.origin]*c_reloc
+ sum(i,j,p,q in Users)staff_rebalance_time[j.origin][p.destination]*c_rebal;
subject to {
forall (j in Users)ctConstraint2:
sum (i in Users) x1[i.destination,j.origin] == 1;
forall(i in user)
x1[i,i] == 0;
forall (j in Users)ctConstraint:
sum(i in Users: i != j) x1[i.destination,j.origin] - sum(i in Users: i != j) x1[j.destination,i.origin] == 0;
forall (i,j in Users : i != j && i.destination != j.origin)ctConstraint4:
x1[i.destination,j.origin] * (j.departure_time - vehicle_relocation_time[i.destination][j.origin] - i.arrival_time) >= 0 ;
forall (i,j,p,q in Users: i != j && p!=q)ctConstraint5:
x2[i.destination,j.origin,p.destination,q.origin] * (p.arrival_time-i.arrival_time
- vehicle_relocation_time[i.destination][j.origin] - staff_rebalance_time[j.origin][p.destination]) >= 0;
forall (p,q in Users: p!=q)ctConstraint6:
sum(i,j in Users: i != j) x2[i.destination,j.origin,p.destination,q.origin] == sum(r,s in Users: r != s) x2[p.destination,q.origin,r.destination,s.origin];
forall(i,j in Users: i != j)ctConstraint7:
x1[i.destination,j.origin]*vehicle_relocation_time[i.destination][j.origin] <= sum(p,q in Users: p!=q) x2[i.destination,j.origin,p.destination,q.origin];
forall(i,j in Users: i != j) ctConstraint8:
sum(p,q in Users: p!=q) x2[i.destination,j.origin,p.destination,q.origin] <= x1[i.destination,j.origin];
forall(p,q in Users: p!=q) ctConstraint9:
sum(i,j in Users: i != j) x2[i.destination,j.origin,p.destination,q.origin] <= x1[p.destination,q.origin];
}
解决方案
如果通过“宽松”解决方案,您的意思是并未考虑所有约束,那可能是因为您的模型实际上是不可行的,并且为了提供解决方案而自动放松了一些约束。
这是在 IDE 中求解模型或使用oplrun
.
推荐阅读
- python - 当标准差是另一个量的函数时,如何计算正态分布?
- microsoft-graph-api - 客户预订 API - 创建 bookingCustomer
- sql - Access SQL在表存在时找不到表
- video - 如何分享像Tik-Tok这样的应用内视频,首先下载选定的视频,然后再分享?
- android - 使用 Kotlin 在 Android 测试中声明 @BeforeClass 的正确方法是什么
- amazon-web-services - 创建 Lambda 层时修剪 node_modules
- html - 有没有办法为 HTML 属性创建更短的名称?
- r - 如何调整条形组之间的空间和条形的宽度,并在 ggplot2 中使用一些时髦的代码将其中两个缝合在一起?
- list - 使用 Cryptollist 问题实现 GIFT-COFB 算法
- python - 如何使用 R 或 Python 或 Excel 拆分数据,以便它们在每 n 行之后水平分布?