Advertisement
Guest User

Untitled

a guest
Apr 22nd, 2019
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 3.05 KB | None | 0 0
  1. for seed = 1:100
  2.     rng(seed, 'twister');      % seed
  3.  
  4.     % T = temptation--------5
  5.     T = 5;
  6.     % R = reward------------3
  7.     R = 3;
  8.     % P = punishment--------1
  9.     P = 1;
  10.     % S = sucker------------0
  11.     S = 0;
  12.  
  13.     max = zeros(100,1);
  14.  
  15.     % A = (initial, defect, cooperate, score)
  16.     rand_result = randi([0, 1], 20, 3);      % 0 == cooperate, 1 == defect
  17.     agents = zeros(20,4);
  18.     for agentNo = 1:20
  19.         agents(agentNo,:) = [rand_result(agentNo,:), 0];
  20.     end
  21.  
  22.     % game playing
  23.     for generation = 1:100
  24.         for agentNo = 1:20
  25.  
  26.             agent = agents(agentNo,:);
  27.  
  28.             for opponentNo = agentNo:20
  29.                 if opponentNo ~= agentNo
  30.  
  31.                     opponent = agents(opponentNo,:);
  32.  
  33.                     s_agent = agent(1);
  34.                     s_opponent = opponent(1);
  35.  
  36.                     for game = 1:100
  37.  
  38.                         if s_agent == 0 && s_opponent == 0
  39.                                 agents(agentNo, 4) = agents(agentNo, 4) + R;
  40.                                 agents(opponentNo, 4) = agents(opponentNo, 4) + R;
  41.                                 s_agent = agent(3);
  42.                                 s_opponent = opponent(3);
  43.  
  44.                         elseif s_agent == 0 && s_opponent == 1
  45.                                 agents(agentNo, 4) = agents(agentNo, 4) + S;
  46.                                 agents(opponentNo, 4) = agents(opponentNo, 4) + T;
  47.                                 s_agent = agent(2);
  48.                                 s_opponent = opponent(3);
  49.  
  50.                         elseif s_agent == 1 && s_opponent == 0
  51.                                 agents(agentNo, 4) = agents(agentNo, 4) + T;
  52.                                 agents(opponentNo, 4) = agents(opponentNo, 4) + S;
  53.                                 s_agent = agent(3);
  54.                                 s_opponent = opponent(2);
  55.  
  56.                         elseif s_agent == 1 && s_opponent == 1
  57.                                 agents(agentNo, 4) = agents(agentNo, 4) + P;
  58.                                 agents(opponentNo, 4) = agents(opponentNo, 4) + P;
  59.                                 s_agent = agent(2);
  60.                                 s_opponent = opponent(2);
  61.  
  62.                         end
  63.                     end
  64.                 end
  65.             end
  66.         end
  67.  
  68.         % sort agents by score
  69.         agents = sortrows(agents,4,'descend');
  70.  
  71.         % record max of each generation
  72.         max(generation) = agents(1,4)/(1900);
  73.  
  74.         % copy best 10 agents and clear scoreboard
  75.         agents(1:10, 4) = 0;
  76.         agents(11:20,:) = agents(1:10,:);
  77.                
  78.         % mutation
  79.         for agentNo = 1:20
  80.             for agentS = 1:3
  81.                 random_int = randi([1,100]);
  82.                 if random_int == 1
  83.                     agents(agentNo,agentS) = ~agents(agentNo, agentS);
  84.                 end
  85.             end
  86.         end
  87.     end
  88.     hold on;
  89.     xlabel('generation')
  90.     ylabel('average-payoff')
  91.     xlim([0 100])
  92.     ylim([0 5])
  93.     title('Student ID: 20129070')
  94.     plot(max)
  95. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement