Home Development of a Dynamic Information Fractal Framework to Monitor and Optimise Sustainability in Food Distribution Network
Article
Licensed
Unlicensed Requires Authentication

Development of a Dynamic Information Fractal Framework to Monitor and Optimise Sustainability in Food Distribution Network

  • Sameh M. Saad EMAIL logo and Ramin Bahadori
Published/Copyright: July 25, 2019

Abstract

The aim of this research paper is to develop a new framework for an information fractal to improve the food distribution network sustainability through two variables; Greenfield service constraints and minimum vehicle weight fill level on board. This paper applies the proposed framework to a hypothetical distribution network. Further, Supply Chain GURU Software is adapted to implement Greenfield analysis to identify the optimal number and location for setting up the new facilities through different Greenfield service constraints. A new Green Split Delivery-Vehicle Routing Problem also is developed to minimise CO2 emission and implemented using the simulated annealing algorithm. The results revealed that the proposed dynamic control system has led to an enhancement in both collaboration and integration to decide upon the optimal number and location of distribution facilities as well as optimal vehicle weight fill levels to improve the sustainability throughout the food distribution chain.

Appendix

A MATLAB codes

I Create the Distribution Centre model

function model=CreateDCModel(I,J) % I= number of Retailers, J= number of Vehicle E=[];                % CO2 Emission rate of vehicle TW =[];            % Tare Weight of vehicle r=[];                % Retailer Demands c=[];                % Vehicle Capacity x=[];                % Longitudinal coordinates of retailers x0=[];            % Latitude coordinates of distribution centre y=[];                % Longitudinal coordinates of retailers y0=[];            % Latitude coordinates of distribution centre d=zeros(I,I); d0=zeros(1,I);                     for i=1:I         %%% Distance among retailers                                     for i2= i+1:I                                             d(i,i2)=distdim(distance(x(i),y(i),x(i2),y(i2)),'deg','kilometers');                                             d(i2,i)=d(i,i2);                                     end                         %%%Distance from depot to each retailers                                     d0(i)=distdim(distance(x0,y0,x(i),y(i)),'deg','kilometers');                     end end

II Create Random solution

 function q=CreateRandomSolution(model)          q=randperm(I+J-1);          DelPos=find(q>I); %DelPos= Delimiter Position          From=[0 DelPos]+1;          To=[DelPos I+J]-1;          L=cell(J,1); %L= List of retailers who received the service from the vehicle j                      for j=1:J                          L{j}=q(From(j):To(j))                      end end

III Generate the objective function. In the below code only CO2 emission calculation is presented

function sol=CO2C(q,model)                CH=0;                ucap=zeros(J,1);                C=zeros(J,1);                DC=0;                sh=0;                %%% Vehicle load moments            for j=1:J                                if ~isempty(L{j})                                            last_costm=L{j}(end);                                                %%% Output loading weight from the depot                                                s(j)=0;                                                for ii=1:length(L{j})                                                                s(j)=s(j)+r(L{j}(ii));                                                                    ucap(j)=sum(r(L{j}));                                                                    CH=CH+max(ucap(j)-c,0);    %%%Vehicle capacity constraint                                                end                                                        sh=s(j);                                                    %%%CO2 emission from depot to first retailer                                                C(j)=((TW+sh)*E)*d0(L{j}(1));                                                sh=sh-r(L{j}(1));                                                r(L{j}(1))=0;                                                                                                %%% CO2 emission among retailers                                            for k=2:numel(L{j})                                            %%% Apply constraint to guarantee that vehicle cannot continue to serve more customers in length of each route if the weight of its shipment on board, coming down is from a specified minimum shipment weight.                                                            DC=DC+max(Ms-sh,0);                                                                                        if sh>=r(L{j}(k))                                                                                                    sh=sh-r(L{j}(k));                                                                                                    r(L{j}(k))=0;                                                                                    else                                                                                                    r(L{j}(k))=r(L{j}(k))-sh;                                                                                                    sh=0;                                                                                                        last_costm=L{j}(k);                                                                                    end                                            C(j)=C(j)+((vw+sh)*E)*d(L{j}(k-1),L{j}(k));                                            end                                                %%% CO2 emission from last retailer to depot                                                C(j)=C(j)+(TW*E)*d0(last_costm)                                end                                    %%% Identify retailers which their demand is not fully fulfilled                                    rn=nonzeros(r);                                    rr=find(r==0);                                    A=d;                                    A(rr,:)=[];                                    A(:,rr)=[];                                    A0=d0;                                    A0(:,rr)=[];                                    In=numel(rn);                                    Jn=numel(rn);                                    rb=zeros(In,1);                                    rb=rn;                end end

IV Generate CO2 emission function

 function [z sol]=MyCO2(q,model)           global    NFE;           NFE=NFE+1;           sol=CO2C(q,model);           eta=[];           beta=[];           z=sol.TotalC;           z=z+ beta*sol.CH+ eta*sol.DC;                        end

V Create neighbourhood Solution (xnew)

function qnew=CreateNeighbor(q)                m=randi([1 3]);            switch m                            case 1                                            % Do Swap                                            qnew=Swap(q);                            case    2                                            % Do Reversion                                            qnew=Reversion(q);                            case    3                                            % Do Insertion                                            qnew=Insertion(q);            end end      function    qnew=Swap(q)            n=numel(q);            i=randsample(n,2);            i1=i(1);            i2=i(2);            qnew=q;            qnew([i1 i2])=q([i2 i1]); end function qnew=Reversion(q)            n=numel(q);            i=randsample(n,2);            i1=min(i(1),i(2));            i2=max(i(1),i(2));            qnew=q;            qnew(i1:i2)=q(i2:-1:i1); end function    qnew=Insertion(q)            n=numel(q);            i=randsample(n,2);            i1=i(1);            i2=i(2);            if    i1<i2                            qnew=[q(1:i1-1) q(i1+1:i2) q(i1) q(i2+1:end)];            else                            qnew=[q(1:i2) q(i1) q(i2+1:i1-1) q(i1+1:end)];            end end

VI Simulated Annealing algorithm

clc; clear; close all; global NFE; NFE=0;       Problem Definition model=SelectModel();                                                                            % Select Model of the Problem CO2Function=@(q) MyCO2(q,model);                            %    Objective Function, CO2 emission                              function      SA Parameters MaxIt=1000;                        % Maximum Number of Iterations by default MaxIt2=80;                        % Maximum Number of Inner Iterations by default T0=100;                                    % Initial Temperature by default alpha=0.99;                    % Temperature Damping Rate by default         Initialisation %    Create Initial Solution x.Position=CreateRandomSolution(model); [x.CO2 x.Sol]=CO2Function(x.Position); %    Update Best Solution Ever Found BestSol=x; %    Array to Hold Best CO2 Values BestCO2=zeros(MaxIt,1); %    Array to Hold NFEs nfe=zeros(MaxIt,1); %    Set Initial Temperature T=T0;       SA Main Loop for it=1:MaxIt                 for it2=1:MaxIt2                                 % Create Neighbor                                 xnew.Position=CreateNeighbor(x.Position);                                 [xnew.CO2 xnew.Sol]=CO2Function(xnew.Position);                                 if xnew.CO2<=x.CO2                                                 % xnew is better, so it is accepted                                                 x=xnew;                                         else                                                 % xnew is not better, so it is accepted conditionally                                                 delta=xnew.CO2-x.CO2;                                                 p=exp(-delta/T);                                                 if    rand<=p                                                                 x=xnew;                                                 end                                 end                 end                 %    Update Best Solution                                 if    x.CO2<=BestSol.CO2                                                 BestSol=x;                                 end                 %    Store Best CO2                 BestCO2(it)=BestSol.CO2;                 if    BestSol.Sol.IsFeasible                                 FLAG='    *';                 else                                 FLAG='';                 end                 % Store  NFE                 nfe(it)=NFE;                 % Display Iteration Information                 disp(['Iteration ' num2str(it) ': Best CO2 = ' num2str(BestCO2(it)) FLAG ]);                 % Reduce Temperature                 T=alpha*T;                 %Plot Solution %                    figure(1); %                    PlotSolution(BestSol.Sol,model); %                    pause(0.01); end     Results figure; plot(nfe,BestCO2,'LineWidth',2); xlabel('NFE'); ylabel('Best CO2');

References

[1] Seuring S, Müller M. From a literature review to a conceptual framework for sustainable supply chain management. J Clean Prod. 2008;16:1699–710.10.1016/j.jclepro.2008.04.020Search in Google Scholar

[2] Beske P, Land A, Seuring S. Sustainable supply chain management practices and dynamic capabilities in the food industry: a critical analysis of the literature. Int J Prod Econ. 2014;152:131–43.10.1016/j.ijpe.2013.12.026Search in Google Scholar

[3] Van Der Vorst JG, Tromp SO, Zee DJ. Simulation modelling for food supply chain redesign; integrated decision making on product quality, sustainability and logistics. Int J Prod Res. 2009;47:6611–31.10.1080/00207540802356747Search in Google Scholar

[4] Mattevi M, Jones JA. Traceability in the food supply chain: awareness and attitudes of UK small and medium-sized enterprises. Food Control. 2016;64:120–7.10.1016/j.foodcont.2015.12.014Search in Google Scholar

[5] Validi S, Bhattacharya A, Byrne PJ. A case analysis of a sustainable food supply chain distribution system – a multi-objective approach. Int J Prod Econ. 2014;152:71–87.10.1016/j.ijpe.2014.02.003Search in Google Scholar

[6] Bektaş T, Laporte G. The pollution-routing problem. Transp Res Part B: Methodol. 2011;45:1232–50.10.1016/j.trb.2011.02.004Search in Google Scholar

[7] Kara İ, Kara BY, Yetis MK. Energy minimizing vehicle routing problem. In: Dress A, Xu Y, Zhu B, editors. Combinatorial optimization and applications. COCOA 2007. Lecture notes in computer science, vol 4616. Berlin, Heidelberg: Springer, 2007.Search in Google Scholar

[8] Peng Y, Wang X. Research on a vehicle routing schedule to reduce fuel consumption. Proceedings of 2009 international conference on measuring technology and mechatronics automation. 11 Apr 2009;3:825–7. IEEE.10.1109/ICMTMA.2009.11Search in Google Scholar

[9] Xiao Y, Zhao Q, Kaku I, Xu Y. Development of a fuel consumption optimization model for the capacitated vehicle routing problem. Comput Oper Res. 2012;39:1419–31.10.1016/j.cor.2011.08.013Search in Google Scholar

[10] Kuo Y. Using simulated annealing to minimize fuel consumption for the time-dependent vehicle routing problem. Comput Ind Eng. 2010;59:157–65.10.1016/j.cie.2010.03.012Search in Google Scholar

[11] Norouzi N, Sadegh-Amalnick M, Tavakkoli-Moghaddam R. Modified particle swarm optimization in a time-dependent vehicle routing problem: minimizing fuel consumption. Optim Lett. 2017;11:121–34.10.1007/s11590-015-0996-ySearch in Google Scholar

[12] Palmer A. The development of an integrated routing and carbon dioxide emissions model for goods vehicles. 2007.Search in Google Scholar

[13] Maden W, Eglese R, Black D. Vehicle routing and scheduling with time-varying data: a case study. J Oper Res Soc. 2010;61:515–22.10.1057/jors.2009.116Search in Google Scholar

[14] Demir E, Bektaş T, Laporte G. A comparative analysis of several vehicle emission models for road freight transportation. Transp Res Part B: Transp Environ. 2011;16:347–57.10.1016/j.trd.2011.01.011Search in Google Scholar

[15] Lin C, Choy KL, Ho GT, Chung SH, Lam HY. Survey of green vehicle routing problem: past and future trends. Expert Syst Appl. 2014;41:1118–38.10.1016/j.eswa.2013.07.107Search in Google Scholar

[16] Saad S, Bahadori R. An information fractal for supply network inventory optimisation. In: Affenzeller M, Longo F, Merkuryev Y, Bruzzone AG, Piera MA, editors. HMS2016: proceedings of the 18th international conference on harbor, maritime & multimodal logistics modelling and simulation, 2016 Sep 26–28. Larnaca, Cyprus. Red Hook, NY: Curran Associates, Inc, 2016: 28–34.Search in Google Scholar

[17] Saad S, Bahadori R. Development of an information fractal to optimise inventory in the supply network. Int J Serv Computing Oriented Manuf. 2018;3:127–50.10.1504/IJSCOM.2018.091620Search in Google Scholar

[18] Dror M, Trudeau P. Savings by split delivery routing. Transp Sci. 1989;23:141–5.10.1287/trsc.23.2.141Search in Google Scholar

[19] Dror M, Laporte G, Trudeau P. Vehicle routing with split deliveries. Discrete Appl Math. 1994;50:239–54.10.1016/0166-218X(92)00172-ISearch in Google Scholar

[20] Mullaseril PA, Dror M, Leung J. Split-delivery routing heuristics in livestock feed distribution. J Oper Res Soc. 1997;48:107–16.10.1057/palgrave.jors.2600338Search in Google Scholar

[21] Belfiore P, Yoshida Yoshizaki HT. Scatter search for a real-life heterogeneous fleet vehicle routing problem with time windows and split deliveries in Brazil. Eur J Oper Res. 2009;199:750–8.10.1016/j.ejor.2008.08.003Search in Google Scholar

[22] Tavakkoli-Moghaddam R, Safaei N, Kah MM, Rabbani M. A new capacitated vehicle routing problem with split service for minimizing fleet cost by simulated annealing. J Franklin Inst. 2007;344:406–25.10.1016/j.jfranklin.2005.12.002Search in Google Scholar

[23] Ryu K, Moon I, Oh S, Jung M. A fractal echelon approach for inventory management in supply chain networks. Int J Prod Econ. 2013;143:316–26.10.1016/j.ijpe.2012.01.002Search in Google Scholar

[24] LlamaSoft Incorporated. Supply Chain Guru. 2017. Available at: http://www.llamasoft.com/. Accessed 7 Nov 2017.Search in Google Scholar

[25] Saad S, Bahadori R. Modelling the sustainable distribution system in food retail sector – a simulation approach. In: Bruzzone AG, Piera MA, Longo F, Vignali G, editors. FoodOPS2017: proceedings of the international food operations and processing simulation workshop. 2017 Sep 18–20. Barcelona, Spain. Red Hook, NY: Curran Associates, Inc, 2017: 45–50.Search in Google Scholar

[26] Kirkpatrick S, Gelatt CD, Vecchi MP. Optimization by simulated annealing. Science. 1983;220:671–80.10.1126/science.220.4598.671Search in Google Scholar PubMed

[27] Metropolis N, Rosenbluth AW, Rosenbluth MN, Teller AH, Teller E. Equation of state calculations by fast computing machines. J Chem Phys. 1953;21:1087–92.10.2172/4390578Search in Google Scholar

[28] Ledesma S, Aviña G, Sanchez R. Practical considerations for simulated annealing implementation. In Simulated annealing. 2008. InTech.10.5772/5560Search in Google Scholar

[29] Consultancy AE. 2010 guidelines to Defra/DECC\’s GHG conversion factors for company reporting; produced by AEA for the Department of Energy and Climate Change (DECC) and the Department for Environment, Food and Rural Affairs (Defra), Version 1.2.1. Available at: http://archive.defra.gov.uk/environment/business/reporting/conversion-factors. 2010:1–49Search in Google Scholar

Received: 2018-02-15
Revised: 2019-04-30
Accepted: 2019-06-14
Published Online: 2019-07-25

© 2019 Walter de Gruyter GmbH, Berlin/Boston

Downloaded on 29.10.2025 from https://www.degruyterbrill.com/document/doi/10.1515/ijfe-2018-0061/html
Scroll to top button