乘用车物流运输计划问题
介于此题与运筹学知识相关,我们初步运用了线性规划和遗传算法对此做出了分析,遗传算法(Genetic Algorithm)是一类借鉴生物界的进化规律(适者生存,优胜劣汰遗传机制)演化而来的随机化搜索方法。它是由美国的J.Holland教授1975年首先提出,其主要特点是直接对结构对象进行操作,不存在求导和函数连续性的限定;具有内在的隐并行性和更好的全局寻优能力;采用概率化的寻优方法,能自动获取和指导优化的搜索空间,自适应地调整搜索方向,不需要确定的规则。计算程序运用了MATLAB。
考虑到成本问题,影响成本高低的首先是轿运车使用数量;其次,在轿运车使用数量相同情况下,1-1型轿运车的使用成本较低,2-2型较高,1-2型略低于前两者的平均值,但物流公司1-2型轿运车拥有量小,为方便后续任务安排,每次1-2型轿运车使用量不超过1-1型轿运车使用量的20%;再次,在轿运车使用数量及型号均相同情况下,行驶里程短的成本低,注意因为该物流公司是全国性公司,在各地均会有整车物流业务,所以轿运车到达目的地后原地待命,无须放空返回。最后每次卸车成本几乎可以忽略。尽量先把1-2型的装满 然后根据题目说的尽量不留位置所以都是选留下空位较少的那个方案,装完1-2然后再来考虑1-1,剩下的装在1-1,考虑放完的,都是先同样车型放一起。最后在混放如果有剩余的话。
考虑到第四问中涉及到路径最优问题,我们选用最短路径算法解决这类问题。
>> flag = Passenger_num~=0;
temp Car_carriers(2,1) - (flag(1)*A_2_2(:,1)*Passenger(1,1)+flag(2)*A_2_2(:,2)*Passenger(2,1)...
+flag(3)*A_2_2(:,3)*Passenger(3,1)+0.1*sum(A_2_2,2));
[~,ib] = min(temp);
temp_res = A_2_2(ib,:);
result = [];
for i = 1:50
loop_end = round(i/0.2);
temp = [];
num = 0;
for j = 0:100
for k = 0:100
if j+k>=loop_end
con_1 = 3*temp_res(1)*i+2*restrict(1,1)*j;
con_2 = 3*temp_res(2)*i+2*restrict(2,1)*k;
if con_1>=Passenger_num(1) && con_2>=Passenger_num(2)
num = num+1;
temp(num,:) = [i j k];
break;
end
end
end
end
if size(temp,1)>0
result = [result;temp(1,:)];
clear temp;
end
end
res(:,1) = result(:,1);
res(:,2) = result(:,2)+result(:,3);
final = [];
final(1,:) = res(1,:);
for i = 2:size(res,1)
temp = sum(res(i,:))-sum(res(i-1,:));
if (res(i,1)>res(i-1,1) && res(i,2)>res(i-1,2)) || temp>=0
continue;
end
final = [final;res(i,:)];
end
??? Undefined function or variable 'Passenger_num'.
>> temp_res = [5 4;12 5];
result = [];
for i = 1:50
loop_end = round(i/0.2);
temp = [];
num = 0;
for j = loop_end:100
con_1 = temp_res(2,1)*i+temp_res(1,1)*j;
con_2 = temp_res(2,2)*i+temp_res(1,2)*k;
if con_1>=Passenger_num(2) && con_2>=Passenger_num(3)
num = num+1;
temp(num,:) = [i j];
break;
end
end
if size(temp,1)>0
result = [result;temp(1,:)];
clear temp;
end
end
res = [];
res(:,1) = result(:,1);
res(:,2) = result(:,2);
final = [];
final(1,:) = res(1,:);
for i = 2:size(res,1)
temp = sum(res(i,:))-sum(res(i-1,:));
if (res(i,1)>res(i-1,1) && res(i,2)>res(i-1,2)) || temp>=0
continue;
end
final = [final;res(i,:)];
end
??? Undefined function or variable 'k'.
>> temp_res = [5 1 2;5 12 1];
result = [];
for i = 1:50
% 剩余多少车
remain_1 = Passenger_num(1)-temp_res(2,1)*i;
remain_2 = Passenger_num(2)-temp_res(2,2)*i;
remain_3 = Passenger_num(3)-temp_res(2,3)*i;
% 先满足3型车
res_1 = floor(remain_3/restrict(3,1));
% 尽可能多放1-1上层只放一种
%%
% 只放第一种
remain_3_1 = remain_3-restrict(3,1)*res_1;
remain_2_1 = remain_2-restrict(2,1)*res_1;
res_2 = floor(remain_1/restrict(1,1)/2);
remain_1_1 = remain_1-2*restrict(1,1)*res_2;
res_3 = 1;
temp = find(A_1_2(:,3)==remain_3_1);
for j = 1:size(temp,1)
temp_res_1 = A_1_2(temp(j),:);
remain_2_1 = remain_2_1-temp_res_1(2);
remain_1_1 = remain_1_1-temp_res_1(1);
flag = remain_1_1<=A_1(:,1) & remain_2_1<=A_1(:,2);
if sum(flag)==0
res_3 = 2;
end
end
result = [result;i res_1 res_2 res_3];
end
res(:,1) = result(:,1);
res(:,2) = result(:,2)+result(:,3)+result(:,4);
final = [];
final(1,:) = [res(1,:) 1];
for i = 2:size(res,1)
temp = sum(res(i,:))-sum(res(i-1,:));
if (res(i,1)>res(i-1,1) && res(i,2)>res(i-1,2)) || temp>=0
continue;
end
final = [final;res(i,:) i];
end
% 1-1和1-2数量限制
temp = final(:,2)*0.2>=final(:,1);
final_1.final = final(temp,:);
final_1.plan = result(final(temp,3),:);
final = final_1;
??? Undefined function or method 'Passenger_num' for input arguments of type 'double'.
>> function final = cc(Passenger_num)
% 请输入运载矩阵
% 装满的所有情况(加入限制)
%1-1 的第一层所有的情况
% Passenger_num = [100 68 0];
xianzhi;
%% 把最少的情况求出来
if Passenger_num(3) == 0
case_1;
elseif Passenger_num(1) == 0
case_2;
else
case_3;
end
end
??? function final = cc(Passenger_num)
|
Error: Function definitions are not permitted in this context.
>> cc
??? Undefined function or variable 'cc'.
>> %%
% 车型的矩阵
Passenger = [4.61 1.7 1.51;3.615 1.605 1.394;4.63 1.785 1.77];
% 轿运车的矩阵
Car_carriers = [19 2.7 2.7;24.3 3.5 2.7];
%% 轿运车最多可以放车型个数(紧长度限制)
restrict = [4 5;5 6;4 5];
% 装满的所有情况(加入限制)
%1-1 的第一层所有的情况
A_1 = [];
num = 0;
%%
for i = 0:restrict(1,1)
num = num+1;
temp_sum = 0;
j = 0;
while j<=restrict(2,1) && temp_sum<Car_carriers(1,1)
temp = [i j];
j = j+1;
temp_sum = i*Passenger(1,1)+j*Passenger(2,1)+0.1*(i+j-1);
end
A_1(num,:) = temp;
end
%%
%1-1 的第二层所有的情况
A_1_2 = [];
num = 0;
for i = 0:restrict(1,1)
for j = 0:restrict(2,1)
num = num+1;
k = 0;
temp_sum = 0;
temp_sum = i*Passenger(1,1)+j*Passenger(2,1)+k*Passenger(3,1)+0.1*(i+j+k-1);
while k<=restrict(3,1) && temp_sum<Car_carriers(1,1)
temp = [i j k];
k = k+1;
temp_sum = i*Passenger(1,1)+j*Passenger(2,1)+k*Passenger(3,1)+0.1*(i+j+k-1);
end
A_1_2(num,:) = temp;
end
end
A_1_2 = unique(A_1_2,'rows');
% 装满的所有情况(加入限制)
%1-2 的第一层所有的情况
A_2 = [];
num = 0;
%%
for i = 0:restrict(1,2)
num = num+1;
temp_sum = 0;
j = 0;
while j<=restrict(2,2) && temp_sum<Car_carriers(2,1)
temp = [i j];
j = j+1;
temp_sum = i*Passenger(1,1)+j*Passenger(2,1)+0.1*(i+j-1);
end
A_2(num,:) = temp;
end
%%
%1-2 的第二层所有的情况
A_2_2 = [];
num = 0;
for i = 0:restrict(1,2)
for j = 0:restrict(2,2)
num = num+1;
k = 0;
temp_sum = i*Passenger(1,1)+j*Passenger(2,1)+k*Passenger(3,1)+0.1*(i+j+k-1);
while k<=restrict(3,2) && temp_sum<Car_carriers(2,1)
temp = [i j k];
k = k+1;
temp_sum = i*Passenger(1,1)+j*Passenger(2,1)+k*Passenger(3,1)+0.1*(i+j+k-1);
end
A_2_2(num,:) = temp;
end
end
A_2_2 = unique(A_2_2,'rows');
>> %%
% 车型的矩阵
Passenger = [4.61 1.7 1.51;3.615 1.605 1.394;4.63 1.785 1.77];
% 轿运车的矩阵
Car_carriers = [19 2.7 2.7;24.3 3.5 2.7];
%% 轿运车最多可以放车型个数(紧长度限制)
restrict = [4 5;5 6;4 5];
% 装满的所有情况(加入限制)
%1-1 的第一层所有的情况
A_1 = [];
num = 0;
%%
for i = 0:restrict(1,1)
num = num+1;
temp_sum = 0;
j = 0;
while j<=restrict(2,1) && temp_sum<Car_carriers(1,1)
temp = [i j];
j = j+1;
temp_sum = i*Passenger(1,1)+j*Passenger(2,1)+0.1*(i+j-1);
end
A_1(num,:) = temp;
end
%%
%1-1 的第二层所有的情况
A_1_2 = [];
num = 0;
for i = 0:restrict(1,1)
for j = 0:restrict(2,1)
num = num+1;
k = 0;
temp_sum = 0;
temp_sum = i*Passenger(1,1)+j*Passenger(2,1)+k*Passenger(3,1)+0.1*(i+j+k-1);
while k<=restrict(3,1) && temp_sum<Car_carriers(1,1)
temp = [i j k];
k = k+1;
temp_sum = i*Passenger(1,1)+j*Passenger(2,1)+k*Passenger(3,1)+0.1*(i+j+k-1);
end
A_1_2(num,:) = temp;
end
end
A_1_2 = unique(A_1_2,'rows');
% 装满的所有情况(加入限制)
%1-2 的第一层所有的情况
A_2 = [];
num = 0;
%%
for i = 0:restrict(1,2)
num = num+1;
temp_sum = 0;
j = 0;
while j<=restrict(2,2) && temp_sum<Car_carriers(2,1)
temp = [i j];
j = j+1;
temp_sum = i*Passenger(1,1)+j*Passenger(2,1)+0.1*(i+j-1);
end
A_2(num,:) = temp;
end
%%
%1-2 的第二层所有的情况
A_2_2 = [];
num = 0;
for i = 0:restrict(1,2)
for j = 0:restrict(2,2)
num = num+1;
k = 0;
temp_sum = i*Passenger(1,1)+j*Passenger(2,1)+k*Passenger(3,1)+0.1*(i+j+k-1);
while k<=restrict(3,2) && temp_sum<Car_carriers(2,1)
temp = [i j k];
k = k+1;
temp_sum = i*Passenger(1,1)+j*Passenger(2,1)+k*Passenger(3,1)+0.1*(i+j+k-1);
end
A_2_2(num,:) = temp;
end
end
A_2_2 = unique(A_2_2,'rows')
A_2_2 =
0 0 5
0 1 4
0 2 3
0 3 2
0 4 2
0 5 1
0 6 0
1 0 4
1 1 3
1 2 2
1 3 1
1 4 1
1 5 0
2 0 3
2 1 2
2 2 1
2 3 0
2 4 0
3 0 2
3 1 1
3 2 0
4 0 1
4 1 0
5 0 0
物流管理计划物流管理计划概述计划是进行任何一项工作或活动的第一步是一切工作的开始对物流管理而言从物流系统规划物流方案的制定物流项目…
物流配送运输计划随着我国经济突飞猛进的发展物流成为社会分工中重要的环节物流系统的优劣也影响了业务流程的运行效率及其成本目前国内大多…
运输方案设计天地华宇集团是全球四大快递公司之一TNT的在华全资子公司定日达是天地华宇面向企业客户提供的高端公路快运服务它以quot…
企业的物流计划书小小亮公司的现状绍兴县纺织成品的销售且大销售范围广绍兴县小小亮纺织品有限公司位于中国轻纺城创建于19xx年下属企业…
物流运营计划一工作目的1完善物流运营模式使工作顺利进行2减少物流环节降低物流成本3使各部门衔接顺畅二物流各部门职能职责组织架构三物…
对物流管理的专业认识及学习计划物流12曾戢媛成为中央财经物流管理专业的学生已经一个多月了,经历了从迷茫到坚定的过程,也慢慢对这个专…
物流科20xx年工作总结一年度工作总结20xx年度在公司的战略计划与物流科的管理下完成了物流计划岗位中的所要求的工作内容其中具体从…
20xx年安全生产工作计划20xx年度达州市汇鑫物流有限公司将继续以科学发展观为指导安全第一为重要思想坚持安全发展理念切实加强运输…
昌吉职业技术学院课程教学进度计划表20xx20xx学年第二学期所属系部工商管理系课程名称物流运输管理实务使用班级10高职物流管理任…
物流部招聘计划书第一部分物流部门经理招聘一公司简介略二招聘计划目的公司自20xx年成立起不断的壮大今为适应经济发展使公司不断的发展…