質問編集履歴
4
誤字を修正しました
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.
|
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
補足
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
誤字
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
誤字
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
大学の卒業研究でマルチエージェントシミュレーションを用いて学級モデルを構築しています。
|
2
|
-
生徒は想像している
|
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:
|