Code covered by the BSD License  

Highlights from
Broadcast_LP

Broadcast_LP

by

 

This is a code of "Broadcast Control Mechanisms for three agent".

Broadcast_LP.m
clear all ; clc ; close all ;

%%

% Defining the Initial position of the Agents
% -------------------------------------------------------------------------
% initial position of agent 1

  p11(:,1) = 2.25 %1 ;
  p12(:,1) = 3.25 %1 ;
  th1(1) = 60.92+50 ;

% initial position of agent 2

  p21(:,1) = 2.75 %5 ;
  p22(:,1) = 5.25 %4 ;
  th2(1) = 150.92 + 100 %135;

% initial position of agent 3

  p31(:,1) = 4.25 %2 ;
  p32(:,1) = 4.75 %6 ;
  th3(1) = -29.08+70 %-45 ;
  
%   mov = avifile('example23.avi') ;
% Perturbation in Angle
% -------------------------------------------------------------------------

  pertb_ang = 120 ;
 
  k = 1
  Iter = 0
  U = 0        %  Path defined
  n=1
 
% starts the loop from here


for i2 = 1:1
 
%  angle_convert      
            
c1 = cosd(th1(:,k)) ;
s1 = sind(th1(:,k)) ;

c2 = cosd(th2(:,k)) ;
s2 = sind(th2(:,k)) ;

c3 = cosd(th3(:,k)) ;
s3 = sind(th3(:,k)) ;

% Defining the A matrix
% -------------------------------------------------------------------------
% Variable  1    2    3    4    5    6    7    8    9 


A =     [  -1    1    0    0    c1  -c1  -s1   s1  -1 
            1   -1    0    0   -c1   c1   s1  -s1  -1
            0    0   -1    1    s1  -s1   c1  -c1  -1
            0    0    1   -1   -s1   s1  -c1   c1  -1
            
           -1    1    0    0    c2  -c2  -s2   s2  -1 
            1   -1    0    0   -c2   c2   s2  -s2  -1
            0    0   -1    1    s2  -s2   c2  -c2  -1
            0    0    1   -1   -s2   s2  -c2   c2  -1
            
           -1    1    0    0    c3  -c3  -s3   s3  -1 
            1   -1    0    0   -c3   c3   s3  -s3  -1
            0    0   -1    1    s3  -s3   c3  -c3  -1
            0    0    1   -1   -s3   s3  -c3   c3  -1                     
            
            
           -1    0    0    0     0    0    0    0   0
            0   -1    0    0     0    0    0    0   0
            0    0   -1    0     0    0    0    0   0
            0    0    0   -1     0    0    0    0   0
            0    0    0    0    -1    0    0    0   0 
            0    0    0    0     0   -1    0    0   0
            0    0    0    0     0    0   -1    0   0 
            0    0    0    0     0    0    0   -1   0
            0    0    0    0     0    0    0    0  -1 ] ;
        

 % Defining the Constraint Matrix B
 % ------------------------------------------------------------------------
 
 
 B = [ -p11(:,k)   
        p11(:,k) 
       -p12(:,k) 
        p12(:,k)
       -p21(:,k) 
        p21(:,k) 
       -p22(:,k) 
        p22(:,k) 
       -p31(:,k) 
        p31(:,k) 
       -p32(:,k) 
        p32(:,k)        
       
        0 
        0 
        0 
        0 
        0 
        0 
        0 
        0 
        0 ] ;
    
 lb = zeros(9,1);
 
 % Defining The Objective Function Matrix C
 % ------------------------------------------------------------------------
 
 C = [ 0 0 0 0 0 0 0 0 1 ] ;
 
 % Computing the Linear Program
 % ------------------------------------------------------------------------
%  tic
 [X,lambda,exitflag,output] =  linprog(C,A,B);%,[],[],lb) ;
%  t=toc
%  pause
 
x1(:,k) = X(1,:) ;
x2(:,k) = X(2,:) ;
x3(:,k) = X(3,:) ;
x4(:,k) = X(4,:) ;
x5(:,k) = X(5,:) ;
x6(:,k) = X(6,:) ;
x7(:,k) = X(7,:) ; 
x8(:,k) = X(8,:) ;
x9(:,k) = X(9,:) ;

z1(:,k) = x1(:,k) - x2(:,k) ;
z2(:,k) = x3(:,k) - x4(:,k) ;
u1(:,k) = x5(:,k) - x6(:,k) ;
u2(:,k) = x7(:,k) - x8(:,k) ;

% display('The Value of Performance Radius = ')

r = x9(:,k) ;

% rectangle('Position',[z1(:,k),z2(:,k),r,r])
% axis equal
% hold on

% Square Vertex
% x_vert_u(:,k) = z1(:,k) + x9(:,k) ;
% x_vert_l(:,k) = z1(:,k) - x9(:,k) ;
% 
% y_vert_u(:,k) = z2(:,k) + x9(:,k) ;
% y_vert_l(:,k) = z2(:,k) - x9(:,k) ;

% Direction of u
% -------------------------------------------------------------------------

   if  (u2(:,k)<0 && u1(:,k)<0)
        
            ang_u(:,k) = 180+(atand(u2(:,k)/u1(:,k))) ;
            
    elseif  (u2(:,k)<0 && u1(:,k)>0)
        
            ang_u(:,k) = 360 + atand(u2(:,k)/u1(:,k)) ;
           
    elseif   (u2(:,k)>0 && u1(:,k)<0)  
        
            ang_u(:,k) = 180 - abs(atand(u2(:,k)/u1(:,k))) ;
            
    else
            ang_u(:,k) = atand(u2(:,k)/u1(:,k)) ;
            
end   
    
% Random Number Decleration 
% -------------------------------------------------------------------------
    Ran_1(:,k) = randn ;
    Ran_2(:,k) = randn ;
    Ran_3(:,k) = randn ;    
    
% agent 1
% -------------------------------------------------------------------------
     
    Pertb_ang1(:,k) = Ran_1(:,k)*pertb_ang ;
    th1(:,k+1) = th1(:,k) + ang_u(:,k) %+ Pertb_ang1(:,k);  % good 
    
    
    if (th1(:,k+1) >= 360) && (th1(:,k+1) < 720)
        th1(:,k+1) = th1(:,k+1) - 360 ;
    elseif (th1(:,k+1) >=720) && (th1(:,k+1) < 1080)
        th1(:,k+1) = th1(:,k+1) - 720 ;
    elseif (th1(:,k+1) >=1080) && (th1(:,k+1) < 1440)
        th1(:,k+1) = th1(:,k+1) - 1080 ;
    elseif (th1(:,k+1) >= 1440) && ( th1(:,k+1) < 1800 )
        th1(:,k+1) = th1(:,k+1) -1440 ;
    elseif ( th1(:,k+1) < -360 ) && ( th1(:,k+1) >= -720)
        th1(:,k+1) = th1(:,k+1) + 360 ;
    elseif ( th1(:,k+1) < -720 ) && (th1(:,k+1) >= -1080)
        th1(:,k+1) = th1(:,k+1)+ 720 ;
    else
        th1(:,k+1) = th1(:,k+1) ;
    end    
    
% agent 2
% -------------------------------------------------------------------------

    Pertb_ang2(:,k) = Ran_2(:,k)*pertb_ang ;
    th2(:,k+1) = th2(:,k) + ang_u(:,k)%+ Pertb_ang2(:,k);
    
    
   if (th2(:,k+1) >= 360) && (th2(:,k+1) < 720)
        th2(:,k+1) = th2(:,k+1) - 360 ;
    elseif (th2(:,k+1) >=720) && (th2(:,k+1) < 1080)
        th2(:,k+1) = th2(:,k+1) - 720 ;
    elseif (th2(:,k+1) >=1080) && (th2(:,k+1) < 1440)
        th2(:,k+1) = th2(:,k+1) - 1080 ;
    elseif (th2(:,k+1) >= 1440) && ( th2(:,k+1) < 1800 )
        th2(:,k+1) = th2(:,k+1) -1440 ;
    elseif ( th2(:,k+1) < -360 ) && ( th2(:,k+1) >= -720)
        th2(:,k+1) = th2(:,k+1) + 360 ;
    elseif ( th2(:,k+1) < -720 ) && (th2(:,k+1) >= -1080)
        th2(:,k+1) = th2(:,k+1)+ 720 ;
    else
        th2(:,k+1) = th2(:,k+1) ;
    end  
           
% agent 3
% -------------------------------------------------------------------------

    Pertb_ang3(:,k) = Ran_3(:,k)*pertb_ang ;
    th3(:,k+1) = th3(:,k) + ang_u(:,k) %+ Pertb_ang3(:,k);  
        
    if (th3(:,k+1) >= 360) && (th3(:,k+1) < 720)
        th3(:,k+1) = th3(:,k+1) - 360 ;
    elseif (th3(:,k+1) >=720) && (th3(:,k+1) < 1080)
        th3(:,k+1) = th3(:,k+1) - 720 ;
    elseif (th3(:,k+1) >=1080) && (th3(:,k+1) < 1440)
        th3(:,k+1) = th3(:,k+1) - 1080 ;
    elseif (th3(:,k+1) >= 1440) && ( th3(:,k+1) < 1800 )
        th3(:,k+1) = th3(:,k+1) -1440 ;
    elseif ( th3(:,k+1) < -360 ) && ( th3(:,k+1) >= -720)
        th3(:,k+1) = th3(:,k+1) + 360 ;
    elseif ( th3(:,k+1) < -720 ) && (th3(:,k+1) >= -1080)
        th3(:,k+1) = th3(:,k+1)+ 720 ;
    else
        th3(:,k+1) = th3(:,k+1) ;
    end     
   
    
p11(:,k+1) = p11(:,k) + u1(:,k)*c1 - u2(:,k)*s1 ;
p12(:,k+1) = p12(:,k) + u1(:,k)*s1 + u2(:,k)*c1 ;

p21(:,k+1) = p21(:,k) + u1(:,k)*c2 - u2(:,k)*s2 ;  
p22(:,k+1) = p22(:,k) + u1(:,k)*s2 + u2(:,k)*c2 ;

p31(:,k+1) = p31(:,k) + u1(:,k)*c3 - u2(:,k)*s3 ;
p32(:,k+1) = p32(:,k) + u1(:,k)*s3 + u2(:,k)*c3 ;


% For LP angle validation
% -------------------------------------------------------------------------
% ang1(:,k) = atand(q12/q11);
% ang2(:,k) = atand(q22/q21);
% ang3(:,k) = atand(q32/q31);

% Total Path Covered
% -------------------------------------------------------------------------

U1(k) = sqrt(u1(:,k)*u1(:,k)+u2(:,k)*u2(:,k));
U = U + U1(k) ;




d1=U1(k)/50;

p111(1)=p11(:,k);
p112(1)=p12(:,k);

p211(1)=p21(:,k);
p212(1)=p22(:,k);

p311(1)=p31(:,k);
p312(1)=p32(:,k);


for i = 1:25
    
    p111(i+1)=p111(i)+d1*cosd(ang_u(:,k)+th1(:,k));
    p112(i+1)=p112(i)+d1*sind(ang_u(:,k)+th1(:,k));
   
    p211(i+1)=p211(i)+d1*cosd(ang_u(:,k)+th2(:,k));
    p212(i+1)=p212(i)+d1*sind(ang_u(:,k)+th2(:,k));
   
    p311(i+1)=p311(i)+d1*cosd(ang_u(:,k)+th3(:,k));
    p312(i+1)=p312(i)+d1*sind(ang_u(:,k)+th3(:,k));
    
    
%     plot([p111(i) p111(i+1)],[p112(i) p112(i+1)],'ro','LineWidth',1,...
%                 'MarkerEdgeColor','r',...
%                 'MarkerFaceColor','g',...
%                 'MarkerSize',2);
% %      axis([0 10 0 10]) 
%     axis equal
%     
%         xlabel('X-Axis');
% 
%             ylabel('Y-Axis');
% 
% %               axis([0,2*pi,-1,1])
% % 
% %           S1=sprintf('r = %.2f' ,t);
% % 
% %             text(3,4,S1)
%      title('Trajectory of the Agents');
%     hold on 
%     
%     plot([p211(i) p211(i+1)],[p212(i) p212(i+1)],'bo','LineWidth',1,...
%                 'MarkerEdgeColor','b',...
%                 'MarkerFaceColor','g',...
%                 'MarkerSize',2);
%     hold on
%     
%     plot([p311(i) p311(i+1)],[p312(i) p312(i+1)],'ko','LineWidth',1,...
%                 'MarkerEdgeColor','k',...
%                 'MarkerFaceColor','g',...
%                 'MarkerSize',2);
%     hold on
%     
%     F=getframe;
%     mov = addframe(mov,F);
% %     n = n+1;
    
end

%           S1=sprintf('r = %.2f' ,r);
% 
%             text(3,4,S1)

% For Plotting
% -------------------------------------------------------------------------
% trajectory_agent;


% % plot([p11(i) p11(i+1)],[p12(i) p12(i+1)],'r')
% plot([p11(i) p11(i+1)],[p12(i) p12(i+1)],'r','LineWidth',1,...
%                 'MarkerEdgeColor','k',...
%                 'MarkerFaceColor','g',...
%                 'MarkerSize',2)
% 
% 
% axis([0 10 0 10])
% xlabel('X-axis')
% ylabel('Y-axis')
% % axis equal
% grid on
% drawnow 
% % pause(1)
% hold on
% plot([p21(i) p21(i+1)],[p22(i) p22(i+1)],'b-.')
% % plot([p21(i) p21(i+1)],[p22(i) p22(i+1)],'bo','LineWidth',1.5,...
% %                 'MarkerEdgeColor','k',...
% %                 'MarkerFaceColor','g',...
% %                 'MarkerSize',4)
% 
% 
% 
% 
% % axis([0 7 0 7]) 
% drawnow 
% % pause(1) 
% hold on 
% plot([p31(i) p31(i+1)],[p32(i) p32(i+1)],'g')
% % plot([p31(i) p31(i+1)],[p32(i) p32(i+1)],'bo','LineWidth',1.5,...
% %                 'MarkerEdgeColor','k',...
% %                 'MarkerFaceColor','g',...
% %                 'MarkerSize',4)
% 
% 
% % axis([0 7 0 7]) 
% drawnow 
% % pause(1)
% % F(i)=getframe;
% 
% clc


% Condition to Radius
% -------------------------------------------------------------------------

if ( r < 0.002)    
     break     
else
    k = k+1 ;
end

end


 

% max_min_avg

   plotresults
%    

Contact us