Jump to content

Try to create a forecast for decreasing tank level


Recommended Posts

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?

image.thumb.png.4d3af63be2158722ab053a58bdef1dad.png

 

Link to comment
Share on other sites

  • Seeq Team

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.

image.png

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.  

image.png

You can adjust the duration as necessary to fit your use case.  

Hope this helps.

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...