{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "import SimPEG\n", "from SimPEG import Solver\n", "from SimPEG.mesh import TensorMesh\n", "from SimPEG.regularization import Regularization\n", "import SimPEG.inverse as inverse\n", "from SimPEG.inverse import Minimize, Remember, IterationPrinters\n", "import numpy as np\n", "import scipy.sparse as sp" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "FUN = SimPEG.tests.Rosenbrock\n", "FUN = SimPEG.tests.getQuadratic(sp.csr_matrix(([100,1],([0,1],[0,1])),shape=(2,2)),np.array([-5,-5]),100)\n", "\n", "x0 = np.array([1,0])\n", "opt = inverse.BFGS()\n", "xopt = opt.minimize(FUN,x0)\n", "print xopt\n", "opt = inverse.GaussNewton()\n", "xopt = opt.minimize(FUN,x0)\n", "print xopt\n", "opt = inverse.SteepestDescent()\n", "xopt = opt.minimize(FUN,x0)\n", "print xopt" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "===================== BFGS =====================\n", " # f |proj(x-g)-x| LS Comment \n", "-----------------------------------------------\n", " 0 1.45e+02 9.51e+01 0 \n", " 1 1.14e+02 5.37e+01 6 \n", " 2 1.04e+02 3.04e+01 6 \n", " 3 8.83e+01 1.37e+01 0 \n", " 4 8.76e+01 5.97e+00 0 Skip BFGS \n", " 5 8.74e+01 2.61e+00 0 Skip BFGS \n", " 6 8.74e+01 1.14e+00 0 Skip BFGS \n", " 7 8.74e+01 5.01e-01 0 Skip BFGS \n", " 8 8.74e+01 2.19e-01 0 Skip BFGS \n", " 9 8.74e+01 9.60e-02 0 Skip BFGS \n", "------------------------- STOP! -------------------------\n", "1 : |fc-fOld| = 1.9437e-04 <= tolF*(1+|f0|) = 1.4600e+01\n", "1 : |xc-x_last| = 1.2663e-03 <= tolX*(1+|x0|) = 2.0000e-01\n", "1 : |proj(x-g)-x| = 9.5952e-02 <= tolG = 1.0000e-01\n", "0 : |proj(x-g)-x| = 9.5952e-02 <= 1e3*eps = 1.0000e-02\n", "0 : maxIter = 20 <= iter = 9\n", "------------------------- DONE! -------------------------\n", "[ 0.05095952 4.99977449]\n", "=========== Gauss Newton ===========\n", " # f |proj(x-g)-x| LS \n", "-----------------------------------\n", " 0 1.45e+02 9.51e+01 0 \n", " 1 8.74e+01 4.44e-15 0 \n", "------------------------- STOP! -------------------------\n", "0 : |fc-fOld| = 5.7625e+01 <= tolF*(1+|f0|) = 1.4600e+01\n", "0 : |xc-x_last| = 5.0894e+00 <= tolX*(1+|x0|) = 2.0000e-01\n", "1 : |proj(x-g)-x| = 4.4409e-15 <= tolG = 1.0000e-01\n", "1 : |proj(x-g)-x| = 4.4409e-15 <= 1e3*eps = 1.0000e-02\n", "0 : maxIter = 20 <= iter = 1\n", "------------------------- DONE! -------------------------\n", "[ 0.05 5. ]\n", "========= Steepest Descent =========\n", " # f |proj(x-g)-x| LS \n", "-----------------------------------\n", " 0 1.45e+02 9.51e+01 0 \n", " 1 1.14e+02 5.37e+01 6 \n", " 2 1.04e+02 3.04e+01 6 \n", " 3 1.00e+02 1.76e+01 6 \n", " 4 9.88e+01 1.06e+01 6 \n", " 5 9.82e+01 7.07e+00 6 \n", " 6 9.80e+01 1.22e+01 5 \n", " 7 9.73e+01 7.77e+00 6 \n", " 8 9.68e+01 5.64e+00 6 \n", " 9 9.65e+01 8.72e+00 5 \n", " 10 9.60e+01 5.97e+00 6 \n", " 11 9.58e+01 9.98e+00 5 \n", " 12 9.53e+01 6.48e+00 6 \n", " 13 9.53e+01 1.16e+01 5 \n", " 14 9.46e+01 7.20e+00 6 \n", " 15 9.43e+01 5.07e+00 6 \n", " 16 9.41e+01 8.17e+00 5 \n", " 17 9.37e+01 5.43e+00 6 \n", " 18 9.36e+01 9.42e+00 5 \n", " 19 9.32e+01 5.98e+00 6 \n", " 20 9.29e+01 4.32e+00 6 \n", "------------------------- STOP! -------------------------\n", "1 : |fc-fOld| = 2.5913e-01 <= tolF*(1+|f0|) = 1.4600e+01\n", "1 : |xc-x_last| = 9.3379e-02 <= tolX*(1+|x0|) = 2.0000e-01\n", "0 : |proj(x-g)-x| = 4.3246e+00 <= tolG = 1.0000e-01\n", "0 : |proj(x-g)-x| = 4.3246e+00 <= 1e3*eps = 1.0000e-02\n", "1 : maxIter = 20 <= iter = 20\n", "------------------------- DONE! -------------------------\n", "[ 0.07777107 1.6849632 ]\n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "/Users/rowan/git/simpeg/SimPEG/inverse/Optimize.py:664: RuntimeWarning: divide by zero encountered in remainder\n", " khat = np.mod(n-nn+k,nn)\n" ] } ], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "A = sp.identity(2)\n", "S = Solver(A)\n", "\n", "assert type(S) is Solver" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }