Autor: A. Aaniewski-Wołłk Creative Commons License:
MetNum: Lab 5
Attribution Share Alike
Metody Numeryczne: Instrukcja 5 Zadanie 2 Zdefiniuj wektor g i rozwiąż równanie sprzężone (zauważ że S jest
symetryczna).
Optymalizacja Adjoint
Zadanie 3 Zdefiniuj funkcjÄ™ calcgrad(int n, double * x, double *
Na dzisiejszych zajÄ™ciach dobierzemy wektor gruboÅ›ci elementów ¸ =thick,
lambda, double * grad). Skopiuj do niej zawartość funkcji mnożącejSMult
tak by ugięcie belki było jak najmniejsze. Jedynym elementem który zależy od
i zmień:
¸ jest macierz sztywnoÅ›ci:
r[f&] += x[`&]*pow(thick[c&],gamma)*e&;
na:
S(¸)x = F
grad[c&] += gamma*pow(thick[c&],gamma-1)*lambda[f&]*x[`&]*e&;
A dokładniej: macierz sztywności jest sumą macierzy elementów przemnożo- Wyświetl tak policzony gradient. Pamiętaj, że gradient ma taką samą długość
nych przez elementy ¸. Dla pózniejszej poprawy zbieżnoÅ›ci doÅ‚ożymy potÄ™gÄ™ jak thick, czyli mx*my. PamiÄ™taj także by wyzerować grad i wyciąć część
ł = 3 do tej zależności: murującą stopnie swobody.
Å‚
S(¸) = ¸kKk
i
1 Optymalizacja
Będziemy chcieli zoptymalizować przesunięcie węzła w którym przyłożyliśmy
siłę. Stwórzmy wektor g, który ma -1 w miejscu tego przemieszczenia, a resztę
Gradient wskazuje nam w jakim kierunku powinniśmy przesuwać nasze wartości
wartości ma zerową. Teraz nasza funkcja celu to J = - x, g . Potraktujmy na-
parametrów by uzyskać lepszy wynik. Pierwszym nasuwającym się schematem
sze równanie statyki jako więz i rozpiszmy funkcję celu powiększoną o mnożniki
postępowania byłoby:
Lagrange:
thick[i] += grad[i];
- xigi + j( Sji(¸)xi - Fj)
Zadanie 4 Dodaj gradient do parametrówthick[i] += grad[i];. Iteruj taką
i j i
procedurÄ™, oglÄ…dajÄ…c wyniki.
Optymalne rozwiÄ…zanie powinno zerować pochodne po x, i ¸:
Å„Å‚ Tak ustawiony problem optymalizacyjny jest nieograniczony. Chcemy jednak
ôÅ‚-gi + jSji(¸) = 0
uzyskać najmniejsze ugięcie przy ustalonej masie belki. Tzn: chcemy zacho-
òÅ‚ j
Sji(¸)xi - Fj = 0 wać sumÄ™ parametrów ¸: thick[i]=frac*mx*my. Możemy Å‚atwo naÅ‚ożyć
i i
ôÅ‚
ół
"
ten więz nagrad:
j "¸k Sji(¸)xi = 0
ij
Zadanie 5 Odejmij od wektoragradjego sumÄ™.
Drugie równanie to nasze równanie statyki. Pierwsze równanie to równanie
sprzężone (adjoint):
W kolejnych iteracjach grad ma różną skalę. Na początku jest duży, a pózniej
ST (¸) = g
mały. Typową techniką w takich wypadkach jest normalizacja:
Trzecie równanie to równanie ma gradient funkcji celu względem parametrów:
Zadanie 6 Zdefiniuj zmiennąmove = 0.05. Podzielgradprzez jego najwięk-
d "
Å‚
k
szy element i pomnóż przezmove*5.
J = j Sji(¸)xi = Å‚¸k-1 Kji(¸)jxi
d¸k ij "¸k
ij
Na nasz projekt musimy jednak narzucić bardziej istotne warunki. Po pierw-
sze nigdzie grubość nie może przekroczyć 1, i musi być powyżej 0. Ponadto
Zadanie 1 Wprowadz w funkcji mnożącej przez macierz sztywnościSMultpa-
zazwyczaj chcemy, by zmiana w pojedynczej iteracji nie przekroczyłamove. Te
rametr Å‚ (gamma) i ustaw go na 3. Zdefiniuj zmiennÄ… frac = 0.5 i ustaw
warunki dość trudno pogodzić z warunkiem stałej sumy elementów.
poczÄ…tkowe ¸ (thick) na równefrac.
Wydział Mechaniczny Energetyki i Lotnictwa, Politechnika Warszawska 1
Autor: A. Aaniewski-Wołłk Creative Commons License:
MetNum: Lab 5
Attribution Share Alike
Zadanie 7 Wynik dodania gradientu do parametrów wstaw do nowego wek-
tora nt[i] = thick[i] + grad[i];. Dla danego parametru scale oblicz
thick[i] = scale * nt[i];. Na tak obliczonethicknarzuć powyżej opisane
4 warunki, obcinając za duże, bądz za małe wartości.
Zadanie 8 Zsumuj wartościthickpo poprzedniej procedurze. Dobierzscale
metodÄ… bisekcji tak by thick[i]=frac*mx*my.
i
Zadanie 9 Przetestuj program dla różnych obciążeń, ustawień parametrumove
i ustawień maksymalnej liczby iteracji w metodze gradientów sprzężonych.
Wydział Mechaniczny Energetyki i Lotnictwa, Politechnika Warszawska 2
Wyszukiwarka
Podobne podstrony:
zadanie 7 p lab7upII lab7ucyf lab7 09 przykladlab7(1)lab7 8Rafał Polak 12k2 lab7Lab7 miejsce 0 ReadMelab7lab7 lpcLab7lab7 funkcje sklejaneLab7 KWW TOPCAMAK Lab7sprawozdanie programowanie lab7 fin2lab7lab7więcej podobnych podstron