davidusb-geek/emhass

Pulp solver issue in 0.8.3

tanelvakker opened this issue · 7 comments

When running mpc with custom data, I get 500 error and error in log

2024-03-12 12:00:00,160 - web_server - INFO - Passed runtime parameters: {'load_cost_forecast': [0.156, 0.153, 0.153, 0.154, 0.163, 0.178, 0.195, 0.217, 0.207, 0.175, 0.139, 0.134], 'prod_price_forecast': [0.0807, 0.0784, 0.0783, 0.079, 0.0863, 0.0993, 0.1131, 0.1321, 0.1234, 0.0965, 0.083, 0.0785], 'prediction_horizon': 12, 'soc_init': 0.68, 'soc_final': 0.2, 'def_total_hours': [0, 0], 'pv_power_forecast': [10795, 9971, 6408, 5533, 4192, 2375, 651, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 478, 1654, 2460, 2544]}
2024-03-12 12:00:00,160 - web_server - INFO - >> Setting input data dict
2024-03-12 12:00:00,160 - web_server - INFO - Setting up needed data
2024-03-12 12:00:00,171 - web_server - INFO - Retrieve hass get data method initiated...
2024-03-12 12:00:03,479 - web_server - INFO - Retrieving weather forecast data using method = list
2024-03-12 12:00:03,479 - web_server - INFO - Retrieving data from hass for load forecast using method = naive
2024-03-12 12:00:03,480 - web_server - INFO - Retrieve hass get data method initiated...
2024-03-12 12:00:11,893 - web_server - INFO - >> Performing naive MPC optimization...
2024-03-12 12:00:11,893 - web_server - INFO - Performing naive MPC optimization
2024-03-12 12:00:11,897 - web_server - INFO - Perform an iteration of a naive MPC controller
2024-03-12 12:00:12,090 - web_server - ERROR - Exception on /action/naive-mpc-optim [POST]
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/flask/app.py", line 1463, in wsgi_app
response = self.full_dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/flask/app.py", line 872, in full_dispatch_request
rv = self.handle_user_exception(e)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/flask/app.py", line 870, in full_dispatch_request
rv = self.dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/flask/app.py", line 855, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/emhass/web_server.py", line 141, in action_call
opt_res = naive_mpc_optim(input_data_dict, app.logger)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/emhass/command_line.py", line 285, in naive_mpc_optim
opt_res_naive_mpc = input_data_dict['opt'].perform_naive_mpc_optim(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/emhass/optimization.py", line 628, in perform_naive_mpc_optim
self.opt_res = self.perform_optimization(df_input_data, P_PV.values.ravel(), P_load.values.ravel(),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/emhass/optimization.py", line 433, in perform_optimization
opt_model.solve(COIN_CMD(msg=0, path=self.lp_solver_path))
File "/usr/local/lib/python3.11/dist-packages/pulp/pulp.py", line 1883, in solve
status = solver.actualSolve(self, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/pulp/apis/coin_api.py", line 112, in actualSolve
return self.solve_CBC(lp, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/pulp/apis/coin_api.py", line 181, in solve_CBC
raise PulpSolverError(
pulp.apis.core.PulpSolverError: Pulp: Error while trying to execute, use msg=True for more details/usr/bin/cbc

  • Home Assistant OS

  • OS: HA OS

  • Architecture: amd64

EMHASS installation type

  • Add-on

Worked before upgrade

Try setting COIN_CMD on lp_solver, and path to /usr/bin/cbc. (If haven't already)
I have noticed pulp having a few issues. changed armhf and arm/7 to COIN_CMD to fix theirs.

If this fixes it we may need to do the same on amd64. Although when testing I didn't notice any issues myself.

These are already set this way

mmm. could you test lp_solver to PULP_CBC_CMD and default and path to empty

tested with MPC with this: (just changed the single quotation marks to double)

{
    "load_cost_forecast": [
        0.156,
        0.153,
        0.153,
        0.154,
        0.163,
        0.178,
        0.195,
        0.217,
        0.207,
        0.175,
        0.139,
        0.134
    ], "prod_price_forecast": [
        0.0807,
        0.0784,
        0.0783,
        0.079,
        0.0863,
        0.0993,
        0.1131,
        0.1321,
        0.1234,
        0.0965,
        0.083,
        0.0785
    ], 
    "prediction_horizon": 12,
    "soc_init": 0.68, 
    "soc_final": 0.2, 
    "def_total_hours": [
        0,
        0
    ], 
    "pv_power_forecast": [
        10795,
        9971,
        6408,
        5533,
        4192,
        2375,
        651,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        14,
        478,
        1654,
        2460,
        2544
    ]
}
  "lp_solver": "COIN_CMD",
  "lp_solver_path": "/usr/bin/cbc",

Seemed to work on my amd64. Might be good to see if uninstalling it and reinstalling works? Ill do some more testing and see if I can replicate the issue.

Edit: So far I cant replicate the issue sorry. May be also good to see if resetting the configuration parameters to their defaults (I.e. a fresh install) then running MPC causes any change.

setting to PULP_CBC_CMD and empty worked

setting to PULP_CBC_CMD and empty worked

Thanks for that. We should keep an eye open and see if other people have the same issue. @davidusb-geek

Closing as solved