rng('shuffle'); %SPECIFICATION OF A MODEL % % TOY EXAMPLE, comment or uncoment % StartCapacity=15.45; % FailiureCost=5000; % ApproachCost=3; % % SCENARIO1 % ScenarioProbability1=0.4; % PredictedDemandMean1=16.0; % PredictedDemandDeviation1=0.05; % % SCENARIO2 % ScenarioProbability2=0.6; % PredictedDemandMean2=15.8; % PredictedDemandDeviation2=0.1; % % CurrentPermutation=[5,4,3,2,1]; % %CurrentPermutation=[2,5,1,4,3]; % maxsteps=2000; % nR=50; % nMC=500; % % CustomerCapacities=[0.6,0.5,0.34,0.3,0.2]; % CustomerSetUpCosts=[60,45,30,24,15]; % CustomerAutomationCosts=[20,20,12,12,8]; % CustomerContractProbabilities=[0.7,0.6,0.8,0.6,0.7]; % % END TOY EXAMPLE % CASE STUDY, comment or uncoment StartCapacity=15.45; FailiureCost=5000; ApproachCost=3; % SCENARIO1 ScenarioProbability1=0.2; PredictedDemandMean1=16.0; PredictedDemandDeviation1=0.1; % SCENARIO2 ScenarioProbability2=0.6; PredictedDemandMean2=15.6; PredictedDemandDeviation2=0.1; % SCENARIO3 ScenarioProbability3=0.2; PredictedDemandMean3=15.5; PredictedDemandDeviation3=0.1; CustomerCapacities=[0.5,0.45,0.4,0.3,0.275,0.25,0.25,0.2,0.2]; CustomerSetUpCosts=[40,35,32,23,22,24,21,20,18]; CustomerAutomationCosts=[15,15,13,12,12,6,8,8,7]; CustomerContractProbabilities=[0.7,0.6,0.8,0.5,0.9,0.5,0.8,0.8,0.7]; CurrentPermutation=[1,2,3,7,4,6,5,9,8]; maxsteps=1000; nR=50; nMC=500; Costs=zeros(1,maxsteps); %END CASE STUDY %START OF THE CODE (works for toy example and for case study) Threshold=PredictedDemandMean1+3*PredictedDemandDeviation1; nC=length(CustomerCapacities); repeats=500; EndPermutations=NaN(repeats,nC); EndSteps=NaN(repeats,1); EndCosts=NaN(repeats,1); times=NaN(repeats,1); for ir=1:repeats ConsequitveRejection=0; s=0; starttime=cputime; while and(ConsequitveRejection0.05,v<=0.2) ind1=randi(nC); ind2=randi(nC-1); if ind2>=ind1 ind2=ind2+1; end ProposedPermutation=CurrentPermutation; ProposedPermutation(ind1)=CurrentPermutation(ind2); ProposedPermutation(ind2)=CurrentPermutation(ind1); else ind1=randi(nC-1); ProposedPermutation=CurrentPermutation; ProposedPermutation(ind1)=CurrentPermutation(ind1+1); ProposedPermutation(ind1+1)=CurrentPermutation(ind1); end CurrentCosts=NaN(1,nMC); ProposedCosts=NaN(1,nMC); %EVALUATING BOTH PERMUTATIONS for i=1:nMC ContractSuccess=binornd(1,CustomerContractProbabilities); u=unifrnd(0,1); %SIMULATE DEMAND % %TOY EXAMPLE (comment/uncomment) % if u<=0.4 % ActualDemand=normrnd(PredictedDemandMean1,PredictedDemandDeviation1); % else % ActualDemand=normrnd(PredictedDemandMean2,PredictedDemandDeviation2); % end %END TOY EXAMPLE %CASE STUDY(comment/uncomment) if u<=0.6 ActualDemand=normrnd(PredictedDemandMean1,PredictedDemandDeviation1); elseif and(u>0.6,u<=0.8) ActualDemand=normrnd(PredictedDemandMean2,PredictedDemandDeviation2); else ActualDemand=normrnd(PredictedDemandMean3,PredictedDemandDeviation3); end %END CASE STUDY ContractedCustomersCurrent=zeros(1,nC); RunningCapacityCurrent=StartCapacity; RunningCustomerCurrent=1; while and(Threshold>RunningCapacityCurrent,RunningCustomerCurrentRunningCapacityProposed,RunningCustomerProposed