繁体   English   中英

AttributeError: 'NoneType' object 没有属性 'get_values'

[英]AttributeError: 'NoneType' object has no attribute 'get_values'

我是编码新手,需要你的帮助。 我收到以下错误:

line 159, in _get_solution
    xs = np.array(ms.get_values(self.int_var)).reshape(self.path_n, self.orderbook_n)
AttributeError: 'NoneType' object has no attribute 'get_values'

到达这部分代码后:

line 159, in _get_solution
    xs = np.array(ms.get_values(self.int_var)).reshape(self.path_n, self.orderbook_n)

当我使用: print(dir(ms))检查可能导致此问题的原因时,它给了我以下信息:

['__bool__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']

我怎样才能继续让代码运行?

这部分的完整代码是:

def _get_solution(self):
    '''function to solve the optimization model, save result and print outputs'''
    self.print_content = ''
    self.trade_solution = OrderedDict()
    ms = self.solve()
    xs = np.array(ms.get_values(self.int_var)).reshape(self.path_n, self.orderbook_n)
    zs = xs * self.precision_matrix
    nonzeroZ = list(zip(*np.nonzero(zs)))
    nonzeroZ = sorted(nonzeroZ, key=lambda x: x[0])

该错误告诉您变量ms已评估为None ,这就是它没有get_values()方法的原因。

假设错误消息中的第 159 行是_get_solution()中的对应行,这意味着在上面的行中

ms = self.solve()

self.solve()的调用返回None

您需要检查self.solve()以了解它为什么这样做。

由于您是 Python 的新手,请记住,当 function 或方法没有 return 语句,或者从未达到有效的 return 语句时,默认情况下它将返回None

如果 model 不可行,Model.solve() 可能会返回 None。 在假设已找到解决方案之前,您应该始终检查无,如下所示:

s = model.solve()
if s:
   # do whatever is appropriate for a solution
else:
   print("model has no solution")

DOcplex 拥有处理不可行模型的技术和工具,有关不可行模型的教程,请参阅此笔记本:

https://github.com/IBMDecisionOptimization/docplex-examples/blob/master/examples/mp/jupyter/infeasible.ipynb

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM