code: def linear(x, fc, alpha=None, beta=None):
      Y = x[:]
  
      if alpha == None or beta == None:
          initial_values = array([0.3, 0.1])
          boundaries = [(0, 1), (0, 1)]
          type = "linear"
  
          parameters = fmin_l_bfgs_b(
              RMSE,
              x0=initial_values,
              args=(Y, type),
              bounds=boundaries,
              approx_grad=True,
          )
          alpha, beta = parameters[0]
  
      a = [Y[0]]
      b = [Y[1] - Y[0]]
      y = [a[0] + b[0]]
      rmse = 0
  
      for i in range(len(Y) + fc):
          if i == len(Y):
              Y.append(a[-1] + b[-1])
  
          a.append(alpha * Y[i] + (1 - alpha) * (a[i] + b[i]))
          b.append(beta * (a[i + 1] - a[i]) + (1 - beta) * b[i])
          y.append(a[i + 1] + b[i + 1])
  
      rmse = sqrt(
          sum([(m - n) ** 2 for m, n in zip(Y[:-fc], y[: -fc - 1])])
          / len(Y[:-fc])
      )
  
      return Y[-fc:], alpha, beta, rmse
  
file_path: lore/lore/estimators/holt_winters/holtwinters.py
imports: from __future__ import division
  from sys import exit
  from math import sqrt
  from numpy import array
  from scipy.optimize import fmin_l_bfgs_b
label_desc: Use image node_id 2 for calling a global function with example usage: linear(x, fc, alpha, beta) and returns: Y,  alpha,  beta,  rmse