0

さまざまな生産者の複数のラップトップに対して消費者から与えられた評価 (0: 最低から 5: 最高) を保存する CSV ファイルがあります。各行は、さまざまな機能に関して 1 人の消費者から与えられた評価を示しています。2 つのコンシューマーの例を以下に示します。

Consumer  Screen_13 Screen_14 Screen_15 Battery_7 Battery_10 Battery_11
  1         0        3             3         2       5           5
  2         1        4             3         1       3           5

mesaさまざまな新しいラップトップの購入を評価するために、agent_based モデルを作成するために使用しています。コンシューマーの数を 100 とすると、CSV ファイルは 100 行と 2 つの機能 (画面サイズとバッテリー) に対して 6 列になります。CSV を 1 行ずつ読み取る場合、for loop各エージェント (コンシューマー) に 1 行を割り当てることができるようにしたいCSV の (ヘッダーも保存する必要があります) 誰が (どのエージェント) がどの行を持っているかを知ることができます. 私は主にmesaモデルとエージェント クラスを構築するためのチュートリアルに従ってこれを行いましたmesa チュートリアル

エージェントを作成するためにコードに何を追加したかを説明すると、 のRate各行には CSV の行が 1 つあります。consumerAgent iを代入できるようになりたいのですがRate [i]、別の引数を使用して行った方法が'ratingarray'間違っているようですが、修正方法がわかりません。エラーが教えてくれます__init__() missing 1 required positional argument: 'ratingarray'

コメントをお待ちしております。

どうもありがとうございました、

import csv
import random
from mesa import Agent, Model
from mesa.time import RandomActivation
from mesa.space import MultiGrid

class ConsumerAgent(Agent):

def __init__(self, name, model, ratingarray):
    super().__init__(name, model, ratingarray)
    self.name = name
    self.rate[i] = ratingarray


def step(self):
    print("agent {}  was activated".format(self.name))
# Whatever else the agent does when activated


class ProductEvalModel(Model):

def __init__(self, n_agents):
    self.schedule = RandomActivation(self)
    self.grid = MultiGrid(10, 10, torus=True)


    for i in range(n_agents):
        a = ConsumerAgent(i, self, rate[i])
        self.schedule.add(a)
        coords = (random.randrange(0, 10), random.randrange(0, 10))
        self.grid.place_agent(a, coords)

def step(self):
    self.schedule.step()
    #self.dc.collect(self)

############################# Main #####################################
model = ProductEvalModel(100)        #100 consumers     

with open('RateVal.csv') as csvfile:
csvreader = csv.reader(csvfile,delimiter=',')


rate = []

for row in csvreader:

    rateS = row
    rate.append(rateS)


loopi = 1
while loopi < 101:
    model.step()
    loopi += 1
4

1 に答える 1