def METHOD_NAME(self):
    gr = self.graph
    gr.generateGlobalVariables()
    print("Decision Variables")
    print("---------------------")
    xnames = gr.opt.v
    self.xnames = xnames
    gr.scaleGlobalVariables(xnames)
    xinit = gr.getGlobalVariables(xnames, "scaled", True)
    for xn in xnames:
        print(
            (xn + ": " + str(gr.x[xn].value) + "  scaled: " + str(gr.x[xn].scaled))
        )
    print("----------------------")
    print("Optimizer = SNOBFIT-NIST")
    opts = copy.deepcopy(self.options)
    itmax = opts.pop("itmax")
    ofile = opts.pop("Output File")
    self.flushm = opts.pop("Flush Modulus")
    upper = opts.pop("upper")
    lower = opts.pop("lower")
    bounds = [numpy.array(lower), numpy.array(upper)]
    if itmax == 0:
        itmax = 50000  # in nmax is 0 just set max iterations to large number
    #
    # setup solver set options ...
    f = len(xnames) * [0]
    it = 0
    if ofile != "":
        gr.createCSV(ofile)  # create a CSV output file add a coulmn for objective
        self.ofile = ofile
    self.flushc = 0
    start = time.process_time()
    xopt, fopt, nit = snobfit.snobfit(self.func, xinit, bounds, maxiter=itmax)
    if ofile != "":
        gr.closeCSV()
    print("-------------------------")
    print(("Elapsed Time: " + str(time.process_time() - start) + " sec"))
    print("-------------------------")
    print("Solution")
    print("-------------------------")
    # resolve with opt so the best solution will be on flowsheet
    gr.setGlobalVariables(xnames, xopt, "scaled", True)
    gr.solve()  # resolve with optimal input
    xfinal = gr.getGlobalVariables(xnames, "value", True)
    print(("best f " + str(fopt)))
    print(("best x (scaled): " + str(xopt)))
    print(("best x (notscaled): " + str(xfinal)))
    print(("number of iterations: " + str(nit)))