diff options
author | Siddharth Agarwal | 2019-09-04 12:07:32 +0530 |
---|---|---|
committer | Siddharth Agarwal | 2019-09-04 12:07:32 +0530 |
commit | 89ef324bd6af7dd6abbceb53975bbb7a3b632e14 (patch) | |
tree | 3c6b23a22daf5a7de259a6857cf444952f28d10b | |
download | FOT-dev-doc-89ef324bd6af7dd6abbceb53975bbb7a3b632e14.tar.gz FOT-dev-doc-89ef324bd6af7dd6abbceb53975bbb7a3b632e14.tar.bz2 FOT-dev-doc-89ef324bd6af7dd6abbceb53975bbb7a3b632e14.zip |
-rw-r--r-- | FOT_DevMan.aux | 129 | ||||
-rw-r--r-- | FOT_DevMan.dvi | bin | 0 -> 334396 bytes | |||
-rw-r--r-- | FOT_DevMan.log | 1364 | ||||
-rw-r--r-- | FOT_DevMan.out | 69 | ||||
-rw-r--r-- | FOT_DevMan.pdf | bin | 0 -> 536883 bytes | |||
-rw-r--r-- | FOT_DevMan.synctex.gz | bin | 0 -> 551339 bytes | |||
-rw-r--r-- | FOT_DevMan.tar.gz | bin | 0 -> 154568 bytes | |||
-rw-r--r-- | FOT_DevMan.tex | 1280 | ||||
-rw-r--r-- | FOT_DevMan.toc | 73 | ||||
-rw-r--r-- | README.md | 1 | ||||
-rw-r--r-- | Scilab_gui.png | bin | 0 -> 35604 bytes | |||
-rw-r--r-- | tree.jpg | bin | 0 -> 112455 bytes |
12 files changed, 2916 insertions, 0 deletions
diff --git a/FOT_DevMan.aux b/FOT_DevMan.aux new file mode 100644 index 0000000..c87de3f --- /dev/null +++ b/FOT_DevMan.aux @@ -0,0 +1,129 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument} +\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined +\global\let\oldcontentsline\contentsline +\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}} +\global\let\oldnewlabel\newlabel +\gdef\newlabel#1#2{\newlabelxx{#1}#2} +\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}} +\AtEndDocument{\ifx\hyper@anchor\@undefined +\let\contentsline\oldcontentsline +\let\newlabel\oldnewlabel +\fi} +\fi} +\global\let\hyper@last\relax +\gdef\HyperFirstAtBeginDocument#1{#1} +\providecommand\HyField@AuxAddToFields[1]{} +\providecommand\HyField@AuxAddToCoFields[2]{} +\providecommand\tcolorbox@label[2]{} +\babel@aux{english}{} +\@writefile{toc}{\contentsline {chapter}{\numberline {1}Introduction}{1}{chapter.1}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{toc}{\contentsline {section}{\numberline {1.1}Scilab}{1}{section.1.1}} +\@writefile{toc}{\contentsline {section}{\numberline {1.2}Optimization Libraries}{2}{section.1.2}} +\@writefile{toc}{\contentsline {section}{\numberline {1.3}Downloading the toolbox}{3}{section.1.3}} +\@writefile{toc}{\contentsline {section}{\numberline {1.4}Prerequisites}{3}{section.1.4}} +\@writefile{toc}{\contentsline {section}{\numberline {1.5}Purpose of document}{3}{section.1.5}} +\@writefile{toc}{\contentsline {chapter}{\numberline {2}Toolbox Structure}{5}{chapter.2}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{chap:Struct}{{2}{5}{Toolbox Structure}{chapter.2}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {2.1}{\ignorespaces FOT folder structure tree\relax }}{6}{figure.caption.2}} +\providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}} +\newlabel{fig:Scilab2}{{2.1}{6}{FOT folder structure tree\relax }{figure.caption.2}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {3}Builder files}{8}{chapter.3}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{chap:Build}{{3}{8}{Builder files}{chapter.3}{}} +\@writefile{toc}{\contentsline {section}{\numberline {3.1}Introduction}{8}{section.3.1}} +\@writefile{toc}{\contentsline {section}{\numberline {3.2}builder.sce}{8}{section.3.2}} +\@writefile{toc}{\contentsline {section}{\numberline {3.3}buildmacros.sce}{9}{section.3.3}} +\@writefile{toc}{\contentsline {section}{\numberline {3.4}builder\_gateway.sce}{9}{section.3.4}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.4.1}builder\_gateway\_cpp.sce}{10}{subsection.3.4.1}} +\@writefile{toc}{\contentsline {section}{\numberline {3.5}builder\_help.sce}{10}{section.3.5}} +\@writefile{toc}{\contentsline {chapter}{\numberline {4}etc directory}{11}{chapter.4}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{chap:etc}{{4}{11}{etc directory}{chapter.4}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.1}Introduction}{11}{section.4.1}} +\@writefile{toc}{\contentsline {section}{\numberline {4.2}FOSSEE\_Optimization\_Toolbox.start}{11}{section.4.2}} +\@writefile{toc}{\contentsline {section}{\numberline {4.3}FOSSEE\_Optimization\_Toolbox.quit}{11}{section.4.3}} +\@writefile{toc}{\contentsline {chapter}{\numberline {5}macros directory}{13}{chapter.5}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{chap:macro}{{5}{13}{macros directory}{chapter.5}{}} +\@writefile{toc}{\contentsline {section}{\numberline {5.1}Introduction}{13}{section.5.1}} +\@writefile{toc}{\contentsline {section}{\numberline {5.2}Outline of a macros file}{13}{section.5.2}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.1}Commented Help page}{14}{subsection.5.2.1}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.2}Input retrieval}{14}{subsection.5.2.2}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.3}Error checks}{15}{subsection.5.2.3}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.4}Input modifications}{15}{subsection.5.2.4}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.5}Call to the C++ library}{15}{subsection.5.2.5}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.6}Output retrieval,checks and modifications}{16}{subsection.5.2.6}} +\@writefile{toc}{\contentsline {chapter}{\numberline {6}sci\_gateway files}{17}{chapter.6}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{chap:gateway}{{6}{17}{sci\_gateway files}{chapter.6}{}} +\@writefile{toc}{\contentsline {section}{\numberline {6.1}Introduction}{17}{section.6.1}} +\@writefile{toc}{\contentsline {section}{\numberline {6.2}Basic Scilab API Functions}{17}{section.6.2}} +\@writefile{toc}{\contentsline {section}{\numberline {6.3}Outline of a sci\_gateway file}{17}{section.6.3}} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.1}Variable initialization}{18}{subsection.6.3.1}} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.2}Input retrieval}{19}{subsection.6.3.2}} +\@writefile{toc}{\contentsline {subsubsection}{scilab\_call function}{21}{section*.3}} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.3}Input modifications}{23}{subsection.6.3.3}} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.4}Calling the library}{24}{subsection.6.3.4}} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.5}Output management}{25}{subsection.6.3.5}} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.6}Returning output to Scilab}{25}{subsection.6.3.6}} +\@writefile{toc}{\contentsline {chapter}{\numberline {7}Solver Libraries}{27}{chapter.7}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{chap:lib}{{7}{27}{Solver Libraries}{chapter.7}{}} +\@writefile{toc}{\contentsline {section}{\numberline {7.1}Introduction}{27}{section.7.1}} +\@writefile{toc}{\contentsline {section}{\numberline {7.2}Prerequisites}{27}{section.7.2}} +\@writefile{toc}{\contentsline {section}{\numberline {7.3}Compiling libraries}{27}{section.7.3}} +\@writefile{toc}{\contentsline {subsection}{\numberline {7.3.1}ecos}{28}{subsection.7.3.1}} +\@writefile{toc}{\contentsline {subsection}{\numberline {7.3.2}CLP}{29}{subsection.7.3.2}} +\@writefile{toc}{\contentsline {subsection}{\numberline {7.3.3}Symphony}{30}{subsection.7.3.3}} +\@writefile{toc}{\contentsline {subsection}{\numberline {7.3.4}Ipopt}{31}{subsection.7.3.4}} +\@writefile{toc}{\contentsline {subsection}{\numberline {7.3.5}CBC}{32}{subsection.7.3.5}} +\@writefile{toc}{\contentsline {subsection}{\numberline {7.3.6}Bonmin}{34}{subsection.7.3.6}} +\@writefile{toc}{\contentsline {section}{\numberline {7.4}Shared libraries}{36}{section.7.4}} +\@writefile{toc}{\contentsline {section}{\numberline {7.5}Header files}{36}{section.7.5}} +\@writefile{toc}{\contentsline {chapter}{\numberline {8}Help Files}{37}{chapter.8}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{chap:Help}{{8}{37}{Help Files}{chapter.8}{}} +\@writefile{toc}{\contentsline {section}{\numberline {8.1}Introduction}{37}{section.8.1}} +\@writefile{toc}{\contentsline {section}{\numberline {8.2}Basic help document structure}{37}{section.8.2}} +\@writefile{toc}{\contentsline {section}{\numberline {8.3}Methods of writing help documents}{38}{section.8.3}} +\@writefile{toc}{\contentsline {subsection}{\numberline {8.3.1}Using help\_from\_sci}{38}{subsection.8.3.1}} +\@writefile{toc}{\contentsline {subsubsection}{Sections available in help\_from\_sci}{38}{section*.4}} +\@writefile{toc}{\contentsline {subsection}{\numberline {8.3.2}Directly via XML}{38}{subsection.8.3.2}} +\@writefile{toc}{\contentsline {section}{\numberline {8.4}Style Preferences}{39}{section.8.4}} +\@writefile{toc}{\contentsline {subsection}{\numberline {8.4.1}Using \LaTeX }{39}{subsection.8.4.1}} +\@writefile{toc}{\contentsline {section}{\numberline {8.5}Additional Notes}{39}{section.8.5}} +\@writefile{toc}{\contentsline {subsection}{\numberline {8.5.1}Problems faced while using \LaTeX }{39}{subsection.8.5.1}} +\@writefile{toc}{\contentsline {chapter}{Appendix \numberline {A}Codes}{41}{Appendix.1.A}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{chap:Codes}{{A}{41}{Codes}{Appendix.1.A}{}} +\@writefile{toc}{\contentsline {section}{\numberline {A.1}FOSSEE\_Optimization\_Toolbox.start}{41}{section.1.A.1}} +\newlabel{sec:FOSSEEStart}{{A.1}{41}{FOSSEE\_Optimization\_Toolbox.start}{section.1.A.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {A.2}FOSSEE\_Optimization\_Toolbox.quit}{43}{section.1.A.2}} +\newlabel{sec:FOSSEEquit}{{A.2}{43}{FOSSEE\_Optimization\_Toolbox.quit}{section.1.A.2}{}} +\@writefile{toc}{\contentsline {chapter}{Appendix \numberline {B}Tutorial}{44}{Appendix.1.B}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{chap:Tutorials}{{B}{44}{Tutorial}{Appendix.1.B}{}} +\@writefile{toc}{\contentsline {section}{\numberline {B.1}Toolbox Tutorial}{44}{section.1.B.1}} +\@writefile{toc}{\contentsline {section}{\numberline {B.2}Help Tutorial}{44}{section.1.B.2}} +\@writefile{toc}{\contentsline {subsection}{\numberline {B.2.1}Introduction}{44}{subsection.1.B.2.1}} +\@writefile{toc}{\contentsline {subsection}{\numberline {B.2.2}Using help\_from\_sci}{44}{subsection.1.B.2.2}} +\@writefile{toc}{\contentsline {subsubsection}{Example}{44}{section*.5}} +\@writefile{toc}{\contentsline {subsection}{\numberline {B.2.3}Modifying the XML}{45}{subsection.1.B.2.3}} +\@writefile{toc}{\contentsline {chapter}{Appendix \numberline {C}Assignments}{46}{Appendix.1.C}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{chap:Assgt}{{C}{46}{Assignments}{Appendix.1.C}{}} diff --git a/FOT_DevMan.dvi b/FOT_DevMan.dvi Binary files differnew file mode 100644 index 0000000..df6fa5a --- /dev/null +++ b/FOT_DevMan.dvi diff --git a/FOT_DevMan.log b/FOT_DevMan.log new file mode 100644 index 0000000..58ae58e --- /dev/null +++ b/FOT_DevMan.log @@ -0,0 +1,1364 @@ +This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian) (preloaded format=pdflatex 2018.10.18) 7 AUG 2019 15:39 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**FOT_DevMan.tex +(./FOT_DevMan.tex +LaTeX2e <2017-04-15> +Babel <3.18> and hyphenation patterns for 84 language(s) loaded. +(/usr/share/texlive/texmf-dist/tex/latex/base/book.cls +Document Class: book 2014/09/29 v1.4h Standard LaTeX document class +(/usr/share/texlive/texmf-dist/tex/latex/base/bk11.clo +File: bk11.clo 2014/09/29 v1.4h Standard LaTeX file (size option) +) +\c@part=\count79 +\c@chapter=\count80 +\c@section=\count81 +\c@subsection=\count82 +\c@subsubsection=\count83 +\c@paragraph=\count84 +\c@subparagraph=\count85 +\c@figure=\count86 +\c@table=\count87 +\abovecaptionskip=\skip41 +\belowcaptionskip=\skip42 +\bibindent=\dimen102 +) +(/usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty +Package: fontenc 2017/04/05 v2.0i Standard LaTeX package + +(/usr/share/texlive/texmf-dist/tex/latex/base/t1enc.def +File: t1enc.def 2017/04/05 v2.0i Standard LaTeX file +LaTeX Font Info: Redeclaring font encoding T1 on input line 48. +)) +(/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty +Package: inputenc 2015/03/17 v1.2c Input encoding file +\inpenc@prehook=\toks14 +\inpenc@posthook=\toks15 + +(/usr/share/texlive/texmf-dist/tex/latex/base/utf8.def +File: utf8.def 2017/01/28 v1.1t UTF-8 support for inputenc +Now handling font encoding OML ... +... no UTF-8 mapping file for font encoding OML +Now handling font encoding T1 ... +... processing UTF-8 mapping file for font encoding T1 + +(/usr/share/texlive/texmf-dist/tex/latex/base/t1enc.dfu +File: t1enc.dfu 2017/01/28 v1.1t UTF-8 support for inputenc + defining Unicode char U+00A0 (decimal 160) + defining Unicode char U+00A1 (decimal 161) + defining Unicode char U+00A3 (decimal 163) + defining Unicode char U+00AB (decimal 171) + defining Unicode char U+00AD (decimal 173) + defining Unicode char U+00BB (decimal 187) + defining Unicode char U+00BF (decimal 191) + defining Unicode char U+00C0 (decimal 192) + defining Unicode char U+00C1 (decimal 193) + defining Unicode char U+00C2 (decimal 194) + defining Unicode char U+00C3 (decimal 195) + defining Unicode char U+00C4 (decimal 196) + defining Unicode char U+00C5 (decimal 197) + defining Unicode char U+00C6 (decimal 198) + defining Unicode char U+00C7 (decimal 199) + defining Unicode char U+00C8 (decimal 200) + defining Unicode char U+00C9 (decimal 201) + defining Unicode char U+00CA (decimal 202) + defining Unicode char U+00CB (decimal 203) + defining Unicode char U+00CC (decimal 204) + defining Unicode char U+00CD (decimal 205) + defining Unicode char U+00CE (decimal 206) + defining Unicode char U+00CF (decimal 207) + defining Unicode char U+00D0 (decimal 208) + defining Unicode char U+00D1 (decimal 209) + defining Unicode char U+00D2 (decimal 210) + defining Unicode char U+00D3 (decimal 211) + defining Unicode char U+00D4 (decimal 212) + defining Unicode char U+00D5 (decimal 213) + defining Unicode char U+00D6 (decimal 214) + defining Unicode char U+00D8 (decimal 216) + defining Unicode char U+00D9 (decimal 217) + defining Unicode char U+00DA (decimal 218) + defining Unicode char U+00DB (decimal 219) + defining Unicode char U+00DC (decimal 220) + defining Unicode char U+00DD (decimal 221) + defining Unicode char U+00DE (decimal 222) + defining Unicode char U+00DF (decimal 223) + defining Unicode char U+00E0 (decimal 224) + defining Unicode char U+00E1 (decimal 225) + defining Unicode char U+00E2 (decimal 226) + defining Unicode char U+00E3 (decimal 227) + defining Unicode char U+00E4 (decimal 228) + defining Unicode char U+00E5 (decimal 229) + defining Unicode char U+00E6 (decimal 230) + defining Unicode char U+00E7 (decimal 231) + defining Unicode char U+00E8 (decimal 232) + defining Unicode char U+00E9 (decimal 233) + defining Unicode char U+00EA (decimal 234) + defining Unicode char U+00EB (decimal 235) + defining Unicode char U+00EC (decimal 236) + defining Unicode char U+00ED (decimal 237) + defining Unicode char U+00EE (decimal 238) + defining Unicode char U+00EF (decimal 239) + defining Unicode char U+00F0 (decimal 240) + defining Unicode char U+00F1 (decimal 241) + defining Unicode char U+00F2 (decimal 242) + defining Unicode char U+00F3 (decimal 243) + defining Unicode char U+00F4 (decimal 244) + defining Unicode char U+00F5 (decimal 245) + defining Unicode char U+00F6 (decimal 246) + defining Unicode char U+00F8 (decimal 248) + defining Unicode char U+00F9 (decimal 249) + defining Unicode char U+00FA (decimal 250) + defining Unicode char U+00FB (decimal 251) + defining Unicode char U+00FC (decimal 252) + defining Unicode char U+00FD (decimal 253) + defining Unicode char U+00FE (decimal 254) + defining Unicode char U+00FF (decimal 255) + defining Unicode char U+0100 (decimal 256) + defining Unicode char U+0101 (decimal 257) + defining Unicode char U+0102 (decimal 258) + defining Unicode char U+0103 (decimal 259) + defining Unicode char U+0104 (decimal 260) + defining Unicode char U+0105 (decimal 261) + defining Unicode char U+0106 (decimal 262) + defining Unicode char U+0107 (decimal 263) + defining Unicode char U+0108 (decimal 264) + defining Unicode char U+0109 (decimal 265) + defining Unicode char U+010A (decimal 266) + defining Unicode char U+010B (decimal 267) + defining Unicode char U+010C (decimal 268) + defining Unicode char U+010D (decimal 269) + defining Unicode char U+010E (decimal 270) + defining Unicode char U+010F (decimal 271) + defining Unicode char U+0110 (decimal 272) + defining Unicode char U+0111 (decimal 273) + defining Unicode char U+0112 (decimal 274) + defining Unicode char U+0113 (decimal 275) + defining Unicode char U+0114 (decimal 276) + defining Unicode char U+0115 (decimal 277) + defining Unicode char U+0116 (decimal 278) + defining Unicode char U+0117 (decimal 279) + defining Unicode char U+0118 (decimal 280) + defining Unicode char U+0119 (decimal 281) + defining Unicode char U+011A (decimal 282) + defining Unicode char U+011B (decimal 283) + defining Unicode char U+011C (decimal 284) + defining Unicode char U+011D (decimal 285) + defining Unicode char U+011E (decimal 286) + defining Unicode char U+011F (decimal 287) + defining Unicode char U+0120 (decimal 288) + defining Unicode char U+0121 (decimal 289) + defining Unicode char U+0122 (decimal 290) + defining Unicode char U+0123 (decimal 291) + defining Unicode char U+0124 (decimal 292) + defining Unicode char U+0125 (decimal 293) + defining Unicode char U+0128 (decimal 296) + defining Unicode char U+0129 (decimal 297) + defining Unicode char U+012A (decimal 298) + defining Unicode char U+012B (decimal 299) + defining Unicode char U+012C (decimal 300) + defining Unicode char U+012D (decimal 301) + defining Unicode char U+012E (decimal 302) + defining Unicode char U+012F (decimal 303) + defining Unicode char U+0130 (decimal 304) + defining Unicode char U+0131 (decimal 305) + defining Unicode char U+0132 (decimal 306) + defining Unicode char U+0133 (decimal 307) + defining Unicode char U+0134 (decimal 308) + defining Unicode char U+0135 (decimal 309) + defining Unicode char U+0136 (decimal 310) + defining Unicode char U+0137 (decimal 311) + defining Unicode char U+0139 (decimal 313) + defining Unicode char U+013A (decimal 314) + defining Unicode char U+013B (decimal 315) + defining Unicode char U+013C (decimal 316) + defining Unicode char U+013D (decimal 317) + defining Unicode char U+013E (decimal 318) + defining Unicode char U+0141 (decimal 321) + defining Unicode char U+0142 (decimal 322) + defining Unicode char U+0143 (decimal 323) + defining Unicode char U+0144 (decimal 324) + defining Unicode char U+0145 (decimal 325) + defining Unicode char U+0146 (decimal 326) + defining Unicode char U+0147 (decimal 327) + defining Unicode char U+0148 (decimal 328) + defining Unicode char U+014A (decimal 330) + defining Unicode char U+014B (decimal 331) + defining Unicode char U+014C (decimal 332) + defining Unicode char U+014D (decimal 333) + defining Unicode char U+014E (decimal 334) + defining Unicode char U+014F (decimal 335) + defining Unicode char U+0150 (decimal 336) + defining Unicode char U+0151 (decimal 337) + defining Unicode char U+0152 (decimal 338) + defining Unicode char U+0153 (decimal 339) + defining Unicode char U+0154 (decimal 340) + defining Unicode char U+0155 (decimal 341) + defining Unicode char U+0156 (decimal 342) + defining Unicode char U+0157 (decimal 343) + defining Unicode char U+0158 (decimal 344) + defining Unicode char U+0159 (decimal 345) + defining Unicode char U+015A (decimal 346) + defining Unicode char U+015B (decimal 347) + defining Unicode char U+015C (decimal 348) + defining Unicode char U+015D (decimal 349) + defining Unicode char U+015E (decimal 350) + defining Unicode char U+015F (decimal 351) + defining Unicode char U+0160 (decimal 352) + defining Unicode char U+0161 (decimal 353) + defining Unicode char U+0162 (decimal 354) + defining Unicode char U+0163 (decimal 355) + defining Unicode char U+0164 (decimal 356) + defining Unicode char U+0165 (decimal 357) + defining Unicode char U+0168 (decimal 360) + defining Unicode char U+0169 (decimal 361) + defining Unicode char U+016A (decimal 362) + defining Unicode char U+016B (decimal 363) + defining Unicode char U+016C (decimal 364) + defining Unicode char U+016D (decimal 365) + defining Unicode char U+016E (decimal 366) + defining Unicode char U+016F (decimal 367) + defining Unicode char U+0170 (decimal 368) + defining Unicode char U+0171 (decimal 369) + defining Unicode char U+0172 (decimal 370) + defining Unicode char U+0173 (decimal 371) + defining Unicode char U+0174 (decimal 372) + defining Unicode char U+0175 (decimal 373) + defining Unicode char U+0176 (decimal 374) + defining Unicode char U+0177 (decimal 375) + defining Unicode char U+0178 (decimal 376) + defining Unicode char U+0179 (decimal 377) + defining Unicode char U+017A (decimal 378) + defining Unicode char U+017B (decimal 379) + defining Unicode char U+017C (decimal 380) + defining Unicode char U+017D (decimal 381) + defining Unicode char U+017E (decimal 382) + defining Unicode char U+01CD (decimal 461) + defining Unicode char U+01CE (decimal 462) + defining Unicode char U+01CF (decimal 463) + defining Unicode char U+01D0 (decimal 464) + defining Unicode char U+01D1 (decimal 465) + defining Unicode char U+01D2 (decimal 466) + defining Unicode char U+01D3 (decimal 467) + defining Unicode char U+01D4 (decimal 468) + defining Unicode char U+01E2 (decimal 482) + defining Unicode char U+01E3 (decimal 483) + defining Unicode char U+01E6 (decimal 486) + defining Unicode char U+01E7 (decimal 487) + defining Unicode char U+01E8 (decimal 488) + defining Unicode char U+01E9 (decimal 489) + defining Unicode char U+01EA (decimal 490) + defining Unicode char U+01EB (decimal 491) + defining Unicode char U+01F0 (decimal 496) + defining Unicode char U+01F4 (decimal 500) + defining Unicode char U+01F5 (decimal 501) + defining Unicode char U+0218 (decimal 536) + defining Unicode char U+0219 (decimal 537) + defining Unicode char U+021A (decimal 538) + defining Unicode char U+021B (decimal 539) + defining Unicode char U+0232 (decimal 562) + defining Unicode char U+0233 (decimal 563) + defining Unicode char U+1E02 (decimal 7682) + defining Unicode char U+1E03 (decimal 7683) + defining Unicode char U+200C (decimal 8204) + defining Unicode char U+2010 (decimal 8208) + defining Unicode char U+2011 (decimal 8209) + defining Unicode char U+2012 (decimal 8210) + defining Unicode char U+2013 (decimal 8211) + defining Unicode char U+2014 (decimal 8212) + defining Unicode char U+2015 (decimal 8213) + defining Unicode char U+2018 (decimal 8216) + defining Unicode char U+2019 (decimal 8217) + defining Unicode char U+201A (decimal 8218) + defining Unicode char U+201C (decimal 8220) + defining Unicode char U+201D (decimal 8221) + defining Unicode char U+201E (decimal 8222) + defining Unicode char U+2030 (decimal 8240) + defining Unicode char U+2031 (decimal 8241) + defining Unicode char U+2039 (decimal 8249) + defining Unicode char U+203A (decimal 8250) + defining Unicode char U+2423 (decimal 9251) + defining Unicode char U+1E20 (decimal 7712) + defining Unicode char U+1E21 (decimal 7713) +) +Now handling font encoding OT1 ... +... processing UTF-8 mapping file for font encoding OT1 + +(/usr/share/texlive/texmf-dist/tex/latex/base/ot1enc.dfu +File: ot1enc.dfu 2017/01/28 v1.1t UTF-8 support for inputenc + defining Unicode char U+00A0 (decimal 160) + defining Unicode char U+00A1 (decimal 161) + defining Unicode char U+00A3 (decimal 163) + defining Unicode char U+00AD (decimal 173) + defining Unicode char U+00B8 (decimal 184) + defining Unicode char U+00BF (decimal 191) + defining Unicode char U+00C5 (decimal 197) + defining Unicode char U+00C6 (decimal 198) + defining Unicode char U+00D8 (decimal 216) + defining Unicode char U+00DF (decimal 223) + defining Unicode char U+00E6 (decimal 230) + defining Unicode char U+00EC (decimal 236) + defining Unicode char U+00ED (decimal 237) + defining Unicode char U+00EE (decimal 238) + defining Unicode char U+00EF (decimal 239) + defining Unicode char U+00F8 (decimal 248) + defining Unicode char U+0131 (decimal 305) + defining Unicode char U+0141 (decimal 321) + defining Unicode char U+0142 (decimal 322) + defining Unicode char U+0152 (decimal 338) + defining Unicode char U+0153 (decimal 339) + defining Unicode char U+0174 (decimal 372) + defining Unicode char U+0175 (decimal 373) + defining Unicode char U+0176 (decimal 374) + defining Unicode char U+0177 (decimal 375) + defining Unicode char U+0218 (decimal 536) + defining Unicode char U+0219 (decimal 537) + defining Unicode char U+021A (decimal 538) + defining Unicode char U+021B (decimal 539) + defining Unicode char U+2013 (decimal 8211) + defining Unicode char U+2014 (decimal 8212) + defining Unicode char U+2018 (decimal 8216) + defining Unicode char U+2019 (decimal 8217) + defining Unicode char U+201C (decimal 8220) + defining Unicode char U+201D (decimal 8221) +) +Now handling font encoding OMS ... +... processing UTF-8 mapping file for font encoding OMS + +(/usr/share/texlive/texmf-dist/tex/latex/base/omsenc.dfu +File: omsenc.dfu 2017/01/28 v1.1t UTF-8 support for inputenc + defining Unicode char U+00A7 (decimal 167) + defining Unicode char U+00B6 (decimal 182) + defining Unicode char U+00B7 (decimal 183) + defining Unicode char U+2020 (decimal 8224) + defining Unicode char U+2021 (decimal 8225) + defining Unicode char U+2022 (decimal 8226) +) +Now handling font encoding OMX ... +... no UTF-8 mapping file for font encoding OMX +Now handling font encoding U ... +... no UTF-8 mapping file for font encoding U + defining Unicode char U+00A9 (decimal 169) + defining Unicode char U+00AA (decimal 170) + defining Unicode char U+00AE (decimal 174) + defining Unicode char U+00BA (decimal 186) + defining Unicode char U+02C6 (decimal 710) + defining Unicode char U+02DC (decimal 732) + defining Unicode char U+200C (decimal 8204) + defining Unicode char U+2026 (decimal 8230) + defining Unicode char U+2122 (decimal 8482) + defining Unicode char U+2423 (decimal 9251) +)) +(/usr/share/texmf/tex/latex/lm/lmodern.sty +Package: lmodern 2009/10/30 v1.6 Latin Modern Fonts +LaTeX Font Info: Overwriting symbol font `operators' in version `normal' +(Font) OT1/cmr/m/n --> OT1/lmr/m/n on input line 22. +LaTeX Font Info: Overwriting symbol font `letters' in version `normal' +(Font) OML/cmm/m/it --> OML/lmm/m/it on input line 23. +LaTeX Font Info: Overwriting symbol font `symbols' in version `normal' +(Font) OMS/cmsy/m/n --> OMS/lmsy/m/n on input line 24. +LaTeX Font Info: Overwriting symbol font `largesymbols' in version `normal' +(Font) OMX/cmex/m/n --> OMX/lmex/m/n on input line 25. +LaTeX Font Info: Overwriting symbol font `operators' in version `bold' +(Font) OT1/cmr/bx/n --> OT1/lmr/bx/n on input line 26. +LaTeX Font Info: Overwriting symbol font `letters' in version `bold' +(Font) OML/cmm/b/it --> OML/lmm/b/it on input line 27. +LaTeX Font Info: Overwriting symbol font `symbols' in version `bold' +(Font) OMS/cmsy/b/n --> OMS/lmsy/b/n on input line 28. +LaTeX Font Info: Overwriting symbol font `largesymbols' in version `bold' +(Font) OMX/cmex/m/n --> OMX/lmex/m/n on input line 29. +LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `normal' +(Font) OT1/cmr/bx/n --> OT1/lmr/bx/n on input line 31. +LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `normal' +(Font) OT1/cmss/m/n --> OT1/lmss/m/n on input line 32. +LaTeX Font Info: Overwriting math alphabet `\mathit' in version `normal' +(Font) OT1/cmr/m/it --> OT1/lmr/m/it on input line 33. +LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `normal' +(Font) OT1/cmtt/m/n --> OT1/lmtt/m/n on input line 34. +LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `bold' +(Font) OT1/cmr/bx/n --> OT1/lmr/bx/n on input line 35. +LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `bold' +(Font) OT1/cmss/bx/n --> OT1/lmss/bx/n on input line 36. +LaTeX Font Info: Overwriting math alphabet `\mathit' in version `bold' +(Font) OT1/cmr/bx/it --> OT1/lmr/bx/it on input line 37. +LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `bold' +(Font) OT1/cmtt/m/n --> OT1/lmtt/m/n on input line 38. +) +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty +Package: hyperref 2018/02/06 v6.86b Hypertext links for LaTeX + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty +Package: hobsub-hyperref 2016/05/16 v1.14 Bundle oberdiek, subset hyperref (HO) + + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty +Package: hobsub-generic 2016/05/16 v1.14 Bundle oberdiek, subset generic (HO) +Package: hobsub 2016/05/16 v1.14 Construct package bundles (HO) +Package: infwarerr 2016/05/16 v1.4 Providing info/warning/error messages (HO) +Package: ltxcmds 2016/05/16 v1.23 LaTeX kernel commands for general use (HO) +Package: ifluatex 2016/05/16 v1.4 Provides the ifluatex switch (HO) +Package ifluatex Info: LuaTeX not detected. +Package: ifvtex 2016/05/16 v1.6 Detect VTeX and its facilities (HO) +Package ifvtex Info: VTeX not detected. +Package: intcalc 2016/05/16 v1.2 Expandable calculations with integers (HO) +Package: ifpdf 2017/03/15 v3.2 Provides the ifpdf switch +Package: etexcmds 2016/05/16 v1.6 Avoid name clashes with e-TeX commands (HO) +Package etexcmds Info: Could not find \expanded. +(etexcmds) That can mean that you are not using pdfTeX 1.50 or +(etexcmds) that some package has redefined \expanded. +(etexcmds) In the latter case, load this package earlier. +Package: kvsetkeys 2016/05/16 v1.17 Key value parser (HO) +Package: kvdefinekeys 2016/05/16 v1.4 Define keys (HO) +Package: pdftexcmds 2018/01/21 v0.26 Utility functions of pdfTeX for LuaTeX (HO +) +Package pdftexcmds Info: LuaTeX not detected. +Package pdftexcmds Info: \pdf@primitive is available. +Package pdftexcmds Info: \pdf@ifprimitive is available. +Package pdftexcmds Info: \pdfdraftmode found. +Package: pdfescape 2016/05/16 v1.14 Implements pdfTeX's escape features (HO) +Package: bigintcalc 2016/05/16 v1.4 Expandable calculations on big integers (HO +) +Package: bitset 2016/05/16 v1.2 Handle bit-vector datatype (HO) +Package: uniquecounter 2016/05/16 v1.3 Provide unlimited unique counter (HO) +) +Package hobsub Info: Skipping package `hobsub' (already loaded). +Package: letltxmacro 2016/05/16 v1.5 Let assignment for LaTeX macros (HO) +Package: hopatch 2016/05/16 v1.3 Wrapper for package hooks (HO) +Package: xcolor-patch 2016/05/16 xcolor patch +Package: atveryend 2016/05/16 v1.9 Hooks at the very end of document (HO) +Package atveryend Info: \enddocument detected (standard20110627). +Package: atbegshi 2016/06/09 v1.18 At begin shipout hook (HO) +Package: refcount 2016/05/16 v3.5 Data extraction from label references (HO) +Package: hycolor 2016/05/16 v1.8 Color options for hyperref/bookmark (HO) +) +(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2014/10/28 v1.15 key=value parser (DPC) +\KV@toks@=\toks16 +) +(/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty +Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional +) +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/auxhook.sty +Package: auxhook 2016/05/16 v1.4 Hooks for auxiliary files (HO) +) +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty +Package: kvoptions 2016/05/16 v3.12 Key value format for package options (HO) +) +\@linkdim=\dimen103 +\Hy@linkcounter=\count88 +\Hy@pagecounter=\count89 + +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def +File: pd1enc.def 2018/02/06 v6.86b Hyperref: PDFDocEncoding definition (HO) +Now handling font encoding PD1 ... +... no UTF-8 mapping file for font encoding PD1 +) +\Hy@SavedSpaceFactor=\count90 + +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/hyperref.cfg +File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive +) +Package hyperref Info: Hyper figures OFF on input line 4509. +Package hyperref Info: Link nesting OFF on input line 4514. +Package hyperref Info: Hyper index ON on input line 4517. +Package hyperref Info: Plain pages OFF on input line 4524. +Package hyperref Info: Backreferencing OFF on input line 4529. +Package hyperref Info: Implicit mode ON; LaTeX internals redefined. +Package hyperref Info: Bookmarks ON on input line 4762. +\c@Hy@tempcnt=\count91 + +(/usr/share/texlive/texmf-dist/tex/latex/url/url.sty +\Urlmuskip=\muskip10 +Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. +) +LaTeX Info: Redefining \url on input line 5115. +\XeTeXLinkMargin=\dimen104 +\Fld@menulength=\count92 +\Field@Width=\dimen105 +\Fld@charsize=\dimen106 +Package hyperref Info: Hyper figures OFF on input line 6369. +Package hyperref Info: Link nesting OFF on input line 6374. +Package hyperref Info: Hyper index ON on input line 6377. +Package hyperref Info: backreferencing OFF on input line 6384. +Package hyperref Info: Link coloring OFF on input line 6389. +Package hyperref Info: Link coloring with OCG OFF on input line 6394. +Package hyperref Info: PDF/A mode OFF on input line 6399. +LaTeX Info: Redefining \ref on input line 6439. +LaTeX Info: Redefining \pageref on input line 6443. +\Hy@abspage=\count93 +\c@Item=\count94 +\c@Hfootnote=\count95 +) +Package hyperref Info: Driver (autodetected): hpdftex. + +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def +File: hpdftex.def 2018/02/06 v6.86b Hyperref driver for pdfTeX +\Fld@listcount=\count96 +\c@bookmark@seq@number=\count97 + +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty +Package: rerunfilecheck 2016/05/16 v1.8 Rerun checks for auxiliary files (HO) +Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2 +82. +) +\Hy@SectionHShift=\skip43 +) +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2017/06/01 v1.1a Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2017/06/25 v1.2c Standard LaTeX Graphics (DPC,SPQR) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 2016/01/03 v1.10 sin cos tan (DPC) +) +(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration +) +Package graphics Info: Driver file: pdftex.def on input line 99. + +(/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def +File: pdftex.def 2018/01/08 v1.0l Graphics/color driver for pdftex +)) +\Gin@req@height=\dimen107 +\Gin@req@width=\dimen108 +) +(/usr/share/texlive/texmf-dist/tex/latex/tcolorbox/tcolorbox.sty +Package: tcolorbox 2018/01/12 version 4.12 text color boxes + +(/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty +(/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty +(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex +\pgfutil@everybye=\toks17 +\pgfutil@tempdima=\dimen109 +\pgfutil@tempdimb=\dimen110 + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-lists.t +ex)) (/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def +\pgfutil@abb=\box26 +(/usr/share/texlive/texmf-dist/tex/latex/ms/everyshi.sty +Package: everyshi 2001/05/15 v3.00 EveryShipout Package (MS) +)) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex +Package: pgfrcs 2015/08/07 v3.0.1a (rcs-revision 1.31) +)) +Package: pgf 2015/08/07 v3.0.1a (rcs-revision 1.15) + +(/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty +(/usr/share/texlive/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty +(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex +Package: pgfsys 2014/07/09 v3.0.1a (rcs-revision 1.48) + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex +\pgfkeys@pathtoks=\toks18 +\pgfkeys@temptoks=\toks19 + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.t +ex +\pgfkeys@tmptoks=\toks20 +)) +\pgf@x=\dimen111 +\pgf@y=\dimen112 +\pgf@xa=\dimen113 +\pgf@ya=\dimen114 +\pgf@xb=\dimen115 +\pgf@yb=\dimen116 +\pgf@xc=\dimen117 +\pgf@yc=\dimen118 +\w@pgf@writea=\write3 +\r@pgf@reada=\read1 +\c@pgf@counta=\count98 +\c@pgf@countb=\count99 +\c@pgf@countc=\count100 +\c@pgf@countd=\count101 +\t@pgf@toka=\toks21 +\t@pgf@tokb=\toks22 +\t@pgf@tokc=\toks23 + (/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg +File: pgf.cfg 2008/05/14 (rcs-revision 1.7) +) +Driver file for pgf: pgfsys-pdftex.def + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def +File: pgfsys-pdftex.def 2014/10/11 (rcs-revision 1.35) + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.de +f +File: pgfsys-common-pdf.def 2013/10/10 (rcs-revision 1.13) +))) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code. +tex +File: pgfsyssoftpath.code.tex 2013/09/09 (rcs-revision 1.9) +\pgfsyssoftpath@smallbuffer@items=\count102 +\pgfsyssoftpath@bigbuffer@items=\count103 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code. +tex +File: pgfsysprotocol.code.tex 2006/10/16 (rcs-revision 1.4) +)) (/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty +Package: xcolor 2016/05/11 v2.12 LaTeX color extensions (UK) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg +File: color.cfg 2016/01/02 v1.6 sample color configuration +) +Package xcolor Info: Driver file: pdftex.def on input line 225. +Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1348. +Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1352. +Package xcolor Info: Model `RGB' extended on input line 1364. +Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1366. +Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1367. +Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1368. +Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1369. +Package xcolor Info: Model `Gray' substituted by `gray' on input line 1370. +Package xcolor Info: Model `wave' substituted by `hsb' on input line 1371. +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex +Package: pgfcore 2010/04/11 v3.0.1a (rcs-revision 1.7) + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex +\pgfmath@dimen=\dimen119 +\pgfmath@count=\count104 +\pgfmath@box=\box27 +\pgfmath@toks=\toks24 +\pgfmath@stack@operand=\toks25 +\pgfmath@stack@operation=\toks26 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code +.tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonomet +ric.code.tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.cod +e.tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison +.code.tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code. +tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code +.tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code. +tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerari +thmetics.code.tex))) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex +\c@pgfmathroundto@lastzeros=\count105 +)) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.te +x +File: pgfcorepoints.code.tex 2013/10/07 (rcs-revision 1.27) +\pgf@picminx=\dimen120 +\pgf@picmaxx=\dimen121 +\pgf@picminy=\dimen122 +\pgf@picmaxy=\dimen123 +\pgf@pathminx=\dimen124 +\pgf@pathmaxx=\dimen125 +\pgf@pathminy=\dimen126 +\pgf@pathmaxy=\dimen127 +\pgf@xx=\dimen128 +\pgf@xy=\dimen129 +\pgf@yx=\dimen130 +\pgf@yy=\dimen131 +\pgf@zx=\dimen132 +\pgf@zy=\dimen133 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct. +code.tex +File: pgfcorepathconstruct.code.tex 2013/10/07 (rcs-revision 1.29) +\pgf@path@lastx=\dimen134 +\pgf@path@lasty=\dimen135 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code +.tex +File: pgfcorepathusage.code.tex 2014/11/02 (rcs-revision 1.24) +\pgf@shorten@end@additional=\dimen136 +\pgf@shorten@start@additional=\dimen137 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.te +x +File: pgfcorescopes.code.tex 2015/05/08 (rcs-revision 1.46) +\pgfpic=\box28 +\pgf@hbox=\box29 +\pgf@layerbox@main=\box30 +\pgf@picture@serial@count=\count106 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.c +ode.tex +File: pgfcoregraphicstate.code.tex 2014/11/02 (rcs-revision 1.12) +\pgflinewidth=\dimen138 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformation +s.code.tex +File: pgfcoretransformations.code.tex 2015/08/07 (rcs-revision 1.20) +\pgf@pt@x=\dimen139 +\pgf@pt@y=\dimen140 +\pgf@pt@temp=\dimen141 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex +File: pgfcorequick.code.tex 2008/10/09 (rcs-revision 1.3) +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.t +ex +File: pgfcoreobjects.code.tex 2006/10/11 (rcs-revision 1.2) +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing +.code.tex +File: pgfcorepathprocessing.code.tex 2013/09/09 (rcs-revision 1.9) +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.te +x +File: pgfcorearrows.code.tex 2015/05/14 (rcs-revision 1.43) +\pgfarrowsep=\dimen142 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex +File: pgfcoreshade.code.tex 2013/07/15 (rcs-revision 1.15) +\pgf@max=\dimen143 +\pgf@sys@shading@range@num=\count107 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex +File: pgfcoreimage.code.tex 2013/07/15 (rcs-revision 1.18) + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code. +tex +File: pgfcoreexternal.code.tex 2014/07/09 (rcs-revision 1.21) +\pgfexternal@startupbox=\box31 +)) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.te +x +File: pgfcorelayers.code.tex 2013/07/18 (rcs-revision 1.7) +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.c +ode.tex +File: pgfcoretransparency.code.tex 2013/09/30 (rcs-revision 1.5) +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code. +tex +File: pgfcorepatterns.code.tex 2013/11/07 (rcs-revision 1.5) +))) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex +File: pgfmoduleshapes.code.tex 2014/03/21 (rcs-revision 1.35) +\pgfnodeparttextbox=\box32 +) (/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex +File: pgfmoduleplot.code.tex 2015/08/03 (rcs-revision 1.13) +) +(/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65 +.sty +Package: pgfcomp-version-0-65 2007/07/03 v3.0.1a (rcs-revision 1.7) +\pgf@nodesepstart=\dimen144 +\pgf@nodesepend=\dimen145 +) +(/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18 +.sty +Package: pgfcomp-version-1-18 2007/07/23 v3.0.1a (rcs-revision 1.1) +)) (/usr/share/texlive/texmf-dist/tex/latex/tools/verbatim.sty +Package: verbatim 2014/10/28 v1.5q LaTeX2e package for verbatim enhancements +\every@verbatim=\toks27 +\verbatim@line=\toks28 +\verbatim@in@stream=\read2 +) +(/usr/share/texlive/texmf-dist/tex/latex/environ/environ.sty +Package: environ 2014/05/04 v0.3 A new way to define environments + +(/usr/share/texlive/texmf-dist/tex/latex/trimspaces/trimspaces.sty +Package: trimspaces 2009/09/17 v1.1 Trim spaces around a token list +) +\@envbody=\toks29 +) +(/usr/share/texlive/texmf-dist/tex/latex/etoolbox/etoolbox.sty +Package: etoolbox 2018/02/11 v2.5e e-TeX tools for LaTeX (JAW) +\etb@tempcnta=\count108 +) +\tcb@titlebox=\box33 +\tcb@upperbox=\box34 +\tcb@lowerbox=\box35 +\tcb@phantombox=\box36 +\c@tcbbreakpart=\count109 +\c@tcblayer=\count110 +\tcolorbox@number=\count111 +\tcb@temp=\box37 +\tcb@temp=\box38 +\tcb@temp=\box39 +\tcb@temp=\box40 +\tcb@out=\write4 +\tcb@record@out=\write5 +) +(/usr/share/texlive/texmf-dist/tex/latex/listings/listings.sty +\lst@mode=\count112 +\lst@gtempboxa=\box41 +\lst@token=\toks30 +\lst@length=\count113 +\lst@currlwidth=\dimen146 +\lst@column=\count114 +\lst@pos=\count115 +\lst@lostspace=\dimen147 +\lst@width=\dimen148 +\lst@newlines=\count116 +\lst@lineno=\count117 +\lst@maxwidth=\dimen149 + +(/usr/share/texlive/texmf-dist/tex/latex/listings/lstmisc.sty +File: lstmisc.sty 2015/06/04 1.6 (Carsten Heinz) +\c@lstnumber=\count118 +\lst@skipnumbers=\count119 +\lst@framebox=\box42 +) +(/usr/share/texlive/texmf-dist/tex/latex/listings/listings.cfg +File: listings.cfg 2015/06/04 1.6 listings configuration +)) +Package: listings 2015/06/04 1.6 (Carsten Heinz) + +(/usr/share/texlive/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +Package: fancyhdr 2017/06/30 v3.9a Extensive control of page headers and footer +s +\f@nch@headwidth=\skip44 +\f@nch@O@elh=\skip45 +\f@nch@O@erh=\skip46 +\f@nch@O@olh=\skip47 +\f@nch@O@orh=\skip48 +\f@nch@O@elf=\skip49 +\f@nch@O@erf=\skip50 +\f@nch@O@olf=\skip51 +\f@nch@O@orf=\skip52 +) +(/usr/share/texlive/texmf-dist/tex/latex/tools/longtable.sty +Package: longtable 2014/10/28 v4.11 Multi-page Table package (DPC) +\LTleft=\skip53 +\LTright=\skip54 +\LTpre=\skip55 +\LTpost=\skip56 +\LTchunksize=\count120 +\LTcapwidth=\dimen150 +\LT@head=\box43 +\LT@firsthead=\box44 +\LT@foot=\box45 +\LT@lastfoot=\box46 +\LT@cols=\count121 +\LT@rows=\count122 +\c@LT@tables=\count123 +\c@LT@chunks=\count124 +\LT@p@ftn=\toks31 +) +(/usr/share/texlive/texmf-dist/tex/latex/caption/caption.sty +Package: caption 2016/02/21 v3.3-144 Customizing captions (AR) + +(/usr/share/texlive/texmf-dist/tex/latex/caption/caption3.sty +Package: caption3 2016/05/22 v1.7-166 caption3 kernel (AR) +Package caption3 Info: TeX engine: e-TeX on input line 67. +\captionmargin=\dimen151 +\captionmargin@=\dimen152 +\captionwidth=\dimen153 +\caption@tempdima=\dimen154 +\caption@indent=\dimen155 +\caption@parindent=\dimen156 +\caption@hangindent=\dimen157 +) +\c@ContinuedFloat=\count125 +Package caption Info: hyperref package is loaded. +Package caption Info: listings package is loaded. +Package caption Info: longtable package is loaded. + +(/usr/share/texlive/texmf-dist/tex/latex/caption/ltcaption.sty +Package: ltcaption 2013/06/09 v1.4-94 longtable captions (AR) +)) +(/usr/share/texlive/texmf-dist/tex/latex/yafoot/dblfnote.sty +Package: dblfnote 1999/07/14 v1.0 +\c@DFNsloppiness=\count126 +\DFNcolumnsep=\dimen158 +\DFNcolumnwidth=\dimen159 +\dfn@fnht=\dimen160 +\dfn@fnmaxdp=\dimen161 +\dfn@dima=\dimen162 +\dfn@dimb=\dimen163 +\dfn@ins=\box47 +\dfn@boxa=\box48 +\dfn@boxb=\box49 +\dfn@output=\toks32 +) +(/usr/share/texlive/texmf-dist/tex/latex/appendix/appendix.sty +Package: appendix 2009/09/02 v1.2b extra appendix facilities +\c@@pps=\count127 +\c@@ppsavesec=\count128 +\c@@ppsaveapp=\count129 +) +(/usr/share/texlive/texmf-dist/tex/generic/babel/babel.sty +Package: babel 2018/02/14 3.18 The Babel package + +(/usr/share/texlive/texmf-dist/tex/generic/babel/switch.def +File: switch.def 2018/02/14 3.18 Babel switching mechanism +) +(/usr/share/texlive/texmf-dist/tex/generic/babel-english/english.ldf +Language: english 2017/06/06 v3.3r English support from the babel system + +(/usr/share/texlive/texmf-dist/tex/generic/babel/babel.def +File: babel.def 2018/02/14 3.18 Babel common definitions +\babel@savecnt=\count130 +\U@D=\dimen164 + +(/usr/share/texlive/texmf-dist/tex/generic/babel/txtbabel.def) +\bbl@dirlevel=\count131 +) +\l@canadian = a dialect from \language\l@american +\l@australian = a dialect from \language\l@british +\l@newzealand = a dialect from \language\l@british +)) +(/usr/share/texlive/texmf-dist/tex/latex/tcolorbox/tcbbreakable.code.tex +Library (tcolorbox): 'tcbbreakable.code.tex' version '4.12' +\tcb@testbox=\box50 +\tcb@totalupperbox=\box51 +\tcb@totallowerbox=\box52 +) (./FOT_DevMan.aux) +\openout1 = `FOT_DevMan.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 72. +LaTeX Font Info: ... okay on input line 72. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 72. +LaTeX Font Info: ... okay on input line 72. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 72. +LaTeX Font Info: ... okay on input line 72. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 72. +LaTeX Font Info: ... okay on input line 72. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 72. +LaTeX Font Info: ... okay on input line 72. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 72. +LaTeX Font Info: ... okay on input line 72. +LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 72. +LaTeX Font Info: ... okay on input line 72. +LaTeX Font Info: Try loading font information for T1+lmr on input line 72. + (/usr/share/texmf/tex/latex/lm/t1lmr.fd +File: t1lmr.fd 2009/10/30 v1.6 Font defs for Latin Modern +) +\AtBeginShipoutBox=\box53 +Package hyperref Info: Link coloring OFF on input line 72. + +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty +Package: nameref 2016/05/21 v2.44 Cross-referencing by name of section + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/gettitlestring.sty +Package: gettitlestring 2016/05/16 v1.5 Cleanup title references (HO) +) +\c@section@level=\count132 +) +LaTeX Info: Redefining \ref on input line 72. +LaTeX Info: Redefining \pageref on input line 72. +LaTeX Info: Redefining \nameref on input line 72. + +(./FOT_DevMan.out) (./FOT_DevMan.out) +\@outlinefile=\write6 +\openout6 = `FOT_DevMan.out'. + + +(/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count133 +\scratchdimen=\dimen165 +\scratchbox=\box54 +\nofMPsegments=\count134 +\nofMParguments=\count135 +\everyMPshowfont=\toks33 +\MPscratchCnt=\count136 +\MPscratchDim=\dimen166 +\MPnumerator=\count137 +\makeMPintoPDFobject=\count138 +\everyMPtoPDFconversion=\toks34 +) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty +Package: epstopdf-base 2016/05/15 v2.6 Base part for package epstopdf + +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty +Package: grfext 2016/05/16 v1.2 Manage graphics extensions (HO) +) +Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 +38. +Package grfext Info: Graphics extension search list: +(grfext) [.pdf,.png,.jpg,.mps,.jpeg,.jbig2,.jb2,.PDF,.PNG,.JPG,.JPE +G,.JBIG2,.JB2,.eps] +(grfext) \AppendGraphicsExtensions on input line 456. + +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv +e +)) +ABD: EveryShipout initializing macros +\c@lstlisting=\count139 +Package caption Info: Begin \AtBeginDocument code. +Package caption Info: End \AtBeginDocument code. +LaTeX Font Info: Try loading font information for OT1+lmr on input line 76. + (/usr/share/texmf/tex/latex/lm/ot1lmr.fd +File: ot1lmr.fd 2009/10/30 v1.6 Font defs for Latin Modern +) +LaTeX Font Info: Try loading font information for OML+lmm on input line 76. +(/usr/share/texmf/tex/latex/lm/omllmm.fd +File: omllmm.fd 2009/10/30 v1.6 Font defs for Latin Modern +) +LaTeX Font Info: Try loading font information for OMS+lmsy on input line 76. + + +(/usr/share/texmf/tex/latex/lm/omslmsy.fd +File: omslmsy.fd 2009/10/30 v1.6 Font defs for Latin Modern +) +LaTeX Font Info: Try loading font information for OMX+lmex on input line 76. + + +(/usr/share/texmf/tex/latex/lm/omxlmex.fd +File: omxlmex.fd 2009/10/30 v1.6 Font defs for Latin Modern +) +LaTeX Font Info: External font `lmex10' loaded for size +(Font) <12> on input line 76. +LaTeX Font Info: External font `lmex10' loaded for size +(Font) <8> on input line 76. +LaTeX Font Info: External font `lmex10' loaded for size +(Font) <6> on input line 76. + [1 + + + +{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./FOT_DevMan.toc +LaTeX Font Info: External font `lmex10' loaded for size +(Font) <10.95> on input line 3. + [2 + +] + +Package Fancyhdr Warning: \headheight is too small (12.0pt): + Make it at least 13.59999pt. + We now make it that large for the rest of the document. + This may cause the page layout to be inconsistent, however. + +[3]) +\tf@toc=\write7 +\openout7 = `FOT_DevMan.toc'. + + [4] + 1. +LaTeX Font Info: External font `lmex10' loaded for size +(Font) <9> on input line 131. +LaTeX Font Info: External font `lmex10' loaded for size +(Font) <5> on input line 131. + +Overfull \hbox (1.08221pt too wide) in paragraph at lines 148--148 +[][][]\T1/lmr/m/n/9 http://www.scilab.org/download/latest| + [] + + +LaTeX Warning: Reference `fig:Scilab1' on page 1 undefined on input line 148. + +LaTeX Font Info: Try loading font information for T1+lmtt on input line 148. + +(/usr/share/texmf/tex/latex/lm/t1lmtt.fd +File: t1lmtt.fd 2009/10/30 v1.6 Font defs for Latin Modern +) +Underfull \hbox (badness 10000) in paragraph at lines 148--150 + + [] + +[1 + + +] +Underfull \hbox (badness 10000) in paragraph at lines 162--162 +[][][]\T1/lmr/m/n/9 https://projects.coin- + [] + +[2] + +Package hyperref Warning: No autoref name for `Appendix' on input line 192. + + +Package hyperref Warning: No autoref name for `Appendix' on input line 192. + + +Package hyperref Warning: No autoref name for `Appendix' on input line 192. + +[3] [4] + 2. + +Overfull \hbox (60.9736pt too wide) in paragraph at lines 201--201 +[][][]\T1/lmr/m/n/9 https://wiki.scilab.org/howto/Create%20a%20toolbox| + [] + + +Overfull \hbox (129.27863pt too wide) in paragraph at lines 201--201 +[][][]\T1/lmr/m/n/9 https://forge.scilab.org/index.php/p/docsciextensions/downl +oads/547/| + [] + +<tree.jpg, id=466, 1224.575pt x 1405.25pt> +File: tree.jpg Graphic file (type jpg) +<use tree.jpg> +Package pdftex.def Info: tree.jpg used on input line 206. +(pdftex.def) Requested size: 360.0pt x 413.10852pt. + +Overfull \hbox (15.4628pt too wide) in paragraph at lines 215--216 +[]\T1/lmr/m/n/10.95 thirdparty : Con-tains the header files and dy-namic link-i +ng li-braries(shared + [] + +[5 + +] [6 <./tree.jpg>] [7] + 3. +(/usr/share/texlive/texmf-dist/tex/latex/listings/lstlang1.sty +File: lstlang1.sty 2015/06/04 1.6 listings language file +) +Overfull \hbox (45.56299pt too wide) in paragraph at lines 235--236 +[][][][] + [] + + +Overfull \hbox (45.56299pt too wide) in paragraph at lines 239--240 +[][][][] + [] + + +Overfull \hbox (45.56299pt too wide) in paragraph at lines 242--243 +[][][][] + [] + +[8 + +] +Overfull \hbox (24.05492pt too wide) in paragraph at lines 274--276 +[][][][][][][][][][][][][][][][][][] \T1/lmr/m/n/10.95 gen-er-ates the loader_g +ateway + [] + +[9] [10] + 4. + +Overfull \hbox (90.74104pt too wide) in paragraph at lines 298--299 +\T1/lmr/m/n/10.95 fol-lowed by ".start". In our case, the name of the file is " +FOS-SEE_Optimization_Toolbox.start". + [] + + +Overfull \hbox (83.86684pt too wide) in paragraph at lines 308--309 +\T1/lmr/m/n/10.95 fol-lowed by ".quit". In our case, the name of the file is "F +OS-SEE_Optimization_Toolbox.quit". + [] + +[11 + +] [12] + 5. +[13 + +] [14] [15] [16] + 6. + +Overfull \hbox (78.78198pt too wide) in paragraph at lines 417--417 +[][][]\T1/lmr/m/n/9 https://help.scilab.org/docs/6.0.2/en_US/api_scilab.html| + [] + + +Overfull \hbox (1.0145pt too wide) in paragraph at lines 417--418 +[]\T1/lmr/m/n/10.95 A list of API func-tions pro-vided by Scilab can be found a +t this link[][][].These + [] + +[17 + +] (/usr/share/texlive/texmf-dist/tex/latex/listings/lstlang1.sty +File: lstlang1.sty 2015/06/04 1.6 listings language file +) +(/usr/share/texlive/texmf-dist/tex/latex/listings/lstmisc.sty +File: lstmisc.sty 2015/06/04 1.6 (Carsten Heinz) +) [18] [19] +Underfull \vbox (badness 10000) has occurred while \output is active [] + + [20] +(/usr/share/texlive/texmf-dist/tex/latex/listings/lstlang1.sty +File: lstlang1.sty 2015/06/04 1.6 listings language file +) [21] +Underfull \vbox (badness 10000) has occurred while \output is active [] + + [22] +[23] [24] [25] [26] + 7. + +Underfull \hbox (badness 10000) in paragraph at lines 759--761 + + [] + +[27 + +] (/usr/share/texlive/texmf-dist/tex/latex/listings/lstlang1.sty +File: lstlang1.sty 2015/06/04 1.6 listings language file +) +Underfull \hbox (badness 10000) in paragraph at lines 799--799 +[][][]\T1/lmr/m/n/9 https://projects.coin- + [] + +[28] +Underfull \hbox (badness 10000) in paragraph at lines 803--804 + + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 809--810 + + [] + +[29] +Underfull \hbox (badness 10000) in paragraph at lines 839--839 +[][][]\T1/lmr/m/n/9 https://projects.coin- + [] + + +Overfull \hbox (23.62025pt too wide) in paragraph at lines 849--850 +[]\T1/lmr/m/n/10.95 Download us-ing [][][][][][][][][][][][][][][][][][][][][][ +][][][][][][][][][][][][][][][][][][][] + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 850--851 + + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 855--856 + + [] + +[30] +Underfull \hbox (badness 10000) in paragraph at lines 891--891 +[][][]\T1/lmr/m/n/9 https://projects.coin- + [] + +[31] +Overfull \hbox (9.44528pt too wide) in paragraph at lines 894--895 +[]\T1/lmr/m/n/10.95 Download us-ing [][][][][][][][][][][][][][][][][][][][][][ +][][][][][][][][][][][][][][][][][][][] + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 895--896 + + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 915--915 +[][][]\T1/lmr/m/n/9 https://projects.coin- + [] + +[32] +Underfull \hbox (badness 10000) in paragraph at lines 926--927 + + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 932--933 + + [] + +[33] +Underfull \hbox (badness 10000) in paragraph at lines 967--967 +[][][]\T1/lmr/m/n/9 https://projects.coin- + [] + + +Overfull \hbox (14.17027pt too wide) in paragraph at lines 979--980 +[]\T1/lmr/m/n/10.95 Download us-ing [][][][][][][][][][][][][][][][][][][][][][ +][][][][][][][][][][][][][][][][][][][] + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 980--981 + + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 986--987 + + [] + +[34] [35] +Overfull \hbox (2.74855pt too wide) in paragraph at lines 1027--1028 +\T1/lmr/m/n/10.95 header files are kept in [][][][][][][][][][][][][][][][][][] +. The linux shared + [] + +[36] + 8. +LaTeX Font Info: Try loading font information for OMS+lmr on input line 1036 +. +(/usr/share/texmf/tex/latex/lm/omslmr.fd +File: omslmr.fd 2009/10/30 v1.6 Font defs for Latin Modern +) +LaTeX Font Info: Font shape `OMS/lmr/m/n' in size <10.95> not available +(Font) Font shape `OMS/lmsy/m/n' tried instead on input line 1036. + + [37 + +] +Underfull \hbox (badness 10000) in paragraph at lines 1047--1047 +[][][]\T1/lmr/m/n/9 http://www.scilab.in/scilab-toolbox- + [] + +[38] [39] [40] +Appendix A. +[41 + +] [42] [43] +Appendix B. +[44 + +] [45] +Appendix C. + +Overfull \hbox (158.13864pt too wide) in paragraph at lines 1276--1276 +[][][]\T1/lmr/m/n/9 https://sourceforge.net/projects/lpsolve/files/lpsolve/5.5. +2.5/lp_solve_5.5.2.5 + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 1277--1277 +[][][]\T1/lmr/m/n/9 https://github.com/ycollet/scilab- + [] + +[46 + +] +Package atveryend Info: Empty hook `BeforeClearDocument' on input line 1280. +Package atveryend Info: Empty hook `AfterLastShipout' on input line 1280. + (./FOT_DevMan.aux) +Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 1280. +Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 1280. + +Package rerunfilecheck Info: File `FOT_DevMan.out' has not changed. +(rerunfilecheck) Checksum: 7732483825A0DB3EF32B505CEA79B11C;4590. + + +LaTeX Warning: There were undefined references. + + +LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right. + +Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 1280. + ) +Here is how much of TeX's memory you used: + 21964 strings out of 492982 + 379880 string characters out of 6134895 + 688204 words of memory out of 5000000 + 24313 multiletter control sequences out of 15000+600000 + 84248 words of font info for 56 fonts, out of 8000000 for 9000 + 1141 hyphenation exceptions out of 8191 + 54i,12n,73p,1205b,3051s stack positions out of 5000i,500n,10000p,200000b,80000s +{/usr/share/texmf/fonts/enc/dvips/lm/lm-ec.enc}{/usr/share/texmf/fonts/enc/dv +ips/lm/lm-mathsy.enc}</usr/share/texmf/fonts/type1/public/lm/lmbx10.pfb></usr/s +hare/texmf/fonts/type1/public/lm/lmbx12.pfb></usr/share/texmf/fonts/type1/publi +c/lm/lmbx8.pfb></usr/share/texmf/fonts/type1/public/lm/lmcsc10.pfb></usr/share/ +texmf/fonts/type1/public/lm/lmr10.pfb></usr/share/texmf/fonts/type1/public/lm/l +mr12.pfb></usr/share/texmf/fonts/type1/public/lm/lmr17.pfb></usr/share/texmf/fo +nts/type1/public/lm/lmr6.pfb></usr/share/texmf/fonts/type1/public/lm/lmr8.pfb>< +/usr/share/texmf/fonts/type1/public/lm/lmr9.pfb></usr/share/texmf/fonts/type1/p +ublic/lm/lmri7.pfb></usr/share/texmf/fonts/type1/public/lm/lmri8.pfb></usr/shar +e/texmf/fonts/type1/public/lm/lmsy10.pfb></usr/share/texmf/fonts/type1/public/l +m/lmtt9.pfb> +Output written on FOT_DevMan.pdf (50 pages, 536883 bytes). +PDF statistics: + 1628 PDF objects out of 1728 (max. 8388607) + 1545 compressed objects within 16 object streams + 877 named destinations out of 1000 (max. 500000) + 570 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/FOT_DevMan.out b/FOT_DevMan.out new file mode 100644 index 0000000..49038ec --- /dev/null +++ b/FOT_DevMan.out @@ -0,0 +1,69 @@ +\BOOKMARK [0][-]{chapter.1}{Introduction}{}% 1 +\BOOKMARK [1][-]{section.1.1}{Scilab}{chapter.1}% 2 +\BOOKMARK [1][-]{section.1.2}{Optimization Libraries}{chapter.1}% 3 +\BOOKMARK [1][-]{section.1.3}{Downloading the toolbox}{chapter.1}% 4 +\BOOKMARK [1][-]{section.1.4}{Prerequisites}{chapter.1}% 5 +\BOOKMARK [1][-]{section.1.5}{Purpose of document}{chapter.1}% 6 +\BOOKMARK [0][-]{chapter.2}{Toolbox Structure}{}% 7 +\BOOKMARK [0][-]{chapter.3}{Builder files}{}% 8 +\BOOKMARK [1][-]{section.3.1}{Introduction}{chapter.3}% 9 +\BOOKMARK [1][-]{section.3.2}{builder.sce}{chapter.3}% 10 +\BOOKMARK [1][-]{section.3.3}{buildmacros.sce}{chapter.3}% 11 +\BOOKMARK [1][-]{section.3.4}{builder\137gateway.sce}{chapter.3}% 12 +\BOOKMARK [2][-]{subsection.3.4.1}{builder\137gateway\137cpp.sce}{section.3.4}% 13 +\BOOKMARK [1][-]{section.3.5}{builder\137help.sce}{chapter.3}% 14 +\BOOKMARK [0][-]{chapter.4}{etc directory}{}% 15 +\BOOKMARK [1][-]{section.4.1}{Introduction}{chapter.4}% 16 +\BOOKMARK [1][-]{section.4.2}{FOSSEE\137Optimization\137Toolbox.start}{chapter.4}% 17 +\BOOKMARK [1][-]{section.4.3}{FOSSEE\137Optimization\137Toolbox.quit}{chapter.4}% 18 +\BOOKMARK [0][-]{chapter.5}{macros directory}{}% 19 +\BOOKMARK [1][-]{section.5.1}{Introduction}{chapter.5}% 20 +\BOOKMARK [1][-]{section.5.2}{Outline of a macros file}{chapter.5}% 21 +\BOOKMARK [2][-]{subsection.5.2.1}{Commented Help page}{section.5.2}% 22 +\BOOKMARK [2][-]{subsection.5.2.2}{Input retrieval}{section.5.2}% 23 +\BOOKMARK [2][-]{subsection.5.2.3}{Error checks}{section.5.2}% 24 +\BOOKMARK [2][-]{subsection.5.2.4}{Input modifications}{section.5.2}% 25 +\BOOKMARK [2][-]{subsection.5.2.5}{Call to the C++ library}{section.5.2}% 26 +\BOOKMARK [2][-]{subsection.5.2.6}{Output retrieval,checks and modifications}{section.5.2}% 27 +\BOOKMARK [0][-]{chapter.6}{sci\137gateway files}{}% 28 +\BOOKMARK [1][-]{section.6.1}{Introduction}{chapter.6}% 29 +\BOOKMARK [1][-]{section.6.2}{Basic Scilab API Functions}{chapter.6}% 30 +\BOOKMARK [1][-]{section.6.3}{Outline of a sci\137gateway file}{chapter.6}% 31 +\BOOKMARK [2][-]{subsection.6.3.1}{Variable initialization}{section.6.3}% 32 +\BOOKMARK [2][-]{subsection.6.3.2}{Input retrieval}{section.6.3}% 33 +\BOOKMARK [2][-]{subsection.6.3.3}{Input modifications}{section.6.3}% 34 +\BOOKMARK [2][-]{subsection.6.3.4}{Calling the library}{section.6.3}% 35 +\BOOKMARK [2][-]{subsection.6.3.5}{Output management}{section.6.3}% 36 +\BOOKMARK [2][-]{subsection.6.3.6}{Returning output to Scilab}{section.6.3}% 37 +\BOOKMARK [0][-]{chapter.7}{Solver Libraries}{}% 38 +\BOOKMARK [1][-]{section.7.1}{Introduction}{chapter.7}% 39 +\BOOKMARK [1][-]{section.7.2}{Prerequisites}{chapter.7}% 40 +\BOOKMARK [1][-]{section.7.3}{Compiling libraries}{chapter.7}% 41 +\BOOKMARK [2][-]{subsection.7.3.1}{ecos}{section.7.3}% 42 +\BOOKMARK [2][-]{subsection.7.3.2}{CLP}{section.7.3}% 43 +\BOOKMARK [2][-]{subsection.7.3.3}{Symphony}{section.7.3}% 44 +\BOOKMARK [2][-]{subsection.7.3.4}{Ipopt}{section.7.3}% 45 +\BOOKMARK [2][-]{subsection.7.3.5}{CBC}{section.7.3}% 46 +\BOOKMARK [2][-]{subsection.7.3.6}{Bonmin}{section.7.3}% 47 +\BOOKMARK [1][-]{section.7.4}{Shared libraries}{chapter.7}% 48 +\BOOKMARK [1][-]{section.7.5}{Header files}{chapter.7}% 49 +\BOOKMARK [0][-]{chapter.8}{Help Files}{}% 50 +\BOOKMARK [1][-]{section.8.1}{Introduction}{chapter.8}% 51 +\BOOKMARK [1][-]{section.8.2}{Basic help document structure}{chapter.8}% 52 +\BOOKMARK [1][-]{section.8.3}{Methods of writing help documents}{chapter.8}% 53 +\BOOKMARK [2][-]{subsection.8.3.1}{Using help\137from\137sci}{section.8.3}% 54 +\BOOKMARK [2][-]{subsection.8.3.2}{Directly via XML}{section.8.3}% 55 +\BOOKMARK [1][-]{section.8.4}{Style Preferences}{chapter.8}% 56 +\BOOKMARK [2][-]{subsection.8.4.1}{Using LaTeX}{section.8.4}% 57 +\BOOKMARK [1][-]{section.8.5}{Additional Notes}{chapter.8}% 58 +\BOOKMARK [2][-]{subsection.8.5.1}{Problems faced while using LaTeX}{section.8.5}% 59 +\BOOKMARK [0][-]{Appendix.1.A}{Appendix Codes}{}% 60 +\BOOKMARK [1][-]{section.1.A.1}{FOSSEE\137Optimization\137Toolbox.start}{Appendix.1.A}% 61 +\BOOKMARK [1][-]{section.1.A.2}{FOSSEE\137Optimization\137Toolbox.quit}{Appendix.1.A}% 62 +\BOOKMARK [0][-]{Appendix.1.B}{Appendix Tutorial}{}% 63 +\BOOKMARK [1][-]{section.1.B.1}{Toolbox Tutorial}{Appendix.1.B}% 64 +\BOOKMARK [1][-]{section.1.B.2}{Help Tutorial}{Appendix.1.B}% 65 +\BOOKMARK [2][-]{subsection.1.B.2.1}{Introduction}{section.1.B.2}% 66 +\BOOKMARK [2][-]{subsection.1.B.2.2}{Using help\137from\137sci}{section.1.B.2}% 67 +\BOOKMARK [2][-]{subsection.1.B.2.3}{Modifying the XML}{section.1.B.2}% 68 +\BOOKMARK [0][-]{Appendix.1.C}{Appendix Assignments}{}% 69 diff --git a/FOT_DevMan.pdf b/FOT_DevMan.pdf Binary files differnew file mode 100644 index 0000000..46f7b86 --- /dev/null +++ b/FOT_DevMan.pdf diff --git a/FOT_DevMan.synctex.gz b/FOT_DevMan.synctex.gz Binary files differnew file mode 100644 index 0000000..8e5df22 --- /dev/null +++ b/FOT_DevMan.synctex.gz diff --git a/FOT_DevMan.tar.gz b/FOT_DevMan.tar.gz Binary files differnew file mode 100644 index 0000000..090881d --- /dev/null +++ b/FOT_DevMan.tar.gz diff --git a/FOT_DevMan.tex b/FOT_DevMan.tex new file mode 100644 index 0000000..700a248 --- /dev/null +++ b/FOT_DevMan.tex @@ -0,0 +1,1280 @@ +\documentclass[a4paper,11pt,openany]{book} +\usepackage[T1]{fontenc} +\usepackage[utf8]{inputenc} +\usepackage{lmodern,hyperref,graphicx,tcolorbox,listings,fancyhdr,longtable,caption,color,dblfnote} +\usepackage[titletoc]{appendix} +\usepackage[english]{babel} + +\tcbuselibrary{breakable} + +\DFNalwaysdouble + +\pagestyle{fancy} +\fancyhead[C]{FOT Developer's Manual} +\fancyhead[LE]{} +\fancyhead[RO]{} +\fancyhead[RE]{} +\fancyhead[LO]{} +\cfoot{\thepage} + +%\newenvironment{dedication} +%{ +% \cleardoublepage +% \thispagestyle{empty} +% \vspace*{\stretch{1}} +% \hfill\begin{minipage}[t]{0.66\textwidth} +% \raggedright +%} +%{ +% \end{minipage} +% \vspace*{\stretch{3}} +% \clearpage +%} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Chapter quote at the start of chapter % +% Source: http://tex.stackexchange.com/a/53380 % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\lstset{ +showstringspaces=false, +breaklines=true, +breakatwhitespace=false, +tabsize=3, +basicstyle=\ttfamily\footnotesize\linespread{0.2}, +commentstyle=\color{red}, +keywordstyle=\color{blue} +} +\newcommand{\urlthis}[2]{#2\footnote{#1}} +\makeatletter +\renewcommand{\@chapapp}{}% Not necessary... + +%\newenvironment{chapquote}[2][2em] +% {\setlength{\@tempdima}{#1}% +% \def\chapquote@author{#2}% +% \parshape 1 \@tempdima \dimexpr\textwidth-2\@tempdima\relax% +% \itshape} +% {\par\normalfont\hfill--\ \chapquote@author\hspace*{\@tempdima}\par\bigskip} +%\makeatother + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% First page of book which contains 'stuff' like: % +% - Book title, subtitle % +% - Book author name % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Book's title and subtitle +\title{\Huge \textbf{FOSSEE Optimization Toolbox} %\footnote{This is a footnote.} +\\ \huge Developer's Manual} %\footnote{April, 2017.} +% Author +\author{\href{mailto:toolbox@scilab.in}{toolbox@scilab.in}}%\thanks{\url{www.example.com}}} + + +\begin{document} + +\frontmatter +\maketitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Add a dedication paragraph to dedicate your book to someone % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%\begin{dedication} +%Dedicated to Calvin and Hobbes. +%\end{dedication} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Auto-generated table of contents, list of figures and list of tables % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\tableofcontents +%\listoffigures +%\listoftables + +\mainmatter + +%%%%%%%%%%% +% Preface % +%%%%%%%%%%% +%\chapter*{Preface} +%Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis risus ante, auctor et pulvinar non, posuere ac lacus. Praesent egestas nisi id metus rhoncus ac lobortis sem hendrerit. Etiam et sapien eget lectus interdum posuere sit amet ac urna. +% +%\section*{Un-numbered sample section} +%Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis risus ante, auctor et pulvinar non, posuere ac lacus. Praesent egestas nisi id metus rhoncus ac lobortis sem hendrerit. Etiam et sapien eget lectus interdum posuere sit amet ac urna. Aliquam pellentesque imperdiet erat, eget consectetur felis malesuada quis. Pellentesque sollicitudin, odio sed dapibus eleifend, magna sem luctus turpis. +% +%\section*{Another sample section} +%Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis risus ante, auctor et pulvinar non, posuere ac lacus. Praesent egestas nisi id metus rhoncus ac lobortis sem hendrerit. Etiam et sapien eget lectus interdum posuere sit amet ac urna. Aliquam pellentesque imperdiet erat, eget consectetur felis malesuada quis. Pellentesque sollicitudin, odio sed dapibus eleifend, magna sem luctus turpis, id aliquam felis dolor eu diam. Etiam ullamcorper, nunc a accumsan adipiscing, turpis odio bibendum erat, id convallis magna eros nec metus. +% +%\section*{Structure of book} +%% You might want to add short description about each chapter in this book. +%Each unit will focus on <SOMETHING>. +% +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Give credit where credit is due. % +%% Say thanks! % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%\section*{Acknowledgements} +%\begin{itemize} +%\item Lorem ipsum dolor sit amet, +%\item Lorem ipsum dolor sit amet, +%\end{itemize} +%\mbox{}\\ +%%\mbox{}\\ +%\noindent Google \\ +%\noindent \url{http://google.com/} + +% +%%%%%%%%%%%%%%%%% +%% NEW CHAPTER! % +%%%%%%%%%%%%%%%%% +\chapter{Introduction} + +%\section{Section heading} +FOSSEE Optimization toolbox is a toolbox in Scilab maintained and developed by \urlthis{https://fossee.in/}{FOSSEE}(Free and Open Source Software in Education), \urlthis{http://iitb.ac.in/}{IIT Bombay}. It can solve the following optimization problems : + +1. Linear programming(LP) + +2. Quadratic programming(QP) + +3. Nonlinear programming(NLP) + +4. Integer programming(IP) + +5. Second order Conic Programming(SOCP) problems + +\noindent It also solves specific optimization problems like least squares, minimax and goal attainment problem.\\ +Scilab is a open-source numerical computational package licensed under GPLv2 license which has broad applications in educational and engineering domains. It is a competitive alternative to Matlab and Octave. Scilab was initially maintained and developed by \urlthis{https://www.inria.fr/en/}{INRIA}(French Institute for Research in Computer Science and Automation). Scilab consortium was formed in June 2010 which now handles Scilab development. +FOSSEE Optimization toolbox uses a dozen of open-source optimization solvers to solve the optimization problems. Many of these solvers are part of the \urlthis{https://www.coin-or.org/}{COIN-OR} initiative which promotes the development and use of open-source softwares for operations research community. Scilab provides API functions to call libraries from C, C++ and FORTRAN. Most of the solvers used by the toolbox is programmed in C++. + +\section{Scilab} +Scilab, as mentioned above is a numerical computational software. It can be downloaded from the \urlthis{http://www.scilab.org/download/latest}{Scilab website} or from the respective repositories in case of Linux or macOS. The standard IDE of Scilab is given in figure \ref{fig:Scilab1}.It contains a file browser,variable browser, command history and the console. Scilab also provides a command line interface which can be run by \lstinline|scilab-cli| from the terminal.\\ +Native scilab provides only limited functions. For advanced and specific functions, the user has to download toolboxes which are scilab packages. The scilab package manager is called ATOMS(AuTomatic mOdules Management for Scilab).The available scilab toolboxes on ATOMS can either accessed through the \urlthis{https://atoms.scilab.org/}{ATOMS website} or by clicking Applications>>Module manager in the Scilab menu bar.\\ + +\begin{tcolorbox}[breakable,notitle,boxrule=0pt,colback=blue!20,colframe=blue!20] +\textsc{NOTE}\\ +It is good practise to run \lstinline|atomsSystemUpdate()| in scilab console to update ATOMS upon fresh install. In case, you are using Scilab 5.5, execute \lstinline|atomsRepositoryAdd('http://atoms.scilab.org')| instead of the previous command +\end{tcolorbox} + + +\section{Optimization Libraries} +FOSSEE Optimization toolbox mainly uses six mathematical optimization libraries, namely : +\begin{enumerate} + \item \urlthis{https://projects.coin-or.org/Clp}{CLP} (Coin-or Linear Programming) + \item \urlthis{https://projects.coin-or.org/Ipopt}{Ipopt} (Interior Point OPTimizer) + \item \urlthis{https://projects.coin-or.org/SYMPHONY}{Symphony} + \item \urlthis{https://www.coin-or.org/Bonmin/}{Bonmin} (Basic Open-source Nonlinear Mixed INteger programming) + \item \urlthis{https://projects.coin-or.org/Cbc}{CBC}(Coin-or branch and cut) + \item \urlthis{https://www.embotech.com/ECOS/}{ECOS} +\end{enumerate} +These libraries, in turn are dependent other libraries such as: +\begin{enumerate} + \item \urlthis{https://projects.coin-or.org/Cgl}{CGL} (Cut Generation Library) + \item \urlthis{https:/www.netlib.org/lapack/}{LAPACK}(Linear Algebra PACKage) + \item \urlthis{https:/www.netlib.org/blas/}{BLAS} (Basic Linear Algebra Subprograms) + \item \urlthis{https:/mumps.enseeiht.fr/}{MUMPS} (MUltifrontal Massively Parallel Sparse direct Solver) + \item \urlthis{https://projects.coin-or.org/Osi}{OSI} (Open Solver Interface) +\end{enumerate} + +\begin{tcolorbox}[breakable,notitle,boxrule=0pt,colback=blue!20,colframe=blue!20] +\textsc{NOTE}\\ +The source codes for all the COIN-OR libraries can be found at \urlthis{https://www.coin-or.org/download/source/}{coin-or download page} or on \urlthis{https://github.com/coin-or}{github} +\end{tcolorbox} +\section{Downloading the toolbox} +FOT can be downloaded onto your system in the following ways: +\begin{enumerate} + \item From ATOMS : by executing \lstinline|atomsInstall('FOT')| on Scilab prompt followed by restarting Scilab. + \item From github : clone from the github repository, \lstinline|git clone https://github.com/FOSSEE/FOSSEE-Optimization-toolbox.git| +\end{enumerate} +We prefer the latter method and the following instructions are with respect to this mode. You can load the toolbox in Scilab by going to the FOT root directory and running \lstinline|exec builder.sce| followed by \lstinline|exec loader.sce| on the Scilab console. These commands compiles and loads the files onto Scilab memory. In case, the toolbox is already compiled, only the latter command has to be run \lstinline|exec cleaner.sce| will delete all the compiled binary files. +\section{Prerequisites} +We expect you to have a novice knowledge of both Scilab and C++. You should be familiar with Object Oriented Programming concepts and comfortable with pointers in C++. In addition to this, you should have good command over Linux and familiar with its workflows. +\section{Purpose of document} +This manual is made to help developers and enthusiasts get beyond the initial barrier and contribute productively to the development and maintenance of FOSSEE Optimization toolbox. This point is highly relevant for this toolbox because of its multidisciplinary domain. + +This Developer's Manual consists of 8 chapters. \autoref{chap:Struct} deals with structure of the toolbox and describes them briefly.It is followed by \autoref{chap:Build} which explains in detail how the toolbox is built and loaded onto Scilab. \autoref{chap:etc} describes the start and quit files which are run at the initialization and finalization of the toolbox. \autoref{chap:macro} is about Scilab function files and explains it by taking one of function files. After that, \autoref{chap:gateway} is on the C++ files that is used to call the solver libraries and is followed by \autoref{chap:lib} which consists of detailed description of downloading and building each of the libraries needed for the Toolbox. \autoref{chap:Help} guides on the help documentation and its related aspects. The Appendix of this manual is divided into three different chapters. Appendix \autoref{chap:Codes} displays some codes which are referred to in the some of the chapters. Appendix \autoref{chap:Tutorials} gives some tutorials for practise and is followed by Appendix \autoref{chap:Assgt} which are assignments which gives you first hand experience in toolbox development. + +\chapter{Toolbox Structure} +\label{chap:Struct} + +Scilab toolboxes are important for it's development. Scilab, being a numerical computational package caters to a vast domain. This being said, a person working with Image processing may not need the functions related fuzzy logic. Hence, releasing these specialized functions as modules or toolboxes not only serves as the aforementioned purpose, but also helps in reducing the size of the basic Scilab installation. + +Toolboxes are developed when there are a number of functions to be provided in the particular domain. If the number of functions are very few, the developer can use \lstinline|ilib_build| function to build the required files rather than create a toolbox. For more details about \lstinline|ilib_build|, check the help page. + +To be versatile in usage, Scilab has a particular folder structure for its toolbox. A detailed article on the Scilab toolboxes written by the Scilab team can be found \urlthis{https://wiki.scilab.org/howto/Create\%20a\%20toolbox}{here}. It is recommended for a new developer to go through that article. Advanced toolbox development can be found in this document written by \urlthis{https://forge.scilab.org/index.php/p/docsciextensions/downloads/547/}{Michaël Baudin }. + +FOSSEE Optimization toolbox also follows a similar folder structure. We will be discussing about these folders in the coming chapters. A tree of the current version of FOT is given below. +\begin{figure} + \centering + \includegraphics[width=\linewidth]{tree.jpg} + \caption{FOT folder structure tree} + \label{fig:Scilab2} +\end{figure} + +Some of the important directories are : +\begin{enumerate} + \item macros : Contains the scilab function files containing the functions that are to be called form Scilab and their respective builder files. + \item sci\_gateway : Contains gateway files which are to be called from the thirdparty directory + \item thirdparty : Contains the header files and dynamic linking libraries(shared libraries) of the toolbox classified by OS and architecture + \item etc : Contains the files needed at the time of building the toolbox + \item help : Contains the required help files for the toolbox + \item tests : Contains the test files for the toolbox + \item demo : Contains demo files for the toolbox +\end{enumerate} + +\chapter{Builder files} +\label{chap:Build} +\section{Introduction} +A builder file is a file used to build the toolbox. It creates binaries of the toolbox that is loaded into Scilab memory. Most of the directories mentioned in the previous chapter has their own builder files. The general file name of builder files are builder*.sce where * is replaced by a string. +\section{builder.sce} +The following is the main FOT builder.sce file which is located at the root directory: +\begin{lstlisting}[language=Scilab] +lines(0); +try + getversion('scilab'); +catch + error(gettext('Scilab 5.0 or more is required.')); +end; +// ==================================================================== +if ~with_module("development_tools") then + error(msprintf(gettext("%s module not installed."),"development_tools")); +end +// ==================================================================== +TOOLBOX_NAME = "FOSSEE_Optimization_Toolbox"; +TOOLBOX_TITLE = "FOSSEE Optimization Toolbox"; +// ==================================================================== +toolbox_dir = get_absolute_file_path("builder.sce"); +tbx_builder_macros(toolbox_dir); +tbx_builder_gateway(toolbox_dir); +tbx_builder_help(toolbox_dir); +tbx_build_loader(TOOLBOX_NAME, toolbox_dir); +tbx_build_cleaner(TOOLBOX_NAME, toolbox_dir); +clear toolbox_dir TOOLBOX_NAME TOOLBOX_TITLE; +\end{lstlisting} +\lstinline|lines(0)| disables vertical paging of the display. +The try-catch condition exits the builder if the required Scilab version is not available. The if loop following that checks if the development\_tool module is present. Generally, it should be present with your default Scilab installation. +The following lines assign name and title, gets the path of the builder file and executes the other builder files which compiles the required directories with respective commands. It also builds a loader.sce which is used to load the binary files into Scilab memory and a cleaner.sce file to remove binary files. +\section{buildmacros.sce} +The buildmacros.sce file is located in macros directory. It compiles the scilab macro files which are scilab function files. The following is the content of the buildmacros.sce file: +\begin{lstlisting}[language=Scilab] +tbx_build_macros("FOSSEE_Optimization_Toolbox", + get_absolute_file_path("buildmacros.sce")); +clear tbx_build_macros; +\end{lstlisting} +\lstinline|tbx_build_macros| is the scilab function used to compile the macros file. The first argument is the toolbox name which is set in the main builder file and the second input is the path of the macros builder file. \lstinline|clear tbx_build_macros| clears the tbx\_build\_macros function from the scilab memory. +\section{builder\_gateway.sce} +builder\_gateway.sce file is used to run the compiles the builder files which are located in sub-directories. +\begin{lstlisting}[language=Scilab] + +sci_gateway_dir = get_absolute_file_path('builder_gateway.sce'); + +tbx_builder_gateway_lang('cpp', sci_gateway_dir); +tbx_build_gateway_loader(['cpp'], sci_gateway_dir); + +clear tbx_builder_gateway_lang tbx_build_gateway_loader; +clear sci_gateway_dir; +\end{lstlisting} +\lstinline|sci_gateway_dir| stores the path to the this file. \lstinline|tbx_builder_gateway_lang| runs the builder file in the respective sub-directories which in turn compiles the scripts. The first argument for this function is an array of languages which are to be compiled and the second argument is the path the builder\_gateway.sce file. The sub-directories have to be named in the name of the languages that the toolbox uses in these files. Scilab accepts C, C++ and FORTRAN as API languages.\\ +\lstinline|tbx_build_gateway_loader(['cpp'], sci_gateway_dir);| generates the loader\_gateway script. The inputs are the same as \lstinline|tbx_builder_gateway_lang|. +\subsection{builder\_gateway\_cpp.sce} +\lstinline|builder_gateway_cpp.sce| file in \lstinline|root_dir/sci_gateway/cpp/| is the builder file for C++ files. The explanation for this file can be found in Section 4.6.4 of Michaël Baudin's article mentioned in \autoref{chap:Struct}. +\section{builder\_help.sce} +builder\_help.sce file is used to compile the help files which are located in directories, the names of which are the locales. locales are parameters which refers to the user's languages. The FOT uses en\_US locale and hence only has one sub-directory in the help directory. +\begin{lstlisting}[language=Scilab] +mode(-1) +lines(0) + +toolbox_title = "FOSSEE_Optimization_Toolbox" + +help_dir = get_absolute_file_path('builder_help.sce'); + +tbx_builder_help_lang("en_US", help_dir); + +clear toolbox_title; +\end{lstlisting} +\lstinline|mode(-1)| executes the builder\_help.sce file silently. \lstinline|tbx_builder_help_lang| is used to build the help files which are located in the en\_US directory. +\chapter{etc directory} +\label{chap:etc} +\section{Introduction} +etc directory contains the initialization and finalization script of the toolbox which are run at the beginning and termination of the toolbox. They are executed while executing the loader and unloader files. +\section{FOSSEE\_Optimization\_Toolbox.start} +The name of the initialization script for a toolbox is the name of the toolbox followed by ".start". In our case, the name of the file is "FOSSEE\_Optimization\_Toolbox.start". The code for the same is given in Appendix \autoref{sec:FOSSEEStart}. + +The FOSSEE\_Optimization\_Toolbox.start file is executed when we run the loader. It's purpose includes : +\begin{enumerate} +\item Load function libraries from macros directory. +\item Load gateway and shared libraries form sci\_gateway and thirdparty directory. +\item Load help from help directory. +\item Load demos from demos directory. +\end{enumerate} +\section{FOSSEE\_Optimization\_Toolbox.quit} +The name of the finalization script for a toolbox is the name of the toolbox followed by ".quit". In our case, the name of the file is "FOSSEE\_Optimization\_Toolbox.quit". The code for the same is given in \autoref{sec:FOSSEEquit}. + +The FOSSEE\_Optimization\_Toolbox.quit file is executed when we run the loader. It's purpose includes : +\begin{enumerate} +\item Unlink the toolbox libraries. +\item Remove any preferences that was set by the toolbox. +\end{enumerate} + +\chapter{macros directory} +\label{chap:macro} +\section{Introduction} +Macros folder contains scilab function files(*.sci). Files with extensions other than sci will not be compiled when the builder is run. Scilab macros can be: +\begin{enumerate} +\item A Scilab function file which returns the result after computation. +\item A Scilab function which calls a C, C++ or FORTRAN code. +\item A Scilab function which calls a binary library. +\end{enumerate} +In FOT, the macros files are of second kind which calls a C++ file. They should have the same file name as that of function inside. Except the licence information and some information's in comments ,the whole code and the help texts in comments are inside the function. +\section{Outline of a macros file} +The general outline of most of macros files in FOT is as follows: +\begin{enumerate} +\item Help page comments +\item Input retrieval +\item Error checks +\item Input modifications +\item Call to the C++ library +\item Output retrieval,checks and modifications +\end{enumerate} +Lets take each of these steps and go through \lstinline|ROOT_DIR/macros/fmincon.sci| file to analyze it. The function is declared with \lstinline|function [xopt,fopt,exitflag,output,lambda,gradient,hessian] = fmincon (varargin)| where \lstinline|varargin| helps facilitates the input argument which can be a variable. It is a list with the input variables. +\subsection{Commented Help page} +The function declaration is immediately followed by the help documentation comments which is explained in detail in \autoref{chap:Help}. +\subsection{Input retrieval} +The inputs from the Scilab execution is parsed here using \lstinline|varargin| function. +\begin{lstlisting} +[lhs , rhs] = argn(); + +//To check the number of arguments given by the user +if ( rhs<4 | rhs>10 ) then + errmsg = msprintf(gettext("%s: Unexpected number of input arguments : %d provided while it should be 4,6,8,9,10"), "fmincon", rhs); + error(errmsg) +end + +if (rhs==5 | rhs==7) then +errmsg = msprintf(gettext("%s: Unexpected number of input arguments : %d provided while it should be 4,6,8,9,10s"), "fmincon", rhs); +error(errmsg) +end + +//Storing the Input Parameters +fun = varargin(1); +x0 = varargin(2); +A = varargin(3); +b = varargin(4); +Aeq = []; +beq = []; +lb = []; +ub = []; +nlc = []; + +if (rhs>4) then + Aeq = varargin(5); + beq = varargin(6); +end + +if (rhs>6) then + lb = varargin(7); + ub = varargin(8); +end + +if (rhs>8) then + nlc = varargin(9); +end +\end{lstlisting} +\lstinline|argn| function returns the number of lhs and rhs arguments in the call. The subsequent \lstinline|if| conditions eliminate the possibility of unplanned inputs. \lstinline|varargin| being a list is parsed to extract the respective inputs. +\subsection{Error checks} +The code for Error checks is not shown here. It starts from the end of Input retrieval and goes on till the declaration of \lstinline|fGrad1| function. These error checks can be : +\begin{enumerate} +\item Checking the type of the variable passed. The \lstinline|Checktype.sci| file in the macros directory assists in this process. +\item Dimension checks in case of a real number,lists or Matrix. +\item Dependency checks. For example, if input A is empty, then input b should also be empty and vice versa. +\item Initialization checks in case of a function to check if the current value is feasible for the function. +\item Double checks, to affirm the credibility of user provided values. +\item Content check, to check if the content of a variable is valid. For example, lower bound,lb cannot take infinity. +\item Input modification checks, if the given input has to be modified to get the actual input. For example, if an input taking row vector is given a column vector. +\end{enumerate} +\subsection{Input modifications} +The input modification for \lstinline|fmincon.sci| includes the functions \lstinline|fGrad1|,\lstinline|lHess1| and \lstinline|addcGrad1|. Some of the inputs are also modified in the above error checking process. In these modifications, the inputs are modified to suit to the specifications of the solver libraries. +\subsection{Call to the C++ library} +Following is the code to call the C++ library. +\begin{lstlisting} +//Creating a Dummy Variable for IPopt use +empty=[0]; + +//Calling the Ipopt function for solving the above problem +[xopt,fopt,status,iter,cpu,obj_eval,dual,lambda1,zl,zu,gradient,hessian1] = solveminconp(f,A,b,Aeq,beq,lb,ub,no_nlc,no_nlic,addnlc1,fGrad1,lHess1,addcGrad1,x0,options,empty) +\end{lstlisting} +The empty dummy variable is provided to aid in retrieving functions in using \lstinline|scilab_call| API function of Scilab. We will discuss about it in the coming sections. +\subsection{Output retrieval,checks and modifications} +The subsequent lines after calling the solver library are to manage output and pass it back to Scilab which are self-explanatory. +\chapter{sci\_gateway files} +\label{chap:gateway} +\section{Introduction} +The gateway files as the name suggests, acts as a gateway between Scilab and C++. The inputs from Scilab are not compatible with other languages and hence Scilab provides an array of API functions to accomplish this. sci\_gateway files generally are used to get input form Scilab ,pass it to the respective library, retrieve the results and pass the results back to Scilab. + +\section{Basic Scilab API Functions} +The Scilab 6 API to pass and return values from C and C++ has been a major improvement over the previous versions of Scilab. In the context of the FOSSEE Optimization Toolbox, it reduces the dependence on the sci\_iofunc file. + +The main purpose of sci\_ iofunc file was to management input and output for FOT. It made the main code less cumbersome. However, since the advent of the new API, a lot of the advantages offered by sci\_iofunc are rendered moot. + + +A list of API functions provided by Scilab can be found at this \urlthis{https://help.scilab.org/docs/6.0.2/en\_US/api\_scilab.html}{link}.These API functions are used in the interfaces directly, instead of relying on \lstinline|root_dir/sci_gateway/cpp/sci_iofunc.cpp| as we did in previous versions. + +\section{Outline of a sci\_gateway file} +The general outline of a sci\_gateway file are as follows : +\begin{enumerate} +\item Variable initialization +\item Input retrieval +\item Input modifications, if any +\item Calling the library +\item Output management +\item Returning output to Scilab +\end{enumerate} +It is categorized so to help developers get an overall view of the functions. Many of the files don't have clear cut difference between two of the above said outline. We will go through this section with the help of \lstinline|root_dir/sci_gateway/cpp/cpp_intfmincon.cpp| file. +\subsection{Variable initialization} +Variable declarations are not just restricted to variables, but namespace declarations as well. +\begin{lstlisting}[language=C] +using namespace Ipopt; + +if (nin !=13) //Checking the input arguments +{ + Scierror(999, "%s: Wrong number of input arguments: %d expected.\n", fname, 13); + return STATUS_ERROR; +} + +if (nout !=3) //Checking the output arguments + +{ + Scierror(999, "%s: Wrong number of output argument(s): %d expected.\n", fname, 3); + return 1; +} + + + +//Function pointers, input matrix(Starting point) pointer, flag variable +double *x0ptr=NULL, *lbptr=NULL, *ubptr=NULL,*Aptr=NULL, *bptr=NULL, *Aeqptr=NULL, *beqptr=NULL; +double nonlinCon=0,nonlinIneqCon=0; + + + // Input arguments +double *cpu_time=NULL,*max_iter=NULL; +static unsigned int nVars = 0,nCons = 0; +unsigned int temp1 = 0,temp2 = 0, iret = 0; +int x0_rows=0, x0_cols=0, lb_rows=0, lb_cols=0, ub_rows=0, ub_cols=0, A_rows=0, A_cols=0, b_rows=0, b_cols=0, Aeq_rows=0, Aeq_cols=0, beq_rows=0, beq_cols=0; + +// Output arguments +double ObjVal=0,iteration=0,cpuTime=0,fobj_eval=0; +double dual_inf, constr_viol, complementarity, kkt_error; +const double *fX = NULL, *fGrad = NULL; +const double *fHess = NULL; +const double *fLambda = NULL; +const double *fZl=NULL; +const double *fZu=NULL; +int rstatus = 0; +int int_fobj_eval, int_constr_eval, int_fobj_grad_eval, int_constr_jac_eval, int_hess_eval; +\end{lstlisting} +\lstinline|nin| and \lstinline|nout| are Scilab API variables which check the inputs and outputs of the Scilab call. +\subsection{Input retrieval} +The following lines code below of \lstinline|sci_ipoptfmincon.cpp| retrieves the input from Scilab into C++. +\begin{lstlisting}[language=C] +if (scilab_isDouble(env, in[5]) == 0 || scilab_isMatrix2d(env, in[5]) == 0) + { + Scierror(999, "%s: Wrong type for input argument #%d: A double matrix expected.\n", fname, 6); + return 1; + } + + scilab_getDoubleArray(env, in[5], &x0); + int size1 = scilab_getDim2d(env, in[5], &x0_rows, &x0_cols); + + + if (scilab_isDouble(env, in[6]) == 0 || scilab_isMatrix2d(env, in[6]) == 0) + { + Scierror(999, "%s: Wrong type for input argument #%d: A double matrix expected.\n", fname, 7); + return 1; + } + + scilab_getDoubleArray(env, in[6], &lb); + + + + if (scilab_isDouble(env, in[7]) == 0 || scilab_isMatrix2d(env, in[7]) == 0) + { + Scierror(999, "%s: Wrong type for input argument #%d: A double matrix expected.\n", fname, 8); + return 1; + } + + scilab_getDoubleArray(env, in[7], &ub); + + if (scilab_isDouble(env, in[8]) == 0 || scilab_isMatrix2d(env, in[8]) == 0) + { + Scierror(999, "%s: Wrong type for input argument #%d: A double matrix expected.\n", fname, 9); + return 1; + } + + scilab_getDoubleArray(env, in[8], &conLb); + size1 = scilab_getDim2d(env, in[8], &nCons, &nCons2); + + + + if (scilab_isDouble(env, in[9]) == 0 || scilab_isMatrix2d(env, in[9]) == 0) + { + Scierror(999, "%s: Wrong type for input argument #%d: A double matrix expected.\n", fname, 10); + return 1; + } + + scilab_getDoubleArray(env, in[9], &conUb); + + + // Getting intcon + if (scilab_isDouble(env, in[10]) == 0 || scilab_isMatrix2d(env, in[10]) == 0) + { + Scierror(999, "%s: Wrong type for input argument #%d: A double matrix expected.\n", fname, 11); + return 1; + } + + scilab_getDoubleArray(env, in[10], &intcon); + size1 = scilab_getDim2d(env, in[10], &intconSize, &intconSize2); + + + + if (scilab_isDouble(env, in[12]) == 0 || scilab_isMatrix2d(env, in[12]) == 0) + { + Scierror(999, "%s: Wrong type for input argument #%d: A double matrix expected.\n", fname, 13); + return 1; + } + + scilab_getDoubleArray(env, in[12], &LC); + + + + + //Initialization of parameters + + //Getting parameters + if (scilab_isList(env, in[11]) == 0) + { + Scierror(999, "%s: Wrong type for input argument #%d: A list expected.\n", fname, 12); + return 1; + } + + scilabVar temp1 = scilab_getListItem( env, in[11], 1); + scilabVar temp2 = scilab_getListItem( env, in[11], 3); + scilabVar temp3 = scilab_getListItem( env, in[11], 5); + scilabVar temp4 = scilab_getListItem( env, in[11], 7); + scilabVar temp5 = scilab_getListItem( env, in[11], 9); + + double integertolerance=0, allowable_gap=0, maxnodes =0, cpuTime=0, maxiter=0; + + scilab_getDouble(env, temp1, &integertolerance); + scilab_getDouble(env, temp2, &maxnodes); + scilab_getDouble(env, temp3, &cpuTime); + scilab_getDouble(env, temp4, &allowable_gap); + scilab_getDouble(env, temp5, &maxiter); + + + int max_nodes = (int)maxnodes; + int cpu_time = (int)cpuTime; + int iterLim = (int)maxiter; + +\end{lstlisting} +Each of \lstinline|if| conditions processes one of inputs from Scilab and saves the address to a pointer which was declared earlier. \lstinline|getFixedSizeDoubleMatrixInList| is used to retrieve the options which are passed as a list. +\subsubsection{scilab\_call function} +\lstinline|scilab_call| is a C++ API function for Scilab which helps in evaluating a Scilab function at the given input. It is of particular interest because of the way it interacts with the Scilab call. We will see about this function with an example from \lstinline|root_dir/sci_gateway/cpp/sci_minconNLP.cpp|. Before we move ahead, give a thought to the inputs of the API call : +\begin{lstlisting} +[xopt,fopt,status,iter,cpu,obj_eval,dual,lambda1,zl,zu,gradient,hessian1] = solveminconp(f,A,b,Aeq,beq,lb,ub,no_nlc,no_nlic,addnlc1,fGrad1,lHess1,addcGrad1,x0,options,empty) +\end{lstlisting} +Notice that the first input \lstinline|f| is a function, and so are the 10\textsuperscript{th},11\textsuperscript{th},12\textsuperscript{th} and 13\textsuperscript{th} input which are \lstinline|addnlc1|, \lstinline|fGrad1|, \lstinline|lHess1| and \lstinline|addcGrad1| respectively. There last three real inputs in the end, i.e. \lstinline|x0|,\lstinline|options| and \lstinline|empty|,the dummy variable. + +Now we return to the \lstinline|minconNLP::eval_h| function in \lstinline|root_dir/sci_gateway/cpp/sci_minconNLP.cpp|. If the values are null, the hessian, which is represented as a sparse matrix is given random values. Else, the hessian matrix from is taken in from Scilab using the following code : +\begin{lstlisting}[language=C++] +double check; + + +const Number *xNew=x; + +const Number *lambdaNew=lambda; +double objfac=obj_factor; + +scilabVar* funcIn = (scilabVar*)malloc(sizeof(scilabVar) * (numVars_) * 1); +funcIn[0] = scilab_createDoubleMatrix2d(env_, 1, numVars_, 0); +scilab_setDoubleArray(env_, funcIn[0], x); +double t= 2; +funcIn[1] = scilab_createDouble(env_, objfac); +funcIn[2] = scilab_createDoubleMatrix2d(env_, 1, numConstr_, 0); + +scilab_setDoubleArray(env_, funcIn[2], lambdaNew); + +scilab_call(env_, L"lHess1", 3, funcIn, 2, out); + + +double* resCh; + +if (scilab_isDouble(env_, out[1]) == 0 || scilab_isScalar(env_, out[1]) == 0) +{ + Scierror(999, "Wrong type for input argument #%d: An int expected.\n", 2); + return 1; +} + + +scilab_getDouble(env_, out[1], &check); +if (check==1) +{ + return true; +} +else +{ + if (scilab_isDouble(env_, out[0]) == 0 || scilab_isMatrix2d(env_, out[0]) == 0) + { + Scierror(999, "Wrong type for input argument #%d: An int expected.\n", 2); + return 1; + } + + scilab_getDoubleArray(env_, out[0], &resCh); + + Index index=0; + for (Index row=0;row < numVars_ ;++row) + { + for (Index col=0; col < numVars_; ++col) + { + values[index++]=resCh[numVars_*row+col]; + } + } +} + +Index index=0; +for (Index row=0;row < numVars_ ;++row) +{ + for (Index col=0; col <= row; ++col) + { + finalHessian_[n*row+col]=values[index++]; + } +} + +index=0; +for (Index col=0;col < numVars_ ;++col) +{ + for (Index row=0; row <= col; ++row) + { + finalHessian_[n*row+col]=values[index++]; + } +} + +} +\end{lstlisting} +\lstinline|scilab_call| function sends back the evaluated value of the Scilab function at input. In order to use \lstinline|scilab_call|, we have to obtain the the inputs using Scilab API writing function like \lstinline|scilab_getDouble|. Then \lstinline|scilab_call| function is called and the outputs from Scilab functions are overwritten over the first position of input that you gave earlier. + +In this case, the lHess1 function in \lstinline|fmincon.sci| has three inputs and two outputs. For the three inputs, the \lstinline|get*| functions are used, with their respective arguments. The dummy variable was exclusively declared for this function as the other functions only have two inputs. \lstinline|scilab_call| has as the first input the name of the scilabEnv variable and the second is the function name. The third and fith inputs of the function are the numbers of inputs and outputs respectively. The fourth and sixth inputs are the pointers to the input and output variables. Once the \lstinline|scilab_call| function is executed, the outputs are written to the scilabVar* variable specificied in the output. Hence, you can see that check and resCh are retrieved from out[1] and out[0] respectively. +\subsection{Input modifications} +In this file, only these two lines modify the input. +\begin{lstlisting}[language=C] +//Number of variables and constraints +nVars = x0_cols; +nCons = A_rows + Aeq_rows + nonlinCon; + +SmartPtr<minconNLP> Prob = new minconNLP(nVars, nCons, x0ptr, Aptr, bptr, Aeqptr, beqptr, A_rows, A_cols, b_rows, b_cols, Aeq_rows, Aeq_cols, beq_rows, beq_cols, lbptr, ubptr, nonlinCon, nonlinIneqCon); +\end{lstlisting} +The newly assigned variables are generally the required inputs for the solver library. They are not assigned and passed on from Scilab to reduce the API function usage. + +The smart pointer \lstinline|SmartPtr| is declared in the namespace Ipopt. Here we create a new instance of minconNLP method, which is defined in \lstinline|root_dir/sci_gateway/cpp/sci_minconNLP.cpp|. minconNLP method is used to pass to modify the inputs in a way favourable to the solver. It is inspired from hs071\_nlp.hpp in the MyExample directory in earlier versions of Ipopt. In the latest version of Ipopt, the file is \lstinline|Ipopt/Ipopt/tutorial/CodingExercise/Cpp/1-skeleton/TutorialCpp_nlp.hpp| +\subsection{Calling the library} +In case of \lstinline|fmincon|, Ipopt solver is called. +\begin{lstlisting}[language=C] +SmartPtr<IpoptApplication> app = IpoptApplicationFactory(); + +////////// Managing the parameters ////////// + +app->Options()->SetNumericValue("tol", 1e-6); +app->Options()->SetIntegerValue("max_iter", (int)*max_iter); +app->Options()->SetNumericValue("max_cpu_time", *cpu_time); +// app->Options()->SetStringValue("hessian_approximation", "limited-memory"); + +///////// Initialize the IpoptApplication and process the options ///////// +ApplicationReturnStatus status; +status = app->Initialize(); +if (status != Solve_Succeeded) +{ + sciprint("\n*** Error during initialization!\n"); + return (int) status; + } + + // Ask Ipopt to solve the problem + status = app->OptimizeTNLP((SmartPtr<TNLP>&)Prob); +\end{lstlisting} +A new instance of Ipopt instance is made in the first line. We are using the \lstinline|IpoptApplicationFactory| since this allows us to compile this with an Ipopt Windows DLL. The respective options are passed in the following lines . Hessian approximation option is commented out as we calculate the hessian in the Scilab macro and is already initiated in the \lstinline|Prob| instance.\\ +In the following lines, the Ipopt library is initialized with the options. If the initialization succeeds, \lstinline| app->OptimizeTNLP((SmartPtr<TNLP>&)Prob)| solves the problem with the given parameters +\subsection{Output management} +The following lines of code manages the output of the solver that has to passed back to Scilab. +\begin{lstlisting}[language=C] +//Get the solve statistics + cpuTime = app->Statistics()->TotalCPUTime(); + app->Statistics()->NumberOfEvaluations(int_fobj_eval, int_constr_eval, int_fobj_grad_eval, int_constr_jac_eval, int_hess_eval); + app->Statistics()->Infeasibilities(dual_inf, constr_viol, complementarity, kkt_error); + rstatus = Prob->returnStatus(); + fobj_eval=(double)int_fobj_eval; + +////////// Manage the output argument ////////// + +fX = Prob->getX(); +fGrad = Prob->getGrad(); +fHess = Prob->getHess(); +fLambda = Prob->getLambda(); +fZl = Prob->getZl(); +fZu = Prob->getZu(); +ObjVal = Prob->getObjVal(); +iteration = (double)app->Statistics()->IterationCount(); +\end{lstlisting} +The above code is self-explanatory. The solver statistics are extracted form \lstinline|app| and the problem statistics are extracted from \lstinline|Prob|. +\subsection{Returning output to Scilab} +These lines of code return the required outputs back to Scilab. They are similar to the Input retrieval functions and are self-explanatory. +\begin{lstlisting}[language=C] +out[0] = scilab_createDoubleMatrix2d(env, 1, nVars, 0); + scilab_setDoubleArray(env, out[0], fX); + + out[1] = scilab_createDouble(env, ObjVal); + + out[2] = scilab_createDouble(env, rstatus); + out[3] = scilab_createDouble(env, iteration); + out[4] = scilab_createDouble(env, cpuTime); + out[5] = scilab_createDouble(env, fobj_eval); + + out[6] = scilab_createDouble(env, dual_inf); + + out[7] = scilab_createDoubleMatrix2d(env, 1, nCons, 0); + scilab_setDoubleArray(env, out[7], fLambda); + + out[8] = scilab_createDoubleMatrix2d(env, 1, nVars, 0); + scilab_setDoubleArray(env, out[8], fZl); + + out[9] = scilab_createDoubleMatrix2d(env, 1, nVars, 0); + scilab_setDoubleArray(env, out[9], fZu); + + out[10] = scilab_createDoubleMatrix2d(env, 1, nVars, 0); + scilab_setDoubleArray(env, out[10], fGrad); + + out[11] = scilab_createDoubleMatrix2d(env, 1, nVars*nVars, 0); + scilab_setDoubleArray(env, out[11], fHess); + +\end{lstlisting} +\chapter{Solver Libraries} +\label{chap:lib} +\section{Introduction} +This chapter deals with the compilation of solver and other libraries that are needed in the toolbox. It explains elaborately the tools and libraries needed to be compiled and related information +\section{Prerequisites} +Before we go ahead with library compilations, we need to setup our environment. The instructions that proceeds are meant for Linux operating systems, specifically Debian OS. Windows User are advised to install Cygwin and take necessary steps where required.Execute the following command on the terminal to install the needed packages\\ +\lstinline|$ sudo apt-get install git subversion build-essential gfortran|\\ +\section{Compiling libraries} +FOSSEE Optimization toolbox directly uses the following libraries for their respective solving domains: +\begin{enumerate} + \item CLP + \item Symphony + \item Ipopt + \item Bonmin + \item CBC + \item ecos +\end{enumerate} +\noindent But since the dependent libraries of these solvers have gone ahead with many minor releases when compared to the one included in the respective solvers, it is recommended to replace the dependent libraries in the solver library with the latest version.Hence the list of the libraries other than the one given above are : +\begin{enumerate} + \item CLP + \item CGL + \item OSI + \item CoinUtils +\end{enumerate} +These libraries can be downloaded directly or by \urlthis{subversion.tigris.org/}{subversion} or git. The download information can be found at their respective websites. + +We will be giving step-by-step instruction on compilation of the source code of all the libraries required. Many of the steps are same for most of the solvers. +\subsection{ecos} +ecos is lightweight second order conic optimization solver which is written in C. In FOT, \lstinline|ecos| function uses the ecos library. The steps to download, modify and compile ecos source code are given below: +\begin{enumerate} +\item The ecos source code is hosted on github at this \urlthis{https://github.com/embotech/ecos}{link}. Download using \lstinline|$ git clone https://github.com/embotech/ecos.git ECOS|. +\item Since there are function names conflicts between ecos and scilab, we have to change the names in ecos source code before we compile. This can be done by running the following commands. +\begin{lstlisting}[language=sh] +$ cd ECOS +$sed -ir 's/createSparseMatrix/EcosCreateSparseMatrix/g' * +\end{lstlisting} +\item Run the following command to compile ecos source code and generate shared library. +\begin{lstlisting}[language=sh] +$ make shared +\end{lstlisting} +\end{enumerate} +The shared libraries will be generated in \lstinline|ECOS| and the header files will be in \lstinline|ECOS/include| and \lstinline|ECOS/external|. + +\subsection{CLP} +CLP or COIN-OR Linear Programming is an open-source LP solver written in C++. In FOT, \lstinline|linprog| uses CLP library. +The latest version of CLP can be downloaded from the following \urlthis{https://projects.coin-or.org/svn/Clp/releases/}{link}. CLP depends on three other COIN-OR projects, namely BuildTools,CoinUtils and OSI. +The steps to download, modify and compile CLP source code are given below: +\begin{enumerate} + \item Download using \lstinline|$ svn co https://projects.coin-or.org/svn/Clp/releases/x.xx.xx CLP|.The x.xx.xx in the end of svn link should to be replaced with the respective version that is to be downloaded. Hence CLP will be downloaded into a directory called CLP. + \item Run \lstinline|get.Lapack|, \lstinline|get.Mumps| and \lstinline|getBlas| in Lapack, Mumps and Blas subdirectory in the \lstinline|CLP/ThirdParty| from the terminal.\\ + \begin{lstlisting}[language=sh] +$ ./CLP/ThirdParty/Lapack/get.Lapack +$ ./CLP/ThirdParty/Blas/get.Blas +$ ./CLP/ThirdParty/Mumps/get.Mumps + \end{lstlisting} + \item The dependencies on which CLP depends on has to be replaced with the latest version of the same. They can be downloaded from the following \urlthis{https://projects.coin-or.org/svn/}{link}. Download them in the same directory where CLP is downloaded as they will be used by other solvers as well.\\ +\begin{lstlisting}[language=sh] +$ svn co https://projects.coin-or.org/svn/BuildTools/releases/x.xx.xx BUILDTOOLS +$ svn co https://projects.coin-or.org/svn/CoinUtils/releases/y.yy.yy COINUTILS +$ svn co https://projects.coin-or.org/svn/OSI/releases/z.zz.zz OSI +\end{lstlisting} + + \item Move the current dependencies to another directory and replace it with the latest ones that was downloaded in the previous step. For example, for CoinUtils, move the \lstinline|CLP/CoinUtils| to \lstinline|CLP/Old.CoinUtils| and move \lstinline|CoinUtils/CoinUtils| to \lstinline|CLP/CoinUtils|.Please note that the new CoinUtils directory to be replaced is inside the main CoinUtils directory. The same is done for BuildTools and OSI as well. + \begin{lstlisting}[language=sh] +$ mv CLP/BuildTools CLP/Old.BuildTools +$ mv BUILDTOOLS/BuildTools CLP/BuildTools +$ mv CLP/CoinUtils CLP/Old.CoinUtils +$ mv COINUTILS/CoinUtils CLP/CoinUtils +$ mv CLP/Osi CLP/Old.Osi +$ mv OSI/Osi CLP/Osi + \end{lstlisting} + \item Make a directory called \lstinline|build| and go into that directory. Run the \lstinline|configure| script followed by \lstinline|make| and \lstinline|make install|. + \begin{lstlisting}[language=sh] +$ mkdir build +$ cd build +$ ../configure +$ make +$ make install + \end{lstlisting} + +\end{enumerate} +The shared libraries will be generated in \lstinline|CLP/build/lib| and the header files will be in \lstinline|CLP/build/include|. + +\subsection{Symphony} +Symphony is yet another Linear Programming solver which is an open-source written in C++. In FOT, \lstinline|symphony| and \lstinline|symphonymat| uses Symphony. +The latest version of Symphony can be downloaded from the following \urlthis{https://projects.coin-or.org/svn/Symphony/releases/}{link}. Symphony depends the following COIN-OR projects : +\begin{enumerate} +\item CGL +\item CLP +\item CoinUtils +\item OSI +\item BuildTools +\end{enumerate} +The steps to download, modify and compile Symphony source code are given below: +\begin{enumerate} + \item Download using \lstinline|$ svn co https://projects.coin-or.org/svn/Symphony/releases/x.xx.xx SYMPHONY|.The x.xx.xx in the end of svn link should to be replaced with the respective version that is to be downloaded. Hence Symphony will be downloaded into a directory called SYMPHONY. + \item Run \lstinline|get.Lapack| and \lstinline|getBlas| in Lapack and Blas subdirectory in the \lstinline|Symphony/ThirdParty| from the terminal.\\ + \begin{lstlisting}[language=sh] +$ ./SYMPHONY/ThirdParty/Lapack/get.Lapack +$ ./SYMPHONY/ThirdParty/Blas/get.Blas + \end{lstlisting} + \item The dependencies on which Symphony depends on has to be replaced with the latest version of the same. They can be downloaded from the following \urlthis{https://projects.coin-or.org/svn/}{link}. Download them in the same directory where Symphony is downloaded as they will be used by other solvers as well. Ignore the libraries which have been already downloaded.\\ +\begin{lstlisting}[language=sh] +$ svn co https://projects.coin-or.org/svn/Cgl/releases/x.xx.xx CGL +$ svn co https://projects.coin-or.org/svn/Clp/releases/y.yy.yy CLP +$ svn co https://projects.coin-or.org/svn/CoinUtils/releases/z.zz.zz COINUTILS +$ svn co https://projects.coin-or.org/svn/OSI/releases/w.ww.ww OSI +$ svn co https://projects.coin-or.org/svn/BuildTools/releases/v.vv.vv BUILDTOOLS + +\end{lstlisting} + \item Move the current dependencies to another directory and replace it with the latest ones that was downloaded in the previous step. + \begin{lstlisting}[language=sh] +$ mv SYMPHONY/Cgl SYMPHONY/Old.Cgl +$ mv CGL/Cgl SYMPHONY/Cgl +$ mv SYMPHONY/Clp SYMPHONY/Old.Clp +$ mv CLP/Clp SYMPHONY/Clp +$ mv SYMPHONY/CoinUtils SYMPHONY/Old.CoinUtils +$ mv COINUTILS/CoinUtils SYMPHONY/CoinUtils +$ mv SYMPHONY/Osi SYMPHONY/Old.Osi +$ mv OSI/Osi SYMPHONY/Osi +$ mv SYMPHONY/BuildTools SYMPHONY/Old.BuildTools +$ mv OSI/BUILDTOOLS SYMPHONY/BuildTools + \end{lstlisting} + \item Make a directory called \lstinline|build| and go into that directory. Run the \lstinline|configure| script followed by \lstinline|make| and \lstinline|make install|. + \begin{lstlisting}[language=sh] +$ mkdir build +$ cd build +$ ../configure +$ make +$ make install + \end{lstlisting} + +\end{enumerate} +The shared libraries will be generated in \lstinline|SYMPHONY/build/lib| and the header files will be in \lstinline|SYMPHONY/build/include|. + +\subsection{Ipopt} +Ipopt or Interior Point Optimizer is a non-linear programming optimization solver which is an open-source written in C++. In FOT, \lstinline|fminunc|, \lstinline|fminbnd|, \lstinline|fmincon|,\lstinline|fminimax|, \lstinline|fgoalattain|, \lstinline|lsqlin|, \lstinline|lsqnonlin|,\lstinline|lsqnonneg| and \lstinline|qpipopt| uses Ipopt. +The latest version of Ipopt can be downloaded from the following \urlthis{https://projects.coin-or.org/svn/Ipopt/releases/}{link}. Ipopt depends on only BuildTools. +The steps to download, modify and compile Ipopt source code are given below: +\begin{enumerate} + \item Download using \lstinline|$ svn co https://projects.coin-or.org/svn/Ipopt/releases/x.xx.xx IPOPT|.The x.xx.xx in the end of svn link should to be replaced with the respective version that is to be downloaded. Hence Ipopt will be downloaded into a directory called IPOPT. + \item Run \lstinline|get.Lapack|,\lstinline|get.Mumps| and \lstinline|getBlas| in Lapack, Mumps and Blas subdirectory in the \lstinline|IPOPT/ThirdParty| from the terminal.\\ + \begin{lstlisting}[language=sh] +$ ./IPOPT/ThirdParty/Lapack/get.Lapack +$ ./IPOPT/ThirdParty/Mumps/get.Mumps +$ ./IPOPT/ThirdParty/Blas/get.Blas + \end{lstlisting} + \item Make a directory called \lstinline|build| and go into that directory. Run the \lstinline|configure| script followed by \lstinline|make| and \lstinline|make install|. + \begin{lstlisting}[language=sh] +$ mkdir build +$ cd build +$ ../configure +$ make +$ make install + \end{lstlisting} + +\end{enumerate} +The shared libraries will be generated in \lstinline|IPOPT/build/lib| and the header files will be in \lstinline|IPOPT/build/include|. + +\subsection{CBC} +CBC is yet another Linear Programming solver which is an open-source written in C++. In FOT, \lstinline|cbcintlinprog| and \lstinline|cbcmatrixlinprog| uses CBC. +The latest version of CBC can be downloaded from the following \urlthis{https://projects.coin-or.org/svn/Cbc/releases/}{link}. CBC depends the following COIN-OR projects : +\begin{enumerate} +\item CGL +\item CLP +\item CoinUtils +\item OSI +\item BuildTools +\end{enumerate} +The steps to download, modify and compile CBC source code are given below: +\begin{enumerate} + \item Download using \lstinline|$ svn co https://projects.coin-or.org/svn/Cbc/releases/x.xx.xx CBC|.The x.xx.xx in the end of svn link should to be replaced with the respective version that is to be downloaded. Hence Cbc will be downloaded into a directory called SYMPHONY. + \item Run \lstinline|get.Lapack|, \lstinline|get.Mumps| and \lstinline|getBlas| in Lapack and Blas subdirectory in the \lstinline|CBC/ThirdParty| from the terminal.\\ + \begin{lstlisting}[language=sh] +$ ./CBC/ThirdParty/Lapack/get.Lapack +$ ./CBC/ThirdParty/Mumps/get.Mumps +$ ./CBC/ThirdParty/Blas/get.Blas + \end{lstlisting} + \item The dependencies on which CBC depends on has to be replaced with the latest version of the same. They can be downloaded from the following \urlthis{https://projects.coin-or.org/svn/}{link}. Download them in the same directory where CBC is downloaded as they will be used by other solvers as well. Ignore the libraries which have been already downloaded.\\ +\begin{lstlisting}[language=sh] +$ svn co https://projects.coin-or.org/svn/Cgl/releases/x.xx.xx CGL +$ svn co https://projects.coin-or.org/svn/Clp/releases/y.yy.yy CLP +$ svn co https://projects.coin-or.org/svn/CoinUtils/releases/z.zz.zz COINUTILS +$ svn co https://projects.coin-or.org/svn/OSI/releases/w.ww.ww OSI +$ svn co https://projects.coin-or.org/svn/BuildTools/releases/w.ww.ww BUILDTOOLS +\end{lstlisting} + \item Move the current dependencies to another directory and replace it with the latest ones that was downloaded in the previous step. + \begin{lstlisting}[language=sh] +$ mv CBC/Cgl CBC/Old.Cgl +$ mv CGL/Cgl CBC/Cgl +$ mv CBC/Clp CBC/Old.Clp +$ mv CLP/Clp CBC/Clp +$ mv CBC/CoinUtils CBC/Old.CoinUtils +$ mv COINUTILS/CoinUtils CBC/CoinUtils +$ mv CBC/Osi CBC/Old.Osi +$ mv OSI/Osi CBC/Osi +$ mv CBC/BuildTools CBC/Old.BuildTools +$ mv BUILDTOOLS/BuildTools CBC/BuildTools + \end{lstlisting} + \item Make a directory called \lstinline|build| and go into that directory. Run the \lstinline|configure| script followed by \lstinline|make| and \lstinline|make install|. + \begin{lstlisting}[language=sh] +$ mkdir build +$ cd build +$ ../configure +$ make +$ make install + \end{lstlisting} + +\end{enumerate} +The shared libraries will be generated in \lstinline|CBC/build/lib| and the header files will be in \lstinline|CBC/build/include|. + +\subsection{Bonmin} +Bonmin is yet another Linear Programming solver which is an open-source written in C++. In FOT, \lstinline|intfminunc|, \lstinline|intfminbnd|, \lstinline|intfmincon| and \lstinline|intfminimax| uses Bonmin. +The latest version of Bonmin can be downloaded from the following \urlthis{https://projects.coin-or.org/svn/Bonmin/releases/}{link}. Bonmin depends the following COIN-OR projects : +\begin{enumerate} +\item CGL +\item CLP +\item CoinUtils +\item OSI +\item BuildTools +\item Ipopt +\item CBC +\end{enumerate} +The steps to download, modify and compile CBC source code are given below: +\begin{enumerate} + \item Download using \lstinline|$ svn co https://projects.coin-or.org/svn/Bonmin/releases/x.xx.xx BONMIN|.The x.xx.xx in the end of svn link should to be replaced with the respective version that is to be downloaded. Hence Cbc will be downloaded into a directory called BONMIN. + \item Run \lstinline|get.Lapack|, \lstinline|get.Mumps| and \lstinline|getBlas| in Lapack and Blas subdirectory in the \lstinline|BONMIN/ThirdParty| from the terminal.\\ + \begin{lstlisting}[language=sh] +$ ./BONMIN/ThirdParty/Lapack/get.Lapack +$ ./BONMIN/ThirdParty/Mumps/get.Mumps +$ ./BONMIN/ThirdParty/Blas/get.Blas + \end{lstlisting} + \item The dependencies on which CBC depends on has to be replaced with the latest version of the same. They can be downloaded from the following \urlthis{https://projects.coin-or.org/svn/}{link}. Download them in the same directory where CBC is downloaded as they will be used by other solvers as well. Ignore the libraries which have been already downloaded.\\ +\begin{lstlisting}[language=sh] +$ svn co https://projects.coin-or.org/svn/Cgl/releases/x.xx.xx CGL +$ svn co https://projects.coin-or.org/svn/Clp/releases/y.yy.yy CLP +$ svn co https://projects.coin-or.org/svn/CoinUtils/releases/z.zz.zz COINUTILS +$ svn co https://projects.coin-or.org/svn/OSI/releases/w.ww.ww OSI +$ svn co https://projects.coin-or.org/svn/Ipopt/releases/w.ww.ww IPOPT +$ svn co https://projects.coin-or.org/svn/Cbc/releases/w.ww.ww CBC +\end{lstlisting} + \item Move the current dependencies to another directory and replace it with the latest ones that was downloaded in the previous step. + \begin{lstlisting}[language=sh] +$ mv BONMIN/Cgl BONMIN/Old.Cgl +$ mv CGL/Cgl BONMIN/Cgl +$ mv BONMIN/Clp BONMIN/Old.Clp +$ mv CLP/Clp BONMIN/Clp +$ mv BONMIN/CoinUtils BONMIN/Old.CoinUtils +$ mv COINUTILS/CoinUtils BONMIN/CoinUtils +$ mv BONMIN/Osi BONMIN/Old.Osi +$ mv OSI/Osi BONMIN/Osi +$ mv BONMIN/BuildTools BONMIN/Old.BuildTools +$ mv BUILDTOOLS/BuildTools BONMIN/BuildTools +$ mv BONMIN/Ipopt BONMIN/Old.Ipopt +$ mv IPOPT/Ipopt BONMIN/Ipopt +$ mv BONMIN/Cbc BONMIN/Old.Cbc +$ mv CBC/Cbc BONMIN/Cbc + \end{lstlisting} + \item Make a directory called \lstinline|build| and go into that directory. Run the \lstinline|configure| script followed by \lstinline|make| and \lstinline|make install|. + \begin{lstlisting}[language=sh] +$ mkdir build +$ cd build +$ ../configure +$ make +$ make install + \end{lstlisting} + +\end{enumerate} +The shared libraries will be generated in \lstinline|BONMIN/build/lib| and the header files will be in \lstinline|BONMIN/build/include|. + +\section{Shared libraries} +Files having extension \lstinline|*.so*| are called shared or dynamic libraries in Linux. In case of windows they are \lstinline|*.dll| and \lstinline|*.lib|. In FOT, the shared libraries have to be compiled for only windows and linux. it has to compiled for different architectures(x64 and x32) as well. The windows dlls are kept in \lstinline|ROOT_DIR/thirdparty/windows/bin/| and \lstinline|ROOT_DIR/thirdparty/windows/lib/|. Both of these directories have \lstinline|x64| and \lstinline|x32| directories. The Linux shared libraries are in \lstinline|ROOT_DIR/thirdparty/linux/lib/| which again has \lstinline|x64| and \lstinline|x32| directories. Copy all the shared libraries having *.so* extension generated in the previous section into the respective architecture directory. +\section{Header files} +Files having extension \lstinline|*.h| or \lstinline|*.hpp| are called header files. The windows header files are kept in \lstinline|ROOT_DIR/thirdparty/windows/include/|. The linux shared libraries are in \lstinline|ROOT_DIR/thirdparty/linux/include/|. Copy all the header files generated in the previous section into the these directory. + +\chapter{Help Files} +\label{chap:Help} + \section{Introduction} + The FOSSEE Optimization Toolbox has an extensive help section that covers all of the functions that the toolbox currently consists of. This chapter will explain the basic structure of a standard help document, the methods to make it, and the preferred style to be used while making it. The appendix contains a short tutorial on how to create a simple help document for a toolbox function. + \section{Basic help document structure} + The sections included in a standard help document are: + \begin{itemize} + \item Calling Sequence: Describe the calling sequence of the function, mentioning all possible variations of inputs, and outputs. + \item Input Parameters: Describe each of the Input Parameters of the function. + \item Outputs: Describe each of the Outputs of the function. + \item Description: Mathematical description of the type of problem being solved. + \item Options: Detail the solver options available to the user. + \item Misc.: Describing the exitflags, the output data structure, and other outputs of the function. + \item Examples: Provide examples demonstrating the usage of the function, and cases where a solution is not possible. + \item Authors: Name the authors. + \end{itemize} + To get a better idea of the structure, see the structure of a help document currently being used. + + \urlthis{http://www.scilab.in/scilab-toolbox-help-files/fmincon.php}{fmincon} + + % \begin{tcolorbox}[breakable,notitle,boxrule=0pt,colback=blue!20,colframe=blue!20] + % \textsc{NOTE}\\ + % Something that is odd, not normal can be added in these boxes + % \end{tcolorbox} + % + % \verb|$ sudo apt-get install git| %use \verb for inline codes + % + % \begin{lstlisting} %use lstlisting for longer codes + % gfhgfhf + % \end{lstlisting} + \section{Methods of writing help documents} + In this section, we touch upon the methods via which you can write the help documents. + \subsection{Using help\_from\_sci} + Scilab provides means to generate a help document for a macro directly from comments made in it. After defining the function, the user can write the documentation in english, and use the function \lstinline|help_from_sci| to compile the help document from it. To generate a basic function template with a basic documentation skeleton, use \lstinline|help_from_sci(funname,helpdir)|. + \subsubsection{Sections available in help\_from\_sci} + The following sections are available directly while generating documentation \lstinline|via help_from_sci|. + \begin{itemize} + \item Calling Sequence + \item Parameters + \item Description + \item Examples + \item Authors + \end{itemize} + \subsection{Directly via XML} + This is akin to writing a simple webpage and provides the developer with all the freedom that they have while writing a webpage. The style sheet is already provided within the toolbox, so that won't prove to be a problem. This method, however, will prove to be time consuming because the developer will have to write everything from scratch, and that might prove to be time consuming. + + An easier way to go about this might be to generate a basic help page skeleton using help\_from\_sci and then modifying the generated XML file in help/en\_US as needed to make a help document according to the developer's requirements. + + \section{Style Preferences} + \begin{itemize} + \item Calling Sequence: The calling sequence is to be enclosed in <synopsis> tags. + \item The Input parameters and the outputs will be part of a single refsection. + \item The problem description, options, and misc. details will be enclosed in a single refsection. \LaTeX \ should be used to provide the mathematical description. + \item Examples: \LaTeX \ should be used to specify the problem being solved. The code snippets are to be enclosed in a <programlisting> tag. Each example will be enclosed in a separate refsection. + \end{itemize} + + \subsection{Using \LaTeX} + + \lstinline|<latex>| tags have been provided for typesetting mathematical equations. It is advised that it be used within \lstinline|<para>| tags. Basic \LaTeX \ functionality has been included in this, but no packages are to be used. Equations can be aligned using \lstinline|{eqnarray}|. There is no need to use standard \LaTeX \ commands to begin documents. The developer can simply enter the \lstinline|<latex>| tags and start working. + + \section{Additional Notes} + The following observations were made while developing the current batch of help documents and the developer is advised to be familiar with them. + \subsection{Problems faced while using \LaTeX} + \begin{itemize} + \item The developer will face some minor issues while using \LaTeX \ in the documentation. The first and most obvious one will be that in some help files, they will run into an error if they begin a line with an ampersand. This error won't show up on the log, but will prevent the chunk of \LaTeX \ information from rendering in the document. Currently, we do not know what is causing this error, but to work around it, the developer can add, for example, a \lstinline|\hspace{1pt}| before the ampersand. + + \item Another thing that the developer will face in the same files that will have the aforementioned ampersand issue is that they will not be able to use multiple ampersands next to each other. The developer is advised to avoid doing so, and use \lstinline|\qquad| or \lstinline|hspace|. + + \item The developer will notice that the term 'some files' has been used. This is because the issue currently affects less than half the files. It specifically affects those files that are at the end of the sorting system, which currently is the alphabetical order. + \end{itemize} + +\begin{appendices} +\chapter{Codes} +\label{chap:Codes} +\section{FOSSEE\_Optimization\_Toolbox.start} +\label{sec:FOSSEEStart} +\lstset{language=Scilab, +numbers=left, +frame=single, +captionpos=t, +showstringspaces=false, +breaklines=true, +breakatwhitespace=false, +tabsize=3 +} +\begin{lstlisting}[language=Scilab] +mprintf("Start FOSSEE Optimization Toolbox\n"); + +[a, opt] = getversion(); +Version = opt(2); + +etc_tlbx = get_absolute_file_path("FOSSEE_Optimization_Toolbox.start"); +etc_tlbx = getshortpathname(etc_tlbx); +root_tlbx = strncpy( etc_tlbx, length(etc_tlbx)-length("\etc\") ); + +//Load functions library + +mprintf("\tLoad macros\n"); +if (getos()=="Windows") then + pathmacros = pathconvert( root_tlbx ) + "macros_win" + filesep(); + symphony_lib = lib(pathmacros); + clear pathmacros; +else + pathmacros = pathconvert( root_tlbx ) + "macros" + filesep(); + symphony_lib = lib(pathmacros); + clear pathmacros; +end + +// load gateways + +mprintf("\tLoad gateways\n"); +[a, opt] = getversion(); +Version = opt(2); +ilib_verbose(0); +if getos()=="Windows" then + lib_path = root_tlbx + "/thirdparty/windows/bin/" + Version; + link(lib_path+filesep()+"IpOptFSS.dll"); + link(lib_path+filesep()+"IpOpt-vc10.dll"); +else + lib_path = root_tlbx + "/thirdparty/linux/lib/" + Version; + link(lib_path + "/libCoinUtils.so"); + link(lib_path + "/libcoinblas.so"); + link(lib_path + "/libcoinlapack.so"); + link(lib_path + "/libcoinmumps.so"); + link(lib_path + '/libCbc.so'); + link(lib_path + "/libClp.so"); + link(lib_path + "/libClpSolver.so"); + link(lib_path + "/libOsi.so"); + link(lib_path + "/libOsiCommonTests.so"); + link(lib_path + "/libOsiClp.so"); + link(lib_path + "/libCgl.so"); + link(lib_path + "/libSym.so"); + link(lib_path + "/libOsiSym.so"); + link(lib_path + "/libipopt.so"); + link(lib_path + '/libbonmin.so'); + link(lib_path + "/libecos.so"); +end +exec(pathconvert(root_tlbx + filesep() + "sci_gateway" + filesep() + "loader_gateway.sce",%f)); + +// Load and add help chapter + +if ( %t ) then +if or(getscilabmode() == ["NW";"STD"]) then + mprintf("\tLoad help\n"); + path_addchapter = pathconvert(root_tlbx+"/jar"); + if ( isdir(path_addchapter) <> [] ) then + add_help_chapter("FOSSEE_Optimization_Toolbox", path_addchapter, %F); + clear add_help_chapter; + end + clear path_addchapter; +end +end + +// add demos + +if ( %t ) then +if or(getscilabmode() == ["NW";"STD"]) then + mprintf("\tLoad demos\n"); + pathdemos = pathconvert(root_tlbx+"/demos/sci_FOSSEE_Optimization_Toolbox.dem.gateway.sce",%f,%t); + add_demo("FOSSEE_Optimization_Toolbox",pathdemos); + clear pathdemos ; +end +end + +clear etc_tlbx root_tlbx Version a opt lib_path; +\end{lstlisting} + + +\section{FOSSEE\_Optimization\_Toolbox.quit} +\label{sec:FOSSEEquit} +\begin{lstlisting}[language=Scilab] +function quitModule() + + etc_tlbx = get_absolute_file_path("FOSSEE_Optimization_Toolbox.quit"); + etc_tlbx = getshortpathname(etc_tlbx); + root_tlbx = strncpy( etc_tlbx, length(etc_tlbx)-length("\etc\") ); + + //unlink libraries + [bOK, ilib] = c_link('FOSSEE_Optimization_Toolbox'); + if bOK then + ulink(ilib); + end + + // Remove Preferences GUI + if getscilabmode() == "STD" then + removeModulePreferences(root_tlbx); + end + ulink(); +endfunction + +quitModule(); + +clear quitModule; +\end{lstlisting} +\chapter{Tutorial} +\label{chap:Tutorials} +\lstset{ +numbers=none, +captionpos=b, +showstringspaces=false, +breaklines=true, +breakatwhitespace=false, +tabsize=3 +} +\section{Toolbox Tutorial} +\section{Help Tutorial} + \subsection{Introduction} + Here we see how to go about making a basic help document for a function in the FOT. Both methods of doing so have been illustrated below: + \subsection{Using help\_from\_sci} + \begin{itemize} + \item Use \lstinline|help_from_sci()| to generate a basic skeleton for the documentation, along with the function. Save it as \lstinline|funname.sci| + \item Write the function, and the documentation as discussed in the chapter on help documents. + \item Enter the command \lstinline|help_from_sci(funname,helpdir)| to generate the help document from the function. + \item Once done, open scilab and build the FOT. You can see the help document on using the help command. + \end{itemize} + \subsubsection{Example} + \begin{lstlisting}[language=Scilab] + --> help_from_sci() + \end{lstlisting} + This will generate a function template. We save the following function in the template, and modify the filename accordingly. + \begin{lstlisting}[language=Scilab] + function [y, z]=funname(a, b) + y=a+b,z=1; + endfunction + \end{lstlisting} + After modifying the documentation as necessary, we use the following command to generate a help document in the same directory. + \begin{lstlisting}[language=Scilab] + --> help_from_sci(funname,".") + \end{lstlisting} + + \subsection{Modifying the XML} + This method has its basis in the method described above, but here the developer has a lot more freedom. In this method, the developer can simply edit the XML file generated by the previous method, and implement a lot of their own ideas about the documentation. + + In this method, the developer should generate a basic XML file as displayed in the previous subsection. And then go on to make changes as needed. There isn't a lot to write here because this section depends largely on the developer's comfort with XML. + + To view the modifications made, simply rebuild the FOT once the modifications have been made, and use the help command to view them. +\chapter{Assignments} +\label{chap:Assgt} +%\section{Introduction} +\begin{enumerate} +\item Make a gateway file of a language of your choice that accepts two matrices and returns the + \begin{enumerate} + \item Sum of both matrices + \item Difference of both matrices + \item Multiplication of both matrices + \item All the above three operations. Use a third input which specifies which operation is to be performed. + \end{enumerate} +\item Go through the sourcecode of lp\_solve API given at this \urlthis{https://sourceforge.net/projects/lpsolve/files/lpsolve/5.5.2.5/lp\_solve\_5.5.2.5\\ \_scilab\_source.tar.gz/download}{link}. Understand the implementation and try to make a FOT implementation of the same similar to \lstinline|intlinprog|. +\item Create the same for \urlthis{https://github.com/ycollet/scilab-mip/tree/master/sciglpk}{GLPK}. +\end{enumerate} +\end{appendices} +\end{document}
\ No newline at end of file diff --git a/FOT_DevMan.toc b/FOT_DevMan.toc new file mode 100644 index 0000000..36113b7 --- /dev/null +++ b/FOT_DevMan.toc @@ -0,0 +1,73 @@ +\babel@toc {english}{} +\contentsline {chapter}{\numberline {1}Introduction}{1}{chapter.1} +\contentsline {section}{\numberline {1.1}Scilab}{1}{section.1.1} +\contentsline {section}{\numberline {1.2}Optimization Libraries}{2}{section.1.2} +\contentsline {section}{\numberline {1.3}Downloading the toolbox}{3}{section.1.3} +\contentsline {section}{\numberline {1.4}Prerequisites}{3}{section.1.4} +\contentsline {section}{\numberline {1.5}Purpose of document}{3}{section.1.5} +\contentsline {chapter}{\numberline {2}Toolbox Structure}{5}{chapter.2} +\contentsline {chapter}{\numberline {3}Builder files}{8}{chapter.3} +\contentsline {section}{\numberline {3.1}Introduction}{8}{section.3.1} +\contentsline {section}{\numberline {3.2}builder.sce}{8}{section.3.2} +\contentsline {section}{\numberline {3.3}buildmacros.sce}{9}{section.3.3} +\contentsline {section}{\numberline {3.4}builder\_gateway.sce}{9}{section.3.4} +\contentsline {subsection}{\numberline {3.4.1}builder\_gateway\_cpp.sce}{10}{subsection.3.4.1} +\contentsline {section}{\numberline {3.5}builder\_help.sce}{10}{section.3.5} +\contentsline {chapter}{\numberline {4}etc directory}{11}{chapter.4} +\contentsline {section}{\numberline {4.1}Introduction}{11}{section.4.1} +\contentsline {section}{\numberline {4.2}FOSSEE\_Optimization\_Toolbox.start}{11}{section.4.2} +\contentsline {section}{\numberline {4.3}FOSSEE\_Optimization\_Toolbox.quit}{11}{section.4.3} +\contentsline {chapter}{\numberline {5}macros directory}{13}{chapter.5} +\contentsline {section}{\numberline {5.1}Introduction}{13}{section.5.1} +\contentsline {section}{\numberline {5.2}Outline of a macros file}{13}{section.5.2} +\contentsline {subsection}{\numberline {5.2.1}Commented Help page}{14}{subsection.5.2.1} +\contentsline {subsection}{\numberline {5.2.2}Input retrieval}{14}{subsection.5.2.2} +\contentsline {subsection}{\numberline {5.2.3}Error checks}{15}{subsection.5.2.3} +\contentsline {subsection}{\numberline {5.2.4}Input modifications}{15}{subsection.5.2.4} +\contentsline {subsection}{\numberline {5.2.5}Call to the C++ library}{15}{subsection.5.2.5} +\contentsline {subsection}{\numberline {5.2.6}Output retrieval,checks and modifications}{16}{subsection.5.2.6} +\contentsline {chapter}{\numberline {6}sci\_gateway files}{17}{chapter.6} +\contentsline {section}{\numberline {6.1}Introduction}{17}{section.6.1} +\contentsline {section}{\numberline {6.2}Basic Scilab API Functions}{17}{section.6.2} +\contentsline {section}{\numberline {6.3}Outline of a sci\_gateway file}{17}{section.6.3} +\contentsline {subsection}{\numberline {6.3.1}Variable initialization}{18}{subsection.6.3.1} +\contentsline {subsection}{\numberline {6.3.2}Input retrieval}{19}{subsection.6.3.2} +\contentsline {subsubsection}{scilab\_call function}{21}{section*.3} +\contentsline {subsection}{\numberline {6.3.3}Input modifications}{23}{subsection.6.3.3} +\contentsline {subsection}{\numberline {6.3.4}Calling the library}{24}{subsection.6.3.4} +\contentsline {subsection}{\numberline {6.3.5}Output management}{25}{subsection.6.3.5} +\contentsline {subsection}{\numberline {6.3.6}Returning output to Scilab}{25}{subsection.6.3.6} +\contentsline {chapter}{\numberline {7}Solver Libraries}{27}{chapter.7} +\contentsline {section}{\numberline {7.1}Introduction}{27}{section.7.1} +\contentsline {section}{\numberline {7.2}Prerequisites}{27}{section.7.2} +\contentsline {section}{\numberline {7.3}Compiling libraries}{27}{section.7.3} +\contentsline {subsection}{\numberline {7.3.1}ecos}{28}{subsection.7.3.1} +\contentsline {subsection}{\numberline {7.3.2}CLP}{29}{subsection.7.3.2} +\contentsline {subsection}{\numberline {7.3.3}Symphony}{30}{subsection.7.3.3} +\contentsline {subsection}{\numberline {7.3.4}Ipopt}{31}{subsection.7.3.4} +\contentsline {subsection}{\numberline {7.3.5}CBC}{32}{subsection.7.3.5} +\contentsline {subsection}{\numberline {7.3.6}Bonmin}{34}{subsection.7.3.6} +\contentsline {section}{\numberline {7.4}Shared libraries}{36}{section.7.4} +\contentsline {section}{\numberline {7.5}Header files}{36}{section.7.5} +\contentsline {chapter}{\numberline {8}Help Files}{37}{chapter.8} +\contentsline {section}{\numberline {8.1}Introduction}{37}{section.8.1} +\contentsline {section}{\numberline {8.2}Basic help document structure}{37}{section.8.2} +\contentsline {section}{\numberline {8.3}Methods of writing help documents}{38}{section.8.3} +\contentsline {subsection}{\numberline {8.3.1}Using help\_from\_sci}{38}{subsection.8.3.1} +\contentsline {subsubsection}{Sections available in help\_from\_sci}{38}{section*.4} +\contentsline {subsection}{\numberline {8.3.2}Directly via XML}{38}{subsection.8.3.2} +\contentsline {section}{\numberline {8.4}Style Preferences}{39}{section.8.4} +\contentsline {subsection}{\numberline {8.4.1}Using \LaTeX }{39}{subsection.8.4.1} +\contentsline {section}{\numberline {8.5}Additional Notes}{39}{section.8.5} +\contentsline {subsection}{\numberline {8.5.1}Problems faced while using \LaTeX }{39}{subsection.8.5.1} +\contentsline {chapter}{Appendix \numberline {A}Codes}{41}{Appendix.1.A} +\contentsline {section}{\numberline {A.1}FOSSEE\_Optimization\_Toolbox.start}{41}{section.1.A.1} +\contentsline {section}{\numberline {A.2}FOSSEE\_Optimization\_Toolbox.quit}{43}{section.1.A.2} +\contentsline {chapter}{Appendix \numberline {B}Tutorial}{44}{Appendix.1.B} +\contentsline {section}{\numberline {B.1}Toolbox Tutorial}{44}{section.1.B.1} +\contentsline {section}{\numberline {B.2}Help Tutorial}{44}{section.1.B.2} +\contentsline {subsection}{\numberline {B.2.1}Introduction}{44}{subsection.1.B.2.1} +\contentsline {subsection}{\numberline {B.2.2}Using help\_from\_sci}{44}{subsection.1.B.2.2} +\contentsline {subsubsection}{Example}{44}{section*.5} +\contentsline {subsection}{\numberline {B.2.3}Modifying the XML}{45}{subsection.1.B.2.3} +\contentsline {chapter}{Appendix \numberline {C}Assignments}{46}{Appendix.1.C} diff --git a/README.md b/README.md new file mode 100644 index 0000000..a4a108e --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# FOT-dev-doc diff --git a/Scilab_gui.png b/Scilab_gui.png Binary files differnew file mode 100644 index 0000000..e916cb1 --- /dev/null +++ b/Scilab_gui.png diff --git a/tree.jpg b/tree.jpg Binary files differnew file mode 100644 index 0000000..22ba308 --- /dev/null +++ b/tree.jpg |