从Python导入矩阵到Pyomo

时间:2017-01-23 17:41:19

标签: numpy import pyomo

我在Python中定义了一个矩阵:(文档的名称matrix.py)

N = 4
l = N
k = N


D = np.zeros((l,k))


for i in range(0,l):   
    for j in range(0,k):
        if (i==j):
            D[i,j] = 2
        else:
            D[i,j] = 0
D[0,0] = (2*N**2+1)/6   

D[-1,-1] = -(2*N**2+1)/6  


print(D)

我想在Pyomo中使用它,我做了:

import matrix 

。 。

m.f_x1 = Var(m.N)
def f_x1_definition(model,i):
    for j in m.N:
        return m.f_x1[j] ==sum(D[i,j]*m.x1[j] for j in range(value(m.n)))

m.f_x1_const = Constraint(m.N, rule = f_x1_definition)

但我收到了下一个错误: NameError: global name 'D' is not defined

我该怎么做?

1 个答案:

答案 0 :(得分:0)

使用语法

在python中导入模块时
import foo

foo模块中定义的所有内容都将在foo命名空间中可用。也就是说,如果foo.py包含:

import numpy as np
a = 5
D = np.zeros((1,5))

当您使用import foo导入模块时,您可以访问aD

import foo
print(foo.a)
print(foo.D)

如果要将符号从foo直接拉到本地命名空间,则应使用from ... import ...语法:

from foo import a,D
print(a)
print(D)