?? attentionstrats.m
字號:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Simulator for Attentional Strategies%% By: Kevin Passino% Version: 4/19/01%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%clearTmax=100; % Length of simulation time (real time, in seconds)Tsample=0.01; % Sampling period (used to discretize)Nsteps=(1/Tsample)*Tmax; % Number of steps to run the simulationN=4; % Number of predators/preyT=0*ones(N,Nsteps+1); % T(i,k) will denote the number of steps that predator/prey i has % been ignored as of step k. This simply allocates memory % for it.%-------------------------% Predator/prey characteristics:%-------------------------e=0*ones(N,Nsteps+1); % Allocate memory for predators/prey signals% Define predators/prey appearance instants (note that f(i,1) refers to predator/prey i, and that predator/prey i% has priority i, where higher values of i indicate higher priority predators/prey)f(:,1)=0*ones(N,1); % Allocate memoryf(1,1)=1.2*(1/Tsample); % Sets that we want an appearance from predator/prey 1 every f(1,1) steps (1.2 sec.) % (this sets the frequency of appearance)f(2,1)=1.5*(1/Tsample); f(3,1)=2*(1/Tsample); f(4,1)=1*(1/Tsample); %f(5,1)=1.7*(1/Tsample);fcounter(:,1)=ones(N,1); % Allocate memory for counters % Next, define the bounds delta^i on the maximum amount of time between the appearances of each predator/prey% (note that these must be consistent with the choice for the f(;,1) parameters above that define when the % appearances occur). These are given in real time, not steps.deltai(1,1)=1.3; % Overbounds a choice of 1.2 abovedeltai(2,1)=1.6; deltai(3,1)=2.3;deltai(4,1)=1.1;%deltai(5,1)=1.75;%---------------------------% Organism characteristics:%---------------------------% Pick attentional strategy (scheduler) typesched=1; % Chooses the policy of choosing the predator/prey that has been ignored for the longest time%sched=2; % Chooses the policy of choosing the predator/prey that is the highest priority one that has % been ignored longer than the average one%sched=3; % Chooses the policy of choosing the predators/prey that may be the most difficult to find % (of course if the a(:,1) are all the same then this is the same as sched=1)%sched=4; % Chooses the policy of choosing the predators/prey that may be most difficult to detect% For sched=4, need weighting factorsw(1,1)=2;w(2,1)=1; w(3,1)=1; w(4,1)=1; peakest=0*ones(N,1); % Allocate memory for computation of estimate of peak for sched=4% Set the a_i parameters so that the capacity condition is met:epsilon=0.1; % Used to define a_i parameters nexta(:,1)=epsilon*(1/N)*ones(N,1); % Picks so will meet capacity condition - scale it % (other choices are possible)% Another choice:%a(1,1)=0.1;%a(2,1)=0.2;%a(3,1)=0.3;%a(4,1)=0.399;deltas=1*Tsample; % Sets the delay (in steps) that it takes before the organism can % switch from focusing on one predator/prey to another. % NOTE: This only accounts for part of the "delta" used in the book. % This is the part due to switching from one predator/prey to another. deltacounter=0; % Used to implement the deltas delaydecisiontime=1; % Signals that it is a time (if =1) that pick a new predators/prey predpreyfocusedon=0*ones(Nsteps+1,1); % Initialize variable that indicates which predators/prey is % currently being focused on (if in a delay period, means % the one that it is trying to focus on)predpreyprocess=0; % Flag to indicate that switch delay is overdetectedpredprey=0; % Flag that indicates that the predators/prey that is focused on is detected % (=0 means not detected, =1 means detected)%-------------------------------------------------% Variables for measuring performance:%-------------------------------------------------avgT=0*ones(Nsteps+1,1); % avgT(k,1) denotes the average size of T at each step % (average of N values)maxT=0*ones(Nsteps+1,1); % maxT(k,1) denotes the maximum size of any T at each step % (maximum of N values)avgP=0; % Time average of priorities %-----------------------------------% Start simulation loop:for k=1:Nsteps for i=1:N % First generate the appearance signals at step k if fcounter(i,1)>=f(i,1); % Check if have waited long enough to appear %(notice here have >= so since due to how the frequency of % occurences of appearances are defined so that f can be fraction) e(i,k+1)=1; % Appear fcounter(i,1)=1; % Reset counter else e(i,k+1)=0; % Do not appear fcounter(i,1)=fcounter(i,1)+1; % Increment counter end end % Compute some performance measures that can be used in decision making: % (and for plotting later) avgT(k,1)=(1/N)*sum(T(:,k)); maxT(k,1)=max(T(:,k)); if decisiontime~=1; predpreyfocusedon(k,1)=predpreyfocusedon(k-1,1); % If not a decision time then same focus as last time end % Decide which predators/prey to focus on: if decisiontime==1; % Test if it is a decision time % Policy of choosing the predator/prey that has been ignored for the longest time if sched==1 [val,predpreyfocusedon(k,1)]=max(T(:,k)); % Pick predator/prey that has largest T at time k end % Policy of choosing the predator/prey that is the highest priority one that has % been ignored longer than the average one if sched==2 for j=1:N % Consider predators/prey numbered 1,..,N with N being the highest priority predator/prey if T(j,k)>=avgT(k,1) % Pick the predator/prey encountered that is above the average (so % this picks the highest priority one that is above the average) % Of course there are some wasted computations here... predpreyfocusedon(k,1)=j; end end end % Policy of choosing the predator/prey that may be the most difficult to find if sched==3 [val,predpreyfocusedon(k,1)]=max(a(:,1).*T(:,k)); % Scales the T(i,k) % elements by a(i,1) in making choice end % Policy of choosing the predators/prey that may be most difficult to detect if sched==4 for j=1:N peakest(j,1)=w(j,1)*(a(j,1)/(1-a(j,1)))*(T(j,k)+deltas+deltai(j,1)); end [val,predpreyfocusedon(k,1)]=max(peakest); % Picks the predator/prey expected to have the highest peak end decisiontime=0; % Do not decide again until detect that predators/prey (consider it % "detected" when T(i,.) goes to zero) end if deltacounter>=deltas % First, implement delay due to switching from one predator/prey to another predpreyprocess=1; % Flag to indicate that we are now going to focus on the predator/prey else deltacounter=deltacounter+Tsample; % Increment delay since computing T(i,k+1) (note that % at every time we are focusing on something so % at every time we need to compute this delay) % Also, note that below the test for the delay end if predpreyprocess==1 % If switch delay is over, then can start trying to detect predator/prey if e(predpreyfocusedon(k,1),k)==1 % Consider this test for "detection" to only indicate one pulse detectedpredprey=1; % If detect predators/prey set flag% D=k; % The time that an predators/prey pulse was found end end if predpreyprocess==1 & detectedpredprey==1 deltaT=((1-a(predpreyfocusedon(k,1),1))/a(predpreyfocusedon(k,1),1))*Tsample; if T(predpreyfocusedon(k,1),k)-deltaT>0; % Must test if will hit zero (to keep nonneg) T(predpreyfocusedon(k,1),k+1)=T(predpreyfocusedon(k,1),k)-deltaT; else T(predpreyfocusedon(k,1),k+1)=0; % Set it to zero since it finishes (an approximation % that is accurate in the sense that it is conservative) deltacounter=0; % Reset the delay counter to prepare for next predator/prey decisiontime=1; % Signal a decision time since just detected an predator/prey detectedpredprey=0; % Reset for use in detection of next predator/prey predpreyprocess=0; % Reset for next loop end else T(predpreyfocusedon(k,1),k+1)=T(predpreyfocusedon(k,1),k)+Tsample; % Increment amount of time % since last detect end for i=1:N if i~=predpreyfocusedon(k,1); % If predator/prey that is focused on is not i T(i,k+1)=T(i,k)+Tsample; % Update the amounts of time since last focused on each predator/prey end endend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Plot results%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%time=0:Tsample:Tmax;figure(1)clfsubplot(411)stem(time,e(1,:))title('Predator/prey appearances, N=4')subplot(412)stem(time,e(2,:))subplot(413)stem(time,e(3,:))subplot(414)stem(time,e(4,:))xlabel('Time, sec.')figure(2)clfsubplot(311)stairs(time,predpreyfocusedon)title('Predator/prey focused on and length of time since last detect (i=1,2)')subplot(312)plot(time,T(1,:))subplot(313)plot(time,T(2,:))xlabel('Time, sec.')figure(3)clfsubplot(311)stairs(time,predpreyfocusedon)title('Predator/prey focused on and length of time since last detect (i=3,4)')subplot(312)plot(time,T(3,:))subplot(313)plot(time,T(4,:))xlabel('Time, sec.')% Compute the time average of the priorities (like a measure of control energy).% This gives a measure of how well the scheduling policy did on focusing on higher% priority pedators/prey disp('----------------------------------------------------------------')scheddisp('----------------------------------------------------------------')disp('The time average of the priorities is=')avgP=(1/(Nsteps+1))*sum(predpreyfocusedon)figure(4)clfsubplot(211)stairs(time,predpreyfocusedon)title('Predator/prey focused on')xlabel('Time, sec.')hold onplot(time,avgP,'r.')hold offsubplot(212)plot(time,T)xlabel('Time, sec.')title('Lengths of times since last detected each predator/prey')% Compute some performance measures:disp('The time average of the average values of the lengths of times waited=')(1/(Nsteps+1))*sum(avgT) % Computes the time average of the average valuesdisp('The maximum of the average values of the lengths of times waited=')max(avgT) % Computes the maximum of the average valuesdisp('The time average of the maximum values of the lengths of times waited=')(1/(Nsteps+1))*sum(maxT) % Computes the time average of the max valuesdisp('The maximum of the maximum values of the lengths of times waited=')max(maxT) % Computes the maximum of the max valuesdisp('----------------------------------------------------------------')figure(5)clfsubplot(211)plot(time,avgT,time,(1/(Nsteps+1))*sum(avgT),'r.')title('Average length of time since last detect')xlabel('Time, sec.')subplot(212)plot(time,maxT,time,(1/(Nsteps+1))*sum(maxT),'r.')xlabel('Time, sec.')title('Maximum length of time since last detect')%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% End of program%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -