AttributeError: 'NoneType' object has no attribute '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()
returned None
。
您需要检查 self.solve()
以了解它为什么这样做。
由于您是 Python 的新手,请记住,当函数或方法没有 return 语句,或从未达到有效的 return 语句时,它将 return None
默认。
如果模型不可行,Model.solve() 可能 return None。在假设找到解决方案之前,您应该始终检查 None,如:
s = model.solve()
if s:
# do whatever is appropriate for a solution
else:
print("model has no solution")
DOcplex 具有处理不可行模型的技术和工具,请参阅此笔记本
有关不可行模型的教程:
我是编码新手,需要您的帮助。 我收到以下错误:
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()
returned None
。
您需要检查 self.solve()
以了解它为什么这样做。
由于您是 Python 的新手,请记住,当函数或方法没有 return 语句,或从未达到有效的 return 语句时,它将 return None
默认。
Model.solve() 可能 return None。在假设找到解决方案之前,您应该始终检查 None,如:
s = model.solve()
if s:
# do whatever is appropriate for a solution
else:
print("model has no solution")
DOcplex 具有处理不可行模型的技术和工具,请参阅此笔记本 有关不可行模型的教程: