{
"cells": [
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
" \n",
" "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import math as m\n",
"import numpy as np\n",
"from numpy import random as r\n",
"import time\n",
"import matplotlib.pyplot as plt\n",
"from mpl_toolkits import mplot3d\n",
"import copy as cp\n",
"import plotly\n",
"import plotly.graph_objs as go\n",
"\n",
"# Configure Plotly to be rendered inline in the notebook.\n",
"plotly.offline.init_notebook_mode()\n",
"\n",
"%matplotlib inline\n",
"r.seed(int(time.time()))\n",
"route = list()"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"class settings:\n",
" iter_max = 10000\n",
" pop_size = 100\n",
" dimensions = 2\n",
" c1 = 2\n",
" c2 = 2\n",
" neededQuality = 1000000\n",
" objective = 0\n",
" sigma = 0.001"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"def func(Sc):\n",
" x1 = Sc[0]\n",
" x2 = Sc[1]\n",
" return m.sqrt(x1**2+x2**2)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"def Quality(Sc,objective):\n",
" func_output = func(Sc)\n",
" if type(func_output) == list:\n",
" error = [func_output[i]-objective[i] for i in range(len(func_output))]\n",
" else:\n",
" error = func_output - objective\n",
" return 1/abs(error)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"def tweak(St,twprob,sigma,high,low):\n",
" for i in range(len(St)):\n",
" if twprob > r.random():\n",
" while True:\n",
" n = r.normal(loc=0, scale=sigma)\n",
" if (high > St[i]+n) and (low < St[i]+n):\n",
" St[i]+=n\n",
" break\n",
" return np.array(St)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"def move(p,world,best):\n",
" v = p.v + world.c1 * r.random() * (p.best - p.params) \\\n",
" + world.c2 * r.random() * (best.params - p.params)\n",
" \n",
" return v"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"def simulatedAnnealing(high,low,t,twprob,world):\n",
" route = list()\n",
" #initialize the particles\n",
" particles = []\n",
" for i in range(world.pop_size):\n",
" p = Particle()\n",
" p.params = np.array([r.uniform(-100,100) for i in range(world.dimensions)])\n",
" p.fitness = 0.0\n",
" p.v = 0.0\n",
" particles.append(p)\n",
" \n",
" Best = cp.deepcopy(particles[0])\n",
" Q = 0\n",
" route.append(cp.deepcopy(Best.params[:]))\n",
" for i in range(world.iter_max):\n",
" for p in particles:\n",
" Q = Quality(p.params,world.objective)\n",
" try:\n",
" prob = m.e**((Q-p.fitness)/t)\n",
" except:\n",
" pass\n",
" \n",
" if (Q > p.fitness) or (r.random() < prob):\n",
" p.fitness = Q\n",
" p.best = p.params\n",
" \n",
" if t > 0.01:\n",
" t-= t/10\n",
" \n",
" if Q > Best.fitness:\n",
" Best = cp.deepcopy(p)\n",
" route.append(Best.params[:])\n",
" print('////////////\\n////////////\\n******new Best: {}'.format(Best.params))\n",
" \n",
" v = move(p,world,Best)\n",
" p.params += v\n",
" p.params = tweak(cp.deepcopy(p.params),twprob,world.sigma,high,low)\n",
" \n",
" if Q > world.neededQuality:\n",
" break\n",
" \n",
" return Best, route"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"class Particle:\n",
" pass"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"#initialize the particles\n",
"world = settings()\n",
"particles = []\n",
"for i in range(world.pop_size):\n",
" p = Particle()\n",
" p.params = np.array([r.random() for i in range(world.dimensions)])\n",
" p.fitness = 0.0\n",
" p.v = 0.0\n",
" particles.append(p)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"////////////\n",
"////////////\n",
"******new Best: [ 8.80091737 54.31489738]\n",
"////////////\n",
"////////////\n",
"******new Best: [ 0.90003976 32.42886985]\n",
"////////////\n",
"////////////\n",
"******new Best: [-14.25252957 -12.22367071]\n",
"////////////\n",
"////////////\n",
"******new Best: [-0.21023678 1.75864441]\n",
"////////////\n",
"////////////\n",
"******new Best: [-0.21023678 1.7585004 ]\n",
"////////////\n",
"////////////\n",
"******new Best: [-0.321148 -1.30557749]\n",
"////////////\n",
"////////////\n",
"******new Best: [-1.16680824 -0.52723487]\n",
"////////////\n",
"////////////\n",
"******new Best: [-0.01933279 0.38534687]\n",
"////////////\n",
"////////////\n",
"******new Best: [0.06641201 0.0600155 ]\n",
"////////////\n",
"////////////\n",
"******new Best: [0.05225936 0.06420853]\n",
"////////////\n",
"////////////\n",
"******new Best: [-0.0381331 0.00451434]\n",
"////////////\n",
"////////////\n",
"******new Best: [-0.03334581 0.00023158]\n",
"////////////\n",
"////////////\n",
"******new Best: [-0.01656216 -0.01598667]\n",
"////////////\n",
"////////////\n",
"******new Best: [-0.01018823 -0.00708454]\n",
"////////////\n",
"////////////\n",
"******new Best: [ 0.00693716 -0.00165677]\n",
"////////////\n",
"////////////\n",
"******new Best: [ 0.00269686 -0.00636808]\n",
"////////////\n",
"////////////\n",
"******new Best: [ 0.0025804 -0.00331996]\n",
"////////////\n",
"////////////\n",
"******new Best: [ 0.0031575 -0.00258449]\n",
"////////////\n",
"////////////\n",
"******new Best: [ 0.00207138 -0.00215465]\n",
"////////////\n",
"////////////\n",
"******new Best: [ 0.00161053 -0.00233385]\n",
"////////////\n",
"////////////\n",
"******new Best: [ 0.00019309 -0.0011909 ]\n",
"////////////\n",
"////////////\n",
"******new Best: [0.00023637 0.00020185]\n",
"////////////\n",
"////////////\n",
"******new Best: [ 0.0002592 -0.0001078]\n",
"////////////\n",
"////////////\n",
"******new Best: [-0.000109 -0.00023383]\n",
"////////////\n",
"////////////\n",
"******new Best: [2.14326952e-04 4.09178763e-05]\n",
"////////////\n",
"////////////\n",
"******new Best: [ 1.96352778e-04 -7.67010934e-05]\n",
"////////////\n",
"////////////\n",
"******new Best: [0.00010629 0.00017847]\n",
"////////////\n",
"////////////\n",
"******new Best: [ 1.29681180e-04 -8.66467184e-06]\n",
"////////////\n",
"////////////\n",
"******new Best: [-1.35549682e-05 -2.06371552e-05]\n",
"////////////\n",
"////////////\n",
"******new Best: [-6.72719898e-06 -1.45844374e-05]\n",
"////////////\n",
"////////////\n",
"******new Best: [-9.29702968e-06 5.47138433e-07]\n",
"////////////\n",
"////////////\n",
"******new Best: [-8.94573240e-06 -1.52135637e-06]\n",
"////////////\n",
"////////////\n",
"******new Best: [-2.92114219e-07 6.44970596e-06]\n",
"////////////\n",
"////////////\n",
"******new Best: [-4.80211347e-06 2.14761437e-06]\n",
"////////////\n",
"////////////\n",
"******new Best: [-4.75484093e-06 4.49045730e-07]\n",
"////////////\n",
"////////////\n",
"******new Best: [-2.96136818e-06 -4.56184922e-07]\n",
"////////////\n",
"////////////\n",
"******new Best: [-2.05783627e-06 -6.00801209e-07]\n",
"////////////\n",
"////////////\n",
"******new Best: [ 1.88129246e-06 -4.87863133e-07]\n",
"////////////\n",
"////////////\n",
"******new Best: [1.86577718e-06 6.63715928e-08]\n",
"////////////\n",
"////////////\n",
"******new Best: [-8.92296012e-07 6.52741211e-07]\n",
"////////////\n",
"////////////\n",
"******new Best: [-5.44326882e-07 8.18734726e-07]\n",
"////////////\n",
"////////////\n",
"******new Best: [5.33408916e-07 2.63689230e-08]\n",
"////////////\n",
"////////////\n",
"******new Best: [4.09105502e-07 3.35688869e-08]\n",
"////////////\n",
"////////////\n",
"******new Best: [ 1.69180715e-08 -2.43391724e-08]\n",
"////////////\n",
"////////////\n",
"******new Best: [ 1.03079214e-08 -2.54900928e-08]\n",
"////////////\n",
"////////////\n",
"******new Best: [-5.02785069e-09 1.69569567e-08]\n",
"////////////\n",
"////////////\n",
"******new Best: [-1.19640956e-08 7.66106298e-09]\n",
"////////////\n",
"////////////\n",
"******new Best: [-9.48263415e-09 7.86956390e-09]\n",
"////////////\n",
"////////////\n",
"******new Best: [-9.48713327e-09 7.53082012e-09]\n",
"////////////\n",
"////////////\n",
"******new Best: [-2.18178192e-09 3.80470277e-09]\n"
]
},
{
"ename": "KeyboardInterrupt",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mworld\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msettings\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpath\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msimulatedAnnealing\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhigh\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m100\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mlow\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m-\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mt\u001b[0m \u001b[0;34m=\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtwprob\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0.2\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mworld\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mworld\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32m\u001b[0m in \u001b[0;36msimulatedAnnealing\u001b[0;34m(high, low, t, twprob, world)\u001b[0m\n\u001b[1;32m 35\u001b[0m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmove\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mp\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mworld\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mBest\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 36\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparams\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0mv\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 37\u001b[0;31m \u001b[0mp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparams\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtweak\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdeepcopy\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparams\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mtwprob\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mworld\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msigma\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mhigh\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mlow\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 38\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 39\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mQ\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0mworld\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mneededQuality\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m\u001b[0m in \u001b[0;36mtweak\u001b[0;34m(St, twprob, sigma, high, low)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mtwprob\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0mr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrandom\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0mn\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnormal\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mloc\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mscale\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msigma\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mhigh\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0mSt\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mlow\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0mSt\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0mSt\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m+=\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mKeyboardInterrupt\u001b[0m: "
]
}
],
"source": [
"world = settings()\n",
"a, path = simulatedAnnealing(high = 100,low = -100,t =100, twprob = 0.2, world = world)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([-8.76862994e-07, -1.26566209e-06])"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.params"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"h1 = [i[0] for i in path]\n",
"h2 = [i[1] for i in path]\n",
"plt.plot(h1,h2)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"linkText": "Export to plot.ly",
"plotlyServerURL": "https://plot.ly",
"showLink": false
},
"data": [
{
"marker": {
"opacity": 0.8,
"size": 5
},
"mode": "markers",
"type": "scatter3d",
"x": [
-73.05789347897482,
-73.05789347897482,
-22.48842807612266,
-6.579374313223724,
9.541420360553431,
-8.144506902989335,
2.1917143050206764,
-6.742406049553953,
2.020036025458844,
-2.9266375397562765,
-1.282284602629149,
0.26799279122852104,
1.1609978426983574,
-0.7206090649448891,
0.21436634629481643,
-0.26040486540838614,
0.13591151391989645,
-0.20070657792805985,
-0.10169767449575076,
0.07126306792844894,
-0.07819444411594278,
0.03722556643393177,
-0.008369054927866826,
0.01223052539777817,
-0.006710233294789866,
0.004332694563603079,
0.00047145201245381643,
0.00014648072172059566,
0.00017087601814925487,
0.00010282941469771662,
4.35849419107459e-05,
-1.9758608321231044e-05,
-1.6198288179831923e-05,
-1.0657427282820999e-05,
-1.3464328400331046e-05,
-8.76862993834573e-07
],
"y": [
88.91383399322882,
88.91383399322882,
11.520444362050512,
10.923397644054916,
4.310070877652024,
6.40425472746942,
9.925596781418992,
5.39978501110356,
-7.472271056763841,
3.6831744785526785,
4.39356407739675,
-1.519268168058474,
-0.5709694095623021,
-0.4465226641067118,
0.5519281318252123,
-0.39350658874629985,
-0.31134152487747935,
-0.25865467979118517,
0.13074827927489596,
-0.09991216025547403,
-0.09004197097697852,
0.01140570986407019,
0.013100730646248282,
-0.008842339836786131,
0.00787776467527744,
0.007994862285628956,
-0.0005751844738485293,
0.00029407679246401877,
-9.315356909180006e-05,
8.221887914846725e-05,
-0.0001026038937697617,
-3.238480739120846e-08,
-9.636335547154665e-06,
-1.3000496349495512e-05,
-4.394055220245483e-06,
-1.2656620906564725e-06
],
"z": [
115.07878029837075,
115.07878029837075,
25.267568850881624,
12.751814868623706,
10.469737984647354,
10.360862478923043,
10.16469788346645,
8.638154751056526,
7.740502586389476,
4.704357716901688,
4.57686127213082,
1.5427235340871046,
1.2938013979765843,
0.8477381164261182,
0.5920959323655737,
0.47186664357115693,
0.33971382769771424,
0.32739177418113746,
0.16564277687599258,
0.12272271435023857,
0.11925572366985303,
0.03893370023296547,
0.015545746165790849,
0.015092141176616123,
0.01034825623714235,
0.009093407785184164,
0.0007437097410974007,
0.0003285388283014843,
0.0001946180901485914,
0.00013165801386738764,
0.00011147737966995653,
1.975863486093031e-05,
1.8847904465330865e-05,
1.6810522348275304e-05,
1.4163186807725433e-05,
1.5397367429796054e-06
]
}
],
"layout": {
"margin": {
"b": 0,
"l": 0,
"r": 0,
"t": 0
},
"template": {
"data": {
"bar": [
{
"error_x": {
"color": "#2a3f5f"
},
"error_y": {
"color": "#2a3f5f"
},
"marker": {
"line": {
"color": "#E5ECF6",
"width": 0.5
}
},
"type": "bar"
}
],
"barpolar": [
{
"marker": {
"line": {
"color": "#E5ECF6",
"width": 0.5
}
},
"type": "barpolar"
}
],
"carpet": [
{
"aaxis": {
"endlinecolor": "#2a3f5f",
"gridcolor": "white",
"linecolor": "white",
"minorgridcolor": "white",
"startlinecolor": "#2a3f5f"
},
"baxis": {
"endlinecolor": "#2a3f5f",
"gridcolor": "white",
"linecolor": "white",
"minorgridcolor": "white",
"startlinecolor": "#2a3f5f"
},
"type": "carpet"
}
],
"choropleth": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "choropleth"
}
],
"contour": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "contour"
}
],
"contourcarpet": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "contourcarpet"
}
],
"heatmap": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "heatmap"
}
],
"heatmapgl": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "heatmapgl"
}
],
"histogram": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "histogram"
}
],
"histogram2d": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "histogram2d"
}
],
"histogram2dcontour": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "histogram2dcontour"
}
],
"mesh3d": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "mesh3d"
}
],
"parcoords": [
{
"line": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "parcoords"
}
],
"pie": [
{
"automargin": true,
"type": "pie"
}
],
"scatter": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatter"
}
],
"scatter3d": [
{
"line": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatter3d"
}
],
"scattercarpet": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattercarpet"
}
],
"scattergeo": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattergeo"
}
],
"scattergl": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattergl"
}
],
"scattermapbox": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattermapbox"
}
],
"scatterpolar": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterpolar"
}
],
"scatterpolargl": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterpolargl"
}
],
"scatterternary": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterternary"
}
],
"surface": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "surface"
}
],
"table": [
{
"cells": {
"fill": {
"color": "#EBF0F8"
},
"line": {
"color": "white"
}
},
"header": {
"fill": {
"color": "#C8D4E3"
},
"line": {
"color": "white"
}
},
"type": "table"
}
]
},
"layout": {
"annotationdefaults": {
"arrowcolor": "#2a3f5f",
"arrowhead": 0,
"arrowwidth": 1
},
"coloraxis": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"colorscale": {
"diverging": [
[
0,
"#8e0152"
],
[
0.1,
"#c51b7d"
],
[
0.2,
"#de77ae"
],
[
0.3,
"#f1b6da"
],
[
0.4,
"#fde0ef"
],
[
0.5,
"#f7f7f7"
],
[
0.6,
"#e6f5d0"
],
[
0.7,
"#b8e186"
],
[
0.8,
"#7fbc41"
],
[
0.9,
"#4d9221"
],
[
1,
"#276419"
]
],
"sequential": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"sequentialminus": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
]
},
"colorway": [
"#636efa",
"#EF553B",
"#00cc96",
"#ab63fa",
"#FFA15A",
"#19d3f3",
"#FF6692",
"#B6E880",
"#FF97FF",
"#FECB52"
],
"font": {
"color": "#2a3f5f"
},
"geo": {
"bgcolor": "white",
"lakecolor": "white",
"landcolor": "#E5ECF6",
"showlakes": true,
"showland": true,
"subunitcolor": "white"
},
"hoverlabel": {
"align": "left"
},
"hovermode": "closest",
"mapbox": {
"style": "light"
},
"paper_bgcolor": "white",
"plot_bgcolor": "#E5ECF6",
"polar": {
"angularaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"bgcolor": "#E5ECF6",
"radialaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
}
},
"scene": {
"xaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
},
"yaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
},
"zaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
}
},
"shapedefaults": {
"line": {
"color": "#2a3f5f"
}
},
"ternary": {
"aaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"baxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"bgcolor": "#E5ECF6",
"caxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
}
},
"title": {
"x": 0.05
},
"xaxis": {
"automargin": true,
"gridcolor": "white",
"linecolor": "white",
"ticks": "",
"title": {
"standoff": 15
},
"zerolinecolor": "white",
"zerolinewidth": 2
},
"yaxis": {
"automargin": true,
"gridcolor": "white",
"linecolor": "white",
"ticks": "",
"title": {
"standoff": 15
},
"zerolinecolor": "white",
"zerolinewidth": 2
}
}
}
}
},
"text/html": [
"\n",
" \n",
" \n",
"
\n",
" \n",
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"h3 = [func(s) for s in path]\n",
"trace = go.Scatter3d(\n",
" x=h1, # <-- Put your data instead\n",
" y=h2, # <-- Put your data instead\n",
" z=h3, # <-- Put your data instead\n",
" mode='markers',\n",
" marker={\n",
" 'size': 5,\n",
" 'opacity': 0.8,\n",
" }\n",
")\n",
"\n",
"#Configure the layout.\n",
"layout = go.Layout(\n",
" margin={'l': 0, 'r': 0, 'b': 0, 't': 0}\n",
")\n",
"\n",
"data = [trace]\n",
"\n",
"plot_figure = go.Figure(data=data, layout=layout)\n",
"\n",
"# Render the plot.\n",
"plotly.offline.iplot(plot_figure)\n",
"\n",
"#fig = plt.figure()\n",
"#ax = plt.axes(projection='3d')\n",
"#ax.scatter3D(h1, h2, h3, c=h3, cmap='Greens');\n",
"#plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.2"
}
},
"nbformat": 4,
"nbformat_minor": 4
}