回答編集履歴

1

fix answer

2022/11/09 07:23

投稿

ps_aux_grep
ps_aux_grep

スコア1579

test CHANGED
@@ -40,9 +40,13 @@
40
40
  im=ax.scatter(*plot_data,"o",ms=5,c=plot_color)
41
41
  ```
42
42
 
43
+ エージェントのタイプごとにデフォルト色の設定をしておいた上で,個別に色設定`B.append(AgentEdited(color = 'y'))`とかができるようになる.
44
+ なんなら解析の途中から色を変化させることもできる.その際は`agent.color = 'g'`とか書けたりして,エージェントの状態を表現できる.
45
+
43
46
  ### 2. isinstanceを利用してAgentインスタンスを調べて色付ける方法
44
47
  生成元インスタンスからしか判断できないこっちの方が汎用性は低い.
45
48
  さっきはデフォルト色を用意して生成元が同じタイプのエージェントでも別の色を割り振れたが,下記コードでそれを実現しようとするのはめんどくさい.
49
+ なんなら`isinstance(AgentEdited(), Agent)`が`True`になってしまう等の問題もあって条件分岐/管理がめんどくさい.
46
50
  ```Python
47
51
  class Boids:
48
52
  # (略)
@@ -51,12 +55,12 @@
51
55
  for agent in self.agents:
52
56
  x.append(agent.pos[0])
53
57
  y.append(agent.pos[1])
54
- if isinstance(Agent, agent):
58
+ if isinstance(agent, AgentGoForWall):
59
+ c.append('b')
60
+ elif isinstance(angent, AgentEdited):
61
+ c.append('r')
62
+ else: # 残りは Agent しかないので isinstance(agent, Agent) と等価
55
63
  c.append('k')
56
- elif isinstance(AgentEdited, angent):
57
- c.append('r')
58
- else: # 残りは AgentGoForWall しかないので isinstance(AgentGoForWall, agent) と等価
59
- c.append('b')
60
64
  return (np.array(x), np.array(y)), c
61
65
 
62
66
  # (略)