lingo解决带时间窗的车辆路径优化问题得不到最优解,请问有什么解决方案么
来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/10/06 00:41:16
MODEL:
!定义原始级和派生级;
sets:
points/o,1,2,3,4,5,6,7,8/:f;
point_aim/1..8/:timea,timeb,q,s;
roads(points,points):dist,x1,time_between;
cars/1..3/;
reach/0 1 2 3 4 5 6 7 8/:time_reach;
road_car(roads,cars):x;
task_car(points,cars):y;
task_aim(point_aim,cars):y1;
endsets
!数据输入;
data:
dist=0 40 60 75 90 200 100 160 80
40 0 65 40 100 50 75 110 100
60 65 0 75 100 100 75 75 75
75 40 75 0 100 50 90 90 150
90 100 100 100 0 100 75 75 100
200 50 100 50 100 0 70 90 75
100 75 75 90 75 70 0 70 100
160 110 75 90 75 90 70 0 100
80 100 75 150 100 75 100 100 0;
m=3;
timea=1 4 1 4 3 2 5 1.5;
timeb=4 6 2 7 5.5 2.5 8 4;
q=2 1.5 4.5 3 1.5 4 2.5 3;
s=1 2 1 3 2 2.5 3 0.8;
capacity=8;
time_between=0 0.8 1.2 1.5 1.8 4 2 3.2 1.6
0.8 0 1.3 0.8 2 1 1.5 2.2 2
1.2 1.3 0 1.5 2 2 1.5 1.5 1.5
1.5 0.8 1.5 0 2 1 1.8 1.8 3
1.8 2 2 2 0 2 1.5 1.5 2
4 1 2 1 2 0 1.4 1.8 1.5
2 1.5 1.5 1.8 1.5 1.4 0 1.4 2
3.2 2.2 1.5 1.8 1.5 1.8 1.4 0 2
1.6 2 1.5 3 2 1.5 2 2 0;
enddata
!目标函数;
min=@sum(roads(i,j):
dist(i,j)* @sum(cars(k):x(i,j,k)));
!定义x为0,1变量;
@for(road_car:@bin(x));
!定义y为0,1变量;
@for(task_car:@bin(y));
@for(task_aim:@bin(y1));
!约束条件;
!约束一:表示k承担的任务量之和不大于车的容量;
@sum(point_aim(i):
q(i)*@sum(cars(k)|k#eq#1:
y1(i,k)))<=capacity;
@sum(point_aim(i):
q(i)*@sum(cars(k)|k#eq#2:
y1(i,k)))<=capacity;
@sum(point_aim(i):
q(i)*@sum(cars(k)|k#eq#3:
y1(i,k)))<=capacity;
!约束二:表示任务i只能由一辆车完成;
@for(point_aim(i):
@sum(cars(k):
y1(i,k))=1);
!约束三:表示由中心仓库0出发m辆车;
@sum(task_car(i,k)|i#eq#1:y(i,k))=m;
!约束四:表示每个客户点只有一辆车访问;
@for(points(j)|j#ne#1:
@sum(points(i):
@sum(cars(k):x(i,j,k)))=1);
!约束五:保证进入和离开一客户点的车辆数相同;
@for(points(p):
@sum(points(i)|i#eq#p:
@sum(cars(k):
x(i,p,k)))=1;
@sum(points(j)|j#ne#p:
@sum(cars(k):
x(p,j,k)))=1;
);
!约束六:时间约束;
@for(reach(i):time_reach(i)>@sum(point_aim(i):timea(i)));
@for(reach(j):time_reach(j)<@sum(point_aim(j):timea(j)));
end
运行之后得不到最优解,
约束16 你lingo里面表达的和你模型里面好像不一致
再问: 程序运行结果中也没有Reduced Cost,是不是设置上出了什么问题
再答: 你先能解出来再说好不 而且你要的是最优解还是reduced cost?
再问: 16对应约束一,三辆车,每辆车需要经过的地点的货物需求的和小于总的装载量,是对的
再答: 跟你写的不一致 我没说约束不对好吗
再问: 好吧,是不一致...目前还是不知道有什么错误
再答: 不一致的话自己想想是不是矛盾好吗 我不可能把你的问题完整看一遍再给你想每一句是不是有矛盾 那样要费多少时间
再问: 好高冷...
再答: 随便你 本来就是你自己的事 不爱想我更不爱想 嫌我高冷你找别人去 看谁帮你
再问: 我用排除法发现约束3和约束4之间是有问题的,把它们删掉之后可以得出最优解,但是找不到它们的矛盾点
再答: 你的y除了那一句还在别的地方出现过吗? 反正我觉得很奇怪
包括你写的句子也很奇怪
不要非得每句都有@for 你有的地方下标确定了就直接写下标好了