質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

解決済

classで設定した初期値のエラーについて

HGK
HGK

総合スコア27

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1回答

0評価

0クリップ

246閲覧

投稿2021/09/19 14:40

編集2021/09/26 09:24

pythonで学級の様子をマルチエージェントシミュレーションを行おうと考えています
その際に、あるエージェントの他のエージェントに対する好感度というパラメータを設定しています
それを用いてエージェントの会話相手を次の式があります、

(会話相手)
=(自分から相手への好感度)+(相手からの好感度) /
{(自分から他のそれぞれエージェントの好感度)+(他のそれぞれエージェントから自分の好感度)の総和}

このように会話相手をルーレット方式で決めます
この式を表現するために次のようなコードを組みました

Python

class Agent: def __init__(self): self.lp = [] #自分から他のエージェントの好感度 self.lagent = [] #他のエージェントからの好感度 for i in range(32): if i == self: #自分から自分への好感度はないのでスキップがしたい self.lp.append(0) else: self.lp.append(np.random.uniform(low=-0.1, high=0.1, size=None)) self.lagent.append(np.random.uniform(low=-0.1, high=0.1, size=None)) class Simulation: def generate_agents(self,average_degree): network = nx.barabasi_albert_graph(n, average_degree) agents = [Agent() for id in range(n)] return agents def decide_talk_man(self): ilist=[] rlist=[] for i in range(n): if i == self: pass else: h = self.lp[i]+self.lagent[i] h = (h+0.8)/1.6 #正規化 z += h for i in range(n): if i == self: #自分から自分への好感度はないのでスキップ pass else: h = self.lp[i]+self.lagent[i] h = (h+0.8)/1.6 #正規化 g = h/z ilist.append(agent[i]) rlist.append(g) agents = random.choice(ilist,wights = rlist) return agents

このときAttributeError: 'Simulation' object has no attribute 'lp'とエラーが出てきました
コードのどこを修正すべきかが分かりません
また、if i == self:では自分から自分への設定をスキップすることができませんでした
以上のことを教えていただければ幸いです

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

etherbeg

2021/09/25 15:10

それでコードは全部ですか? クラスを定義しただけではプログラムは動かないはずですが。 あと「自分の好感度」「他のそれぞれエージェントの好感度」って何ですか? その直前に「自分から相手への好感度」「相手からの好感度」と書かれているように、好感度は特定の個体から特定の個体に対するものと思っていましたが。
HGK

2021/09/25 16:02

コードは抜粋したものです。その後のコードがかなり長くなるためエラーを起こしている箇所を抜粋しました。 好感度への認識はetherbeg様の認識で間違いありません。 好感度はある個体から、特定の個体に対するものです。
etherbeg

2021/09/25 16:21

ではエラーの全文を質問文に追記してください。全文というのは "Traceback (most recent call last):" から始まって、最後の行までです。もしユーザ名などで個人情報などが含まれる場合はそこは伏せ字にするか別の名前に書き換えるなどしてください。
etherbeg

2021/09/25 17:50 編集

それと、プログラム全体でどんなシミュレーションを行おうとしているのか、プログラムではなく日本語でいいので、説明していただけますか。このプログラムを実行すると、どういうプロセスを経て、何が結果として得られるのか。(質問に追記してください)
etherbeg

2021/09/25 17:55

Simulationというクラスを定義されていますが、これをクラスにしようと思われたのはなぜですか。もし参考にしたコードがあるのなら、インターネットで見られるものであれば、リンクを質問に追記してください。
etherbeg

2021/09/26 03:07

その後のコードがかなり長くなるとはどの程度の長さでしょうか。全文が無理ならと、回答に必要な情報は何かと考えながら上にコメントをしてきましたが、やっぱりコードの全体がないと無理です。抜粋されると書かれていない部分を推測する手間がかかりますし、その推測が間違っていたら全てが無駄になります。長くなってもいいのでプログラムの全部を貼ってください。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。