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

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

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

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

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

Q&A

解決済

1回答

727閲覧

numpyでのattributeエラー

mu08

総合スコア16

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

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

0グッド

0クリップ

投稿2021/11/18 09:08

編集2021/11/18 09:10

前提・実現したいこと

非線形最適化のコードでエラーが出てしまいます

発生している問題・エラーメッセージ

--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-34-fbf3d37a6f72> in <module> 14 15 #目的関数 ---> 16 model.obj=Objective( expr=sum( model.y[i,t]*u_ij[i,j]*log(model.x[j,t])+model.y[i,t]*(1-u_ij[i,j])*log(1-model.x[j,t]) for i in model.Candidate for j in model.Item for t in model.Class )) 17 18 <ipython-input-34-fbf3d37a6f72> in <genexpr>(.0) 14 15 #目的関数 ---> 16 model.obj=Objective( expr=sum( model.y[i,t]*u_ij[i,j]*log(model.x[j,t])+model.y[i,t]*(1-u_ij[i,j])*log(1-model.x[j,t]) for i in model.Candidate for j in model.Item for t in model.Class )) 17 18 pyomo/core/expr/numvalue.pyx in pyomo.core.expr.numvalue.NumericValue.__mul__() pyomo/core/expr/numeric_expr.pyx in pyomo.core.expr.numeric_expr._generate_mul_expression() AttributeError: 'numpy.str_' object has no attribute 'is_expression_type'

該当のソースコード

python

1u_ij=np.array(u) 2u_ij[0] 3 4""" 5array(['0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', 6 '0', '0', '0', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', 7 '0', '0', '0', '1'], dtype='<U1') 8""" 9 10 11from pyomo.environ import * 12 13I=100 14J=30 15T=10 16 17model=ConcreteModel() 18model.Candidate=range(I) 19model.Item=range(J) 20model.Class=range(T) 21 22model.x=Var(model.Item,model.Class,bounds=(0.0,1.0)) 23model.y=Var(model.Candidate,model.Class,within=Binary) 24 25#目的関数 26model.obj=Objective( expr=sum( model.y[i,t]*u_ij[i,j]*log(model.x[j,t])+model.y[i,t]*(1-u_ij[i,j])*log(1-model.x[j,t]) for i in model.Candidate for j in model.Item for t in model.Class )) 27 28 29#制約条件1 30model.mono=ConstraintList() 31for j in model.Item: 32 for t in model.Class: 33 model.mono.add( model.x[j,t] <= model.x[j,t+1]) 34 35#制約条件2 36model.single_y=ConstraintList() 37for i in model.Candidate: 38 model.single_y.add( sum( model.y[i,t] for t in model.Class ) == 1) 39 40opt = SolverFactory("ipopt") 41solver.solve(model) 42model.pprint() 43

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

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

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

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

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

guest

回答1

0

自己解決

u_ijの型がstrであったため失敗していました。

投稿2021/11/19 05:26

mu08

総合スコア16

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問