Multiwariancja. Eksperyment obliczeniowy


Rozdział 4

ODMIANA

Konstrukcje konfiguracyjne, które zostały przeanalizowane w poprzednich rozdziałach, mogą być używane praktycznie wszędzie tam, gdzie wymagany jest rozwój dość złożonych programów. Zakres programowania alternatywnego, który zostanie omówiony w tym rozdziale, jest również bardzo szeroki. (Wystarczy przypomnieć sobie fragmenty, które dostrajają aplikację do danej platformy obliczeniowej - wielu prawdopodobnie musiało sobie z nimi poradzić.) Jednak względna waga manipulacji opcjami w całkowitej ilości pracy często nie jest tak zauważalna, dlatego potrzeba ich racjonalny projekt jest zdegradowany do tła.
Istnieje jednak ważna klasa problemów, dla których skuteczne dostarczanie wielowymiarowości jest absolutnie konieczne, a ponadto staje się głównym problemem organizowania programowania. Ta klasa zadań jest eksperymentem obliczeniowym.


4.1. Eksperyment obliczeniowy

Eksperyment obliczeniowy to metoda badania urządzeń lub procesów fizycznych za pomocą modelowania matematycznego. Zakłada on, że po skonstruowaniu modelu matematycznego przeprowadzane jest badanie numeryczne, które pozwala „zagrać” zachowanie badanego obiektu w różnych warunkach lub w różnych modyfikacjach [ Samara, 1979 ; Gorbunov Posad, 1990 ].
Badanie numeryczne modelu umożliwia określenie różnych charakterystyk procesów, optymalizację konstrukcji lub trybów pracy projektowanych urządzeń. Co więcej, zdarza się, że w trakcie eksperymentu obliczeniowego badacz niespodziewanie odkrywa nowe procesy i właściwości, o których wcześniej nic nie wiedział.

4.1.1. Zakres zastosowania. Eksperyment obliczeniowy jest pośredni między eksperymentem na pełną skalę a badaniem analitycznym.
Eksperyment w pełnej skali (fizyczny), z odpowiednim sformułowaniem, może, ogólnie mówiąc, dostarczać wyczerpujących i wiarygodnych wyników. Jednak w wielu przypadkach preferuje się eksperyment obliczeniowy.
Faktem jest, że w eksperymencie obliczeniowym rola instalacji eksperymentalnej nie jest konkretnym urządzeniem fizycznym, lecz programem. Jego konstrukcja i późniejsze modyfikacje z reguły wymagają znacznie mniejszych kosztów niż podobne manipulacje na rzeczywistym obiekcie.
Ponadto w zakładzie pilotażowym często niemożliwe jest odtworzenie niektórych krytycznych trybów lub ekstremalnych warunków. Dlatego modelowanie matematyczne może być prawie jedynym możliwym sposobem badań.
W podejściu analitycznym , podobnie jak w eksperymencie obliczeniowym, konstruowany jest model matematyczny. Ale ten model jest badany wyłącznie za pomocą obliczeń analitycznych, bez użycia jakichkolwiek metod numerycznych. Jeśli obliczenia analityczne są wystarczające, to podejście prowadzi do rygorystycznego dokładnego rozwiązania.
W praktyce jednak, paradoksalnie, podejście analityczne odgrywa zazwyczaj rolę narzędzia do (względnie szybkiego) uzyskiwania przybliżonych szacunków. Tłumaczy to fakt, że możliwe jest ograniczenie się do obliczeń analitycznych tylko dla prostych, silnie uproszczonych modeli rzeczywistych procesów. Rygorystyczne rozwiązanie analityczne uzyskane tutaj, w rzeczywistości, ze względu na początkową grubość modelu, okazuje się być bardzo dalekie od doskonałości. Wręcz przeciwnie, metody numeryczne stosowane w eksperymencie obliczeniowym umożliwiają badanie bardziej złożonych modeli, które wystarczająco i dokładnie odzwierciedlają badane procesy.
Odnotowane zalety eksperymentu obliczeniowego zaliczają go do głównych metod badania tak dużych problemów fizycznych i inżynieryjnych, jak energia jądrowa, eksploracja przestrzeni kosmicznej itp. Pakiety oprogramowania służące eksperymentowi obliczeniowemu są obszerne i złożone, a ich tworzenie zajmuje duża liczba programistów. Dlatego szczególnie ważne jest zbadanie powstających tu konfiguracji konfiguracyjnych, które, jak wynika z dalszej dyskusji, są stale w centrum uwagi uczestników tego rodzaju rozwoju.

4.1.2. Cykl eksperymentu obliczeniowego. Następujące kroki można wyróżnić w cyklu eksperymentu obliczeniowego (rys. 4.1).



Rys. 4.1. Etapy eksperymentu obliczeniowego

Etch 1. Budowa modelu matematycznego (opracowanie równań opisujących badane zjawisko).
Jest to wybór metod obliczeń numerycznych (konstrukcja modelu dyskretnego, który przybliża pierwotny problem matematyczny, konstrukcja schematu różnicowego, opracowanie algorytmu obliczeniowego itp.).
To jest 3. 3. Tworzenie programu, który implementuje algorytm obliczeniowy.
Ph. 4. Obliczenia i przetwarzanie otrzymanych informacji.
Faza 5. Analiza wyników obliczeń, porównanie (jeśli to możliwe) z eksperymentem na pełną skalę.

Zazwyczaj na ostatnim (piątym) etapie badacz dochodzi do wniosku, że konieczne jest wprowadzenie pewnych zmian w decyzjach podjętych na etapach 1, 2 lub 3.
Może się więc okazać, że skonstruowany model nie odzwierciedla wystarczająco dobrze cech badanego zjawiska. W tym przypadku model jest dostosowywany, wprowadzane są odpowiednie zmiany do metod numerycznych i wdrażających je programów, a także wykonywane są nowe obliczenia. Tak więc cykl eksperymentu obliczeniowego jest odtwarzany w całości.
Analizując wyniki, można zidentyfikować wszelkie niedociągnięcia zastosowanych metod numerycznych, odnoszące się w szczególności do kwestii dokładności lub wydajności. Zmiana metod pociąga za sobą zmianę odpowiednich programów itp. Innymi słowy, cykl powtarza się w nieco skróconej formie (kroki 2–5).
Wreszcie niektóre rozwiązania programowe mogą zawieść, na przykład wybrany sposób pracy z pamięcią zewnętrzną. Zmiana takich decyzji spowoduje powtórzenie kroków 3–5.

4.1.3. Cechy programowania. Oczywiście cykle podobne do cyklu eksperymentu obliczeniowego występują w prawie każdym mniej lub bardziej złożonym projekcie oprogramowania. Pierwsza wersja programu zwykle nie satysfakcjonuje dewelopera ani klienta i musisz wyjaśnić stwierdzenie problemu, ulepszyć poszczególne algorytmy itp. Jednak w większości przypadków wystarczy wykonać kilka cykli, które wymagają stosunkowo niewielkiego wysiłku, a program przybiera pożądany wygląd.
Sytuacja jest zupełnie inna w eksperymencie obliczeniowym. Tutaj program jest pomyślany jako konfiguracja eksperymentalna, od pierwszych eksperymentów, z którymi trudno się spodziewać interesujących wyników. Dane z pierwszych eksperymentów posłużą jedynie jako punkt wyjścia do długiego procesu zmian i ulepszeń instalacji, które same w sobie mogą prowadzić do rozsądnych wniosków na temat badanego obiektu.
Zatem pojawienie się pierwotnej wersji programu tylko w najbardziej ogólnych kategoriach określa kierunek badań. Główna praca nad programowaniem jest nadal w toku - wiąże się z wieloma modyfikacjami programu, odzwierciedlającymi ewolucję modelu matematycznego i jego metod obliczeniowych. Liczba cykli eksperymentu obliczeniowego, z których każdy związany jest z modyfikacją programu obliczeniowego, często sięga dziesiątek tysięcy. Dlatego racjonalna organizacja takich modyfikacji jest kluczem do skutecznego programowania tej klasy problemów.
Kontynuując równolegle z eksperymentem na pełną skalę, można zauważyć, że zwykle nie spieszy się z rzuceniem pojedynczych węzłów usuniętych lub zastąpionych w konfiguracji eksperymentalnej podczas przeprowadzania następnego eksperymentu: mogą one być przydatne ponownie i później. Podobnie rozwiązania (i wraz z nimi odpowiednie fragmenty programu), poddane przeglądowi w następnym cyklu eksperymentu obliczeniowego, z reguły nie są odrzucane i mogą być następnie wykorzystane do innych obliczeń. Na przykład metoda, która okazała się nieodpowiednia dla jednego modelu, może być odpowiednia do obliczenia następnego modelu i tak dalej.
Tak więc główną działalnością programisty biorącego udział w eksperymencie obliczeniowym nie jest tworzenie nowych programów, ale rozwój istniejących programów. Rozwój ten odbywa się, co do zasady, nie poprzez zastąpienie istniejących modułów bardziej zaawansowanymi wersjami, ale poprzez rozszerzenie : włączenie do programu finansowania coraz większej liczby nowych modułów odzwierciedlających różne decyzje podejmowane podczas eksperymentu.
Zgromadzone moduły można następnie łączyć w szeroką gamę kombinacji, co pozwala na dość systematyczne i dogłębne badanie. Potrzeba takich manipulacji nad modułami wynika regularnie z faktu, że badacz nieustannie konstruuje nowe wersje modelu, łącząc pewne zmiany lub udoskonalenia, które kiedykolwiek zostały przeprowadzone. Zatem wielowymiarowość programów eksperymentów obliczeniowych, które nas interesują, jest logiczną konsekwencją początkowej wielowymiarowości modelu.
Złożoność zaimplementowanych modeli matematycznych, a także konieczność przechowywania wielu wariantów wariantów, prowadzą do tego, że charakterystyczne wymiary pakietu oprogramowania eksperymentu obliczeniowego są całkiem imponujące. Liczba modułów biorących udział w obliczeniach często sięga kilku tysięcy, a całkowita długość tekstów programu to setki tysięcy linii.
Bardzo trudno jest zorganizować skuteczne funkcjonowanie i rozwój tak obszernego, złożonego i specyficznego zarządzania oprogramowaniem. Niemniej jednak życie pokazało, że wszystkie pojawiające się trudności są dość trudne do pokonania - wiele ważnych problemów praktycznych udało się rozwiązać metodą eksperymentu obliczeniowego. Historia programowania eksperymentu obliczeniowego ma ponad trzy dekady, aw tym czasie zgromadził bardzo znaczące doświadczenie, pozwalające mówić o istnieniu pewnej technologii pracy z programami wielowymiarowymi. Ta technologia okazała się dość niezawodna i wydajna; właśnie jakość zastosowanej technologii wyjaśnia odporność znanych implementacji oprogramowania eksperymentu obliczeniowego.
W zadaniach eksperymentu obliczeniowego prawie wszystkie specyficzne cechy programów wielowymiarowych są w pełni widoczne. Jednocześnie eksperyment obliczeniowy jest największym konsumentem technologii wielowariantowej. Dlatego wyrażenia „programowanie problemów z eksperymentami obliczeniowymi” i „tworzenie programów wielowymiarowych” będą czasami używane jako synonimy.