João Fernando Silva Costa Posted November 23, 2023 Share Posted November 23, 2023 Hello everyone, recently I started a project and one of my goals is create a forecast profile for my HCl tank level. When we do a regeneration in Ion Exchanger columns my tank level decreases. I want to predict when my level tank reaches 28%, but because of the behavior of the signal looks like a ladder, and we have the load of tanking, my forecast only can predict near to the target. For example, if my tank level is 80%, my forecast shows stable consumption is lower variation, whereas in fact my consumption is more like a drop. How can I teach SeeQ to understand the decreasing rate tank to predict in advance? Link to comment Share on other sites More sharing options...
Seeq Team Chris Harp Posted November 28, 2023 Seeq Team Share Posted November 28, 2023 Hi João, To train your model to be more accurate when the tank level is decreasing and ignore periods where the tank level is fairly constant, we need to create conditions for when the tank is rapidly decreasing. We can use that condition to train your model and then splice in the forecast data when the condition is true (e.g., the tank level is rapidly decreasing). First is to create a derivative from a smoothed signal. Using Formula: $signal.agileFilter(2min).derivative('h') Adjust the agileFilter time to makes sense for you data. You don't want a lot of noise in the derivative signal but you also don't want to lose too much resolution. Create a condition using Value Search or Formula. ($derivative_signal < -1) .merge(1h) .removeShorterThan(1h) We know have a condition when the tank level is decreasing at a rate of -1%/hr. It will ignore gaps shorter than an hour and also capsules shorter than 1 hour. We now need to create a time signal to use in our prediction of the level in Formula. By using the growEnd(1d), we'll be able to use this Signal in forecasting our tank level. timeSince($tank_decrease_condition.growEnd(1d), 1h) We want to use this timeSince signal and our condition in our Prediction. Using the advanced dropdown, we can limit our training set to when our tank is rapidly decreasing by using our Derivative Condition. However, by having the timeSince extend beyond the condition by using the growEnd function, we can use this signal to forecast the level. The last step is to create a signal using Formula which will splice the prediction signal on our tank level signal. $tank_level.forecastSplice($tank_level_prediction) This will splice the forecast to your signal. You can adjust the duration as necessary to fit your use case. Hope this helps. 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now