{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# The Traveling Baseball Fan Problem"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Model formulation\n",
"\n",
"$$\n",
"\\begin{array}{rrcll}\n",
"\\text{minimize:} & \\text{Total Time} \\\\\n",
"\\text{subject to:} & \\text{Balance} \\\\\n",
"& \\text{Visit all stadiums once}\n",
"\\end{array}\n",
"$$\n",
"\n",
"$$\n",
"\\begin{array}{rlcll}\n",
"\\textrm{minimize:} & \\sum_{(g_1, g_2) \\in \\text{ARCS}} c[g_1,g_2] \\cdot u[g_1,g_2] \\\\\n",
"\\textrm{subject to:} & \\sum_{(g,g_2) \\in \\text{ARCS}} u[g,g_2] - \\sum_{(g_1,g) \\in \\text{ARCS}} u[g_1,g] &= & \\begin{cases} 1 & \\text{if } g = \\text{source,} \\\\ -1 & \\text{if } g = \\text{sink,} \\\\ 0 & \\text{otherwise}\\end{cases} & & \\forall g \\in \\text{NODES} \\\\\n",
"& \\sum_{(g1,g2) \\in \\text{ARCS}: g_2 \\not = \\text{sink and } l[g_2] = s} u[g_1, g_2] & = & 1 & & \\forall s \\in \\text{STADIUMS}\n",
"\\end{array}\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Solutions"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# Import packages\n",
"import os\n",
"import pandas as pd\n",
"import folium\n",
"\n",
"from bokeh.models.callbacks import CustomJS\n",
"from bokeh.io import output_notebook\n",
"from bokeh.layouts import column, row\n",
"from bokeh.models import HoverTool, ColumnDataSource, TapTool, Div\n",
"from bokeh.plotting import figure, show\n",
"from dateutil.parser import parse\n",
"from IPython.core.display import display, HTML\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"scrolled": false
},
"outputs": [],
"source": [
"# Parse all solutions\n",
"solutions = []\n",
"for filename in sorted(os.listdir(os.getcwd() + '/results'), reverse=True):\n",
" f = open('results/'+filename, 'r')\n",
" rowx = {'ref': filename}\n",
" for line in f:\n",
" if 'schd' in line:\n",
" rowx['schd'] = []\n",
" for visit in f:\n",
" if ']' not in visit:\n",
" items = visit.split(',')\n",
" items = [i.replace('\\n','') for i in items]\n",
" rowx['schd'].append(items)\n",
" elif ': ' in line:\n",
" pl = line.split(': ')\n",
" rowx[pl[0]] = pl[1].replace('\\n','')\n",
" rowx['df'] = pd.DataFrame(rowx['schd'], columns=['ID', 'Venue', 'Away', 'Home', 'City', 'Date', 'Lat', 'Long']).set_index(['ID'])\n",
" rowx['df'] = rowx['df'].to_html(columns=['Away', 'Home', 'Venue', 'City', 'Date'])\n",
" solutions.append(rowx)\n",
" f.close()\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"scrolled": false
},
"outputs": [],
"source": [
"# Generate source for plots and maps\n",
"solutions = sorted(solutions, key=lambda x: (round(float(x['mont'])), x['sdat'], x['objt']))\n",
"linef = '{:>2} {:>2} {:>11} {:>5} {:>4} {:>13} {:>12} {:>16} {:>12}'\n",
"\n",
"df_source = []\n",
"\n",
"for i, v in enumerate(solutions):\n",
" period = v['sdat'][5:] + '/' + v['edat'][5:]\n",
" df_source.append([\n",
" i+1, v['ref'].split('.')[0], float(v['objt']), period, float(v['mont']), float(v['vars']), float(v['cons']),\n",
" float(v['solv'].split()[0]), float(v['time'].split()[0]),\n",
" float(v['dist'].split()[0]), float(v['cost'].split()[0]), v['df']\n",
" ])\n",
"\n",
"# Draw all maps\n",
"allhtml = []\n",
"for no, i in enumerate(solutions):\n",
" mapname = 'maps/{}.html'.format(no+1)\n",
" if not os.path.isfile(mapname):\n",
" route = i['schd']\n",
" tbfmap = folium.Map(location=[39.82, -98.58], zoom_start=4, tiles=\"OpenStreetMap\")\n",
" for node in route:\n",
" popup_text = '''\n",
" Game {}: {} @ {}
\n",
" {}, {}
\n",
" {} \n",
" '''.format(node[0], node[2], node[3], node[1], node[4],\n",
" parse(node[5]).strftime(\"%A, %B %d, %Y - %I:%M %p\"))\n",
" folium.Marker(location=[float(node[6]), float(node[7])],popup=popup_text,\n",
" #icon=folium.Icon(icon='adjust', prefix='fa')\n",
" icon=folium.DivIcon(html='{}'.format(node[0]))\n",
" ).add_to(tbfmap)\n",
"\n",
" lines = folium.PolyLine(locations=[(float(i[6]), float(i[7])) for i in route])\n",
" lines.add_to(tbfmap)\n",
" tbfmap.save(mapname)\n",
" allhtml.append(''.format(mapname))\n",
"\n",
"maps=ColumnDataSource(data=dict(map=allhtml))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Solution Table"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
" \n",
" \n",
" | \n",
" Period | \n",
" # Variables | \n",
" # Constraints | \n",
" Solve Time (secs) | \n",
" Tour Time (days) | \n",
" Tour Distance (miles) | \n",
" Tour Cost ($) | \n",
"
\n",
" \n",
" \n",
" \n",
" 1 | \n",
" 03-28/06-01 | \n",
" 24301.0 | \n",
" 868.0 | \n",
" 98.118 | \n",
" 24.794 | \n",
" 20007.125 | \n",
" 8224.969 | \n",
"
\n",
" \n",
" 2 | \n",
" 03-28/06-01 | \n",
" 24301.0 | \n",
" 868.0 | \n",
" 646.210 | \n",
" 25.872 | \n",
" 12700.912 | \n",
" 6538.527 | \n",
"
\n",
" \n",
" 3 | \n",
" 06-01/08-01 | \n",
" 22019.0 | \n",
" 802.0 | \n",
" 51.119 | \n",
" 24.271 | \n",
" 18065.080 | \n",
" 7671.478 | \n",
"
\n",
" \n",
" 4 | \n",
" 06-01/08-01 | \n",
" 22019.0 | \n",
" 802.0 | \n",
" 539.105 | \n",
" 28.292 | \n",
" 13167.397 | \n",
" 6969.766 | \n",
"
\n",
" \n",
" 5 | \n",
" 08-01/10-01 | \n",
" 22981.0 | \n",
" 834.0 | \n",
" 81.058 | \n",
" 24.993 | \n",
" 21884.875 | \n",
" 8720.316 | \n",
"
\n",
" \n",
" 6 | \n",
" 08-01/10-01 | \n",
" 22981.0 | \n",
" 834.0 | \n",
" 554.763 | \n",
" 29.000 | \n",
" 11629.848 | \n",
" 6677.462 | \n",
"
\n",
" \n",
" 7 | \n",
" 03-28/07-01 | \n",
" 36742.0 | \n",
" 1276.0 | \n",
" 129.182 | \n",
" 24.271 | \n",
" 18623.640 | \n",
" 7811.118 | \n",
"
\n",
" \n",
" 8 | \n",
" 03-28/07-01 | \n",
" 36742.0 | \n",
" 1276.0 | \n",
" 1182.587 | \n",
" 25.872 | \n",
" 12700.912 | \n",
" 6538.527 | \n",
"
\n",
" \n",
" 9 | \n",
" 07-01/10-30 | \n",
" 34389.0 | \n",
" 1202.0 | \n",
" 139.693 | \n",
" 24.125 | \n",
" 18912.350 | \n",
" 7864.338 | \n",
"
\n",
" \n",
" 10 | \n",
" 07-01/10-30 | \n",
" 34389.0 | \n",
" 1202.0 | \n",
" 1112.149 | \n",
" 26.333 | \n",
" 12829.267 | \n",
" 6630.650 | \n",
"
\n",
" \n",
" 11 | \n",
" 03-28/10-30 | \n",
" 72953.0 | \n",
" 2446.0 | \n",
" 471.340 | \n",
" 24.125 | \n",
" 18763.451 | \n",
" 7827.113 | \n",
"
\n",
" \n",
" 12 | \n",
" 03-28/10-30 | \n",
" 72953.0 | \n",
" 2446.0 | \n",
" 7439.571 | \n",
" 25.872 | \n",
" 12700.912 | \n",
" 6538.527 | \n",
"
\n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Prepare and print plot data\n",
"\n",
"df = pd.DataFrame(\n",
" df_source,\n",
" columns=[\n",
" 'id', 'ref', 'objt', 'period', 'mont', 'vars', 'cons', 'solv',\n",
" 'time', 'dist', 'cost', 'html'\n",
" ]).set_index(['id'])\n",
"\n",
"axis_map = {\n",
" \"Tour Length\": 'tour', \"Tour Distance\": 'dist', \"Tour Cost\": 'cost', \"Period Length\": 'mont'\n",
"}\n",
"\n",
"df2=df.rename(columns = {'ref': 'Reference', 'objt':'Obj. Type', 'period': 'Period', 'mont': 'P.Length', 'vars': '# Variables', 'cons': '# Constraints',\n",
" 'solv': 'Solve Time (secs)', 'time': 'Tour Time (days)', 'dist': 'Tour Distance (miles)', 'cost': 'Tour Cost ($)'})\n",
"display(HTML(df2.to_html(columns=['Period', '# Variables', '# Constraints', 'Solve Time (secs)', 'Tour Time (days)', 'Tour Distance (miles)', 'Tour Cost ($)'],index_names=False)))\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
"
\n",
"
Loading BokehJS ...\n",
"
"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"\n",
"(function(root) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
"\n",
" var force = true;\n",
"\n",
" if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n",
" root._bokeh_onload_callbacks = [];\n",
" root._bokeh_is_loading = undefined;\n",
" }\n",
"\n",
" var JS_MIME_TYPE = 'application/javascript';\n",
" var HTML_MIME_TYPE = 'text/html';\n",
" var EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n",
" var CLASS_NAME = 'output_bokeh rendered_html';\n",
"\n",
" /**\n",
" * Render data to the DOM node\n",
" */\n",
" function render(props, node) {\n",
" var script = document.createElement(\"script\");\n",
" node.appendChild(script);\n",
" }\n",
"\n",
" /**\n",
" * Handle when an output is cleared or removed\n",
" */\n",
" function handleClearOutput(event, handle) {\n",
" var cell = handle.cell;\n",
"\n",
" var id = cell.output_area._bokeh_element_id;\n",
" var server_id = cell.output_area._bokeh_server_id;\n",
" // Clean up Bokeh references\n",
" if (id != null && id in Bokeh.index) {\n",
" Bokeh.index[id].model.document.clear();\n",
" delete Bokeh.index[id];\n",
" }\n",
"\n",
" if (server_id !== undefined) {\n",
" // Clean up Bokeh references\n",
" var cmd = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n",
" cell.notebook.kernel.execute(cmd, {\n",
" iopub: {\n",
" output: function(msg) {\n",
" var id = msg.content.text.trim();\n",
" if (id in Bokeh.index) {\n",
" Bokeh.index[id].model.document.clear();\n",
" delete Bokeh.index[id];\n",
" }\n",
" }\n",
" }\n",
" });\n",
" // Destroy server and session\n",
" var cmd = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n",
" cell.notebook.kernel.execute(cmd);\n",
" }\n",
" }\n",
"\n",
" /**\n",
" * Handle when a new output is added\n",
" */\n",
" function handleAddOutput(event, handle) {\n",
" var output_area = handle.output_area;\n",
" var output = handle.output;\n",
"\n",
" // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n",
" if ((output.output_type != \"display_data\") || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n",
" return\n",
" }\n",
"\n",
" var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n",
"\n",
" if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n",
" toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n",
" // store reference to embed id on output_area\n",
" output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n",
" }\n",
" if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n",
" var bk_div = document.createElement(\"div\");\n",
" bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n",
" var script_attrs = bk_div.children[0].attributes;\n",
" for (var i = 0; i < script_attrs.length; i++) {\n",
" toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n",
" }\n",
" // store reference to server id on output_area\n",
" output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n",
" }\n",
" }\n",
"\n",
" function register_renderer(events, OutputArea) {\n",
"\n",
" function append_mime(data, metadata, element) {\n",
" // create a DOM node to render to\n",
" var toinsert = this.create_output_subarea(\n",
" metadata,\n",
" CLASS_NAME,\n",
" EXEC_MIME_TYPE\n",
" );\n",
" this.keyboard_manager.register_events(toinsert);\n",
" // Render to node\n",
" var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n",
" render(props, toinsert[toinsert.length - 1]);\n",
" element.append(toinsert);\n",
" return toinsert\n",
" }\n",
"\n",
" /* Handle when an output is cleared or removed */\n",
" events.on('clear_output.CodeCell', handleClearOutput);\n",
" events.on('delete.Cell', handleClearOutput);\n",
"\n",
" /* Handle when a new output is added */\n",
" events.on('output_added.OutputArea', handleAddOutput);\n",
"\n",
" /**\n",
" * Register the mime type and append_mime function with output_area\n",
" */\n",
" OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n",
" /* Is output safe? */\n",
" safe: true,\n",
" /* Index of renderer in `output_area.display_order` */\n",
" index: 0\n",
" });\n",
" }\n",
"\n",
" // register the mime type if in Jupyter Notebook environment and previously unregistered\n",
" if (root.Jupyter !== undefined) {\n",
" var events = require('base/js/events');\n",
" var OutputArea = require('notebook/js/outputarea').OutputArea;\n",
"\n",
" if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n",
" register_renderer(events, OutputArea);\n",
" }\n",
" }\n",
"\n",
" \n",
" if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n",
" root._bokeh_timeout = Date.now() + 5000;\n",
" root._bokeh_failed_load = false;\n",
" }\n",
"\n",
" var NB_LOAD_WARNING = {'data': {'text/html':\n",
" \"\\n\"+\n",
" \"
\\n\"+\n",
" \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n",
" \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n",
" \"
\\n\"+\n",
" \"
\\n\"+\n",
" \"- re-rerun `output_notebook()` to attempt to load from CDN again, or
\\n\"+\n",
" \"- use INLINE resources instead, as so:
\\n\"+\n",
" \"
\\n\"+\n",
" \"
\\n\"+\n",
" \"from bokeh.resources import INLINE\\n\"+\n",
" \"output_notebook(resources=INLINE)\\n\"+\n",
" \"
\\n\"+\n",
" \"
\"}};\n",
"\n",
" function display_loaded() {\n",
" var el = document.getElementById(\"1003\");\n",
" if (el != null) {\n",
" el.textContent = \"BokehJS is loading...\";\n",
" }\n",
" if (root.Bokeh !== undefined) {\n",
" if (el != null) {\n",
" el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n",
" }\n",
" } else if (Date.now() < root._bokeh_timeout) {\n",
" setTimeout(display_loaded, 100)\n",
" }\n",
" }\n",
"\n",
"\n",
" function run_callbacks() {\n",
" try {\n",
" root._bokeh_onload_callbacks.forEach(function(callback) {\n",
" if (callback != null)\n",
" callback();\n",
" });\n",
" } finally {\n",
" delete root._bokeh_onload_callbacks\n",
" }\n",
" console.debug(\"Bokeh: all callbacks have finished\");\n",
" }\n",
"\n",
" function load_libs(css_urls, js_urls, callback) {\n",
" if (css_urls == null) css_urls = [];\n",
" if (js_urls == null) js_urls = [];\n",
"\n",
" root._bokeh_onload_callbacks.push(callback);\n",
" if (root._bokeh_is_loading > 0) {\n",
" console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
" return null;\n",
" }\n",
" if (js_urls == null || js_urls.length === 0) {\n",
" run_callbacks();\n",
" return null;\n",
" }\n",
" console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
" root._bokeh_is_loading = css_urls.length + js_urls.length;\n",
"\n",
" function on_load() {\n",
" root._bokeh_is_loading--;\n",
" if (root._bokeh_is_loading === 0) {\n",
" console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n",
" run_callbacks()\n",
" }\n",
" }\n",
"\n",
" function on_error() {\n",
" console.error(\"failed to load \" + url);\n",
" }\n",
"\n",
" for (var i = 0; i < css_urls.length; i++) {\n",
" var url = css_urls[i];\n",
" const element = document.createElement(\"link\");\n",
" element.onload = on_load;\n",
" element.onerror = on_error;\n",
" element.rel = \"stylesheet\";\n",
" element.type = \"text/css\";\n",
" element.href = url;\n",
" console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n",
" document.body.appendChild(element);\n",
" }\n",
"\n",
" for (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" var element = document.createElement('script');\n",
" element.onload = on_load;\n",
" element.onerror = on_error;\n",
" element.async = false;\n",
" element.src = url;\n",
" console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.head.appendChild(element);\n",
" }\n",
" };var element = document.getElementById(\"1003\");\n",
" if (element == null) {\n",
" console.error(\"Bokeh: ERROR: autoload.js configured with elementid '1003' but no matching script tag was found. \")\n",
" return false;\n",
" }\n",
"\n",
" function inject_raw_css(css) {\n",
" const element = document.createElement(\"style\");\n",
" element.appendChild(document.createTextNode(css));\n",
" document.body.appendChild(element);\n",
" }\n",
"\n",
" var js_urls = [\"https://cdn.pydata.org/bokeh/release/bokeh-1.1.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-1.1.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-tables-1.1.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-gl-1.1.0.min.js\"];\n",
" var css_urls = [\"https://cdn.pydata.org/bokeh/release/bokeh-1.1.0.min.css\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-1.1.0.min.css\", \"https://cdn.pydata.org/bokeh/release/bokeh-tables-1.1.0.min.css\"];\n",
"\n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" Bokeh.set_log_level(\"info\");\n",
" },\n",
" \n",
" function(Bokeh) {\n",
" \n",
" },\n",
" function(Bokeh) {} // ensure no trailing comma for IE\n",
" ];\n",
"\n",
" function run_inline_js() {\n",
" \n",
" if ((root.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i].call(root, root.Bokeh);\n",
" }if (force === true) {\n",
" display_loaded();\n",
" }} else if (Date.now() < root._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!root._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" root._bokeh_failed_load = true;\n",
" } else if (force !== true) {\n",
" var cell = $(document.getElementById(\"1003\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\n",
"\n",
" }\n",
"\n",
" if (root._bokeh_is_loading === 0) {\n",
" console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(css_urls, js_urls, function() {\n",
" console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
"}(window));"
],
"application/vnd.bokehjs_load.v0+json": "\n(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n \n\n \n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n var NB_LOAD_WARNING = {'data': {'text/html':\n \"\\n\"+\n \"
\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"
\\n\"+\n \"
\\n\"+\n \"- re-rerun `output_notebook()` to attempt to load from CDN again, or
\\n\"+\n \"- use INLINE resources instead, as so:
\\n\"+\n \"
\\n\"+\n \"
\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"
\\n\"+\n \"
\"}};\n\n function display_loaded() {\n var el = document.getElementById(\"1003\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error() {\n console.error(\"failed to load \" + url);\n }\n\n for (var i = 0; i < css_urls.length; i++) {\n var url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error;\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };var element = document.getElementById(\"1003\");\n if (element == null) {\n console.error(\"Bokeh: ERROR: autoload.js configured with elementid '1003' but no matching script tag was found. \")\n return false;\n }\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n var js_urls = [\"https://cdn.pydata.org/bokeh/release/bokeh-1.1.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-1.1.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-tables-1.1.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-gl-1.1.0.min.js\"];\n var css_urls = [\"https://cdn.pydata.org/bokeh/release/bokeh-1.1.0.min.css\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-1.1.0.min.css\", \"https://cdn.pydata.org/bokeh/release/bokeh-tables-1.1.0.min.css\"];\n\n var inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n \n function(Bokeh) {\n \n },\n function(Bokeh) {} // ensure no trailing comma for IE\n ];\n\n function run_inline_js() {\n \n if ((root.Bokeh !== undefined) || (force === true)) {\n for (var i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n var cell = $(document.getElementById(\"1003\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));"
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Plots
Click on the solution you would like to display"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
" \n"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"(function(root) {\n",
" function embed_document(root) {\n",
" \n",
" var docs_json = {\"b315ffe9-415f-4092-9b2c-b31155f8bc14\":{\"roots\":{\"references\":[{\"attributes\":{\"children\":[{\"id\":\"1203\",\"type\":\"Row\"},{\"id\":\"1204\",\"type\":\"Row\"},{\"id\":\"1205\",\"type\":\"Row\"}]},\"id\":\"1206\",\"type\":\"Column\"},{\"attributes\":{\"children\":[{\"id\":\"1005\",\"type\":\"Div\"}]},\"id\":\"1205\",\"type\":\"Row\"},{\"attributes\":{},\"id\":\"1023\",\"type\":\"BasicTicker\"},{\"attributes\":{\"dimension\":1,\"ticker\":{\"id\":\"1023\",\"type\":\"BasicTicker\"}},\"id\":\"1026\",\"type\":\"Grid\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"1007\",\"type\":\"HoverTool\"},{\"id\":\"1027\",\"type\":\"SaveTool\"},{\"id\":\"1028\",\"type\":\"PanTool\"},{\"id\":\"1029\",\"type\":\"TapTool\"},{\"id\":\"1030\",\"type\":\"BoxZoomTool\"},{\"id\":\"1031\",\"type\":\"ResetTool\"}]},\"id\":\"1032\",\"type\":\"Toolbar\"},{\"attributes\":{\"fill_color\":{\"value\":\"#1f77b4\"},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":15},\"x\":{\"field\":\"dist\"},\"y\":{\"field\":\"time\"}},\"id\":\"1040\",\"type\":\"Circle\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":15},\"x\":{\"field\":\"dist\"},\"y\":{\"field\":\"time\"}},\"id\":\"1041\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"1237\",\"type\":\"Selection\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"1052\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1027\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1238\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1028\",\"type\":\"PanTool\"},{\"attributes\":{\"callback\":{\"id\":\"1055\",\"type\":\"CustomJS\"}},\"id\":\"1029\",\"type\":\"TapTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1052\",\"type\":\"BoxAnnotation\"}},\"id\":\"1030\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1031\",\"type\":\"ResetTool\"},{\"attributes\":{\"fill_color\":{\"value\":\"green\"},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":15},\"x\":{\"field\":\"dist\"},\"y\":{\"field\":\"time\"}},\"id\":\"1042\",\"type\":\"Circle\"},{\"attributes\":{\"fill_color\":{\"value\":\"pink\"},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":15},\"x\":{\"field\":\"dist\"},\"y\":{\"field\":\"time\"}},\"id\":\"1043\",\"type\":\"Circle\"},{\"attributes\":{\"data_source\":{\"id\":\"1004\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1040\",\"type\":\"Circle\"},\"hover_glyph\":{\"id\":\"1043\",\"type\":\"Circle\"},\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1041\",\"type\":\"Circle\"},\"selection_glyph\":{\"id\":\"1042\",\"type\":\"Circle\"},\"view\":{\"id\":\"1045\",\"type\":\"CDSView\"}},\"id\":\"1044\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"source\":{\"id\":\"1004\",\"type\":\"ColumnDataSource\"}},\"id\":\"1045\",\"type\":\"CDSView\"},{\"attributes\":{\"text\":\"\"},\"id\":\"1047\",\"type\":\"Title\"},{\"attributes\":{\"callback\":null,\"data\":{\"map\":[\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"]},\"selected\":{\"id\":\"1237\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"1238\",\"type\":\"UnionRenderers\"}},\"id\":\"1001\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1053\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1054\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"args\":{\"div\":{\"id\":\"1005\",\"type\":\"Div\"},\"maps\":{\"id\":\"1001\",\"type\":\"ColumnDataSource\"},\"source\":{\"id\":\"1004\",\"type\":\"ColumnDataSource\"}},\"code\":\"\\n var s = source.selected['1d'].indices[0];\\n div.text = 'Solution: ' + (s+1) + '
Length: ' +\\n source.data.time[s] + ' days, Distance: ' + \\n source.data.dist[s] + ' miles, Cost: ' + \\n source.data.cost[s] + ' USD ' + maps.data.map[s] +\\n '' + source.data.html[s] + '';\\n \"},\"id\":\"1055\",\"type\":\"CustomJS\"},{\"attributes\":{\"callback\":null,\"tooltips\":[[\"ID\",\"@id\"],[\"Tour Distance (miles)\",\"@dist{0.0}\"],[\"Tour Cost (USD)\",\"@cost{0.0}\"]]},\"id\":\"1056\",\"type\":\"HoverTool\"},{\"attributes\":{\"below\":[{\"id\":\"1066\",\"type\":\"LinearAxis\"}],\"center\":[{\"id\":\"1070\",\"type\":\"Grid\"},{\"id\":\"1075\",\"type\":\"Grid\"}],\"left\":[{\"id\":\"1071\",\"type\":\"LinearAxis\"}],\"plot_height\":300,\"plot_width\":450,\"renderers\":[{\"id\":\"1093\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"1096\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"1081\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"1058\",\"type\":\"DataRange1d\"},\"x_scale\":{\"id\":\"1062\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"1060\",\"type\":\"DataRange1d\"},\"y_scale\":{\"id\":\"1064\",\"type\":\"LinearScale\"}},\"id\":\"1057\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":15},\"x\":{\"field\":\"dist\"},\"y\":{\"field\":\"cost\"}},\"id\":\"1090\",\"type\":\"Circle\"},{\"attributes\":{\"callback\":null},\"id\":\"1058\",\"type\":\"DataRange1d\"},{\"attributes\":{\"callback\":null},\"id\":\"1060\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1062\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1064\",\"type\":\"LinearScale\"},{\"attributes\":{\"axis_label\":\"Tour Distance (miles)\",\"formatter\":{\"id\":\"1100\",\"type\":\"BasicTickFormatter\"},\"ticker\":{\"id\":\"1067\",\"type\":\"BasicTicker\"}},\"id\":\"1066\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1067\",\"type\":\"BasicTicker\"},{\"attributes\":{\"ticker\":{\"id\":\"1067\",\"type\":\"BasicTicker\"}},\"id\":\"1070\",\"type\":\"Grid\"},{\"attributes\":{\"axis_label\":\"Tour Cost (USD)\",\"formatter\":{\"id\":\"1098\",\"type\":\"BasicTickFormatter\"},\"ticker\":{\"id\":\"1072\",\"type\":\"BasicTicker\"}},\"id\":\"1071\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1072\",\"type\":\"BasicTicker\"},{\"attributes\":{\"dimension\":1,\"ticker\":{\"id\":\"1072\",\"type\":\"BasicTicker\"}},\"id\":\"1075\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1100\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"fill_color\":{\"value\":\"#1f77b4\"},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":15},\"x\":{\"field\":\"dist\"},\"y\":{\"field\":\"cost\"}},\"id\":\"1089\",\"type\":\"Circle\"},{\"attributes\":{\"callback\":null,\"tooltips\":[[\"ID\",\"@id\"],[\"Solve Time (secs)\",\"@solv{0.0}\"],[\"Number of Variables\",\"@vars{0.0}\"]]},\"id\":\"1105\",\"type\":\"HoverTool\"},{\"attributes\":{},\"id\":\"1076\",\"type\":\"SaveTool\"},{\"attributes\":{\"data_source\":{\"id\":\"1004\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1138\",\"type\":\"Circle\"},\"hover_glyph\":{\"id\":\"1141\",\"type\":\"Circle\"},\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1139\",\"type\":\"Circle\"},\"selection_glyph\":{\"id\":\"1140\",\"type\":\"Circle\"},\"view\":{\"id\":\"1143\",\"type\":\"CDSView\"}},\"id\":\"1142\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1077\",\"type\":\"PanTool\"},{\"attributes\":{\"source\":{\"id\":\"1004\",\"type\":\"ColumnDataSource\"}},\"id\":\"1143\",\"type\":\"CDSView\"},{\"attributes\":{\"callback\":{\"id\":\"1104\",\"type\":\"CustomJS\"}},\"id\":\"1078\",\"type\":\"TapTool\"},{\"attributes\":{\"text\":\"\"},\"id\":\"1145\",\"type\":\"Title\"},{\"attributes\":{\"overlay\":{\"id\":\"1101\",\"type\":\"BoxAnnotation\"}},\"id\":\"1079\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1147\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1080\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1149\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"1056\",\"type\":\"HoverTool\"},{\"id\":\"1076\",\"type\":\"SaveTool\"},{\"id\":\"1077\",\"type\":\"PanTool\"},{\"id\":\"1078\",\"type\":\"TapTool\"},{\"id\":\"1079\",\"type\":\"BoxZoomTool\"},{\"id\":\"1080\",\"type\":\"ResetTool\"}]},\"id\":\"1081\",\"type\":\"Toolbar\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"1150\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"fill_color\":{\"value\":\"green\"},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":15},\"x\":{\"field\":\"dist\"},\"y\":{\"field\":\"cost\"}},\"id\":\"1091\",\"type\":\"Circle\"},{\"attributes\":{\"args\":{\"div\":{\"id\":\"1005\",\"type\":\"Div\"},\"maps\":{\"id\":\"1001\",\"type\":\"ColumnDataSource\"},\"source\":{\"id\":\"1004\",\"type\":\"ColumnDataSource\"}},\"code\":\"\\n var s = source.selected['1d'].indices[0];\\n div.text = 'Solution: ' + (s+1) + '
Length: ' +\\n source.data.time[s] + ' days, Distance: ' + \\n source.data.dist[s] + ' miles, Cost: ' + \\n source.data.cost[s] + ' USD ' + maps.data.map[s] +\\n '' + source.data.html[s] + '';\\n \"},\"id\":\"1153\",\"type\":\"CustomJS\"},{\"attributes\":{\"fill_color\":{\"value\":\"pink\"},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":15},\"x\":{\"field\":\"dist\"},\"y\":{\"field\":\"cost\"}},\"id\":\"1092\",\"type\":\"Circle\"},{\"attributes\":{\"callback\":null,\"tooltips\":[[\"ID\",\"@id\"],[\"Solve Time (secs)\",\"@solv{0.0}\"],[\"Tour Time (days)\",\"@time{0.0}\"]]},\"id\":\"1154\",\"type\":\"HoverTool\"},{\"attributes\":{\"data_source\":{\"id\":\"1004\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1089\",\"type\":\"Circle\"},\"hover_glyph\":{\"id\":\"1092\",\"type\":\"Circle\"},\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1090\",\"type\":\"Circle\"},\"selection_glyph\":{\"id\":\"1091\",\"type\":\"Circle\"},\"view\":{\"id\":\"1094\",\"type\":\"CDSView\"}},\"id\":\"1093\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"below\":[{\"id\":\"1164\",\"type\":\"LinearAxis\"}],\"center\":[{\"id\":\"1168\",\"type\":\"Grid\"},{\"id\":\"1173\",\"type\":\"Grid\"}],\"left\":[{\"id\":\"1169\",\"type\":\"LinearAxis\"}],\"plot_height\":300,\"plot_width\":450,\"renderers\":[{\"id\":\"1191\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"1194\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"1179\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"1156\",\"type\":\"DataRange1d\"},\"x_scale\":{\"id\":\"1160\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"1158\",\"type\":\"DataRange1d\"},\"y_scale\":{\"id\":\"1162\",\"type\":\"LinearScale\"}},\"id\":\"1155\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"source\":{\"id\":\"1004\",\"type\":\"ColumnDataSource\"}},\"id\":\"1094\",\"type\":\"CDSView\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":15},\"x\":{\"field\":\"solv\"},\"y\":{\"field\":\"time\"}},\"id\":\"1188\",\"type\":\"Circle\"},{\"attributes\":{\"text\":\"\"},\"id\":\"1096\",\"type\":\"Title\"},{\"attributes\":{\"callback\":null},\"id\":\"1156\",\"type\":\"DataRange1d\"},{\"attributes\":{\"callback\":null},\"id\":\"1158\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1098\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1160\",\"type\":\"LinearScale\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"1101\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1162\",\"type\":\"LinearScale\"},{\"attributes\":{\"args\":{\"div\":{\"id\":\"1005\",\"type\":\"Div\"},\"maps\":{\"id\":\"1001\",\"type\":\"ColumnDataSource\"},\"source\":{\"id\":\"1004\",\"type\":\"ColumnDataSource\"}},\"code\":\"\\n var s = source.selected['1d'].indices[0];\\n div.text = 'Solution: ' + (s+1) + '
Length: ' +\\n source.data.time[s] + ' days, Distance: ' + \\n source.data.dist[s] + ' miles, Cost: ' + \\n source.data.cost[s] + ' USD ' + maps.data.map[s] +\\n '' + source.data.html[s] + '';\\n \"},\"id\":\"1104\",\"type\":\"CustomJS\"},{\"attributes\":{\"axis_label\":\"Solve Time (secs)\",\"formatter\":{\"id\":\"1198\",\"type\":\"BasicTickFormatter\"},\"ticker\":{\"id\":\"1165\",\"type\":\"BasicTicker\"}},\"id\":\"1164\",\"type\":\"LinearAxis\"},{\"attributes\":{\"below\":[{\"id\":\"1115\",\"type\":\"LinearAxis\"}],\"center\":[{\"id\":\"1119\",\"type\":\"Grid\"},{\"id\":\"1124\",\"type\":\"Grid\"}],\"left\":[{\"id\":\"1120\",\"type\":\"LinearAxis\"}],\"plot_height\":300,\"plot_width\":450,\"renderers\":[{\"id\":\"1142\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"1145\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"1130\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"1107\",\"type\":\"DataRange1d\"},\"x_scale\":{\"id\":\"1111\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"1109\",\"type\":\"DataRange1d\"},\"y_scale\":{\"id\":\"1113\",\"type\":\"LinearScale\"}},\"id\":\"1106\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1165\",\"type\":\"BasicTicker\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":15},\"x\":{\"field\":\"solv\"},\"y\":{\"field\":\"vars\"}},\"id\":\"1139\",\"type\":\"Circle\"},{\"attributes\":{\"callback\":null},\"id\":\"1107\",\"type\":\"DataRange1d\"},{\"attributes\":{\"ticker\":{\"id\":\"1165\",\"type\":\"BasicTicker\"}},\"id\":\"1168\",\"type\":\"Grid\"},{\"attributes\":{\"axis_label\":\"Tour Time (days)\",\"formatter\":{\"id\":\"1196\",\"type\":\"BasicTickFormatter\"},\"ticker\":{\"id\":\"1170\",\"type\":\"BasicTicker\"}},\"id\":\"1169\",\"type\":\"LinearAxis\"},{\"attributes\":{\"callback\":null},\"id\":\"1109\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1111\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1170\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1113\",\"type\":\"LinearScale\"},{\"attributes\":{\"dimension\":1,\"ticker\":{\"id\":\"1170\",\"type\":\"BasicTicker\"}},\"id\":\"1173\",\"type\":\"Grid\"},{\"attributes\":{\"axis_label\":\"Solve Time (secs)\",\"formatter\":{\"id\":\"1149\",\"type\":\"BasicTickFormatter\"},\"ticker\":{\"id\":\"1116\",\"type\":\"BasicTicker\"}},\"id\":\"1115\",\"type\":\"LinearAxis\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"1199\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"axis_label\":\"Tour Time (days)\",\"formatter\":{\"id\":\"1049\",\"type\":\"BasicTickFormatter\"},\"ticker\":{\"id\":\"1023\",\"type\":\"BasicTicker\"}},\"id\":\"1022\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1051\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1116\",\"type\":\"BasicTicker\"},{\"attributes\":{\"fill_color\":{\"value\":\"#1f77b4\"},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":15},\"x\":{\"field\":\"solv\"},\"y\":{\"field\":\"time\"}},\"id\":\"1187\",\"type\":\"Circle\"},{\"attributes\":{\"ticker\":{\"id\":\"1116\",\"type\":\"BasicTicker\"}},\"id\":\"1119\",\"type\":\"Grid\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"1154\",\"type\":\"HoverTool\"},{\"id\":\"1174\",\"type\":\"SaveTool\"},{\"id\":\"1175\",\"type\":\"PanTool\"},{\"id\":\"1176\",\"type\":\"TapTool\"},{\"id\":\"1177\",\"type\":\"BoxZoomTool\"},{\"id\":\"1178\",\"type\":\"ResetTool\"}]},\"id\":\"1179\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1174\",\"type\":\"SaveTool\"},{\"attributes\":{\"callback\":null},\"id\":\"1011\",\"type\":\"DataRange1d\"},{\"attributes\":{\"axis_label\":\"Number of Variables\",\"formatter\":{\"id\":\"1147\",\"type\":\"BasicTickFormatter\"},\"ticker\":{\"id\":\"1121\",\"type\":\"BasicTicker\"}},\"id\":\"1120\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1175\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1049\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1121\",\"type\":\"BasicTicker\"},{\"attributes\":{\"callback\":{\"id\":\"1202\",\"type\":\"CustomJS\"}},\"id\":\"1176\",\"type\":\"TapTool\"},{\"attributes\":{\"dimension\":1,\"ticker\":{\"id\":\"1121\",\"type\":\"BasicTicker\"}},\"id\":\"1124\",\"type\":\"Grid\"},{\"attributes\":{\"callback\":null},\"id\":\"1009\",\"type\":\"DataRange1d\"},{\"attributes\":{\"overlay\":{\"id\":\"1199\",\"type\":\"BoxAnnotation\"}},\"id\":\"1177\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"callback\":null,\"tooltips\":[[\"ID\",\"@id\"],[\"Tour Distance (miles)\",\"@dist{0.0}\"],[\"Tour Time (days)\",\"@time{0.0}\"]]},\"id\":\"1007\",\"type\":\"HoverTool\"},{\"attributes\":{},\"id\":\"1178\",\"type\":\"ResetTool\"},{\"attributes\":{\"children\":[{\"id\":\"1008\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"id\":\"1057\",\"subtype\":\"Figure\",\"type\":\"Plot\"}]},\"id\":\"1203\",\"type\":\"Row\"},{\"attributes\":{\"fill_color\":{\"value\":\"#1f77b4\"},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":15},\"x\":{\"field\":\"solv\"},\"y\":{\"field\":\"vars\"}},\"id\":\"1138\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"1196\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"below\":[{\"id\":\"1017\",\"type\":\"LinearAxis\"}],\"center\":[{\"id\":\"1021\",\"type\":\"Grid\"},{\"id\":\"1026\",\"type\":\"Grid\"}],\"left\":[{\"id\":\"1022\",\"type\":\"LinearAxis\"}],\"plot_height\":300,\"plot_width\":450,\"renderers\":[{\"id\":\"1044\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"1047\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"1032\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"1009\",\"type\":\"DataRange1d\"},\"x_scale\":{\"id\":\"1013\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"1011\",\"type\":\"DataRange1d\"},\"y_scale\":{\"id\":\"1015\",\"type\":\"LinearScale\"}},\"id\":\"1008\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"1105\",\"type\":\"HoverTool\"},{\"id\":\"1125\",\"type\":\"SaveTool\"},{\"id\":\"1126\",\"type\":\"PanTool\"},{\"id\":\"1127\",\"type\":\"TapTool\"},{\"id\":\"1128\",\"type\":\"BoxZoomTool\"},{\"id\":\"1129\",\"type\":\"ResetTool\"}]},\"id\":\"1130\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1125\",\"type\":\"SaveTool\"},{\"attributes\":{\"height\":1600,\"text\":\"Solution: 9
Length: 24.125 days, Distance: 18912.35 miles, Cost: 7864.338 USD \\n \\n \\n | \\n Away | \\n Home | \\n Venue | \\n City | \\n Date | \\n
\\n \\n ID | \\n | \\n | \\n | \\n | \\n | \\n
\\n \\n \\n \\n 1 | \\n Mets | \\n Twins | \\n Target Field | \\n Minneapolis | \\n 2019-07-16 20:10:00 | \\n
\\n \\n 2 | \\n Pirates | \\n Cardinals | \\n Busch Stadium | \\n St. Louis | \\n 2019-07-17 13:15:00 | \\n
\\n \\n 3 | \\n White Sox | \\n Royals | \\n Kauffman Stadium | \\n Kansas City | \\n 2019-07-17 20:15:00 | \\n
\\n \\n 4 | \\n Nationals | \\n Braves | \\n SunTrust Park | \\n Atlanta | \\n 2019-07-18 19:20:00 | \\n
\\n \\n 5 | \\n Padres | \\n Cubs | \\n Wrigley Field | \\n Chicago | \\n 2019-07-19 14:20:00 | \\n
\\n \\n 6 | \\n White Sox | \\n Rays | \\n Tropicana Field | \\n St. Petersburg | \\n 2019-07-20 18:10:00 | \\n
\\n \\n 7 | \\n Rangers | \\n Astros | \\n Minute Maid Park | \\n Houston | \\n 2019-07-21 14:10:00 | \\n
\\n \\n 8 | \\n Orioles | \\n Diamondbacks | \\n Chase Field | \\n Phoenix | \\n 2019-07-22 21:40:00 | \\n
\\n \\n 9 | \\n Cubs | \\n Giants | \\n Oracle Park | \\n San Francisco | \\n 2019-07-23 21:45:00 | \\n
\\n \\n 10 | \\n Angels | \\n Dodgers | \\n Dodger Stadium | \\n Los Angeles | \\n 2019-07-24 22:10:00 | \\n
\\n \\n 11 | \\n Orioles | \\n Angels | \\n Angel Stadium | \\n Anaheim | \\n 2019-07-25 22:07:00 | \\n
\\n \\n 12 | \\n Tigers | \\n Mariners | \\n T-Mobile Park | \\n Seattle | \\n 2019-07-26 22:10:00 | \\n
\\n \\n 13 | \\n Rangers | \\n Athletics | \\n Oakland Coliseum | \\n Oakland | \\n 2019-07-27 21:07:00 | \\n
\\n \\n 14 | \\n Giants | \\n Padres | \\n Petco Park | \\n San Diego | \\n 2019-07-28 16:10:00 | \\n
\\n \\n 15 | \\n Dodgers | \\n Rockies | \\n Coors Field | \\n Denver | \\n 2019-07-29 20:40:00 | \\n
\\n \\n 16 | \\n Pirates | \\n Reds | \\n Great American Ball Park | \\n Cincinnati | \\n 2019-07-30 19:10:00 | \\n
\\n \\n 17 | \\n Braves | \\n Nationals | \\n Nationals Park | \\n Washington | \\n 2019-07-31 12:05:00 | \\n
\\n \\n 18 | \\n Twins | \\n Marlins | \\n Marlins Park | \\n Miami | \\n 2019-08-01 12:10:00 | \\n
\\n \\n 19 | \\n Tigers | \\n Rangers | \\n Globe Life Park in Arlington | \\n Arlington | \\n 2019-08-02 20:05:00 | \\n
\\n \\n 20 | \\n Mets | \\n Pirates | \\n PNC Park | \\n Pittsburgh | \\n 2019-08-03 19:05:00 | \\n
\\n \\n 21 | \\n White Sox | \\n Phillies | \\n Citizens Bank Park | \\n Philadelphia | \\n 2019-08-04 13:05:00 | \\n
\\n \\n 22 | \\n Red Sox | \\n Yankees | \\n Yankee Stadium | \\n Bronx | \\n 2019-08-04 19:05:00 | \\n
\\n \\n 23 | \\n Yankees | \\n Orioles | \\n Oriole Park at Camden Yards | \\n Baltimore | \\n 2019-08-05 19:05:00 | \\n
\\n \\n 24 | \\n White Sox | \\n Tigers | \\n Comerica Park | \\n Detroit | \\n 2019-08-06 13:10:00 | \\n
\\n \\n 25 | \\n Rangers | \\n Indians | \\n Progressive Field | \\n Cleveland | \\n 2019-08-06 19:10:00 | \\n
\\n \\n 26 | \\n Marlins | \\n Mets | \\n Citi Field | \\n Flushing | \\n 2019-08-07 12:10:00 | \\n
\\n \\n 27 | \\n Royals | \\n Red Sox | \\n Fenway Park | \\n Boston | \\n 2019-08-07 19:10:00 | \\n
\\n \\n 28 | \\n Yankees | \\n Blue Jays | \\n Rogers Centre | \\n Toronto | \\n 2019-08-08 19:07:00 | \\n
\\n \\n 29 | \\n Athletics | \\n White Sox | \\n Guaranteed Rate Field | \\n Chicago | \\n 2019-08-09 15:10:00 | \\n
\\n \\n 30 | \\n Rangers | \\n Brewers | \\n Miller Park | \\n Milwaukee | \\n 2019-08-09 20:10:00 | \\n
\\n \\n
\",\"width\":900},\"id\":\"1005\",\"type\":\"Div\"},{\"attributes\":{\"fill_color\":{\"value\":\"green\"},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":15},\"x\":{\"field\":\"solv\"},\"y\":{\"field\":\"time\"}},\"id\":\"1189\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"1126\",\"type\":\"PanTool\"},{\"attributes\":{\"fill_color\":{\"value\":\"pink\"},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":15},\"x\":{\"field\":\"solv\"},\"y\":{\"field\":\"time\"}},\"id\":\"1190\",\"type\":\"Circle\"},{\"attributes\":{\"data_source\":{\"id\":\"1004\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1187\",\"type\":\"Circle\"},\"hover_glyph\":{\"id\":\"1190\",\"type\":\"Circle\"},\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1188\",\"type\":\"Circle\"},\"selection_glyph\":{\"id\":\"1189\",\"type\":\"Circle\"},\"view\":{\"id\":\"1192\",\"type\":\"CDSView\"}},\"id\":\"1191\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"callback\":{\"id\":\"1153\",\"type\":\"CustomJS\"}},\"id\":\"1127\",\"type\":\"TapTool\"},{\"attributes\":{},\"id\":\"1013\",\"type\":\"LinearScale\"},{\"attributes\":{\"overlay\":{\"id\":\"1150\",\"type\":\"BoxAnnotation\"}},\"id\":\"1128\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"source\":{\"id\":\"1004\",\"type\":\"ColumnDataSource\"}},\"id\":\"1192\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1015\",\"type\":\"LinearScale\"},{\"attributes\":{\"text\":\"\"},\"id\":\"1194\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1129\",\"type\":\"ResetTool\"},{\"attributes\":{\"axis_label\":\"Tour Distance (miles)\",\"formatter\":{\"id\":\"1051\",\"type\":\"BasicTickFormatter\"},\"ticker\":{\"id\":\"1018\",\"type\":\"BasicTicker\"}},\"id\":\"1017\",\"type\":\"LinearAxis\"},{\"attributes\":{\"callback\":null,\"data\":{\"cons\":{\"__ndarray__\":\"AAAAAAAgi0AAAAAAACCLQAAAAAAAEIlAAAAAAAAQiUAAAAAAABCKQAAAAAAAEIpAAAAAAADwk0AAAAAAAPCTQAAAAAAAyJJAAAAAAADIkkAAAAAAAByjQAAAAAAAHKNA\",\"dtype\":\"float64\",\"shape\":[12]},\"cost\":{\"__ndarray__\":\"6SYxCHwQwED+1Hjphoq5QH0/NV56971AvHSTGMQ5u0DFILByKAjBQMHKoUV2FbpA7nw/NR6DvkD+1Hjphoq5QAwCK4dWuL5AZmZmZqbmuUBzaJHtHJO+QP7UeOmGirlA\",\"dtype\":\"float64\",\"shape\":[12]},\"dist\":{\"__ndarray__\":\"AAAAAMiJ00D6fmq8dM7IQOxRuB5FpNFAQmDl0LK3yUAAAAAAOF/VQIGVQ4vstsZAXI/C9egv0kD6fmq8dM7IQGZmZmYWeNJABFYOLaIOyUCgGi/d3FLSQPp+arx0zshA\",\"dtype\":\"float64\",\"shape\":[12]},\"html\":[\"\\n \\n \\n | \\n Away | \\n Home | \\n Venue | \\n City | \\n Date | \\n
\\n \\n ID | \\n | \\n | \\n | \\n | \\n | \\n
\\n \\n \\n \\n 1 | \\n Rangers | \\n Athletics | \\n Oakland Coliseum | \\n Oakland | \\n 2019-04-23 22:07:00 | \\n
\\n \\n 2 | \\n Mariners | \\n Padres | \\n Petco Park | \\n San Diego | \\n 2019-04-24 15:40:00 | \\n
\\n \\n 3 | \\n Yankees | \\n Angels | \\n Angel Stadium | \\n Anaheim | \\n 2019-04-24 22:07:00 | \\n
\\n \\n 4 | \\n Rangers | \\n Mariners | \\n T-Mobile Park | \\n Seattle | \\n 2019-04-25 22:10:00 | \\n
\\n \\n 5 | \\n Yankees | \\n Giants | \\n Oracle Park | \\n San Francisco | \\n 2019-04-26 22:15:00 | \\n
\\n \\n 6 | \\n Cubs | \\n Diamondbacks | \\n Chase Field | \\n Phoenix | \\n 2019-04-27 20:10:00 | \\n
\\n \\n 7 | \\n Pirates | \\n Dodgers | \\n Dodger Stadium | \\n Los Angeles | \\n 2019-04-28 16:10:00 | \\n
\\n \\n 8 | \\n Rays | \\n Royals | \\n Kauffman Stadium | \\n Kansas City | \\n 2019-04-29 20:15:00 | \\n
\\n \\n 9 | \\n Reds | \\n Mets | \\n Citi Field | \\n Flushing | \\n 2019-04-30 19:10:00 | \\n
\\n \\n 10 | \\n Athletics | \\n Red Sox | \\n Fenway Park | \\n Boston | \\n 2019-05-01 13:05:00 | \\n
\\n \\n 11 | \\n Cardinals | \\n Nationals | \\n Nationals Park | \\n Washington | \\n 2019-05-02 16:05:00 | \\n
\\n \\n 12 | \\n Rays | \\n Orioles | \\n Oriole Park at Camden Yards | \\n Baltimore | \\n 2019-05-03 19:05:00 | \\n
\\n \\n 13 | \\n Twins | \\n Yankees | \\n Yankee Stadium | \\n Bronx | \\n 2019-05-04 13:05:00 | \\n
\\n \\n 14 | \\n Nationals | \\n Phillies | \\n Citizens Bank Park | \\n Philadelphia | \\n 2019-05-04 19:05:00 | \\n
\\n \\n 15 | \\n Mets | \\n Brewers | \\n Miller Park | \\n Milwaukee | \\n 2019-05-05 14:10:00 | \\n
\\n \\n 16 | \\n Cardinals | \\n Cubs | \\n Wrigley Field | \\n Chicago | \\n 2019-05-05 19:05:00 | \\n
\\n \\n 17 | \\n Giants | \\n Reds | \\n Great American Ball Park | \\n Cincinnati | \\n 2019-05-06 12:35:00 | \\n
\\n \\n 18 | \\n Twins | \\n Blue Jays | \\n Rogers Centre | \\n Toronto | \\n 2019-05-07 19:07:00 | \\n
\\n \\n 19 | \\n Rangers | \\n Pirates | \\n PNC Park | \\n Pittsburgh | \\n 2019-05-08 12:35:00 | \\n
\\n \\n 20 | \\n White Sox | \\n Indians | \\n Progressive Field | \\n Cleveland | \\n 2019-05-08 18:10:00 | \\n
\\n \\n 21 | \\n Rangers | \\n Astros | \\n Minute Maid Park | \\n Houston | \\n 2019-05-09 20:10:00 | \\n
\\n \\n 22 | \\n Padres | \\n Rockies | \\n Coors Field | \\n Denver | \\n 2019-05-10 20:40:00 | \\n
\\n \\n 23 | \\n Pirates | \\n Cardinals | \\n Busch Stadium | \\n St. Louis | \\n 2019-05-11 14:15:00 | \\n
\\n \\n 24 | \\n Yankees | \\n Rays | \\n Tropicana Field | \\n St. Petersburg | \\n 2019-05-12 13:10:00 | \\n
\\n \\n 25 | \\n Angels | \\n Twins | \\n Target Field | \\n Minneapolis | \\n 2019-05-13 19:40:00 | \\n
\\n \\n 26 | \\n Astros | \\n Tigers | \\n Comerica Park | \\n Detroit | \\n 2019-05-14 19:10:00 | \\n
\\n \\n 27 | \\n Rays | \\n Marlins | \\n Marlins Park | \\n Miami | \\n 2019-05-15 19:10:00 | \\n
\\n \\n 28 | \\n Cardinals | \\n Braves | \\n SunTrust Park | \\n Atlanta | \\n 2019-05-16 19:20:00 | \\n
\\n \\n 29 | \\n Cardinals | \\n Rangers | \\n Globe Life Park in Arlington | \\n Arlington | \\n 2019-05-17 20:05:00 | \\n
\\n \\n 30 | \\n Blue Jays | \\n White Sox | \\n Guaranteed Rate Field | \\n Chicago | \\n 2019-05-18 14:10:00 | \\n
\\n \\n
\",\"\\n \\n \\n | \\n Away | \\n Home | \\n Venue | \\n City | \\n Date | \\n
\\n \\n ID | \\n | \\n | \\n | \\n | \\n | \\n
\\n \\n \\n \\n 1 | \\n Angels | \\n Mariners | \\n T-Mobile Park | \\n Seattle | \\n 2019-04-01 22:10:00 | \\n
\\n \\n 2 | \\n Red Sox | \\n Athletics | \\n Oakland Coliseum | \\n Oakland | \\n 2019-04-02 22:07:00 | \\n
\\n \\n 3 | \\n Diamondbacks | \\n Padres | \\n Petco Park | \\n San Diego | \\n 2019-04-03 15:40:00 | \\n
\\n \\n 4 | \\n Giants | \\n Dodgers | \\n Dodger Stadium | \\n Los Angeles | \\n 2019-04-03 22:10:00 | \\n
\\n \\n 5 | \\n Rangers | \\n Angels | \\n Angel Stadium | \\n Anaheim | \\n 2019-04-04 22:07:00 | \\n
\\n \\n 6 | \\n Rays | \\n Giants | \\n Oracle Park | \\n San Francisco | \\n 2019-04-05 16:35:00 | \\n
\\n \\n 7 | \\n Red Sox | \\n Diamondbacks | \\n Chase Field | \\n Phoenix | \\n 2019-04-06 20:10:00 | \\n
\\n \\n 8 | \\n Dodgers | \\n Rockies | \\n Coors Field | \\n Denver | \\n 2019-04-07 20:37:00 | \\n
\\n \\n 9 | \\n Mariners | \\n Royals | \\n Kauffman Stadium | \\n Kansas City | \\n 2019-04-08 20:15:00 | \\n
\\n \\n 10 | \\n Dodgers | \\n Cardinals | \\n Busch Stadium | \\n St. Louis | \\n 2019-04-09 19:45:00 | \\n
\\n \\n 11 | \\n Rays | \\n White Sox | \\n Guaranteed Rate Field | \\n Chicago | \\n 2019-04-10 14:10:00 | \\n
\\n \\n 12 | \\n Pirates | \\n Cubs | \\n Wrigley Field | \\n Chicago | \\n 2019-04-10 20:05:00 | \\n
\\n \\n 13 | \\n Athletics | \\n Orioles | \\n Oriole Park at Camden Yards | \\n Baltimore | \\n 2019-04-11 12:35:00 | \\n
\\n \\n 14 | \\n Pirates | \\n Nationals | \\n Nationals Park | \\n Washington | \\n 2019-04-12 19:05:00 | \\n
\\n \\n 15 | \\n White Sox | \\n Yankees | \\n Yankee Stadium | \\n Bronx | \\n 2019-04-13 13:05:00 | \\n
\\n \\n 16 | \\n Rays | \\n Blue Jays | \\n Rogers Centre | \\n Toronto | \\n 2019-04-14 13:07:00 | \\n
\\n \\n 17 | \\n Blue Jays | \\n Twins | \\n Target Field | \\n Minneapolis | \\n 2019-04-15 19:40:00 | \\n
\\n \\n 18 | \\n Cardinals | \\n Brewers | \\n Miller Park | \\n Milwaukee | \\n 2019-04-16 19:40:00 | \\n
\\n \\n 19 | \\n Pirates | \\n Tigers | \\n Comerica Park | \\n Detroit | \\n 2019-04-17 18:40:00 | \\n
\\n \\n 20 | \\n Diamondbacks | \\n Braves | \\n SunTrust Park | \\n Atlanta | \\n 2019-04-18 12:10:00 | \\n
\\n \\n 21 | \\n Nationals | \\n Marlins | \\n Marlins Park | \\n Miami | \\n 2019-04-19 19:10:00 | \\n
\\n \\n 22 | \\n Red Sox | \\n Rays | \\n Tropicana Field | \\n St. Petersburg | \\n 2019-04-20 18:10:00 | \\n
\\n \\n 23 | \\n Astros | \\n Rangers | \\n Globe Life Park in Arlington | \\n Arlington | \\n 2019-04-21 15:05:00 | \\n
\\n \\n 24 | \\n Twins | \\n Astros | \\n Minute Maid Park | \\n Houston | \\n 2019-04-22 20:10:00 | \\n
\\n \\n 25 | \\n Braves | \\n Reds | \\n Great American Ball Park | \\n Cincinnati | \\n 2019-04-23 18:40:00 | \\n
\\n \\n 26 | \\n Marlins | \\n Indians | \\n Progressive Field | \\n Cleveland | \\n 2019-04-24 13:10:00 | \\n
\\n \\n 27 | \\n Diamondbacks | \\n Pirates | \\n PNC Park | \\n Pittsburgh | \\n 2019-04-24 19:05:00 | \\n
\\n \\n 28 | \\n Marlins | \\n Phillies | \\n Citizens Bank Park | \\n Philadelphia | \\n 2019-04-25 19:05:00 | \\n
\\n \\n 29 | \\n Brewers | \\n Mets | \\n Citi Field | \\n Flushing | \\n 2019-04-26 19:10:00 | \\n
\\n \\n 30 | \\n Rays | \\n Red Sox | \\n Fenway Park | \\n Boston | \\n 2019-04-27 16:05:00 | \\n
\\n \\n
\",\"\\n \\n \\n | \\n Away | \\n Home | \\n Venue | \\n City | \\n Date | \\n
\\n \\n ID | \\n | \\n | \\n | \\n | \\n | \\n
\\n \\n \\n \\n 1 | \\n Braves | \\n Pirates | \\n PNC Park | \\n Pittsburgh | \\n 2019-06-06 12:35:00 | \\n
\\n \\n 2 | \\n Twins | \\n Indians | \\n Progressive Field | \\n Cleveland | \\n 2019-06-06 19:10:00 | \\n
\\n \\n 3 | \\n Cardinals | \\n Cubs | \\n Wrigley Field | \\n Chicago | \\n 2019-06-07 14:20:00 | \\n
\\n \\n 4 | \\n Pirates | \\n Brewers | \\n Miller Park | \\n Milwaukee | \\n 2019-06-07 20:10:00 | \\n
\\n \\n 5 | \\n Diamondbacks | \\n Blue Jays | \\n Rogers Centre | \\n Toronto | \\n 2019-06-08 15:07:00 | \\n
\\n \\n 6 | \\n Rockies | \\n Mets | \\n Citi Field | \\n Flushing | \\n 2019-06-09 13:10:00 | \\n
\\n \\n 7 | \\n Nationals | \\n White Sox | \\n Guaranteed Rate Field | \\n Chicago | \\n 2019-06-10 20:10:00 | \\n
\\n \\n 8 | \\n Pirates | \\n Braves | \\n SunTrust Park | \\n Atlanta | \\n 2019-06-11 19:20:00 | \\n
\\n \\n 9 | \\n Athletics | \\n Rays | \\n Tropicana Field | \\n St. Petersburg | \\n 2019-06-12 12:10:00 | \\n
\\n \\n 10 | \\n Cardinals | \\n Marlins | \\n Marlins Park | \\n Miami | \\n 2019-06-12 19:10:00 | \\n
\\n \\n 11 | \\n Diamondbacks | \\n Nationals | \\n Nationals Park | \\n Washington | \\n 2019-06-13 19:05:00 | \\n
\\n \\n 12 | \\n Rangers | \\n Reds | \\n Great American Ball Park | \\n Cincinnati | \\n 2019-06-14 19:10:00 | \\n
\\n \\n 13 | \\n Blue Jays | \\n Astros | \\n Minute Maid Park | \\n Houston | \\n 2019-06-15 16:10:00 | \\n
\\n \\n 14 | \\n Royals | \\n Twins | \\n Target Field | \\n Minneapolis | \\n 2019-06-16 14:10:00 | \\n
\\n \\n 15 | \\n Royals | \\n Mariners | \\n T-Mobile Park | \\n Seattle | \\n 2019-06-17 22:10:00 | \\n
\\n \\n 16 | \\n Orioles | \\n Athletics | \\n Oakland Coliseum | \\n Oakland | \\n 2019-06-18 22:07:00 | \\n
\\n \\n 17 | \\n Brewers | \\n Padres | \\n Petco Park | \\n San Diego | \\n 2019-06-19 15:40:00 | \\n
\\n \\n 18 | \\n Giants | \\n Dodgers | \\n Dodger Stadium | \\n Los Angeles | \\n 2019-06-19 22:10:00 | \\n
\\n \\n 19 | \\n Rockies | \\n Diamondbacks | \\n Chase Field | \\n Phoenix | \\n 2019-06-20 15:40:00 | \\n
\\n \\n 20 | \\n White Sox | \\n Rangers | \\n Globe Life Park in Arlington | \\n Arlington | \\n 2019-06-21 20:05:00 | \\n
\\n \\n 21 | \\n Twins | \\n Royals | \\n Kauffman Stadium | \\n Kansas City | \\n 2019-06-22 14:15:00 | \\n
\\n \\n 22 | \\n Angels | \\n Cardinals | \\n Busch Stadium | \\n St. Louis | \\n 2019-06-23 14:15:00 | \\n
\\n \\n 23 | \\n White Sox | \\n Red Sox | \\n Fenway Park | \\n Boston | \\n 2019-06-24 19:10:00 | \\n
\\n \\n 24 | \\n Padres | \\n Orioles | \\n Oriole Park at Camden Yards | \\n Baltimore | \\n 2019-06-25 19:05:00 | \\n
\\n \\n 25 | \\n Blue Jays | \\n Yankees | \\n Yankee Stadium | \\n Bronx | \\n 2019-06-26 13:05:00 | \\n
\\n \\n 26 | \\n Mets | \\n Phillies | \\n Citizens Bank Park | \\n Philadelphia | \\n 2019-06-26 19:05:00 | \\n
\\n \\n 27 | \\n Rangers | \\n Tigers | \\n Comerica Park | \\n Detroit | \\n 2019-06-27 13:10:00 | \\n
\\n \\n 28 | \\n Dodgers | \\n Rockies | \\n Coors Field | \\n Denver | \\n 2019-06-28 20:40:00 | \\n
\\n \\n 29 | \\n Athletics | \\n Angels | \\n Angel Stadium | \\n Anaheim | \\n 2019-06-29 22:07:00 | \\n
\\n \\n 30 | \\n Diamondbacks | \\n Giants | \\n Oracle Park | \\n San Francisco | \\n 2019-06-30 16:05:00 | \\n
\\n \\n
\",\"\\n \\n \\n | \\n Away | \\n Home | \\n Venue | \\n City | \\n Date | \\n
\\n \\n ID | \\n | \\n | \\n | \\n | \\n | \\n
\\n \\n \\n \\n 1 | \\n Rays | \\n Red Sox | \\n Fenway Park | \\n Boston | \\n 2019-06-08 18:10:00 | \\n
\\n \\n 2 | \\n Rockies | \\n Mets | \\n Citi Field | \\n Flushing | \\n 2019-06-09 13:10:00 | \\n
\\n \\n 3 | \\n Mets | \\n Yankees | \\n Yankee Stadium | \\n Bronx | \\n 2019-06-10 19:05:00 | \\n
\\n \\n 4 | \\n Diamondbacks | \\n Phillies | \\n Citizens Bank Park | \\n Philadelphia | \\n 2019-06-11 19:05:00 | \\n
\\n \\n 5 | \\n Blue Jays | \\n Orioles | \\n Oriole Park at Camden Yards | \\n Baltimore | \\n 2019-06-12 19:05:00 | \\n
\\n \\n 6 | \\n Diamondbacks | \\n Nationals | \\n Nationals Park | \\n Washington | \\n 2019-06-13 19:05:00 | \\n
\\n \\n 7 | \\n Pirates | \\n Marlins | \\n Marlins Park | \\n Miami | \\n 2019-06-14 19:10:00 | \\n
\\n \\n 8 | \\n Angels | \\n Rays | \\n Tropicana Field | \\n St. Petersburg | \\n 2019-06-15 13:10:00 | \\n
\\n \\n 9 | \\n Blue Jays | \\n Astros | \\n Minute Maid Park | \\n Houston | \\n 2019-06-16 14:10:00 | \\n
\\n \\n 10 | \\n Indians | \\n Rangers | \\n Globe Life Park in Arlington | \\n Arlington | \\n 2019-06-17 20:05:00 | \\n
\\n \\n 11 | \\n Mets | \\n Braves | \\n SunTrust Park | \\n Atlanta | \\n 2019-06-18 19:20:00 | \\n
\\n \\n 12 | \\n Astros | \\n Reds | \\n Great American Ball Park | \\n Cincinnati | \\n 2019-06-19 12:35:00 | \\n
\\n \\n 13 | \\n Angels | \\n Blue Jays | \\n Rogers Centre | \\n Toronto | \\n 2019-06-20 19:07:00 | \\n
\\n \\n 14 | \\n Padres | \\n Pirates | \\n PNC Park | \\n Pittsburgh | \\n 2019-06-21 19:05:00 | \\n
\\n \\n 15 | \\n Angels | \\n Cardinals | \\n Busch Stadium | \\n St. Louis | \\n 2019-06-22 14:15:00 | \\n
\\n \\n 16 | \\n Twins | \\n Royals | \\n Kauffman Stadium | \\n Kansas City | \\n 2019-06-23 14:15:00 | \\n
\\n \\n 17 | \\n Braves | \\n Cubs | \\n Wrigley Field | \\n Chicago | \\n 2019-06-24 20:05:00 | \\n
\\n \\n 18 | \\n Rays | \\n Twins | \\n Target Field | \\n Minneapolis | \\n 2019-06-25 20:10:00 | \\n
\\n \\n 19 | \\n Royals | \\n Indians | \\n Progressive Field | \\n Cleveland | \\n 2019-06-26 13:10:00 | \\n
\\n \\n 20 | \\n Rangers | \\n Tigers | \\n Comerica Park | \\n Detroit | \\n 2019-06-26 19:10:00 | \\n
\\n \\n 21 | \\n Mariners | \\n Brewers | \\n Miller Park | \\n Milwaukee | \\n 2019-06-27 14:10:00 | \\n
\\n \\n 22 | \\n Twins | \\n White Sox | \\n Guaranteed Rate Field | \\n Chicago | \\n 2019-06-28 20:10:00 | \\n
\\n \\n 23 | \\n Dodgers | \\n Rockies | \\n Coors Field | \\n Denver | \\n 2019-06-29 20:15:00 | \\n
\\n \\n 24 | \\n Athletics | \\n Angels | \\n Angel Stadium | \\n Anaheim | \\n 2019-06-30 16:07:00 | \\n
\\n \\n 25 | \\n Giants | \\n Padres | \\n Petco Park | \\n San Diego | \\n 2019-07-01 22:10:00 | \\n
\\n \\n 26 | \\n Diamondbacks | \\n Dodgers | \\n Dodger Stadium | \\n Los Angeles | \\n 2019-07-02 22:10:00 | \\n
\\n \\n 27 | \\n Cardinals | \\n Mariners | \\n T-Mobile Park | \\n Seattle | \\n 2019-07-03 22:10:00 | \\n
\\n \\n 28 | \\n Twins | \\n Athletics | \\n Oakland Coliseum | \\n Oakland | \\n 2019-07-04 16:07:00 | \\n
\\n \\n 29 | \\n Cardinals | \\n Giants | \\n Oracle Park | \\n San Francisco | \\n 2019-07-05 22:15:00 | \\n
\\n \\n 30 | \\n Rockies | \\n Diamondbacks | \\n Chase Field | \\n Phoenix | \\n 2019-07-06 22:10:00 | \\n
\\n \\n
\",\"\\n \\n \\n | \\n Away | \\n Home | \\n Venue | \\n City | \\n Date | \\n
\\n \\n ID | \\n | \\n | \\n | \\n | \\n | \\n
\\n \\n \\n \\n 1 | \\n Reds | \\n Braves | \\n SunTrust Park | \\n Atlanta | \\n 2019-08-03 19:20:00 | \\n
\\n \\n 2 | \\n White Sox | \\n Phillies | \\n Citizens Bank Park | \\n Philadelphia | \\n 2019-08-04 13:05:00 | \\n
\\n \\n 3 | \\n Red Sox | \\n Yankees | \\n Yankee Stadium | \\n Bronx | \\n 2019-08-04 19:05:00 | \\n
\\n \\n 4 | \\n Brewers | \\n Pirates | \\n PNC Park | \\n Pittsburgh | \\n 2019-08-05 19:05:00 | \\n
\\n \\n 5 | \\n White Sox | \\n Tigers | \\n Comerica Park | \\n Detroit | \\n 2019-08-06 13:10:00 | \\n
\\n \\n 6 | \\n Rangers | \\n Indians | \\n Progressive Field | \\n Cleveland | \\n 2019-08-06 19:10:00 | \\n
\\n \\n 7 | \\n Marlins | \\n Mets | \\n Citi Field | \\n Flushing | \\n 2019-08-07 12:10:00 | \\n
\\n \\n 8 | \\n Yankees | \\n Orioles | \\n Oriole Park at Camden Yards | \\n Baltimore | \\n 2019-08-07 19:05:00 | \\n
\\n \\n 9 | \\n Indians | \\n Twins | \\n Target Field | \\n Minneapolis | \\n 2019-08-08 20:10:00 | \\n
\\n \\n 10 | \\n Athletics | \\n White Sox | \\n Guaranteed Rate Field | \\n Chicago | \\n 2019-08-09 15:10:00 | \\n
\\n \\n 11 | \\n Rangers | \\n Brewers | \\n Miller Park | \\n Milwaukee | \\n 2019-08-09 20:10:00 | \\n
\\n \\n 12 | \\n Angels | \\n Red Sox | \\n Fenway Park | \\n Boston | \\n 2019-08-10 16:05:00 | \\n
\\n \\n 13 | \\n Pirates | \\n Cardinals | \\n Busch Stadium | \\n St. Louis | \\n 2019-08-11 14:15:00 | \\n
\\n \\n 14 | \\n Rangers | \\n Blue Jays | \\n Rogers Centre | \\n Toronto | \\n 2019-08-12 19:07:00 | \\n
\\n \\n 15 | \\n Reds | \\n Nationals | \\n Nationals Park | \\n Washington | \\n 2019-08-13 19:05:00 | \\n
\\n \\n 16 | \\n Dodgers | \\n Marlins | \\n Marlins Park | \\n Miami | \\n 2019-08-14 19:10:00 | \\n
\\n \\n 17 | \\n Cardinals | \\n Reds | \\n Great American Ball Park | \\n Cincinnati | \\n 2019-08-15 19:10:00 | \\n
\\n \\n 18 | \\n Mets | \\n Royals | \\n Kauffman Stadium | \\n Kansas City | \\n 2019-08-16 20:15:00 | \\n
\\n \\n 19 | \\n Giants | \\n Diamondbacks | \\n Chase Field | \\n Phoenix | \\n 2019-08-17 20:10:00 | \\n
\\n \\n 20 | \\n White Sox | \\n Angels | \\n Angel Stadium | \\n Anaheim | \\n 2019-08-18 16:07:00 | \\n
\\n \\n 21 | \\n Angels | \\n Rangers | \\n Globe Life Park in Arlington | \\n Arlington | \\n 2019-08-19 20:05:00 | \\n
\\n \\n 22 | \\n Mariners | \\n Rays | \\n Tropicana Field | \\n St. Petersburg | \\n 2019-08-20 19:10:00 | \\n
\\n \\n 23 | \\n Giants | \\n Cubs | \\n Wrigley Field | \\n Chicago | \\n 2019-08-21 20:05:00 | \\n
\\n \\n 24 | \\n Tigers | \\n Astros | \\n Minute Maid Park | \\n Houston | \\n 2019-08-22 20:10:00 | \\n
\\n \\n 25 | \\n Red Sox | \\n Padres | \\n Petco Park | \\n San Diego | \\n 2019-08-23 22:10:00 | \\n
\\n \\n 26 | \\n Yankees | \\n Dodgers | \\n Dodger Stadium | \\n Los Angeles | \\n 2019-08-24 16:05:00 | \\n
\\n \\n 27 | \\n Giants | \\n Athletics | \\n Oakland Coliseum | \\n Oakland | \\n 2019-08-25 16:07:00 | \\n
\\n \\n 28 | \\n Braves | \\n Rockies | \\n Coors Field | \\n Denver | \\n 2019-08-26 15:10:00 | \\n
\\n \\n 29 | \\n Diamondbacks | \\n Giants | \\n Oracle Park | \\n San Francisco | \\n 2019-08-27 21:45:00 | \\n
\\n \\n 30 | \\n Yankees | \\n Mariners | \\n T-Mobile Park | \\n Seattle | \\n 2019-08-28 16:10:00 | \\n
\\n \\n
\",\"\\n \\n \\n | \\n Away | \\n Home | \\n Venue | \\n City | \\n Date | \\n
\\n \\n ID | \\n | \\n | \\n | \\n | \\n | \\n
\\n \\n \\n \\n 1 | \\n Blue Jays | \\n Mariners | \\n T-Mobile Park | \\n Seattle | \\n 2019-08-23 22:10:00 | \\n
\\n \\n 2 | \\n Giants | \\n Athletics | \\n Oakland Coliseum | \\n Oakland | \\n 2019-08-24 21:07:00 | \\n
\\n \\n 3 | \\n Yankees | \\n Dodgers | \\n Dodger Stadium | \\n Los Angeles | \\n 2019-08-25 19:05:00 | \\n
\\n \\n 4 | \\n Diamondbacks | \\n Giants | \\n Oracle Park | \\n San Francisco | \\n 2019-08-26 21:45:00 | \\n
\\n \\n 5 | \\n Rangers | \\n Angels | \\n Angel Stadium | \\n Anaheim | \\n 2019-08-27 22:07:00 | \\n
\\n \\n 6 | \\n Dodgers | \\n Padres | \\n Petco Park | \\n San Diego | \\n 2019-08-28 21:10:00 | \\n
\\n \\n 7 | \\n Dodgers | \\n Diamondbacks | \\n Chase Field | \\n Phoenix | \\n 2019-08-29 21:40:00 | \\n
\\n \\n 8 | \\n Pirates | \\n Rockies | \\n Coors Field | \\n Denver | \\n 2019-08-30 20:40:00 | \\n
\\n \\n 9 | \\n Orioles | \\n Royals | \\n Kauffman Stadium | \\n Kansas City | \\n 2019-08-31 19:15:00 | \\n
\\n \\n 10 | \\n Reds | \\n Cardinals | \\n Busch Stadium | \\n St. Louis | \\n 2019-09-01 14:15:00 | \\n
\\n \\n 11 | \\n Phillies | \\n Reds | \\n Great American Ball Park | \\n Cincinnati | \\n 2019-09-02 14:10:00 | \\n
\\n \\n 12 | \\n Marlins | \\n Pirates | \\n PNC Park | \\n Pittsburgh | \\n 2019-09-03 19:05:00 | \\n
\\n \\n 13 | \\n Mets | \\n Nationals | \\n Nationals Park | \\n Washington | \\n 2019-09-04 13:05:00 | \\n
\\n \\n 14 | \\n Rangers | \\n Orioles | \\n Oriole Park at Camden Yards | \\n Baltimore | \\n 2019-09-05 19:05:00 | \\n
\\n \\n 15 | \\n Nationals | \\n Braves | \\n SunTrust Park | \\n Atlanta | \\n 2019-09-06 19:20:00 | \\n
\\n \\n 16 | \\n Blue Jays | \\n Rays | \\n Tropicana Field | \\n St. Petersburg | \\n 2019-09-07 18:10:00 | \\n
\\n \\n 17 | \\n Royals | \\n Marlins | \\n Marlins Park | \\n Miami | \\n 2019-09-08 13:10:00 | \\n
\\n \\n 18 | \\n Athletics | \\n Astros | \\n Minute Maid Park | \\n Houston | \\n 2019-09-09 20:10:00 | \\n
\\n \\n 19 | \\n Rays | \\n Rangers | \\n Globe Life Park in Arlington | \\n Arlington | \\n 2019-09-10 20:05:00 | \\n
\\n \\n 20 | \\n Royals | \\n White Sox | \\n Guaranteed Rate Field | \\n Chicago | \\n 2019-09-11 20:10:00 | \\n
\\n \\n 21 | \\n Yankees | \\n Tigers | \\n Comerica Park | \\n Detroit | \\n 2019-09-12 13:10:00 | \\n
\\n \\n 22 | \\n Yankees | \\n Blue Jays | \\n Rogers Centre | \\n Toronto | \\n 2019-09-13 19:07:00 | \\n
\\n \\n 23 | \\n Red Sox | \\n Phillies | \\n Citizens Bank Park | \\n Philadelphia | \\n 2019-09-14 19:05:00 | \\n
\\n \\n 24 | \\n Dodgers | \\n Mets | \\n Citi Field | \\n Flushing | \\n 2019-09-15 13:10:00 | \\n
\\n \\n 25 | \\n Angels | \\n Yankees | \\n Yankee Stadium | \\n Bronx | \\n 2019-09-17 18:35:00 | \\n
\\n \\n 26 | \\n Giants | \\n Red Sox | \\n Fenway Park | \\n Boston | \\n 2019-09-18 19:10:00 | \\n
\\n \\n 27 | \\n Tigers | \\n Indians | \\n Progressive Field | \\n Cleveland | \\n 2019-09-19 19:10:00 | \\n
\\n \\n 28 | \\n Cardinals | \\n Cubs | \\n Wrigley Field | \\n Chicago | \\n 2019-09-20 14:20:00 | \\n
\\n \\n 29 | \\n Pirates | \\n Brewers | \\n Miller Park | \\n Milwaukee | \\n 2019-09-20 20:10:00 | \\n
\\n \\n 30 | \\n Royals | \\n Twins | \\n Target Field | \\n Minneapolis | \\n 2019-09-21 19:10:00 | \\n
\\n \\n
\",\"\\n \\n \\n | \\n Away | \\n Home | \\n Venue | \\n City | \\n Date | \\n
\\n \\n ID | \\n | \\n | \\n | \\n | \\n | \\n
\\n \\n \\n \\n 1 | \\n Braves | \\n Pirates | \\n PNC Park | \\n Pittsburgh | \\n 2019-06-06 12:35:00 | \\n
\\n \\n 2 | \\n Twins | \\n Indians | \\n Progressive Field | \\n Cleveland | \\n 2019-06-06 19:10:00 | \\n
\\n \\n 3 | \\n Cardinals | \\n Cubs | \\n Wrigley Field | \\n Chicago | \\n 2019-06-07 14:20:00 | \\n
\\n \\n 4 | \\n Pirates | \\n Brewers | \\n Miller Park | \\n Milwaukee | \\n 2019-06-07 20:10:00 | \\n
\\n \\n 5 | \\n Diamondbacks | \\n Blue Jays | \\n Rogers Centre | \\n Toronto | \\n 2019-06-08 15:07:00 | \\n
\\n \\n 6 | \\n White Sox | \\n Royals | \\n Kauffman Stadium | \\n Kansas City | \\n 2019-06-09 14:15:00 | \\n
\\n \\n 7 | \\n Nationals | \\n White Sox | \\n Guaranteed Rate Field | \\n Chicago | \\n 2019-06-10 20:10:00 | \\n
\\n \\n 8 | \\n Pirates | \\n Braves | \\n SunTrust Park | \\n Atlanta | \\n 2019-06-11 19:20:00 | \\n
\\n \\n 9 | \\n Athletics | \\n Rays | \\n Tropicana Field | \\n St. Petersburg | \\n 2019-06-12 12:10:00 | \\n
\\n \\n 10 | \\n Cardinals | \\n Marlins | \\n Marlins Park | \\n Miami | \\n 2019-06-12 19:10:00 | \\n
\\n \\n 11 | \\n Cardinals | \\n Mets | \\n Citi Field | \\n Flushing | \\n 2019-06-13 19:10:00 | \\n
\\n \\n 12 | \\n Rangers | \\n Reds | \\n Great American Ball Park | \\n Cincinnati | \\n 2019-06-14 19:10:00 | \\n
\\n \\n 13 | \\n Blue Jays | \\n Astros | \\n Minute Maid Park | \\n Houston | \\n 2019-06-15 16:10:00 | \\n
\\n \\n 14 | \\n Royals | \\n Twins | \\n Target Field | \\n Minneapolis | \\n 2019-06-16 14:10:00 | \\n
\\n \\n 15 | \\n Royals | \\n Mariners | \\n T-Mobile Park | \\n Seattle | \\n 2019-06-17 22:10:00 | \\n
\\n \\n 16 | \\n Orioles | \\n Athletics | \\n Oakland Coliseum | \\n Oakland | \\n 2019-06-18 22:07:00 | \\n
\\n \\n 17 | \\n Brewers | \\n Padres | \\n Petco Park | \\n San Diego | \\n 2019-06-19 15:40:00 | \\n
\\n \\n 18 | \\n Giants | \\n Dodgers | \\n Dodger Stadium | \\n Los Angeles | \\n 2019-06-19 22:10:00 | \\n
\\n \\n 19 | \\n Rockies | \\n Diamondbacks | \\n Chase Field | \\n Phoenix | \\n 2019-06-20 15:40:00 | \\n
\\n \\n 20 | \\n White Sox | \\n Rangers | \\n Globe Life Park in Arlington | \\n Arlington | \\n 2019-06-21 20:05:00 | \\n
\\n \\n 21 | \\n Angels | \\n Cardinals | \\n Busch Stadium | \\n St. Louis | \\n 2019-06-22 14:15:00 | \\n
\\n \\n 22 | \\n Braves | \\n Nationals | \\n Nationals Park | \\n Washington | \\n 2019-06-23 13:35:00 | \\n
\\n \\n 23 | \\n White Sox | \\n Red Sox | \\n Fenway Park | \\n Boston | \\n 2019-06-24 19:10:00 | \\n
\\n \\n 24 | \\n Padres | \\n Orioles | \\n Oriole Park at Camden Yards | \\n Baltimore | \\n 2019-06-25 19:05:00 | \\n
\\n \\n 25 | \\n Blue Jays | \\n Yankees | \\n Yankee Stadium | \\n Bronx | \\n 2019-06-26 13:05:00 | \\n
\\n \\n 26 | \\n Mets | \\n Phillies | \\n Citizens Bank Park | \\n Philadelphia | \\n 2019-06-26 19:05:00 | \\n
\\n \\n 27 | \\n Rangers | \\n Tigers | \\n Comerica Park | \\n Detroit | \\n 2019-06-27 13:10:00 | \\n
\\n \\n 28 | \\n Dodgers | \\n Rockies | \\n Coors Field | \\n Denver | \\n 2019-06-28 20:40:00 | \\n
\\n \\n 29 | \\n Athletics | \\n Angels | \\n Angel Stadium | \\n Anaheim | \\n 2019-06-29 22:07:00 | \\n
\\n \\n 30 | \\n Diamondbacks | \\n Giants | \\n Oracle Park | \\n San Francisco | \\n 2019-06-30 16:05:00 | \\n
\\n \\n
\",\"\\n \\n \\n | \\n Away | \\n Home | \\n Venue | \\n City | \\n Date | \\n
\\n \\n ID | \\n | \\n | \\n | \\n | \\n | \\n
\\n \\n \\n \\n 1 | \\n Angels | \\n Mariners | \\n T-Mobile Park | \\n Seattle | \\n 2019-04-01 22:10:00 | \\n
\\n \\n 2 | \\n Red Sox | \\n Athletics | \\n Oakland Coliseum | \\n Oakland | \\n 2019-04-02 22:07:00 | \\n
\\n \\n 3 | \\n Diamondbacks | \\n Padres | \\n Petco Park | \\n San Diego | \\n 2019-04-03 15:40:00 | \\n
\\n \\n 4 | \\n Giants | \\n Dodgers | \\n Dodger Stadium | \\n Los Angeles | \\n 2019-04-03 22:10:00 | \\n
\\n \\n 5 | \\n Rangers | \\n Angels | \\n Angel Stadium | \\n Anaheim | \\n 2019-04-04 22:07:00 | \\n
\\n \\n 6 | \\n Rays | \\n Giants | \\n Oracle Park | \\n San Francisco | \\n 2019-04-05 16:35:00 | \\n
\\n \\n 7 | \\n Red Sox | \\n Diamondbacks | \\n Chase Field | \\n Phoenix | \\n 2019-04-06 20:10:00 | \\n
\\n \\n 8 | \\n Dodgers | \\n Rockies | \\n Coors Field | \\n Denver | \\n 2019-04-07 20:37:00 | \\n
\\n \\n 9 | \\n Mariners | \\n Royals | \\n Kauffman Stadium | \\n Kansas City | \\n 2019-04-08 20:15:00 | \\n
\\n \\n 10 | \\n Dodgers | \\n Cardinals | \\n Busch Stadium | \\n St. Louis | \\n 2019-04-09 19:45:00 | \\n
\\n \\n 11 | \\n Rays | \\n White Sox | \\n Guaranteed Rate Field | \\n Chicago | \\n 2019-04-10 14:10:00 | \\n
\\n \\n 12 | \\n Pirates | \\n Cubs | \\n Wrigley Field | \\n Chicago | \\n 2019-04-10 20:05:00 | \\n
\\n \\n 13 | \\n Athletics | \\n Orioles | \\n Oriole Park at Camden Yards | \\n Baltimore | \\n 2019-04-11 12:35:00 | \\n
\\n \\n 14 | \\n Pirates | \\n Nationals | \\n Nationals Park | \\n Washington | \\n 2019-04-12 19:05:00 | \\n
\\n \\n 15 | \\n White Sox | \\n Yankees | \\n Yankee Stadium | \\n Bronx | \\n 2019-04-13 13:05:00 | \\n
\\n \\n 16 | \\n Rays | \\n Blue Jays | \\n Rogers Centre | \\n Toronto | \\n 2019-04-14 13:07:00 | \\n
\\n \\n 17 | \\n Blue Jays | \\n Twins | \\n Target Field | \\n Minneapolis | \\n 2019-04-15 19:40:00 | \\n
\\n \\n 18 | \\n Cardinals | \\n Brewers | \\n Miller Park | \\n Milwaukee | \\n 2019-04-16 19:40:00 | \\n
\\n \\n 19 | \\n Pirates | \\n Tigers | \\n Comerica Park | \\n Detroit | \\n 2019-04-17 18:40:00 | \\n
\\n \\n 20 | \\n Diamondbacks | \\n Braves | \\n SunTrust Park | \\n Atlanta | \\n 2019-04-18 12:10:00 | \\n
\\n \\n 21 | \\n Nationals | \\n Marlins | \\n Marlins Park | \\n Miami | \\n 2019-04-19 19:10:00 | \\n
\\n \\n 22 | \\n Red Sox | \\n Rays | \\n Tropicana Field | \\n St. Petersburg | \\n 2019-04-20 18:10:00 | \\n
\\n \\n 23 | \\n Astros | \\n Rangers | \\n Globe Life Park in Arlington | \\n Arlington | \\n 2019-04-21 15:05:00 | \\n
\\n \\n 24 | \\n Twins | \\n Astros | \\n Minute Maid Park | \\n Houston | \\n 2019-04-22 20:10:00 | \\n
\\n \\n 25 | \\n Braves | \\n Reds | \\n Great American Ball Park | \\n Cincinnati | \\n 2019-04-23 18:40:00 | \\n
\\n \\n 26 | \\n Marlins | \\n Indians | \\n Progressive Field | \\n Cleveland | \\n 2019-04-24 13:10:00 | \\n
\\n \\n 27 | \\n Diamondbacks | \\n Pirates | \\n PNC Park | \\n Pittsburgh | \\n 2019-04-24 19:05:00 | \\n
\\n \\n 28 | \\n Marlins | \\n Phillies | \\n Citizens Bank Park | \\n Philadelphia | \\n 2019-04-25 19:05:00 | \\n
\\n \\n 29 | \\n Brewers | \\n Mets | \\n Citi Field | \\n Flushing | \\n 2019-04-26 19:10:00 | \\n
\\n \\n 30 | \\n Rays | \\n Red Sox | \\n Fenway Park | \\n Boston | \\n 2019-04-27 16:05:00 | \\n
\\n \\n
\",\"\\n \\n \\n | \\n Away | \\n Home | \\n Venue | \\n City | \\n Date | \\n
\\n \\n ID | \\n | \\n | \\n | \\n | \\n | \\n
\\n \\n \\n \\n 1 | \\n Mets | \\n Twins | \\n Target Field | \\n Minneapolis | \\n 2019-07-16 20:10:00 | \\n
\\n \\n 2 | \\n Pirates | \\n Cardinals | \\n Busch Stadium | \\n St. Louis | \\n 2019-07-17 13:15:00 | \\n
\\n \\n 3 | \\n White Sox | \\n Royals | \\n Kauffman Stadium | \\n Kansas City | \\n 2019-07-17 20:15:00 | \\n
\\n \\n 4 | \\n Nationals | \\n Braves | \\n SunTrust Park | \\n Atlanta | \\n 2019-07-18 19:20:00 | \\n
\\n \\n 5 | \\n Padres | \\n Cubs | \\n Wrigley Field | \\n Chicago | \\n 2019-07-19 14:20:00 | \\n
\\n \\n 6 | \\n White Sox | \\n Rays | \\n Tropicana Field | \\n St. Petersburg | \\n 2019-07-20 18:10:00 | \\n
\\n \\n 7 | \\n Rangers | \\n Astros | \\n Minute Maid Park | \\n Houston | \\n 2019-07-21 14:10:00 | \\n
\\n \\n 8 | \\n Orioles | \\n Diamondbacks | \\n Chase Field | \\n Phoenix | \\n 2019-07-22 21:40:00 | \\n
\\n \\n 9 | \\n Cubs | \\n Giants | \\n Oracle Park | \\n San Francisco | \\n 2019-07-23 21:45:00 | \\n
\\n \\n 10 | \\n Angels | \\n Dodgers | \\n Dodger Stadium | \\n Los Angeles | \\n 2019-07-24 22:10:00 | \\n
\\n \\n 11 | \\n Orioles | \\n Angels | \\n Angel Stadium | \\n Anaheim | \\n 2019-07-25 22:07:00 | \\n
\\n \\n 12 | \\n Tigers | \\n Mariners | \\n T-Mobile Park | \\n Seattle | \\n 2019-07-26 22:10:00 | \\n
\\n \\n 13 | \\n Rangers | \\n Athletics | \\n Oakland Coliseum | \\n Oakland | \\n 2019-07-27 21:07:00 | \\n
\\n \\n 14 | \\n Giants | \\n Padres | \\n Petco Park | \\n San Diego | \\n 2019-07-28 16:10:00 | \\n
\\n \\n 15 | \\n Dodgers | \\n Rockies | \\n Coors Field | \\n Denver | \\n 2019-07-29 20:40:00 | \\n
\\n \\n 16 | \\n Pirates | \\n Reds | \\n Great American Ball Park | \\n Cincinnati | \\n 2019-07-30 19:10:00 | \\n
\\n \\n 17 | \\n Braves | \\n Nationals | \\n Nationals Park | \\n Washington | \\n 2019-07-31 12:05:00 | \\n
\\n \\n 18 | \\n Twins | \\n Marlins | \\n Marlins Park | \\n Miami | \\n 2019-08-01 12:10:00 | \\n
\\n \\n 19 | \\n Tigers | \\n Rangers | \\n Globe Life Park in Arlington | \\n Arlington | \\n 2019-08-02 20:05:00 | \\n
\\n \\n 20 | \\n Mets | \\n Pirates | \\n PNC Park | \\n Pittsburgh | \\n 2019-08-03 19:05:00 | \\n
\\n \\n 21 | \\n White Sox | \\n Phillies | \\n Citizens Bank Park | \\n Philadelphia | \\n 2019-08-04 13:05:00 | \\n
\\n \\n 22 | \\n Red Sox | \\n Yankees | \\n Yankee Stadium | \\n Bronx | \\n 2019-08-04 19:05:00 | \\n
\\n \\n 23 | \\n Yankees | \\n Orioles | \\n Oriole Park at Camden Yards | \\n Baltimore | \\n 2019-08-05 19:05:00 | \\n
\\n \\n 24 | \\n White Sox | \\n Tigers | \\n Comerica Park | \\n Detroit | \\n 2019-08-06 13:10:00 | \\n
\\n \\n 25 | \\n Rangers | \\n Indians | \\n Progressive Field | \\n Cleveland | \\n 2019-08-06 19:10:00 | \\n
\\n \\n 26 | \\n Marlins | \\n Mets | \\n Citi Field | \\n Flushing | \\n 2019-08-07 12:10:00 | \\n
\\n \\n 27 | \\n Royals | \\n Red Sox | \\n Fenway Park | \\n Boston | \\n 2019-08-07 19:10:00 | \\n
\\n \\n 28 | \\n Yankees | \\n Blue Jays | \\n Rogers Centre | \\n Toronto | \\n 2019-08-08 19:07:00 | \\n
\\n \\n 29 | \\n Athletics | \\n White Sox | \\n Guaranteed Rate Field | \\n Chicago | \\n 2019-08-09 15:10:00 | \\n
\\n \\n 30 | \\n Rangers | \\n Brewers | \\n Miller Park | \\n Milwaukee | \\n 2019-08-09 20:10:00 | \\n
\\n \\n
\",\"\\n \\n \\n | \\n Away | \\n Home | \\n Venue | \\n City | \\n Date | \\n
\\n \\n ID | \\n | \\n | \\n | \\n | \\n | \\n
\\n \\n \\n \\n 1 | \\n Rangers | \\n Astros | \\n Minute Maid Park | \\n Houston | \\n 2019-07-21 14:10:00 | \\n
\\n \\n 2 | \\n Orioles | \\n Diamondbacks | \\n Chase Field | \\n Phoenix | \\n 2019-07-22 21:40:00 | \\n
\\n \\n 3 | \\n Angels | \\n Dodgers | \\n Dodger Stadium | \\n Los Angeles | \\n 2019-07-23 22:10:00 | \\n
\\n \\n 4 | \\n Cubs | \\n Giants | \\n Oracle Park | \\n San Francisco | \\n 2019-07-24 15:45:00 | \\n
\\n \\n 5 | \\n Rangers | \\n Athletics | \\n Oakland Coliseum | \\n Oakland | \\n 2019-07-25 22:07:00 | \\n
\\n \\n 6 | \\n Tigers | \\n Mariners | \\n T-Mobile Park | \\n Seattle | \\n 2019-07-26 22:10:00 | \\n
\\n \\n 7 | \\n Orioles | \\n Angels | \\n Angel Stadium | \\n Anaheim | \\n 2019-07-27 21:07:00 | \\n
\\n \\n 8 | \\n Giants | \\n Padres | \\n Petco Park | \\n San Diego | \\n 2019-07-28 16:10:00 | \\n
\\n \\n 9 | \\n Dodgers | \\n Rockies | \\n Coors Field | \\n Denver | \\n 2019-07-29 20:40:00 | \\n
\\n \\n 10 | \\n Mariners | \\n Rangers | \\n Globe Life Park in Arlington | \\n Arlington | \\n 2019-07-30 20:05:00 | \\n
\\n \\n 11 | \\n Blue Jays | \\n Royals | \\n Kauffman Stadium | \\n Kansas City | \\n 2019-07-31 13:15:00 | \\n
\\n \\n 12 | \\n Cubs | \\n Cardinals | \\n Busch Stadium | \\n St. Louis | \\n 2019-07-31 20:15:00 | \\n
\\n \\n 13 | \\n Mets | \\n White Sox | \\n Guaranteed Rate Field | \\n Chicago | \\n 2019-08-01 14:10:00 | \\n
\\n \\n 14 | \\n Brewers | \\n Cubs | \\n Wrigley Field | \\n Chicago | \\n 2019-08-02 14:20:00 | \\n
\\n \\n 15 | \\n Blue Jays | \\n Orioles | \\n Oriole Park at Camden Yards | \\n Baltimore | \\n 2019-08-03 19:05:00 | \\n
\\n \\n 16 | \\n White Sox | \\n Phillies | \\n Citizens Bank Park | \\n Philadelphia | \\n 2019-08-04 13:05:00 | \\n
\\n \\n 17 | \\n Red Sox | \\n Yankees | \\n Yankee Stadium | \\n Bronx | \\n 2019-08-04 19:05:00 | \\n
\\n \\n 18 | \\n Marlins | \\n Mets | \\n Citi Field | \\n Flushing | \\n 2019-08-05 16:10:00 | \\n
\\n \\n 19 | \\n Royals | \\n Red Sox | \\n Fenway Park | \\n Boston | \\n 2019-08-06 19:10:00 | \\n
\\n \\n 20 | \\n Rangers | \\n Indians | \\n Progressive Field | \\n Cleveland | \\n 2019-08-07 13:10:00 | \\n
\\n \\n 21 | \\n Brewers | \\n Pirates | \\n PNC Park | \\n Pittsburgh | \\n 2019-08-07 19:05:00 | \\n
\\n \\n 22 | \\n Cubs | \\n Reds | \\n Great American Ball Park | \\n Cincinnati | \\n 2019-08-08 19:10:00 | \\n
\\n \\n 23 | \\n Indians | \\n Twins | \\n Target Field | \\n Minneapolis | \\n 2019-08-09 20:10:00 | \\n
\\n \\n 24 | \\n Rangers | \\n Brewers | \\n Miller Park | \\n Milwaukee | \\n 2019-08-10 19:10:00 | \\n
\\n \\n 25 | \\n Royals | \\n Tigers | \\n Comerica Park | \\n Detroit | \\n 2019-08-11 13:10:00 | \\n
\\n \\n 26 | \\n Rangers | \\n Blue Jays | \\n Rogers Centre | \\n Toronto | \\n 2019-08-12 19:07:00 | \\n
\\n \\n 27 | \\n Reds | \\n Nationals | \\n Nationals Park | \\n Washington | \\n 2019-08-13 19:05:00 | \\n
\\n \\n 28 | \\n Mets | \\n Braves | \\n SunTrust Park | \\n Atlanta | \\n 2019-08-14 19:20:00 | \\n
\\n \\n 29 | \\n Dodgers | \\n Marlins | \\n Marlins Park | \\n Miami | \\n 2019-08-15 15:05:00 | \\n
\\n \\n 30 | \\n Tigers | \\n Rays | \\n Tropicana Field | \\n St. Petersburg | \\n 2019-08-16 19:10:00 | \\n
\\n \\n
\",\"\\n \\n \\n | \\n Away | \\n Home | \\n Venue | \\n City | \\n Date | \\n
\\n \\n ID | \\n | \\n | \\n | \\n | \\n | \\n
\\n \\n \\n \\n 1 | \\n Mets | \\n Twins | \\n Target Field | \\n Minneapolis | \\n 2019-07-16 20:10:00 | \\n
\\n \\n 2 | \\n Pirates | \\n Cardinals | \\n Busch Stadium | \\n St. Louis | \\n 2019-07-17 13:15:00 | \\n
\\n \\n 3 | \\n White Sox | \\n Royals | \\n Kauffman Stadium | \\n Kansas City | \\n 2019-07-17 20:15:00 | \\n
\\n \\n 4 | \\n Nationals | \\n Braves | \\n SunTrust Park | \\n Atlanta | \\n 2019-07-18 19:20:00 | \\n
\\n \\n 5 | \\n Red Sox | \\n Orioles | \\n Oriole Park at Camden Yards | \\n Baltimore | \\n 2019-07-19 19:05:00 | \\n
\\n \\n 6 | \\n White Sox | \\n Rays | \\n Tropicana Field | \\n St. Petersburg | \\n 2019-07-20 18:10:00 | \\n
\\n \\n 7 | \\n Rangers | \\n Astros | \\n Minute Maid Park | \\n Houston | \\n 2019-07-21 14:10:00 | \\n
\\n \\n 8 | \\n Orioles | \\n Diamondbacks | \\n Chase Field | \\n Phoenix | \\n 2019-07-22 21:40:00 | \\n
\\n \\n 9 | \\n Angels | \\n Dodgers | \\n Dodger Stadium | \\n Los Angeles | \\n 2019-07-23 22:10:00 | \\n
\\n \\n 10 | \\n Cubs | \\n Giants | \\n Oracle Park | \\n San Francisco | \\n 2019-07-24 15:45:00 | \\n
\\n \\n 11 | \\n Orioles | \\n Angels | \\n Angel Stadium | \\n Anaheim | \\n 2019-07-25 22:07:00 | \\n
\\n \\n 12 | \\n Rangers | \\n Athletics | \\n Oakland Coliseum | \\n Oakland | \\n 2019-07-26 22:07:00 | \\n
\\n \\n 13 | \\n Tigers | \\n Mariners | \\n T-Mobile Park | \\n Seattle | \\n 2019-07-27 16:10:00 | \\n
\\n \\n 14 | \\n Giants | \\n Padres | \\n Petco Park | \\n San Diego | \\n 2019-07-28 16:10:00 | \\n
\\n \\n 15 | \\n Dodgers | \\n Rockies | \\n Coors Field | \\n Denver | \\n 2019-07-29 20:40:00 | \\n
\\n \\n 16 | \\n Pirates | \\n Reds | \\n Great American Ball Park | \\n Cincinnati | \\n 2019-07-30 19:10:00 | \\n
\\n \\n 17 | \\n Braves | \\n Nationals | \\n Nationals Park | \\n Washington | \\n 2019-07-31 12:05:00 | \\n
\\n \\n 18 | \\n Twins | \\n Marlins | \\n Marlins Park | \\n Miami | \\n 2019-08-01 12:10:00 | \\n
\\n \\n 19 | \\n Tigers | \\n Rangers | \\n Globe Life Park in Arlington | \\n Arlington | \\n 2019-08-02 20:05:00 | \\n
\\n \\n 20 | \\n Brewers | \\n Cubs | \\n Wrigley Field | \\n Chicago | \\n 2019-08-03 14:20:00 | \\n
\\n \\n 21 | \\n White Sox | \\n Phillies | \\n Citizens Bank Park | \\n Philadelphia | \\n 2019-08-04 13:05:00 | \\n
\\n \\n 22 | \\n Red Sox | \\n Yankees | \\n Yankee Stadium | \\n Bronx | \\n 2019-08-04 19:05:00 | \\n
\\n \\n 23 | \\n Brewers | \\n Pirates | \\n PNC Park | \\n Pittsburgh | \\n 2019-08-05 19:05:00 | \\n
\\n \\n 24 | \\n White Sox | \\n Tigers | \\n Comerica Park | \\n Detroit | \\n 2019-08-06 13:10:00 | \\n
\\n \\n 25 | \\n Rangers | \\n Indians | \\n Progressive Field | \\n Cleveland | \\n 2019-08-06 19:10:00 | \\n
\\n \\n 26 | \\n Marlins | \\n Mets | \\n Citi Field | \\n Flushing | \\n 2019-08-07 12:10:00 | \\n
\\n \\n 27 | \\n Royals | \\n Red Sox | \\n Fenway Park | \\n Boston | \\n 2019-08-07 19:10:00 | \\n
\\n \\n 28 | \\n Yankees | \\n Blue Jays | \\n Rogers Centre | \\n Toronto | \\n 2019-08-08 19:07:00 | \\n
\\n \\n 29 | \\n Athletics | \\n White Sox | \\n Guaranteed Rate Field | \\n Chicago | \\n 2019-08-09 15:10:00 | \\n
\\n \\n 30 | \\n Rangers | \\n Brewers | \\n Miller Park | \\n Milwaukee | \\n 2019-08-09 20:10:00 | \\n
\\n \\n
\",\"\\n \\n \\n | \\n Away | \\n Home | \\n Venue | \\n City | \\n Date | \\n
\\n \\n ID | \\n | \\n | \\n | \\n | \\n | \\n
\\n \\n \\n \\n 1 | \\n Angels | \\n Mariners | \\n T-Mobile Park | \\n Seattle | \\n 2019-04-01 22:10:00 | \\n
\\n \\n 2 | \\n Red Sox | \\n Athletics | \\n Oakland Coliseum | \\n Oakland | \\n 2019-04-02 22:07:00 | \\n
\\n \\n 3 | \\n Diamondbacks | \\n Padres | \\n Petco Park | \\n San Diego | \\n 2019-04-03 15:40:00 | \\n
\\n \\n 4 | \\n Giants | \\n Dodgers | \\n Dodger Stadium | \\n Los Angeles | \\n 2019-04-03 22:10:00 | \\n
\\n \\n 5 | \\n Rangers | \\n Angels | \\n Angel Stadium | \\n Anaheim | \\n 2019-04-04 22:07:00 | \\n
\\n \\n 6 | \\n Rays | \\n Giants | \\n Oracle Park | \\n San Francisco | \\n 2019-04-05 16:35:00 | \\n
\\n \\n 7 | \\n Red Sox | \\n Diamondbacks | \\n Chase Field | \\n Phoenix | \\n 2019-04-06 20:10:00 | \\n
\\n \\n 8 | \\n Dodgers | \\n Rockies | \\n Coors Field | \\n Denver | \\n 2019-04-07 20:37:00 | \\n
\\n \\n 9 | \\n Mariners | \\n Royals | \\n Kauffman Stadium | \\n Kansas City | \\n 2019-04-08 20:15:00 | \\n
\\n \\n 10 | \\n Dodgers | \\n Cardinals | \\n Busch Stadium | \\n St. Louis | \\n 2019-04-09 19:45:00 | \\n
\\n \\n 11 | \\n Rays | \\n White Sox | \\n Guaranteed Rate Field | \\n Chicago | \\n 2019-04-10 14:10:00 | \\n
\\n \\n 12 | \\n Pirates | \\n Cubs | \\n Wrigley Field | \\n Chicago | \\n 2019-04-10 20:05:00 | \\n
\\n \\n 13 | \\n Athletics | \\n Orioles | \\n Oriole Park at Camden Yards | \\n Baltimore | \\n 2019-04-11 12:35:00 | \\n
\\n \\n 14 | \\n Pirates | \\n Nationals | \\n Nationals Park | \\n Washington | \\n 2019-04-12 19:05:00 | \\n
\\n \\n 15 | \\n White Sox | \\n Yankees | \\n Yankee Stadium | \\n Bronx | \\n 2019-04-13 13:05:00 | \\n
\\n \\n 16 | \\n Rays | \\n Blue Jays | \\n Rogers Centre | \\n Toronto | \\n 2019-04-14 13:07:00 | \\n
\\n \\n 17 | \\n Blue Jays | \\n Twins | \\n Target Field | \\n Minneapolis | \\n 2019-04-15 19:40:00 | \\n
\\n \\n 18 | \\n Cardinals | \\n Brewers | \\n Miller Park | \\n Milwaukee | \\n 2019-04-16 19:40:00 | \\n
\\n \\n 19 | \\n Pirates | \\n Tigers | \\n Comerica Park | \\n Detroit | \\n 2019-04-17 18:40:00 | \\n
\\n \\n 20 | \\n Diamondbacks | \\n Braves | \\n SunTrust Park | \\n Atlanta | \\n 2019-04-18 12:10:00 | \\n
\\n \\n 21 | \\n Nationals | \\n Marlins | \\n Marlins Park | \\n Miami | \\n 2019-04-19 19:10:00 | \\n
\\n \\n 22 | \\n Red Sox | \\n Rays | \\n Tropicana Field | \\n St. Petersburg | \\n 2019-04-20 18:10:00 | \\n
\\n \\n 23 | \\n Astros | \\n Rangers | \\n Globe Life Park in Arlington | \\n Arlington | \\n 2019-04-21 15:05:00 | \\n
\\n \\n 24 | \\n Twins | \\n Astros | \\n Minute Maid Park | \\n Houston | \\n 2019-04-22 20:10:00 | \\n
\\n \\n 25 | \\n Braves | \\n Reds | \\n Great American Ball Park | \\n Cincinnati | \\n 2019-04-23 18:40:00 | \\n
\\n \\n 26 | \\n Marlins | \\n Indians | \\n Progressive Field | \\n Cleveland | \\n 2019-04-24 13:10:00 | \\n
\\n \\n 27 | \\n Diamondbacks | \\n Pirates | \\n PNC Park | \\n Pittsburgh | \\n 2019-04-24 19:05:00 | \\n
\\n \\n 28 | \\n Marlins | \\n Phillies | \\n Citizens Bank Park | \\n Philadelphia | \\n 2019-04-25 19:05:00 | \\n
\\n \\n 29 | \\n Brewers | \\n Mets | \\n Citi Field | \\n Flushing | \\n 2019-04-26 19:10:00 | \\n
\\n \\n 30 | \\n Rays | \\n Red Sox | \\n Fenway Park | \\n Boston | \\n 2019-04-27 16:05:00 | \\n
\\n \\n
\"],\"id\":[1,2,3,4,5,6,7,8,9,10,11,12],\"mont\":{\"__ndarray__\":\"mpmZmZmZAUCamZmZmZkBQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAmpmZmZmZCUCamZmZmZkJQAAAAAAAABBAAAAAAAAAEEDNzMzMzMwcQM3MzMzMzBxA\",\"dtype\":\"float64\",\"shape\":[12]},\"objt\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAPA/\",\"dtype\":\"float64\",\"shape\":[12]},\"period\":[\"03-28/06-01\",\"03-28/06-01\",\"06-01/08-01\",\"06-01/08-01\",\"08-01/10-01\",\"08-01/10-01\",\"03-28/07-01\",\"03-28/07-01\",\"07-01/10-30\",\"07-01/10-30\",\"03-28/10-30\",\"03-28/10-30\"],\"ref\":[\"1537281160472\",\"1537387900880\",\"1537280934184\",\"1537404612792\",\"1537306762992\",\"1537418170776\",\"1537386312816\",\"1537339838136\",\"1537305391904\",\"1537292317416\",\"1537466093296\",\"1537392530992\"],\"solv\":{\"__ndarray__\":\"ZDvfT42HWEBI4XoUrjGEQKwcWmQ7j0lApHA9CtfYgEDByqFFtkNUQMl2vp8aVoFA5/up8dIlYEACK4cWWXqSQBkEVg4tdmFAarx0k5hgkUA9CtejcHV9QARWDi2SD71A\",\"dtype\":\"float64\",\"shape\":[12]},\"time\":{\"__ndarray__\":\"JQaBlUPLOECsHFpkO985QEw3iUFgRThAmG4Sg8BKPECR7Xw/Nf44QAAAAAAAAD1ATDeJQWBFOECsHFpkO985QAAAAAAAIDhAaJHtfD9VOkAAAAAAACA4QKwcWmQ73zlA\",\"dtype\":\"float64\",\"shape\":[12]},\"vars\":{\"__ndarray__\":\"AAAAAEC710AAAAAAQLvXQAAAAADAgNVAAAAAAMCA1UAAAAAAQHHWQAAAAABAcdZAAAAAAMDw4UAAAAAAwPDhQAAAAACgyuBAAAAAAKDK4EAAAAAAkM/xQAAAAACQz/FA\",\"dtype\":\"float64\",\"shape\":[12]}},\"selected\":{\"id\":\"1053\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"1054\",\"type\":\"UnionRenderers\"}},\"id\":\"1004\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1198\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1018\",\"type\":\"BasicTicker\"},{\"attributes\":{\"args\":{\"div\":{\"id\":\"1005\",\"type\":\"Div\"},\"maps\":{\"id\":\"1001\",\"type\":\"ColumnDataSource\"},\"source\":{\"id\":\"1004\",\"type\":\"ColumnDataSource\"}},\"code\":\"\\n var s = source.selected['1d'].indices[0];\\n div.text = 'Solution: ' + (s+1) + '
Length: ' +\\n source.data.time[s] + ' days, Distance: ' + \\n source.data.dist[s] + ' miles, Cost: ' + \\n source.data.cost[s] + ' USD ' + maps.data.map[s] +\\n '' + source.data.html[s] + '';\\n \"},\"id\":\"1202\",\"type\":\"CustomJS\"},{\"attributes\":{\"ticker\":{\"id\":\"1018\",\"type\":\"BasicTicker\"}},\"id\":\"1021\",\"type\":\"Grid\"},{\"attributes\":{\"fill_color\":{\"value\":\"green\"},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":15},\"x\":{\"field\":\"solv\"},\"y\":{\"field\":\"vars\"}},\"id\":\"1140\",\"type\":\"Circle\"},{\"attributes\":{\"fill_color\":{\"value\":\"pink\"},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":15},\"x\":{\"field\":\"solv\"},\"y\":{\"field\":\"vars\"}},\"id\":\"1141\",\"type\":\"Circle\"},{\"attributes\":{\"children\":[{\"id\":\"1106\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"id\":\"1155\",\"subtype\":\"Figure\",\"type\":\"Plot\"}]},\"id\":\"1204\",\"type\":\"Row\"}],\"root_ids\":[\"1206\"]},\"title\":\"Bokeh Application\",\"version\":\"1.1.0\"}};\n",
" var render_items = [{\"docid\":\"b315ffe9-415f-4092-9b2c-b31155f8bc14\",\"roots\":{\"1206\":\"023e6869-0a29-4b41-aa9f-acbe83650e52\"}}];\n",
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
"\n",
" }\n",
" if (root.Bokeh !== undefined) {\n",
" embed_document(root);\n",
" } else {\n",
" var attempts = 0;\n",
" var timer = setInterval(function(root) {\n",
" if (root.Bokeh !== undefined) {\n",
" embed_document(root);\n",
" clearInterval(timer);\n",
" }\n",
" attempts++;\n",
" if (attempts > 100) {\n",
" console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
" clearInterval(timer);\n",
" }\n",
" }, 10, root)\n",
" }\n",
"})(window);"
],
"application/vnd.bokehjs_exec.v0+json": ""
},
"metadata": {
"application/vnd.bokehjs_exec.v0+json": {
"id": "1206"
}
},
"output_type": "display_data"
}
],
"source": [
"# Generate plots and set callbacks\n",
"callback = CustomJS(code=\"\"\"\n",
"console.log('Tap event occured at x-position: ' + cb_obj.x + ',' + cb_obj.y)\n",
"\"\"\")\n",
"\n",
"output_notebook()\n",
" \n",
"def add_plots(dfv=11):\n",
" source=ColumnDataSource(df)\n",
" divtext = 'Solution: {}
Length: '.format(dfv) + str(df.iloc[dfv-1, 7]) + ' days, Distance: '\\\n",
" + str(df.iloc[dfv-1, 8]) + ' miles, Cost: ' + str(df.iloc[dfv-1,9]) + ' USD ' + allhtml[dfv-1]\n",
" divtext += '' + df.iloc[dfv-1, 10] +''\n",
" div = Div(width=900, height=1600,\n",
" text=divtext)\n",
"\n",
" hover = HoverTool(tooltips=[\n",
" (\"ID\", \"@id\"),\n",
" (\"Tour Time\", \"@time days\"),\n",
" (\"Tour Distance\", \"@dist miles\"),\n",
" (\"Tour Cost\", \"@cost USD\"),\n",
" (\"Obj. Type\", \"@objt\"),\n",
" (\"Period\", \"@mont months\"),\n",
" (\"Num of Variables\", \"@vars\"),\n",
" (\"Num of Constraints\", \"@cons\"),\n",
" (\"Solve Time\", \"@solv secs\"),\n",
" ])\n",
"\n",
" plots = [None]*4\n",
" plot_pairs = [\n",
" ('dist', 'time'),\n",
" ('dist', 'cost'),\n",
" ('solv', 'vars'),\n",
" ('solv', 'time') \n",
" ]\n",
" plot_labels = [\n",
" ('Tour Distance (miles)', 'Tour Time (days)'),\n",
" ('Tour Distance (miles)', 'Tour Cost (USD)'),\n",
" ('Solve Time (secs)', 'Number of Variables'),\n",
" ('Solve Time (secs)', 'Tour Time (days)')\n",
" ]\n",
" \n",
" for i, pp in enumerate(plot_pairs):\n",
" \n",
" hover = HoverTool(tooltips=[\n",
" (\"ID\", \"@id\"),\n",
" (plot_labels[i][0], \"@{}{{0.0}}\".format(pp[0])),\n",
" (plot_labels[i][1], \"@{}{{0.0}}\".format(pp[1]))\n",
" ])\n",
" \n",
" plots[i] = figure(plot_width=450, plot_height=300,\n",
" tools=[hover, 'save', 'pan', 'tap', 'box_zoom', 'reset']\n",
" )\n",
" c = plots[i].circle(\n",
" x=pp[0], y=pp[1], \n",
" source=source, size=15,\n",
" hover_fill_color=\"pink\",\n",
" selection_fill_color=\"green\",\n",
" )\n",
" plots[i].xaxis.axis_label = plot_labels[i][0]\n",
" plots[i].yaxis.axis_label = plot_labels[i][1]\n",
" taptool = plots[i].select(type=TapTool)\n",
" code = '''\n",
" var s = source.selected['1d'].indices[0];\n",
" div.text = 'Solution: ' + (s+1) + '
Length: ' +\n",
" source.data.time[s] + ' days, Distance: ' + \n",
" source.data.dist[s] + ' miles, Cost: ' + \n",
" source.data.cost[s] + ' USD ' + maps.data.map[s] +\n",
" '' + source.data.html[s] + '';\n",
" '''\n",
" taptool.callback = CustomJS(args=dict(source=source, maps=maps,\n",
" div=div\n",
" ), code=code)\n",
"\n",
" display(HTML('Plots
Click on the solution you would like to display'))\n",
" show(column(row(plots[0], plots[1]),row(plots[2], plots[3]), row(div)))\n",
"\n",
"add_plots(9)\n"
]
}
],
"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.6.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}