PyPSA / linopy

Linear optimization with N-D labeled arrays in Python
https://linopy.readthedocs.io
MIT License
165 stars 50 forks source link

Bug: "cannot reshape array of size" after optimization is finished #376

Open tburandt opened 2 days ago

tburandt commented 2 days ago

Hi all,

sometimes I get randomly these errors when calling model.solve:

2024-11-13 15:05:34 [INFO]  Optimization successful: 
Status: ok
Termination condition: optimal
Solution: 3017580 primals, 254750 duals
Objective: 3.52e+08
Solver model: available
Solver message: optimal
 in constants.info:239
2024-11-13 15:05:34 [ERROR] Attempt 1 failed with error: cannot reshape array of size 65160 into shape (1086,30) in model_builder.solve:276

rebuilding the model (aka initializing a new model class and re-adding constraints variables, etc without andy data changes) usually solves this problem. However, I run 24h simulations for up to 5-6 years in total and every like 20 simulations, I get this error. Also, its not traceable and not really reproducible. It really occurs randomly and happens with cplex and highs

FabianHofmann commented 2 days ago

Hey @tburandt, this is quite weird. linopy does not have a model_builder.solve, so I am wondering whether this occurs in one of the other libraries highspy or cplex.

tburandt commented 2 days ago

@FabianHofmann hey, yeah sorry, model_builder.solve is my class and in essence only calls model.solve:

    def solve(self, [...]):
        attempt = 0
        while attempt < self.max_retries:
            try:
                logging.info(
                    f"Attempt {attempt + 1}/{self.max_retries} to solve the model."
                )

                model.solve(**solver_kwargs)
                logging.info("Model solved successfully.")
                return model
            except Exception as e:
                [...]