% R1(t,y,g) = utility for team 1. win=1, lose=0, tie=tievalue1 % R2(t,y,g) = utility for team 2 win=1, lose=0, tie=tievalue2 % t is time period, with t=1 the final period % y is yardage marker; there are numy of them % g indicates possession; g=1 if team 1 has ball, g=2 if team 2 has ball % Copyright 2005 by William S. Krasker timeperiodspermin=6; numy=6; T=91; numg=2; tievalue1=0.05; % team 1 utility for a tie tievalue2=0.5; % team 2 utility for a tie % For the hurry-up offense, the scoring probabilities are decreased by the factor % hurryimpairment. There is additional reduction in the probabilities if the time % remaining in the game is less than hurryclockusemin miutes. hurryimpairment=0.8; hurryclockusemin=2.0; hurryclockuse=round(hurryclockusemin*timeperiodspermin); % The following three matrices quantify the state transitions. The transition % probabilities are given by ptrans. The conditional means and standard deviations % for elapsed time (in minutes) are given by tmeanminutes and tstddevminutes. % These are converted to mean and standard deviation for elapsed time in time % periods, tmean and tstddev. % 1 2 3 4 5 6 TD FG TDOPP ptrans=[0.03 0.2 0.27 0.2 0.08 0.02 0.11 0.07 0.02; ... 0.05 0.26 0.26 0.09 0.05 0.01 0.16 0.1 0.02; ... 0.08 0.32 0.16 0.05 0.02 0.01 0.22 0.13 0.01; ... 0.07 0.22 0.13 0.01 0.01 0.01 0.27 0.27 0.01; ... 0.04 0.11 0.04 0 0 0 0.4 0.4 0.01; ... 0.02 0.02 0 0 0 0 0.77 0.18 0.01 ]; % 1 2 3 4 5 6 TD FG TDOPP tmeanminutes=[4.5 3.6 2.5 1.8 1.9 1.8 4.7 5.5 2.0; ... 3.8 2.9 2.1 1.8 1.2 1.2 3.8 4.9 2.0; ... 2.6 2.3 2 1.3 0.9 1 3.6 4 2.0; ... 2 1.8 1.6 1.6 1.6 1.6 2.5 2.9 1.6; ... 1.8 1.4 1.4 1.4 1.4 1.4 1.4 1.9 1.5; ... 1.5 1.3 1.2 1.1 1.0 0.9 0.7 1 0.8 ]; % 1 2 3 4 5 6 TD FG TDOPP tstddevminutes=[1.4 1.6 1.3 1 1 1.0 2.7 1.8 1.5; ... 1.7 1.5 1.3 1.1 1 0.8 2.1 2.1 1.3; ... 1.3 1.2 1.3 0.9 0.7 0.7 1.8 1.6 1.3; ... 1.2 1 1 0.9 0.9 0.9 1.4 1.2 1.2; ... 1 1.1 0.9 0.9 0.9 0.9 1.1 0.9 1.0; ... 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.6 0.6 ]; tmean=tmeanminutes*timeperiodspermin; tstddev=tstddevminutes*timeperiodspermin; % We now construct the conditional probabilities for elapsed time on a drive, % assuming the time is lognormal. tdrivemax=50; tprobs=zeros(numy,numy+3,tdrivemax); for i=1:numy for j=1:numy+3 [mu, sigma]=lognorparams(tmean(i,j),tstddev(i,j)); tprobtemp=lognordensity(mu,sigma,tdrivemax); tprobs(i,j,:)=tprobtemp; end end % Initialize arrays R1=zeros(T,numy,numg); R2=zeros(T,numy,numg); Dohurry=zeros(T,numy,numg); % Boundary conditions for y=1:numy for g=1:2 R1(1,y,g)=tievalue1; R2(1,y,g)=tievalue2; end end % backward induction for t=2:T elapsedtime=min(hurryclockuse,round(t/2)); thurry=t-elapsedtime; totalimpairment=hurryimpairment*min((t-1)/hurryclockuse,1); for y=1:numy % value for team 1 when team 1 has ball rvalue11r=0; for k=1:min(t-1,tdrivemax) rvalue11r=rvalue11r+ptrans(y,numy+1)*tprobs(y,numy+1,k)*1 ... +ptrans(y,numy+2)*tprobs(y,numy+2,k)*1 ... +ptrans(y,numy+3)*tprobs(y,numy+3,k)*0; for y2=1:numy rvalue11r=rvalue11r+ptrans(y,y2)*tprobs(y,y2,k)*R1(t-k,y2,2); end end for k=min(t-1,tdrivemax)+1:tdrivemax rvalue11r=rvalue11r+ptrans(y,numy+1)*tprobs(y,numy+1,k)*tievalue1 ... +ptrans(y,numy+2)*tprobs(y,numy+2,k)*tievalue1 ... +ptrans(y,numy+3)*tprobs(y,numy+3,k)*tievalue1; for y2=1:numy rvalue11r=rvalue11r+ptrans(y,y2)*tprobs(y,y2,k)*tievalue1; end end rvalue11h=totalimpairment*ptrans(y,numy+1)*1 ... +totalimpairment*ptrans(y,numy+2)*1 ... +(1-totalimpairment*ptrans(y,numy+1)-totalimpairment*ptrans(y,numy+2)) ... *R1(thurry,numy+1-y,2); % value for team 2 when team 2 has ball rvalue22r=0; for k=1:min(t-1,tdrivemax) rvalue22r=rvalue22r+ptrans(y,numy+1)*tprobs(y,numy+1,k)*1 ... +ptrans(y,numy+2)*tprobs(y,numy+2,k)*1 ... +ptrans(y,numy+3)*tprobs(y,numy+3,k)*0; for y2=1:numy rvalue22r=rvalue22r+ptrans(y,y2)*tprobs(y,y2,k)*R2(t-k,y2,1); end end for k=min(t-1,tdrivemax)+1:tdrivemax rvalue22r=rvalue22r+ptrans(y,numy+1)*tprobs(y,numy+1,k)*tievalue2 ... +ptrans(y,numy+2)*tprobs(y,numy+2,k)*tievalue2 ... +ptrans(y,numy+3)*tprobs(y,numy+3,k)*tievalue2; for y2=1:numy rvalue22r=rvalue22r+ptrans(y,y2)*tprobs(y,y2,k)*tievalue2; end end rvalue22h=totalimpairment*ptrans(y,numy+1)*1 ... +totalimpairment*ptrans(y,numy+2)*1 ... +(1-totalimpairment*ptrans(y,numy+1)-totalimpairment*ptrans(y,numy+2)) ... *R2(thurry,numy+1-y,1); % value for team 1 when team 2 has ball rvalue12r=0; for k=1:min(t-1,tdrivemax) rvalue12r=rvalue12r+ptrans(y,numy+1)*tprobs(y,numy+1,k)*0 ... +ptrans(y,numy+2)*tprobs(y,numy+2,k)*0 ... +ptrans(y,numy+3)*tprobs(y,numy+3,k)*1; for y2=1:numy rvalue12r=rvalue12r+ptrans(y,y2)*tprobs(y,y2,k)*R1(t-k,y2,1); end end for k=min(t-1,tdrivemax)+1:tdrivemax rvalue12r=rvalue12r+ptrans(y,numy+1)*tprobs(y,numy+1,k)*tievalue1 ... +ptrans(y,numy+2)*tprobs(y,numy+2,k)*tievalue1 ... +ptrans(y,numy+3)*tprobs(y,numy+3,k)*tievalue1; for y2=1:numy rvalue12r=rvalue12r+ptrans(y,y2)*tprobs(y,y2,k)*tievalue1; end end rvalue12h=totalimpairment*ptrans(y,numy+1)*0 ... +totalimpairment*ptrans(y,numy+2)*0 ... +(1-totalimpairment*ptrans(y,numy+1)-totalimpairment*ptrans(y,numy+2)) ... *R1(thurry,numy+1-y,1); % value for team 2 when team 1 has ball rvalue21r=0; for k=1:min(t-1,tdrivemax) rvalue21r=rvalue21r+ptrans(y,numy+1)*tprobs(y,numy+1,k)*0 ... +ptrans(y,numy+2)*tprobs(y,numy+2,k)*0 ... +ptrans(y,numy+3)*tprobs(y,numy+3,k)*1; for y2=1:numy rvalue21r=rvalue21r+ptrans(y,y2)*tprobs(y,y2,k)*R2(t-k,y2,2); end end for k=min(t-1,tdrivemax)+1:tdrivemax rvalue21r=rvalue21r+ptrans(y,numy+1)*tprobs(y,numy+1,k)*tievalue2 ... +ptrans(y,numy+2)*tprobs(y,numy+2,k)*tievalue2 ... +ptrans(y,numy+3)*tprobs(y,numy+3,k)*tievalue2; for y2=1:numy rvalue21r=rvalue21r+ptrans(y,y2)*tprobs(y,y2,k)*tievalue2; end end rvalue21h=totalimpairment*ptrans(y,numy+1)*0 ... +totalimpairment*ptrans(y,numy+2)*0 ... +(1-totalimpairment*ptrans(y,numy+1)-totalimpairment*ptrans(y,numy+2)) ... *R2(thurry,numy+1-y,2); if rvalue11r > rvalue11h R1(t,y,1)=rvalue11r; R2(t,y,1)=rvalue21r; else R1(t,y,1)=rvalue11h; R2(t,y,1)=rvalue21h; Dohurry(t,y,1)=1; end if rvalue22r > rvalue22h R1(t,y,2)=rvalue12r; R2(t,y,2)=rvalue22r; else R1(t,y,2)=rvalue12h; R2(t,y,2)=rvalue22h; Dohurry(t,y,2)=1; end end end