SANDAG / ABM

Sandag ABM
https://github.com/SANDAG/ABM/wiki
20 stars 21 forks source link

MemoryError During Vehicle Type Choice in 2050 #112

Open JoeJimFlood opened 3 months ago

JoeJimFlood commented 3 months ago

I've been getting a MemoryError during the third iteration of the resident model in vehicle type choice. I tried editing the spec file so that Python's default eval function was called instead of pandas.DataFrame.eval() (there was an intermediate array of type complex128 being created), but I got a memory error later. It looks like the one that we had before when the fleet year was corrected.

22/03/2024 14:28:59 - INFO - activitysim.core.interaction_simulate - vehicle_type_choice.interaction_simulate.interaction_simulate.eval_interaction_utils sharrow_enabled is False
22/03/2024 14:31:49 - ERROR - activitysim.core.interaction_simulate - vehicle_type_choice.interaction_simulate.interaction_simulate.eval_interaction_utils - MemoryError (Unable to allocate 131. MiB for an array with shape (17169845,) and data type float64) evaluating: ((household_density < 10000) & (household_density >= 4000)) & (body_type.str.contains('SUV'))
Traceback (most recent call last):
  File "\\jupiter\abm\dev\activitysim\activitysim\core\interaction_simulate.py", line 279, in eval_interaction_utilities
    v = df.eval(expr, resolvers=[locals_d])
  File "C:\Anaconda3\envs\asim_baydag\lib\site-packages\pandas\util\_decorators.py", line 331, in wrapper
    return func(*args, **kwargs)
  File "C:\Anaconda3\envs\asim_baydag\lib\site-packages\pandas\core\frame.py", line 4612, in eval
    return _eval(expr, inplace=inplace, **kwargs)
  File "C:\Anaconda3\envs\asim_baydag\lib\site-packages\pandas\core\computation\eval.py", line 353, in eval
    parsed_expr = Expr(expr, engine=engine, parser=parser, env=env)
  File "C:\Anaconda3\envs\asim_baydag\lib\site-packages\pandas\core\computation\expr.py", line 813, in __init__
    self.terms = self.parse()
  File "C:\Anaconda3\envs\asim_baydag\lib\site-packages\pandas\core\computation\expr.py", line 832, in parse
    return self._visitor.visit(self.expr)
  File "C:\Anaconda3\envs\asim_baydag\lib\site-packages\pandas\core\computation\expr.py", line 415, in visit
    return visitor(node, **kwargs)
  File "C:\Anaconda3\envs\asim_baydag\lib\site-packages\pandas\core\computation\expr.py", line 421, in visit_Module
    return self.visit(expr, **kwargs)
  File "C:\Anaconda3\envs\asim_baydag\lib\site-packages\pandas\core\computation\expr.py", line 415, in visit
    return visitor(node, **kwargs)
  File "C:\Anaconda3\envs\asim_baydag\lib\site-packages\pandas\core\computation\expr.py", line 424, in visit_Expr
    return self.visit(node.value, **kwargs)
  File "C:\Anaconda3\envs\asim_baydag\lib\site-packages\pandas\core\computation\expr.py", line 415, in visit
    return visitor(node, **kwargs)
  File "C:\Anaconda3\envs\asim_baydag\lib\site-packages\pandas\core\computation\expr.py", line 750, in visit_BoolOp
    return reduce(visitor, operands)
  File "C:\Anaconda3\envs\asim_baydag\lib\site-packages\pandas\core\computation\expr.py", line 744, in visitor
    rhs = self._try_visit_binop(y)
  File "C:\Anaconda3\envs\asim_baydag\lib\site-packages\pandas\core\computation\expr.py", line 739, in _try_visit_binop
    return self.visit(bop)
  File "C:\Anaconda3\envs\asim_baydag\lib\site-packages\pandas\core\computation\expr.py", line 415, in visit
    return visitor(node, **kwargs)
  File "C:\Anaconda3\envs\asim_baydag\lib\site-packages\pandas\core\computation\expr.py", line 709, in visit_Call
    name = self.env.add_tmp(res(*new_args, **kwargs))
  File "C:\Anaconda3\envs\asim_baydag\lib\site-packages\pandas\core\strings\accessor.py", line 129, in wrapper
    return func(self, *args, **kwargs)
  File "C:\Anaconda3\envs\asim_baydag\lib\site-packages\pandas\core\strings\accessor.py", line 1260, in contains
    result = self._data.array._str_contains(pat, case, flags, na, regex)
  File "C:\Anaconda3\envs\asim_baydag\lib\site-packages\pandas\core\strings\object_array.py", line 131, in _str_contains
    return self._str_map(f, na, dtype=np.dtype("bool"))
  File "C:\Anaconda3\envs\asim_baydag\lib\site-packages\pandas\core\strings\object_array.py", line 71, in _str_map
    result = lib.map_infer_mask(arr, f, mask.view(np.uint8), map_convert)
  File "pandas\_libs\lib.pyx", line 2885, in pandas._libs.lib.map_infer_mask
  File "pandas\_libs\lib.pyx", line 2510, in pandas._libs.lib.maybe_convert_objects
numpy.core._exceptions._ArrayMemoryError: Unable to allocate 131. MiB for an array with shape (17169845,) and data type float64