mirror of
https://github.com/wassname/simpeg.git
synced 2026-06-29 19:17:23 +08:00
158 lines
5.8 KiB
Plaintext
158 lines
5.8 KiB
Plaintext
{
|
|
"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": {}
|
|
}
|
|
]
|
|
} |