This model is a stochastic wind speed generator (WindGen) designed to simulate a synthetic, daily time series of wind speed for a location. The model's goal is to capture the statistical properties of historical daily average data, including seasonality (e.g., higher minimum speeds in summer).
The model is built on a first-order, 4-state Markov chain. This approach simulates the regime or "state" of the wind first, and then generates a specific wind speed based on that state.
The model is separated into two components:
WindGen PAR: The parameter generation model, which calibrates the model's parameters from a historical time series.
WindGen: The simulation model, which uses the parameters to generate a new, synthetic time series.
WindGen PAR (Parameter Generation)
This component processes a historical daily wind speed time series (Wind_TS) to derive the model's core parameters.
State Discretization
First, the continuous historical wind speed data is discretized into four distinct states based on user-defined thresholds:
State 1: Calm
State 2: Light
State 3: Moderate
State 4: Strong
This is accomplished using a conditional expression: State_Today = if(Wind_TS < Calm_Speed, 1, if(Wind_TS < Light_Breeze_Speed, 2, if(Wind_TS < Moderate_Speed, 3, 4)))
Transition Probability Matrix (TPM) Calculation
The model's component for simulating persistence is the Transition Probability Matrix (TPM). This 4x4 matrix defines the probability of transitioning from one state (e.g., "Calm") on one day to any other state (e.g., "Light") on the next day.
This matrix is calculated dynamically:
Count Matrix: A GoldSim Script element is used to populate a 4x4 "transition count" matrix. At each time step, it compares the state from the previous day (
From = State_Yesterday) to the state on the current day (To = State_Today) and adds 1 to the corresponding cell in the matrix (Result[~From, ~To]).Probability Matrix: The final TPM is calculated by normalizing the count matrix. Each row of the count matrix is divided by its row sum, converting the raw transition counts into probabilities.
Seasonal Parameters (Manual Input)
Currently, the seasonal mean wind speeds for each of the four states (e.g., the average speed for "Calm" in summer vs. winter) are calculated externally and provided as inputs to the WindGen simulation model.
WindGen (Stochastic Simulation)
This component uses the parameters from "WindGen PAR" to generate synthetic daily time series.
Step 1: Simulate Daily Wind State
The main part of the simulation is a Script element that functions as a classic Markov chain. At each time step, it determines the next day's wind state based on two things:
The current day's
StateThe
TPM
The logic (simplified) is as follows:
Get a uniform random number,
RN(between 0 and 1).Look at the row in the
TPMthat corresponds to the currentState.Compare
RNto the cumulative probabilities in that row to select the next state.
For example, if the current state is "Calm" (State 1):
IF RN < TPM[1,1]-> Next State = 1 (Calm)ELSE IF RN < (TPM[1,1] + TPM[1,2])-> Next State = 2 (Light)ELSE IF RN < (TPM[1,1] + TPM[1,2] + TPM[1,3])-> Next State = 3 (Moderate)ELSE-> Next State = 4 (Strong)
This logic is repeated for all four possible starting states.
Step 2: Determine Mean Wind Speed
Once the simulated state for the day (1, 2, 3, or 4) is known, an if statement (or Selector element) is used to look up the appropriate seasonal mean wind speed for that state.
Mean_Wind_Speed = if(State == 1, calm_speed, if(State == 2, light_breeze_speed, ...))
Step 3: Generate Final Wind Speed
The Mean_Wind_Speed is not the final output. Instead, it is fed as the mean input to a Stochastic element. This element samples from a Gamma distribution (using the selected mean and a specified standard deviation) to produce the final, continuous wind speed value for the day.
Future Refinements
The WindGen PAR (parameterization) component could be enhanced to further automate the calibration process:
Automated Seasonal Statistics: The model could be updated to automatically calculate the seasonal mean wind speeds for each of the four states from the historical data.
State-Specific Standard Deviations: Instead of using a single assumed standard deviation for the final Gamma distribution, the
WindGen PARmodel could be modified to calculate the historical standard deviation for each of the four states (and ideally, per season). This would provide a more realistic, state-dependent variance to the final simulation.
References:
Shamshad, A., Abbas, M. A., Iqbal, M. J., & S. H., S. (2005). A non-homogeneous Markov chain model for simulating daily wind speed at a single site. Journal of Wind Engineering and Industrial Aerodynamics, 93(12), 955-968.
Nfaoui, H., Buret, J., & Watremez, A. (2004). A stochastic Markov chain model for simulating wind speed time series. Renewable Energy, 29(12), 1945-1951.
Download the Model Files:
Note the older version of the Wind model remains linked below (Wind Model.gsm) but this has proven to be more difficult to calibrate.
Comments
0 comments
Please sign in to leave a comment.