Skip to content

Instantly share code, notes, and snippets.

@radzionc
Created February 22, 2019 02:13
Show Gist options
  • Save radzionc/491f8d6afc73cfcf21dffaa7cdd1d8eb to your computer and use it in GitHub Desktop.
Save radzionc/491f8d6afc73cfcf21dffaa7cdd1d8eb to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"def get_objective_function_value(tableau):\n",
" return -tableau[-1][-1]"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"def simplex_with_visualization(c, A, b, halfspaces, feasible_point):\n",
" tableau = to_tableau(c, A, b)\n",
"\n",
" zs = [get_objective_function_value(tableau)]\n",
" solutions = [get_solution(tableau)]\n",
" while can_be_improved(tableau):\n",
" pivot_position = get_pivot_position(tableau)\n",
" tableau = pivot_step(tableau, pivot_position)\n",
" solutions.append(get_solution(tableau))\n",
" zs.append(get_objective_function_value(tableau))\n",
" \n",
" points = [v[:2] for v in solutions]\n",
" xlim = (-1, max([p[0] for p in points]) + 1)\n",
" ylim = (-1, max([p[1] for p in points]) + 1)\n",
" render_inequalities(halfspaces, feasible_point, xlim, ylim)\n",
"\n",
" for start, end in zip(points[:-1], points[1:]):\n",
" dx = end[0] - start[0]\n",
" dy = end[1] - start[1]\n",
" if dx > 0 and dy > 0:\n",
" plt.arrow(\n",
" start[0],\n",
" start[1],\n",
" dx,\n",
" dy,\n",
" width=0.1,\n",
" length_includes_head=True,\n",
" color='#1abc9c'\n",
" )\n",
" plt.show()\n",
" \n",
" steps = range(len(zs))\n",
" plt.plot(steps, zs, color=\"#2c3e50\")\n",
" plt.xticks(steps)\n",
" plt.xlabel('steps')\n",
" plt.ylabel('objective function value')\n",
" \n",
" return get_solution(tableau)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"[4.0, 4.0, 2.0, 0, 0]"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"simplex_with_visualization(c, A, b, halfspaces, feasible_point)"
]
}
],
"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
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment