Knowledge base: Warsaw University of Technology

Settings and your account

Back

Development of the DOML compiler by providing a code generator for the IPOPT solver

Piotr Goczyński

Abstract

The following thesis covers the effects of the author's effort to provide the DOML compiler with a functionality of generating code which calls the IPOPT solver's methods in order to solve static non-linear optimization problems. DOML is a language for modeling many types of optimization problems including dynamic optimization tasks. It is being developed at Warsaw University of Technology. The thesis contains theoretical foundations of optimal control problems, which DOML is mainly used for. It discusses difficulties faced when solving such tasks, and presents existing software which is being used for the purpose. Among others, DOMLis discussed more thoroughly, together with its associated server – IDOS. Real problems are used to explain DOML syntax and basic characteristics of the language. The thesis also explains the concept of IDOS server, as well as the DOML compiler. It discusses the interior point algorithm which is being used by the IPOPT solver. The solver's C++ API, which was used by the author,is also explained. The paper contains the author's concept of developing the requested functionality. It required producing a simple yet powerful algorithm for symbolic differentiation which is explained thouroghly in the document. Extracts from code files created by the author are being presented, as well as the effect of an example execution of the produced software (code generated by the compiler). The thesis contains a description of the test environment as well as an explanation of software tests carried out by the author. The test results are presented along witha recommendation, that the software is ready to be integrated with the rest of the DOML/IDOS project. The provided report covering the tests, proves that the implemented module acts correctly. It takes a DOML problem that it is provided with, calls IPOPT's methods accordingly, and returnsa result of a real-variable, non-linear, static optimization problem. In the summary of this thesis, the reader is provided with conclusions from the whole process, from the analysis of the existing project and the problem, to the final software tests. Potential future development directions are pointed out, both for the whole project and for the very module being developed by the author.
Diploma type
Engineer's / Bachelor of Science
Diploma type
Engineer's thesis
Author
Piotr Goczyński (FEIT/AK) Piotr Goczyński,, The Institute of Control and Computation Engineering (FEIT/AK)Faculty of Electronics and Information Technology (FEIT)
Title in Polish
Rozbudowa kompilatora języka DOML o obsługę solvera IPOPT
Supervisor
Mariusz Kaleta (FEIT/AK) Mariusz Kaleta,, The Institute of Control and Computation Engineering (FEIT/AK)Faculty of Electronics and Information Technology (FEIT)
Certifying unit
Faculty of Electronics and Information Technology (FEIT)
Affiliation unit
The Institute of Control and Computation Engineering (FEIT/AK)
Study subject / specialization
, Informatyka (Computer Science)
Language
(pl) Polish
Status
Finished
Defense Date
23-09-2019
Issue date (year)
2019
Reviewers
Mariusz Kaleta (FEIT/AK) Mariusz Kaleta,, The Institute of Control and Computation Engineering (FEIT/AK)Faculty of Electronics and Information Technology (FEIT) Tomasz Śliwiński (FEIT/AK) Tomasz Śliwiński,, The Institute of Control and Computation Engineering (FEIT/AK)Faculty of Electronics and Information Technology (FEIT)
Keywords in Polish
sterowanie optymalne, zadania nieliniowej optymalizacji statycznej, różniczkowanie symboliczne, solver IPOPT, języki modelowania dynamicznego, metoda punktu wewnętrznego, DOML, IDOS
Keywords in English
optimal control, non-linear static optimization, symbolic differentiation, IPOPT solver, dynamic modeling languages, interior point method, DOML, IDOS
Abstract in Polish
W niniejszym tekście przedstawiono efekty pracy nad wzbogaceniem kompilatora języka DOML (tworzony na Politechnice Warszawskiej język do zapisu m. in. zadań optymalizacji dynamicznej) o generację kodu wywołującego metody solvera IPOPT w kontekście zadań statycznej optymalizacji nieliniowej. Omówiono podstawy teoretyczne zadań, do których najczęściej DOML jest stosowany, czyli zadań sterowania optymalnego. Przedstawiono trudności związane z ich rozwiązywaniem, jak również istniejące oprogramowanie i języki modelowania służące do tego celu. Pośród nich w większych szczegółach omówiono język DOML, a także skojarzony z nim serwer IDOS. Składnia i podstawowe założenia języka DOML zostały wyjaśnione na przykładzie zapisanych w nim zadań. Zaprezentowano koncepcję i zasadę działania zarówno serwera IDOS, jak i kompilatora języka DOML. Algorytm punktu wewnętrznego stosowany przez solver IPOPT został omówiony w podstawowym zakresie, a interfejs C++ ww. solvera, z którego należało skorzystać podczas implementacji przedmiotowej funkcjonalności – bardziej szczegółowo i z omówieniem parametrów wejściowych i wyjściowych poszczególnych funkcji. Przedstawiono koncepcję rozwiązania problemu implementacji odpowiednich metod wspomnianego interfejsu,w której duże znaczenie miał algorytm różniczkowania symbolicznego, którego kolejne kroki również są omawiane w tej pracy. W tekście znajdują się fragmenty plików będących efektem pracy, a także przykładowy plik wyjściowy stanowiący efekt działania zaimplementowanych generatorów kodu. Środowisko testowe i zasada przeprowadzenia testów zaprojektowanego rozwiązania zostały omówione w sposób pozwalający prześledzić ww. proces. Praca zawiera wyniki testów, świadczące o gotowości zaimplementowanego modułu do zintegrowania z resztą projektu. Z wykonanych testowych uruchomień wynika, że wytworzone oprogramowanie jest w stanie zapewnić poprawne działanie kompilatora w zakresie zadań nieliniowej, statycznej optymalizacji niecałkowitej, tzn. dla określonych klas zadań tego typu zapisanych w języku DOML, zwraca wynik uzyskany przy pomocy solvera IPOPT. W podsumowaniu pracy czytelnik odnajdzie wnioski płynące z całego procesu, od poznania projektu i analizy problemu inżynierskiego, aż do przeprowadzonych testów. Zarówno cały projekt, jak i część leżąca ściśle w odpowiedzialności autora niniejszej pracy mogą zostać w przyszłości rozwinięte, a kierunki tego rozwoju przedstawiono w odpowiednim rozdziale tekstu.
File
  • File: 1
    253088_inz.pdf
Request a WCAG compliant version
Local fields
Identyfikator pracy APD: 35815

Uniform Resource Identifier
https://repo.pw.edu.pl/info/bachelor/WUTf4dfa265d4fb48a293e9b63969fd1db8/
URN
urn:pw-repo:WUTf4dfa265d4fb48a293e9b63969fd1db8

Confirmation
Are you sure?
Report incorrect data on this page