QQ在线咨询
售前咨询热线
15821572819
售后咨询热线
15821572819

static dynamic 情形下的 (R, T)策略及 Matlab 代码


基于论文: Tarim S A, Kingsman B G. The stochastic dynamic production/inventory lot-sizing problem with service-level constraints[J]. International Journal of Production Economics, 2004, 88(1): 105-119.

针对随机批量生产问题中的 static dynamic 情形,作者提出了定期补货策略 (R, T),其中 R 为补货上限,T 为补货节点。

其中 R 与 I,d 的关系如下:


订货量为:


增加应求解变量 Ptj。表示t阶段的上一个补货节点为 t-j+1. 它与 Ptj 的关系为:


再增加约束套件:



目标函数为:


构造成线性规划模型。matlab Yalmip工具箱 调用 CPLEX 求解,代码如下:



[plain] view plain copy

  1. function TarimKingsman  

  2.   

  3. n=10;a=2500;h=1;alpha=0.95;I0=0;C=0.333;v=4;M=5000;  

  4. d=[800,850,700,200,800,700,650,600,500,200];  

  5. sigma=C*d;  

  6. sigma_sum=zeros(n,n);    

  7. for t=1:n    

  8.     for j=1:t  

  9.         sigma_sum(t,j)=sqrt(sigma(t-j+1:t)*sigma(t-j+1:t)');    

  10.     end  

  11. end   

  12.   

  13.   

  14. delta=binvar(n,1);  

  15. I=sdpvar(n,1);  

  16. P=binvar(n,n);  

  17. P=tril(P);  

  18. TC=a*sum(delta)+h*sum(I)+v*I(n)+v*sum(d(1:n))-v*I0;  

  19.   

  20. assign(I,[1490;640;599;399;2033;1333;683;1142;642;442]);  

  21. assign(delta,[1;0;1;0;1;0;0;1;0;0]);  

  22. temp=zeros(n,n);temp(1,1)=1;temp(2,2)=1;temp(3,1)=1;temp(4,2)=1;temp(5,1)=1;  

  23. temp(6,2)=1;temp(7,3)=1;temp(8,1)=1;temp(9,2)=1;temp(10,3)=1;  

  24. assign(P,temp);  

  25.   

  26. IC=[];PC=[];PC2=[];  

  27. Gd=zeros(n,n);Gdd=zeros(n,n);  

  28. %IC1=I(1)+d(1)>=I0;%IC2=I(1)-I0+d(1)<=M*delta(1);  

  29. for t=1:n  

  30.     for j=1:t  

  31.         Gd(t,j)=norminv(alpha)*sigma_sum(t,j)+sum(d(t-j+1:t));    

  32.         Gdd(t,j)=Gd(t,j)-sum(d(t-j+1:t));  

  33.         PC=[PC;P(t,j)>=delta(t-j+1)-sum(delta(t-j+2:t))];    

  34.     end  

  35.     IC=[IC;I(t)>=Gdd(t,1:t)*P(t,1:t)'];PC2=[PC2;sum(P(t,1:t))==1];  

  36.     %if t>1  

  37.        %IC1=[IC1;I(t)+d(t)>=I(t-1)];   

  38.        %IC2=[IC2;I(t)+d(t)-I(t-1)<=M*delta(t)];  

  39.     %end  

  40. end  

  41.   

  42. constraints=[I(1)+d(1)>=I0;I(2:n)+d(2:n)'>=I(1:n-1)  

  43.     I(1)-I0+d(1)<=M*delta(1);I(2:n)+d(2:n)'-I(1:n-1)<=M*delta(2:n);  

  44.     IC;PC;PC2;I>=0];  

  45. options=sdpsettings('solver','cplex');  

  46. optimize(constraints,TC,options);  

  47.   

  48. fprintf('各阶段库存量:\n');  

  49. for i=1:n  

  50.     fprintf('  %.2f',value(I(i)));  

  51. end  

  52. fprintf('\n');  

  53. fprintf('各阶段补货上限:\n');  

  54. for i=1:n  

  55.     fprintf('  %.2f',value(I(i)+d(i)));  

  56. end  

  57. fprintf('\n');  

  58. fprintf('各阶段是否生产:\n');  

  59. for i=1:n  

  60.     fprintf('  %.2f',value(delta(i)));  

  61. end  

  62. fprintf('\n');  

  63. fprintf('生产总成本:');  

  64. fprintf('%.2f',value(TC));  

  65. fprintf('\n');  

  66.   

  67. end  





注:本文转载自https://blog.csdn.net/robert_chen1988/article/details/52865490,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除。
上一篇 下一篇

分享