⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jm97b.m

📁 数学建模的源代码
💻 M
字号:
function [mincost,bestorder]=jm97b(r,e)
%97年中国大学生数学建模竞赛B题(枚举法)
%《数学的实践与认识》1998,1
%费用函数计算采用迭代算法
%用法:[mincost,bestorder]=jm97bcount(r,e)
%     mincost--最小费用
%     bestorder--最优次序
%     r--水平切割费用比
%     e--垂直换刀费用
%结果说明:1-左,2-右,3-前,4-后,5-上,6-下
%相关M文件:jm97brule

% L.J.HU
mincost=inf;minorder=[];
p=perms(1:6);
for i=1:length(p)
   order=p(i,:);
    cost=jm97bcostf(order,r,e);
  if cost<mincost
    mincost=cost;
    bestorder=order;
  elseif cost==mincost
    bestorder=[minorder;order];
  end;
end;

function y=jm97bcostf(order,r,e)
x=[10,14.5,19];%长宽高
l=[6,7,6];%左前上深度
k=[1,5.5,9];%右后下深度
y=0;
i=1;
if order(i)==1
  x(1)=x(1)-l(1);
  l(1)=0;
  y=y+x(2)*x(3);
 
elseif  order(i)==2
  x(1)=x(1)-k(1);
  k(1)=0;
  y=y+x(2)*x(3);
 
elseif order(i)==3
  x(2)=x(2)-l(2);
  l(2)=0;
  y=y+x(1)*x(3);
 
elseif order(i)==4
  x(2)=x(2)-k(2);
  k(2)=0;
  y=y+x(1)*x(3);
  
elseif order(i)==5
  x(3)=x(3)-l(3);
  l(3)=0;
  y=y+x(1)*x(2)*r;

elseif order(i)==6
  x(3)=x(3)-k(3);
  k(3)=0;
  y=y+x(1)*x(2)*r;
end;


i=2;
if order(i)==1
  x(1)=x(1)-l(1);
  l(1)=0;
  y=y+x(2)*x(3);
  if(order(i-1)==3)|(order(i-1)==4)
   y=y+e;
  end;
elseif  order(i)==2
  x(1)=x(1)-k(1);
  k(1)=0;
  y=y+x(2)*x(3);
  if (order(i-1)==3)|(order(i-1)==4)
   y=y+e;
  end;
elseif order(i)==3
  x(2)=x(2)-l(2);
  l(2)=0;
  y=y+x(1)*x(3);
 if(order(i-1)==1)|(order(i-1)==2)
   y=y+e; 
 end;
elseif order(i)==4
  x(2)=x(2)-k(2);
  k(2)=0;
  y=y+x(1)*x(3);
  if(order(i-1)==1)|(order(i-1)==2)
   y=y+e; 
  end;
elseif order(i)==5
  x(3)=x(3)-l(3);
  l(3)=0;
  y=y+x(1)*x(2)*r;

elseif order(i)==6
  x(3)=x(3)-k(3);
  k(3)=0;
  y=y+x(1)*x(2)*r;
end;



i=3;
if order(i)==1
  x(1)=x(1)-l(1);
  l(1)=0;
  y=y+x(2)*x(3);
  if(order(i-1)==3)|(order(i-1)==4)
     y=y+e;
  elseif((order(i-1)==5)|(order(i-1)==6))&((order(i-2)==3)|(order(i-2)==4))
     y=y+e;
  end;
elseif  order(i)==2
  x(1)=x(1)-k(1);
  k(1)=0;
  y=y+x(2)*x(3);
  if (order(i-1)==3)|(order(i-1)==4)
   y=y+e;
   elseif((order(i-1)==5)|(order(i-1)==6))&((order(i-2)==3)|(order(i-2)==4))
     y=y+e;
   end;
elseif order(i)==3
  x(2)=x(2)-l(2);
  l(2)=0;
  y=y+x(1)*x(3);
 if(order(i-1)==1)|(order(i-1)==2)
   y=y+e; 
  elseif((order(i-1)==5)|(order(i-1)==6))&((order(i-2)==1)|(order(i-2)==2))
     y=y+e;
  end;
elseif order(i)==4
  x(2)=x(2)-k(2);
  k(2)=0;
  y=y+x(1)*x(3);
  if(order(i-1)==1)|(order(i-1)==2)
   y=y+e; 
  elseif((order(i-1)==5)|(order(i-1)==6))&((order(i-2)==1)|(order(i-2)==2))
     y=y+e;
  end;
elseif order(i)==5
  x(3)=x(3)-l(3);
  l(3)=0;
  y=y+x(1)*x(2)*r;

elseif order(i)==6
  x(3)=x(3)-k(3);
  k(3)=0;
  y=y+x(1)*x(2)*r;
end;

for i=4:6
if order(i)==1
  x(1)=x(1)-l(1);
  l(1)=0;
  y=y+x(2)*x(3);
  if(order(i-1)==3)|(order(i-1)==4)
     y=y+e;
  elseif((order(i-1)==5)|(order(i-1)==6))&((order(i-2)==3)|(order(i-2)==4))
     y=y+e;
  elseif((order(i-1)==5)|(order(i-1)==6))&((order(i-2)==5)|(order(i-2)==6))&((order(i-3)==3)|(order(i-3)==4))
     y=y+e;
  end;
elseif  order(i)==2
  x(1)=x(1)-k(1);
  k(1)=0;
  y=y+x(2)*x(3);
  if (order(i-1)==3)|(order(i-1)==4)
   y=y+e;
   elseif((order(i-1)==5)|(order(i-1)==6))&((order(i-2)==3)|(order(i-2)==4))
     y=y+e;
     elseif((order(i-1)==5)|(order(i-1)==6))&((order(i-2)==5)|(order(i-2)==6))&((order(i-3)==3)|(order(i-3)==4))
     y=y+e;
end;
elseif order(i)==3
  x(2)=x(2)-l(2);
  l(2)=0;
  y=y+x(1)*x(3);
 if(order(i-1)==1)|(order(i-1)==2)
   y=y+e; 
  elseif((order(i-1)==5)|(order(i-1)==6))&((order(i-2)==1)|(order(i-2)==2))
     y=y+e;
    elseif((order(i-1)==5)|(order(i-1)==6))&((order(i-2)==5)|(order(i-2)==6))&((order(i-3)==1)|(order(i-3)==2))
     y=y+e;
end;
elseif order(i)==4
  x(2)=x(2)-k(2);
  k(2)=0;
  y=y+x(1)*x(3);
  if(order(i-1)==1)|(order(i-1)==2)
   y=y+e; 
  elseif((order(i-1)==5)|(order(i-1)==6))&((order(i-2)==1)|(order(i-2)==2))
     y=y+e;
  elseif((order(i-1)==5)|(order(i-1)==6))&((order(i-2)==5)|(order(i-2)==6))&((order(i-3)==1)|(order(i-3)==2))
     y=y+e;
  end;
elseif order(i)==5
  x(3)=x(3)-l(3);
  l(3)=0;
  y=y+x(1)*x(2)*r;

elseif order(i)==6
  x(3)=x(3)-k(3);
  k(3)=0;
  y=y+x(1)*x(2)*r;
end;
end;
  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -