teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

4

誤字を修正しました

2021/10/07 09:04

投稿

HGK
HGK

スコア29

title CHANGED
File without changes
body CHANGED
@@ -226,6 +226,7 @@
226
226
  continue
227
227
  if self.lc[agent.id] >= 0.12:
228
228
  self.frind_list.append(agent.id)
229
+ agent.hi_friend_list.append(self.id)
229
230
  elif self.lc[agent.id] <= -0.04:
230
231
  self.exclusion_list.append(agent.id)
231
232
  agent.hi_exclusion_list.append(self.id)
@@ -234,7 +235,7 @@
234
235
 
235
236
 
236
237
  def update_f(self,turn): #影響力の更新
237
- self.s.append(len(self.hi_frind_list)-len(self.hi_exclusion_list))
238
+ self.s.append(len(self.hi_friend_list)-len(self.hi_exclusion_list))
238
239
  dr = rm*(self.s[turn+1]-self.s[turn])
239
240
  self.f += dr
240
241
 

3

補足

2021/10/07 09:04

投稿

HGK
HGK

スコア29

title CHANGED
File without changes
body CHANGED
@@ -96,13 +96,13 @@
96
96
  if agent is self:
97
97
  continue
98
98
  h = a*self.lp[agent.id]+b*self.lagent[agent.id]*(1-(self.f-agent.f))+c*(self.f-agent.f)
99
- h = (h+0.8)/1.6
99
+ h = (h+0.8)/1.6 #正規化
100
100
  z += h
101
101
  for agent in agents:
102
102
  if agent is self:
103
103
  continue
104
104
  h = a*self.lp[agent.id]+b*self.lagent[agent.id]*(1-(self.f-agent.f))+c*(self.f-agent.f)
105
- h = (h+0.8)/1.6
105
+ h = (h+0.8)/1.6 #正規化
106
106
  weight = h / z
107
107
  agents_except_me[agent.id] = agent.id
108
108
  weights_for_me.append(weight)

2

誤字

2021/10/07 07:38

投稿

HGK
HGK

スコア29

title CHANGED
File without changes
body CHANGED
@@ -1,8 +1,8 @@
1
1
  大学の卒業研究でマルチエージェントシミュレーションを用いて学級モデルを構築しています。
2
2
  生徒は想像している人間関係、他の生徒への好感度、クラス内での影響力の3つの設定を持っています。
3
3
  シミュレーションの流れは、
4
- 会話相手(1人)の選択→話題対象の選択→好感度の更新(2種類)→関係の構築→影響力の更新
4
+ 会話相手(1人)の選択→話題対象の選択→好感度の更新(2種類)→関係の構築
5
- →想像している人間関係の更新
5
+ 影響力の更新→想像している人間関係の更新
6
6
  以上の流れで行います
7
7
 
8
8
  これを再現するために次のコードを組みました

1

誤字

2021/10/07 07:37

投稿

HGK
HGK

スコア29

title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,5 @@
1
1
  大学の卒業研究でマルチエージェントシミュレーションを用いて学級モデルを構築しています。
2
- 生徒は想像している好感度実際の好感度、クラス内での影響力の3つの設定を持っています。
2
+ 生徒は想像している人間関係生徒への好感度、クラス内での影響力の3つの設定を持っています。
3
3
  シミュレーションの流れは、
4
4
  会話相手(1人)の選択→話題対象の選択→好感度の更新(2種類)→関係の構築→影響力の更新
5
5
  →想像している人間関係の更新
@@ -59,7 +59,7 @@
59
59
  self.lx = {} #自分の話題xへの好感度
60
60
  self.lxagent = {} #自分が思うuの話題xへの好感度
61
61
 
62
- def First_set(self,agents):
62
+ def First_set(self,agents): #初期設定
63
63
  issues = 10
64
64
  for agent in agents:
65
65
  kari = {}
@@ -88,7 +88,7 @@
88
88
  kari[agent.id] = instinct
89
89
  self.lxagent[issue] = kari
90
90
 
91
- def decide_talk_man(self,agents):
91
+ def decide_talk_man(self,agents): #会話相手の選択
92
92
  agents_except_me = {}
93
93
  weights_for_me = []
94
94
  z = 0
@@ -110,7 +110,7 @@
110
110
  print(self.talk)
111
111
  return self.talk
112
112
 
113
- def decide_topic(self,agents,talk):
113
+ def decide_topic(self,agents,talk): #話題対象の選択
114
114
  talks = self.talk[0]
115
115
  topic_except_me = {}
116
116
  weights_for_me = []
@@ -144,7 +144,7 @@
144
144
  topic_except_me[age.id] = age.id
145
145
  weights_for_me.append(r)
146
146
 
147
- for issue in range(issues):
147
+ for issue in range(issues):
148
148
  for agent in agents:
149
149
  if agent is self:
150
150
  continue
@@ -158,7 +158,7 @@
158
158
  print(self.topic)
159
159
  return self.topic
160
160
 
161
- def update_like1(self,agents,talk,topic):
161
+ def update_like1(self,agents,talk,topic): #好感度更新1
162
162
  talks = talk[0]
163
163
  topics = topic[0]
164
164
  if topics <= 30:
@@ -198,7 +198,7 @@
198
198
  dlx = dlx1
199
199
  return dlu,dlx
200
200
 
201
- def update_like2(self,talk,topic,dlu,dlx):
201
+ def update_like2(self,talk,topic,dlu,dlx): #好感度更新2
202
202
  talks = self.talk[0]
203
203
  topics = self.topic[0]
204
204
  self.lp[talks] = self.lp[talks]+dlu
@@ -220,7 +220,7 @@
220
220
  self.lx[topics] = -1.0
221
221
 
222
222
 
223
- def link(self,agents):
223
+ def link(self,agents): #関係の構築
224
224
  for agent in agents:
225
225
  if agent is self:
226
226
  continue
@@ -233,7 +233,7 @@
233
233
  pass
234
234
 
235
235
 
236
- def update_f(self,turn):
236
+ def update_f(self,turn): #影響力の更新
237
237
  self.s.append(len(self.hi_frind_list)-len(self.hi_exclusion_list))
238
238
  dr = rm*(self.s[turn+1]-self.s[turn])
239
239
  self.f += dr
@@ -244,7 +244,7 @@
244
244
  self.f = 0
245
245
 
246
246
 
247
- def updete_Pnet(self,agents):
247
+ def updete_Pnet(self,agents): #自分が想像している人間関係の更新
248
248
  for agent in agents:
249
249
  for age in agents:
250
250
  if agent is age or self is agent: