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

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

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

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

Q&A

解決済

1回答

701閲覧

適当な変数の設定の方法

HGK

総合スコア29

Python

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

0グッド

0クリップ

投稿2021/09/07 19:16

編集2021/09/08 04:19

Pythonで学級をマルチエージェントシミュレーションを用いて構築しようとしています。

その際に、あるエージェントから他のエージェントへの好感度を設定するのですが
好感度の設定の仕方が分かりません

現在、次のようなコードを書いていますがうまくいきません

Python

1class Agent: 2 def like(self): 3 for i in range(n): 4 if i == self: 5 pass 6 else: 7 state = np.random.uniform(low=-0.1, high=0.1, size=None) 8 code = 'self.lp{} = {}'.format(i,state)

エージェントを0~31として振り分けて、
エージェント1からエージェント2への好感度を1.lp2というように表現したいです

また、その好感度を利用した次の式を実行する必要があります

Python

1class Updete: 2 def update_like(self,agents): 3 l = (self.lp agents)*(self.lp agents)*(agents.lp self) 4  return l

これらを実行できるようにするためには好感度や式をどのように設定すればいいでしょうか?

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ppaul

2021/09/07 22:45

また、その好感度を利用した次の式を実行する必要があります とのことですが、以下のようにPythonでは文法エラーです。 >>> l = self.lp agents*self.lp agents*agents.lp self File "<stdin>", line 1 l = self.lp agents*self.lp agents*agents.lp self ^ SyntaxError: invalid syntax Pythonの文法を勉強してから再度質問することをお勧めします。
ppaul

2021/09/08 06:53

変数を括弧でくくりました、とのことですが、依然として文法エラーです。 >>> l = (self.lp agents)*(self.lp agents)*(agents.lp self) File "<stdin>", line 1 l = (self.lp agents)*(self.lp agents)*(agents.lp self) ^ SyntaxError: invalid syntax 投稿する前にご自身の環境で実行してみて、せめて文法エラーは出ないようにしましょう。
guest

回答1

0

ベストアンサー

エージェント1からエージェント2への好感度を1.lp2というように表現したいです

「1」というオブジェクトを作り、そのアブジェクトが 「lp2]というプロパティ(変数)を持っているように見えますが、そのように連番の「名前」を持つ変数を作るのは筋が悪いです。
こういう場合は、リストやdictに入れるべきです。この場合は、

agent[1].lp[2]

となるでしょうか。

投稿2021/09/08 05:00

TakaiY

総合スコア13792

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HGK

2021/09/08 05:44

解答ありがとうございます その場合コードはどのようなものになるのですか?
TakaiY

2021/09/08 06:10

code = 'self.lp{} = {}'.format(i,state) のところは self.lp[i] = state でしょう。 updateのところは何がしたいのかわからないので、わかりません。
HGK

2021/09/08 07:09

updateのところは好感度の更新に使う式です 1と2のエージェントの好感度を 1.lp2*1.lp2*2.lp1 のように1と2を入れ替えても実行できるようにしたいです
TakaiY

2021/09/08 07:18

であれば、 agent[1].lp[2] * agent[1].lp[2] * agent[2].lp[1] ということになるでしょうし、そのときの 1 や 2 は for等で変数で設定することになるんでしょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問