1 / 20

Programowanie obiektowe III rok EiT

Programowanie obiektowe III rok EiT. dr inż. Jerzy Kotowski Wykład XII. Program wykładu. Język C++ Przykład problemu Model matematyczny zadania symulacji Transformacja zadania do problemu statycznej optymalizacji wypukłej bez ograniczeń

moya
Download Presentation

Programowanie obiektowe III rok EiT

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programowanie obiektoweIII rok EiT dr inż. Jerzy Kotowski Wykład XII

  2. Program wykładu • Język C++ • Przykład problemu • Model matematyczny zadania symulacji • Transformacja zadania do problemu statycznej optymalizacji wypukłej bez ograniczeń • Opis algorytmu rozwiązania zadania optymalizacji – metoda Newtona • Opis programu obliczeniowego • Podstawy języka JAVA • Klasówka

  3. Literatura • Klempous R., Kotowski J. (1988). Some models for Water Distribution Systems. Journal of Computational and Applied Mathematics, 26, 257-269. • Klempous R., Kotowski J. (1991). Nonlinear transport network design.Journal of Computational and Applied Mathematics,35, 269-275. • Klempous R., Kotowski J., Nikodem J. (1994). System Approach to the Water Distribution Problems In: Proceedings of the Twelfth European Meeting on Cybernetics and Systems Re­search (Vienna, Austria), 957-963. • Symfonia C++, Jerzy Grębosz, Oficyna Kallimach, Kraków 1999

  4. Przykład problemu Symulacja sieci wodociągowej

  5. x d y k d x y Model matematyczny sieci wodociągowej • Model matematyczny łuku sieci – prawo Bernoulli’ego

  6. Model matematyczny sieci wodociągowej • Prawa Kirchhoff’a • I prawo – zachowania masy • II prawo – równania oczkowe • Oznaczenia yRm – wektor przepływów w łukach xRm – wektor spadków ciśnień w łukach Rw – wektor zapotrzebowań w węzłach A – macierz incydencji, A = A(w-1)xm, aij = 0,1,-1 B – macierz oczkowa, B = B(m-w+1)xm, bij = 0,1,-1

  7. Model matematyczny sieci wodociągowej - własności • Układ m algebraicznych równań nieliniowych z m niewiadomymi: • Jak to rozwiązać?

  8. 2 3 4 2 3 1 1 P Przykład 1 w = 4 / 0 – pompownia m = 4 m-w+1 = 1 / jedno oczko • I prawo Kirchhoffa y1 – y2 – y3 = 1 y2 - y4 = 2 y3 + y4 = 3 • III prawo Kirchhoffa x2 – y3 + x4 = 0 • Cztery równania z czterema niewiadomymi y1, y2, y3, y4

  9. Problem optymalizacji • Idea (podstawy fizyki):Minimalizować straty przy spełnieniu warunku zachowania masy • Sformułowanie problemu dla przypadku sieci transportowych: (*)

  10. I1 R1 I0 U1 I2 R2 U2 Przykład 2 – z życia (druty) M = M1 + M2  min I1 + I2 = I0 I1+I2 = I0 I prawo K. U1-U2=0 II prawo K. Ui = RiIi, i=1,2 Mi = UiIi, i=1,2

  11. Warunki Kuhna-Tuckera • II prawo Kirchhoffa nie pojawiło się przypadkiem. • Prawo to można wyprowadzić jako pewną transformację warunków optymalności Kuhna-Tuckera dla zadania (*): • Lagrangian: L(y,)=f(y)+ Tg(y) • gdzie yRn • a g(y)Rm to ograniczenia w postaci g(y)=0 • Warunki Kuhna-Tuckera:jeżeli y* jest optymalnym rozwiązaniem zadania (*) to wtedy

  12. Warunki Kuhna-Tuckera dla zadania (*) /B I prawo Kirchhoffa Teoria grafów: BAT=0 II prawo Kirchhoffa

  13. Wniosek • W celu symulacji cyfrowej rozpływów w nieliniowej sieci transportowej (gaz, woda, etc.) można zamiast rozwiązywania układu równań nieliniowych typu I i II prawo Kirchhoffa rozwiązać problem optymalizacji statycznej z wypukłą funkcją celu oraz z liniowymi ograniczeniami równościowymi (I prawo Kirchhoffa). • Problem optymalizacji można zredukować. • Idea redukcji polega na rozwikłaniu ograniczeń liniowych i dokonaniu odpowiednich podstawień w funkcji celu. • Liczba zmiennych w problemie zredukowanym jest równa liczbie oczek w sieci (metoda prądów oczkowych) • Problem zredukowany jest wypukłym zadaniem optymalizacji statycznej i może być rozwiązywany z wykorzystaniem wielu metod optymalizacji statycznej.

  14. Zmodyfikowana metoda Newtona • Własności metody • Służy do rozwiązywania zadań programowania matematycznego bez ograniczeń • Wymaga znajomości gradientu i hesjanu optymalizowanej funkcji celu • Schemat metody • Rozwinąć funkcji celu w otoczeniu bieżącego optimum y* w szereg Taylora • Obciąć rozwinięcie należy na trzecim składniku (forma kwadratowa) • Wyznaczyć minimum otrzymanej formy kwadratowej y’ • Przyjąć d=y’-y* jako nowy kierunek poszukiwać dla metody poszukiwania w kierunku • Przyjąć nowe rozwiązanie y* jako poszukiwane minimum w kierunku • Jeżeli nie osiągnięto zadanej dokładności obliczeń to powrócić do 1. • Idea metody • Dla problemów programowania wypukłego proces wyznaczania optimum przedstawiony w kroku trzecim sprowadza się do rozwiązania układu równań liniowych z symetryczną i dodatniookreśloną macierzą.

  15. Oznaczenia: Zmodyfikowana metoda Newtona - opis Szereg Taylora Forma kwadratowa: Minimum formy kwadratowej

  16. Klasa Newton class Newton // optimization method { protected: int n; // problem dimension double eps; // accuracy double *x; // solution double *d; // step double *grad; // gradient double **hes; // Hessian public: Newton(int nn,double e,double *sp=NULL); // dim, acc, st. point ~Newton(); // destructor virtualvoid gradient_and_hesjan(void)=0; // gradient & Hessian void Euler_method(); // linear problem void step(); // particular step void method(); // optimization procedure void show_solution(); // result of calculation };

  17. Metoda Newtona - funkcje składowe • Newton(int nn,double e,double *sp=NULL); • konstruktor: liczba zmiennych, test stopu, punkt startowy • sp=NULL – start z początku układu współrzędnych • ~Newton(); • destruktor • virtualvoid gradient_and_hesjan(void)=0; • czysta funkcja wirtualna, wyznacza gradient i hesjan w klasie pochodnej • void Euler_method(); • rozwiązuje układ równań z symetryczną i dodatnio określoną macierzą • void step(); • jeden krok metody optymalizacji • void method(); • procedura optymalizacji z testem stopu na długość gradientu • void show_solution(); • Wyniki obliczeń

  18. y1 k1 y0 x1 y2 k2 x2 Przykład 3 – z życia (woda) .. \test0.sln M = M1 + M2  min y1 + y2 = y0 x1 = x2 y1 + y2 = y0 Program woda1.cpp

  19. Program Symulacja – klasa ‘network’ class network { protected: int n_arcs;// number of arcs int n_nodes;// number of nodes int n_pumping_st;// number of pumping stations int n_consumers;// number of water consumers int n_reduced;// dimension of the reduced problem n_pipe *pipes;// pipes node *nodes;// nodes pumping_station *p_stations;// pumping stations public: network(int na=10,int nn=11,int np=1);// constructor ~network();// destructor void ini_streams0(char *str0);// setting reduced problem void parameters(pump_parameters *ip, int *nm,int (*str)[2],double *res,double *needs,double *altitudes,char *str0,char *top0); void output_p(double *o_p);// output from pumping stations void flows_in_network();// the full flow in network void preassures_in_pumping_stations();// minimal pressures network &operator!(void);// report on the screen void network_state(state *st);// show state of the network };

  20. Klasa ‘Simulation’ ../../Visual%20Studio%20Projects/woda2 • Dziedziczenie wielobazowe – publiczne • void gradient_and_hesjan(); - czysta funkcja wirtualna w klasie bazowej • Idea przykładu: problem + metoda = program obliczeniowy class Simulation:public network,public Newton { char *desc_gradient; // description of gradient char *desc_hesjan; // description of hesjan public: Simulation(int na,int nn,int np,double e,double *sp); ~Simulation(); void ini_gradient_and_hesjan(char *g,int dg,char *h,int dh); void gradient_and_hesjan(); };

More Related