From 82e6cf7d1046d6cee16f7e8b044ec33e7ec6c4b7 Mon Sep 17 00:00:00 2001 From: Nguyễn Gia Phong Date: Sun, 16 Feb 2020 14:26:55 +0700 Subject: [usth] Numerical Method is MATH2.4 --- usth/MATH2.4/labwork/5/report.tex | 133 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 usth/MATH2.4/labwork/5/report.tex (limited to 'usth/MATH2.4/labwork/5/report.tex') diff --git a/usth/MATH2.4/labwork/5/report.tex b/usth/MATH2.4/labwork/5/report.tex new file mode 100644 index 0000000..16daad0 --- /dev/null +++ b/usth/MATH2.4/labwork/5/report.tex @@ -0,0 +1,133 @@ +\documentclass[a4paper,12pt]{article} +\usepackage[english,vietnamese]{babel} +\usepackage{amsmath} +\usepackage{booktabs} +\usepackage{enumerate} +\usepackage{lmodern} +\usepackage{siunitx} +\usepackage{tikz} + +\newcommand{\exercise}[1]{\noindent\textbf{#1.}} + +\title{Numerical Methods: Linear Programming} +\author{Nguyễn Gia Phong--BI9-184} +\date{\dateenglish\today} + +\begin{document} +\maketitle + +Given the production contraints and profits of two grades of heating gas +in the table below. +\begin{center} + \begin{tabular}{l c c c} + \toprule + & \multicolumn{2}{c}{Product}\\ + Resource & Regular & Premium & Availability\\ + \midrule + Raw gas (\si{\cubic\metre\per\tonne}) & 7 & 11 & 77\\ + Production time (\si{\hour\per\tonne}) & 10 & 8 & 80\\ + Storage (\si{\tonne}) & 9 & 6\\ + \midrule + Profit (\si{\per\tonne}) & 150 & 175\\ + \bottomrule + \end{tabular} +\end{center} + +\begin{enumerate}[(a)] + \item Let two nonnegative numbers $x_1$ and $x_2$ respectively be + the quantities in tonnes of regular and premium gas to be produced. + The constraints can then be expressed as + \[\begin{cases} + 7x_1 + 11x^2 &\le 77\\ + 10x_1 + 8x_2 &\le 80\\ + x_1 &\le 9\\ + x_2 &\le 6 + \end{cases} + \iff \begin{bmatrix} + 7 & 11\\ + 10 & 8\\ + 1 & 0\\ + 0 & 1 + \end{bmatrix}\begin{bmatrix} + x_1\\ x_2 + \end{bmatrix} + \le \begin{bmatrix} + 77\\ 80\\ 9\\ 6 + \end{bmatrix}\] + + The total profit is the linear function to be maximized: + \[\Pi(x_1, x_2) = 150x_1 + 175x_2 = \begin{bmatrix} + 150\\ 175 + \end{bmatrix}\cdot\begin{bmatrix} + x_1\\ x_2 + \end{bmatrix}\] + + Let $\mathbf x = \begin{bmatrix} + x_1\\ x_2 + \end{bmatrix}$, $A = \begin{bmatrix} + 7 & 11\\ + 10 & 8\\ + 1 & 0\\ + 0 & 1 + \end{bmatrix}$, $\mathbf b = \begin{bmatrix} + 77\\ 80\\ 9\\ 6 + \end{bmatrix}$ and $\mathbf c = \begin{bmatrix} + 150\\ 175 + \end{bmatrix}$, the canonical form of the problem is + \[\max\left\{\mathbf c^\mathrm T + \mid A\mathbf x\le b\land\mathbf x\ge 0\right\}\] + \item Due to the absense of \verb|linprog| in Octave, we instead use GNU GLPK: +\begin{verbatim} +octave> x = glpk (c, A, b, [], [], "UUUU", "CC", -1) +x = + 4.8889 + 3.8889 +\end{verbatim} + Contraint type \verb|UUUU| is used because all contraints are inequalities + with an upper bound and \verb|CC| indicates continous values of $\mathbf x$. + With the sense of -1, GLPK looks for the maximization\footnote{I believe + \emph{minimization} was a typo in the assignment, since it is trivial that + $\Pi$ has the minimum value of 0 at $\mathbf x = \mathbf 0$.} of + $\Pi(4.8889, 3.8889) = 1413.9$. + + The two blank arguments are for the lower and upper bounds of $\mathbf x$, + default to zero and infinite respectively. Alternatively we can use + the following to obtain the same result +\begin{verbatim} +glpk (c, [7 11; 10 8], [77; 80], [], [9 6], "UU", "CC", -1) +\end{verbatim} + + \item Within the constrains, the profit can be calculated using the following + function, which takes two meshes of $x$ and $y$ as arguments +\begin{verbatim} +function z = profit (x, y) + A = [7 11; 10 8]; + b = [77; 80]; + c = [150; 175]; + [m n] = size (x); + z = -inf (m, n); + for s = 1 : m + for t = 1 : n + r = [x(s, t); y(s, t)]; + if A * r <= b + z(s, t) = dot (c, r); + endif + endfor + endfor +endfunction +\end{verbatim} + + Using this, the solution space is then plotted using \verb|ezsurf|, + which color each grid by their relative values (the smallest is dark purple + and the largest is bright yellow): +\begin{verbatim} +ezsurf (@(x1, x2) constraints (x1, x2), [0 9 0 6], 58) +\end{verbatim} +\pagebreak + + Since the plot is just a part of a plane, we can rotate it for a better view + without losing any information about its shape. + + \scalebox{0.69}{\input{profit.tikz}} +\end{enumerate} +\end{document} -- cgit 1.4.1