function [ExercisingCost ,ExercisedContracts] = BestExercisingCost( CapacityDeficit,ContractedCustomers,CustomerCapacities,CustomerAutomationCosts,FailiureCost,nC ) %cycles through all options of Automating contracted customers and finds %the best one. ExercisedContracts=zeros(1,nC); ExercisingCost=CapacityDeficit*FailiureCost; mC=sum(ContractedCustomers); for n=1:(2^mC-1) vec=zeros(1,mC); vec(1:length(de2bi(n)))=de2bi(n); PotentialExercisedContracts=zeros(1,nC); PotentialExercisedContracts(find(ContractedCustomers==1))=vec; PotentialExercisingCost=PotentialExercisedContracts*CustomerAutomationCosts'+max(0,CapacityDeficit-PotentialExercisedContracts*CustomerCapacities')*FailiureCost; if PotentialExercisingCost