\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{mrdo1911} \pdfinfo{ /Title (ortools-cheatsheet.pdf) /Creator (Cheatography) /Author (mrdo1911) /Subject (Ortools CheatSheet Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{6E03A3} \definecolor{LightBackground}{HTML}{F5EFF9} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{Ortools CheatSheet Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{mrdo1911} via \textcolor{DarkBackground}{\uline{cheatography.com/145950/cs/31488/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}mrdo1911 \\ \uline{cheatography.com/mrdo1911} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Not Yet Published.\\ Updated 27th May, 2022.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{multicols*}{2} \begin{tabularx}{8.4cm}{x{4.48 cm} x{3.52 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Numpy}} \tn % Row 0 \SetRowColor{LightBackground} Create Empty Array of size n*m & np.empty( (n,m), np.int\_) \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} Create random array of size n*m in range {[}a b{]} & \seqsplit{np.random.randint(} a, b, (n, m)) \tn % Row Count 5 (+ 3) % Row 2 \SetRowColor{LightBackground} Create array with all element equals to zeros & np.zeros( (n,m), np.int\_) \tn % Row Count 8 (+ 3) % Row 3 \SetRowColor{white} Create array with all element equals to Inf & np.full( (1,n), np.inf) \tn % Row Count 10 (+ 2) % Row 4 \SetRowColor{LightBackground} Merge two array as a new array & \seqsplit{np.concatenate((a},b)) \tn % Row Count 12 (+ 2) % Row 5 \SetRowColor{white} Copy new array with new address and same value as a & np.copy(a) \tn % Row Count 15 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{8.4cm}}{location = np.zeros((n, 2), np.int\_)} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{6 cm} x{2 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{List}} \tn % Row 0 \SetRowColor{LightBackground} Appends an element to the end of the list & \seqsplit{list.append()} \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} Create array with all element equals to None & {[}None{]}*n \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} Delete item in an array by index & del a{[}index{]} \tn % Row Count 6 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{8.4cm}}{a = {[}"apple", "banana", "cherry"{]} \newline b = {[}"Ford", "BMW", "Volvo"{]} \newline for i in b: \newline a.append(i)} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{4.32 cm} x{3.68 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{ortool\_cp\_sat}} \tn % Row 0 \SetRowColor{LightBackground} declare the model & model = \seqsplit{cp\_model.CpModel()} \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} declare variable with boolean value & model.NewBoolVar(f'{[}x\{I\}\{j\}{]}') \tn % Row Count 4 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{8.4cm}}{x = \{\} \newline for work in range(number\_worker): \newline for task in range(number\_task): \newline x{[}work,task{]} = model.NewBoolVar(f'x{[}\{work\}\{task\}{]}')} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{p{0.8 cm} x{7.2 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{folium}} \tn % Row 0 \SetRowColor{LightBackground} & folium.map(location, tiles, zoom\_start) \tn % Row Count 2 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{2.56 cm} x{5.44 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Numba}} \tn % Row 0 \SetRowColor{LightBackground} Decorator & @jit, @njit \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} speed math & fastmath = True \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} cache function & cache= True \tn % Row Count 4 (+ 2) % Row 3 \SetRowColor{white} Parallel numba & nogil = True, parallel= True, for i in prange(n): \tn % Row Count 6 (+ 2) % Row 4 \SetRowColor{LightBackground} njit for empty list & @njit \tn % Row Count 8 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{8.4cm}}{@njit \newline def create\_S() \newline S = List()} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{3.2 cm} x{4.8 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Matplotlib.pyplot}} \tn % Row 0 \SetRowColor{LightBackground} Draw points given long, lat & plt.plot( X, Y, 'ro') \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} Draw points vertically & plt.plot({\emph{list(zip(}}temp)),'ro') \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} draw line & plt.plot( {[}x1, x2{]}, {[}y1, y2{]},'ro ) \tn % Row Count 6 (+ 2) % Row 3 \SetRowColor{white} change size of a figure & figure(figsize=(width, heigh), dpi=resolution) \tn % Row Count 8 (+ 2) % Row 4 \SetRowColor{LightBackground} show value on figure & plt.text(x, y, value) \tn % Row Count 10 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{8.4cm}}{plt.plot( {[}3, 2{]}, {[}5,6{]}, 'r-', \newline marker='o', markerfacecolor='b', markeredgecolor ='b', markersize =5, linewidth = 0.5, alpha=0.5 ) \newline \newline from matplotlib.pyplot import figure \newline figure(figsize=(8, 6), dpi=80) \newline \newline plt.text(5,5,'Total demand = \{\} and number of sub tours = \{\}' \newline .format(weight.sum(),len(shortest\_path)-1))} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{p{0.8 cm} x{7.2 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{class}} \tn % Row 0 \SetRowColor{LightBackground} & def \_\_init\_\_ (self,....) \tn % Row Count 1 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{3.12 cm} x{4.88 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Ortools}} \tn % Row 0 \SetRowColor{LightBackground} Restrict Vehicle & \seqsplit{routing.VehicleVar(index)}.SetValues({[}-1, 2,3,4{]}) \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} different limit constraint & \seqsplit{routing.AddDimensionWithVehicleCapacity(} demand\_callback\_index, 0, \# null capacity slack data{[}'vehicle\_capacities'{]}, \# vehicle maximum capacities True, \# start cumul to zero 'Capacity') \tn % Row Count 12 (+ 10) % Row 2 \SetRowColor{LightBackground} find vehicle & VehicleVar(i) \tn % Row Count 13 (+ 1) % Row 3 \SetRowColor{white} first node after depot & start\_var = \seqsplit{routing.NextVar(routing.Start(vehicle\_nbr))} \tn % Row Count 16 (+ 3) % Row 4 \SetRowColor{LightBackground} & SetVehicleFixedCost \tn % Row Count 17 (+ 1) % Row 5 \SetRowColor{white} & \seqsplit{AddDimensionWithVehicleCapacity} \tn % Row Count 19 (+ 2) % Row 6 \SetRowColor{LightBackground} & SetVehicleCost \tn % Row Count 20 (+ 1) % Row 7 \SetRowColor{white} & \seqsplit{https://acrogenesis.com/or-tools/documentation/user\_manual/manual/vrp/partial\_routes.html} \tn % Row Count 24 (+ 4) % Row 8 \SetRowColor{LightBackground} & ActiveVar(i) == (NextVar(i) != i). \tn % Row Count 26 (+ 2) % Row 9 \SetRowColor{white} & \seqsplit{SetCumulVarSoftLowerBound(index\_end}, 2, 100000) \tn % Row Count 32 (+ 6) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}