AttributeError:“非类型”对象没有属性“获取值”

2024-10-04 05:23:13 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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])

Tags: path代码selfgetvarnparrayms
2条回答

如果模型不可行,则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

错误告诉您变量ms的计算结果为None,这就是它没有get_values()方法的原因

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

ms = self.solve()

self.solve()的调用返回了None

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

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

相关问题 更多 >