0

I'm encountering an error when trying to initialize an FMU in the reset() method of a custom PyFMIEnvironment class. The error message I'm seeing is:

"[ERROR][Slave] [error][FMU status:Error] fmiInitializeSlave: Could not rename the temporary input file. Initialization of Slave failed."

This error occurs every time I try to run the reset() method, but the simulation runs fine if I skip the reset() method and go straight to the step() method.

Here's a snippet of my code:

# Import libraries
from pyfmi import load_fmu
import numpy as np
import matplotlib.pyplot as plt

class PyFMIEnvironment():
    def __init__(self, fmu_path, start_time, end_time, time_step, num_steps):
    # Define model name and simulation parameters
        self.model = load_fmu(fmu_path)
        self.observation_space = self.model.get_model_variables(causality=1)
        self.action_space = self.model.get_model_variables(causality=0)
        self.start_time = start_time
        self.end_time = end_time
        self.time_step = time_step
        self.num_steps = num_steps
        self.opts = self.model.simulate_options()
        self.opts['ncp'] = num_steps
        self.opts['initialize'] = False
        self.model.initialize(self.start_time, self.end_time)
        print([self.model.get(var) for var in self.observation_space])

    def reset(self):
        self.model.reset()
        self.opts['ncp'] = self.num_steps
        self.opts['initialize'] = False
        self.model.initialize(self.start_time, self.end_time)
        print([self.model.get(var) for var in self.observation_space])

    def step(self, action):
        assert self.model.time is not None, "Model not initialized"
        for var, value in zip(self.action_space.keys(), action):
            self.model.set(var, value)
        self.model.do_step(self.model.time, self.time_step)
        next_state = [self.model.get(var) for var in self.observation_space]
        reward = self.get_reward(next_state)
        done = self.model.time >= self.end_time
        return next_state, reward, done, {}

    def get_reward(self, state):
        # define the reward function based on the state of the model
        reward = 0
        return reward

days = 10
hours = 24
minutes = 60
seconds = 60
en_timestp = 6 # EnergyPlus time steps per hour
num_steps = days * hours * en_timestp # Number of simulation steps

start_time = 0
end_time = days * hours * minutes * seconds # Simulation end time in seconds
time_step = end_time / num_steps # Simulation time step size in seconds
fmu_path = "./FMU/ASHRAE901_OfficeSmall_STD2019_Tucson.fmu"

env = PyFMIEnvironment(fmu_path = fmu_path, start_time = start_time, end_time = end_time, time_step = time_step, num_steps = num_steps)
env.reset()

I'm running this code on Windows 10 with Python 3.8.

I've tried restarting my computer and checking file permissions, but I'm still getting the same error.

If anyone has any ideas on what could be causing this error. Thank you very much for help.

Ayb009
  • 220
  • 2
  • 11
Elvis
  • 1

0 Answers0