Title: Programowanie obiektowe III rok EiT
1Programowanie obiektoweIII rok EiT
- dr inz. Jerzy Kotowski
- Wyklad XII
2Program wykladu
- Jezyk C
- Przyklad problemu
- Model matematyczny zadania symulacji
- Transformacja zadania do problemu statycznej
optymalizacji wypuklej bez ograniczen - Opis algorytmu rozwiazania zadania optymalizacji
metoda Newtona - Opis programu obliczeniowego
- Podstawy jezyka JAVA
- Klasówka
3Literatura
- 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 Research
(Vienna, Austria), 957-963. - Symfonia C, Jerzy Grebosz, Oficyna Kallimach,
Kraków 1999
4Przyklad problemu
Symulacja sieci wodociagowej
5Model matematyczny sieci wodociagowej
- Model matematyczny luku sieci prawo
Bernoulliego
6Model matematyczny sieci wodociagowej
- Prawa Kirchhoffa
- I prawo zachowania masy
- II prawo równania oczkowe
- Oznaczenia
- y?Rm wektor przeplywów w lukach
- x?Rm wektor spadków cisnien w lukach
- ??Rw wektor zapotrzebowan w wezlach
- A macierz incydencji, A A(w-1)xm, aij
0,1,-1 - B macierz oczkowa, B B(m-w1)xm, bij 0,1,-1
7Model matematyczny sieci wodociagowej - wlasnosci
- Uklad m algebraicznych równan nieliniowych z m
niewiadomymi
8Przyklad 1
- w 4 / 0 pompownia
- m 4
- m-w1 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
9Problem optymalizacji
- Idea (podstawy fizyki)Minimalizowac straty przy
spelnieniu warunku zachowania masy - Sformulowanie problemu dla przypadku sieci
transportowych
()
10Przyklad 2 z zycia (druty)
M M1 M2 ? min I1 I2 I0
I1I2 I0 I prawo K. U1-U20 II prawo
K. Ui RiIi, i1,2 Mi UiIi, i1,2
11Warunki Kuhna-Tuckera
- II prawo Kirchhoffa nie pojawilo sie przypadkiem.
- Prawo to mozna wyprowadzic jako pewna
transformacje warunków optymalnosci 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-Tuckerajezeli y jest optymalnym
rozwiazaniem zadania () to wtedy
12Warunki Kuhna-Tuckera dla zadania ()
/B
I prawo Kirchhoffa
Teoria grafów BAT0
II prawo Kirchhoffa
13Wniosek
- W celu symulacji cyfrowej rozplywów w nieliniowej
sieci transportowej (gaz, woda, etc.) mozna
zamiast rozwiazywania ukladu równan nieliniowych
typu I i II prawo Kirchhoffa rozwiazac problem
optymalizacji statycznej z wypukla funkcja celu
oraz z liniowymi ograniczeniami równosciowymi (I
prawo Kirchhoffa). - Problem optymalizacji mozna zredukowac.
- Idea redukcji polega na rozwiklaniu ograniczen
liniowych i dokonaniu odpowiednich podstawien w
funkcji celu. - Liczba zmiennych w problemie zredukowanym jest
równa liczbie oczek w sieci (metoda pradów
oczkowych) - Problem zredukowany jest wypuklym zadaniem
optymalizacji statycznej i moze byc rozwiazywany
z wykorzystaniem wielu metod optymalizacji
statycznej.
14Zmodyfikowana metoda Newtona
- Wlasnosci metody
- Sluzy do rozwiazywania zadan programowania
matematycznego bez ograniczen - Wymaga znajomosci gradientu i hesjanu
optymalizowanej funkcji celu - Schemat metody
- Rozwinac funkcji celu w otoczeniu biezacego
optimum y w szereg Taylora - Obciac rozwiniecie nalezy na trzecim skladniku
(forma kwadratowa) - Wyznaczyc minimum otrzymanej formy kwadratowej y
- Przyjac dy-y jako nowy kierunek poszukiwac dla
metody poszukiwania w kierunku - Przyjac nowe rozwiazanie y jako poszukiwane
minimum w kierunku - Jezeli nie osiagnieto zadanej dokladnosci
obliczen to powrócic do 1. - Idea metody
- Dla problemów programowania wypuklego proces
wyznaczania optimum przedstawiony w kroku trzecim
sprowadza sie do rozwiazania ukladu równan
liniowych z symetryczna i dodatniookreslona
macierza.
15Zmodyfikowana metoda Newtona - opis
Szereg Taylora
Forma kwadratowa
Minimum formy kwadratowej
16Klasa 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
spNULL) // dim, acc, st. point Newton()
// destructor virtual void
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
17Metoda Newtona - funkcje skladowe
- Newton(int nn, double e, double spNULL)
- konstruktor liczba zmiennych, test stopu, punkt
startowy - spNULL start z poczatku ukladu wspólrzednych
- Newton()
- destruktor
- virtual void gradient_and_hesjan(void)0
- czysta funkcja wirtualna, wyznacza gradient i
hesjan w klasie pochodnej - void Euler_method()
- rozwiazuje uklad równan z symetryczna i dodatnio
okreslona macierza - void step()
- jeden krok metody optymalizacji
- void method()
- procedura optymalizacji z testem stopu na dlugosc
gradientu - void show_solution()
- Wyniki obliczen
18Przyklad 3 z zycia (woda) .. \test0.sln
M M1 M2 ? min y1 y2 y0
x1 x2
y1 y2 y0
Program woda1.cpp
19Program 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
na10,int nn11,int np1) // 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
20Klasa Simulation ../../Visual20Studio20Project
s/woda2
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()
- Dziedziczenie wielobazowe publiczne
- void gradient_and_hesjan() - czysta funkcja
wirtualna w klasie bazowej - Idea przykladu problem metoda program
obliczeniowy