前提・実現したいこと
非線形最適化のコードでエラーが出てしまいます
発生している問題・エラーメッセージ
--------------------------------------------------------------------------- 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
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。