Proces modelowania matematycznego

Charakterystyczną cechą tworzonych obecnie modeli matematycznych jest ich złożoność, wynikająca ze złożoności modelowanych obiektów. Prowadzi to do powstawania coraz bardziej skomplikowanych modeli oraz do potrzeby jednoczesnego wykorzystywania kilku teorii z różnych dziedzin wiedzy, a także zastosowania nowoczesnych metod obliczeniowych i technologii komputerowej do uzyskiwania i analizowania wyników symulacji. W przypadku obiektów złożonych zazwyczaj nie jest możliwe spełnienie wszystkich wymagań w ramach jednego modelu. Konieczne jest wówczas stworzenie całego spektrum modeli tego samego obiektu (w niektórych przypadkach — hierarchicznego zestawu modeli „zagnieżdżonych”), z których każdy jest najlepiej przystosowany do rozwiązania przypisanych mu konkretnych zadań.

Konieczność budowy modeli na dużą skalę wymaga opracowania zestawu zasad i podejść, które pozwolą zmniejszyć koszty tworzenia modeli oraz ograniczyć prawdopodobieństwo błędów trudnych do usunięcia na późniejszym etapie. Taki zestaw zasad można nazwać technologią tworzenia modeli matematycznych.

Proces budowy każdego modelu matematycznego można przedstawić jako sekwencję etapów:

  1. Badanie modelowanego obiektu i przygotowanie założeń projektowych do budowy modelu (merytoryczne sformułowanie problemu);
  2. Koncepcyjne i matematyczne sformułowanie problemu;
  3. Analiza kwalitatywna i weryfikacja poprawności modelu;
  4. Wybór i uzasadnienie metod rozwiązania;
  5. Uzyskanie rozwiązania;
  6. Opracowanie algorytmu rozwiązania i zbadanie jego właściwości; implementacja algorytmu w postaci oprogramowania;
  7. Walidacja modelu;
  8. Praktyczne zastosowanie opracowanego modelu.

Modele matematyczne — zwłaszcza te wykorzystujące metody numeryczne i technologię komputerową — wymagają znacznych zasobów intelektualnych, finansowych i czasowych do ich zbudowania. Z tego powodu decyzję o opracowaniu nowego modelu podejmuje się tylko wtedy, gdy nie istnieją prostsze sposoby rozwiązania danych problemów (na przykład poprzez modyfikację istniejącego modelu).

Potrzeba stworzenia nowego modelu może wynikać z prowadzonych badań naukowych, zwłaszcza na styku różnych dziedzin wiedzy. Po podjęciu decyzji o budowie nowego modelu matematycznego zamawiający poszukuje zespołu do wykonania tego zadania. Zazwyczaj w skład zespołu projektowego wchodzą specjaliści o różnym profilu: matematycy stosowani, eksperci dziedzinowi doskonale znający modelowany obiekt oraz programiści. Po potwierdzeniu decyzji o budowie modelu i utworzeniu zespołu projektowego zaczyna się etap badania obiektu. Głównym celem tego etapu jest przygotowanie merytorycznego sformułowania problemu modelowania. Merytoryczne sformułowanie problemu to lista kluczowych pytań dotyczących obiektu modelowania, wyrażonych zwykłym językiem, na które zamawiający chce uzyskać odpowiedź.

Przygotowanie listy pytań, na które nowy model powinien odpowiadać, samo w sobie jest często istotnym problemem, wymagającym specjalistów o specyficznej wiedzy i umiejętnościach. Muszą oni nie tylko dobrze rozumieć dziedzinę przedmiotową modelowania i znać możliwości współczesnej matematyki obliczeniowej oraz technologii komputerowej, ale również umieć komunikować się z ludźmi — aby wydobyć od praktyków, którzy intuicyjnie „czują” obiekt modelowania i niuanse jego zachowania, potrzebne informacje. Do takich specjalistów należą na przykład analitycy systemowi, inżynierowie systemów oraz specjaliści z zakresu badań operacyjnych.

Na podstawie analizy wszystkich zebranych informacji osoba formułująca problem musi określić wymagania dla przyszłego modelu tak, aby z jednej strony spełniały one oczekiwania zamawiającego, a z drugiej — pozwalały na realizację modelu w zadanym terminie i budżecie. Analitycy systemowi (lub specjaliści z zakresu badań operacyjnych) muszą umieć, z dużej ilości słabo ustrukturyzowanych i zróżnicowanych informacji o obiekcie modelowania oraz z różnorodnych, niejasno wyrażonych życzeń i wymagań zamawiającego, wydobyć to, co istotne i faktycznie możliwe do zrealizowania.

Na podstawie zebranych informacji o obiekcie modelowania analityk systemowy (inżynier, specjalista z zakresu badań operacyjnych), wspólnie z zamawiającym, formułuje merytoryczne sformułowanie problemu, które zwykle nie jest ostateczne i może być doprecyzowywane i rozwijane w trakcie tworzenia modelu. Jednakże wszystkie późniejsze poprawki i zmiany w sformułowaniu merytorycznym powinny mieć charakter drobny, niefundamentalny.

Cały materiał zebrany podczas badania obiektu — nagromadzona wiedza o obiekcie, merytoryczne sformułowanie problemu, dodatkowe wymagania dotyczące implementacji modelu i prezentacji wyników — dokumentowany jest w formie założeń projektowych do projektowania i budowy modelu. Założenia projektowe stanowią dokument końcowy etapu badania obiektu. Im pełniejsze informacje o obiekcie zebrano podczas badania, tym jaśniej można sformułować problem merytoryczny, tym pełniej można uwzględnić zgromadzone doświadczenie i wiedzę oraz tym więcej trudności na kolejnych etapach tworzenia modelu można uniknąć.

W przeciwieństwie do sformułowania merytorycznego, sformułowanie koncepcyjne problemu modelowania jest zwykle przygotowywane przez członków zespołu projektowego bez udziału przedstawicieli zamawiającego, na podstawie założeń projektowych opracowanych na poprzednim etapie oraz z wykorzystaniem dostępnej wiedzy o obiekcie modelowania i wymagań dotyczących przyszłego modelu. Analiza i wspólna dyskusja wszystkich dostępnych informacji o obiekcie modelowania przez członków zespołu pozwala na utworzenie modelu koncepcyjnego obiektu — syntezy modeli poznawczych opracowanych przez każdego członka zespołu.

Koncepcyjne sformułowanie problemu modelowania to lista kluczowych pytań interesujących zamawiającego, wyrażonych w terminach konkretnych dyscyplin, wraz z zestawem hipotez dotyczących właściwości i zachowania obiektu modelowania.

Największe trudności w formułowaniu koncepcyjnego sformułowania problemu pojawiają się w modelach znajdujących się na styku różnych dyscyplin. Różnice w tradycjach, pojęciach i językach używanych do opisu tych samych obiektów stanowią bardzo poważne przeszkody w tworzeniu modeli interdyscyplinarnych.

Zakończone sformułowanie koncepcyjne umożliwia opracowanie matematycznego sformułowania problemu modelowania, które obejmuje zestaw relacji matematycznych opisujących zachowanie i właściwości obiektu modelowania.

Matematyczne sformułowanie problemu modelowania to zestaw relacji matematycznych opisujących zachowanie i właściwości obiektu modelowania.

Model matematyczny uznaje się za poprawny, jeśli wszystkie kontrole weryfikacyjne przyniosły wynik pozytywny: analiza wymiarowa, sprawdzenie rzędów wielkości, sprawdzenie charakteru zależności, analiza przypadków granicznych, warunki brzegowe, sens fizyczny i domkniętość matematyczna. Sformułowanie matematyczne jest jeszcze bardziej abstrakcyjne niż koncepcyjne, ponieważ sprowadza pierwotny problem do problemu czysto matematycznego, dla którego istnieją dobrze opracowane metody rozwiązania.

Wszystkie metody rozwiązywania problemów stanowiących „jądro” modeli matematycznych można podzielić na analityczne i algorytmiczne (numeryczne).

Należy zauważyć, że gdy do uzyskania wyników liczbowych stosuje się rozwiązania analityczne, często konieczne jest również opracowanie odpowiednich algorytmów implementowanych na komputerach.

Jednakże wyjściowe rozwiązanie w tym przypadku ma postać wyrażenia analitycznego (lub zestawu wyrażeń). Rozwiązania oparte na metodach algorytmicznych, w przeciwieństwie do tego, są zasadniczo nieredukowalne do dokładnych rozwiązań analitycznych danego problemu.

Wybór konkretnej metody badawczej w dużej mierze zależy od kwalifikacji i doświadczenia członków zespołu projektowego. Metody analityczne są bardziej wygodne przy dalszej analizie wyników, lecz mają zastosowanie tylko do względnie prostych modeli. Jeśli problem matematyczny (nawet w uproszczonym sformułowaniu) dopuszcza rozwiązanie analityczne, to takie rozwiązanie jest bez wątpienia preferowane w stosunku do rozwiązania numerycznego.

Metody algorytmiczne sprowadzają problem do algorytmu wykonującego eksperyment obliczeniowy przy użyciu technologii komputerowej. Dokładność modelowania w takim eksperymencie zależy w decydującym stopniu od wybranej metody i jej parametrów. Metody algorytmiczne są zazwyczaj bardziej pracochłonne w implementacji i wymagają od członków zespołu projektowego dobrej znajomości matematyki obliczeniowej, obszernej biblioteki specjalistycznego oprogramowania oraz mocnych zasobów obliczeniowych.

Metody numeryczne mają zastosowanie tylko do dobrze postawionych problemów matematycznych, co znacząco ogranicza ich wykorzystanie w modelowaniu matematycznym. Wspólną cechą wszystkich metod numerycznych jest sprowadzenie problemu matematycznego do problemu skończeniewymiarowego. Osiąga się to najczęściej poprzez dyskretyzację pierwotnego problemu — czyli zastąpienie funkcji zmiennej ciągłej funkcjami zmiennej dyskretnej. Zastosowanie każdej metody numerycznej nieuchronnie wprowadza błąd do wyników. Można wyróżnić trzy główne składowe błędu powstającego przy numerycznym rozwiązywaniu problemu wyjściowego: błąd nieusuwalny, związany z niedokładnym określeniem danych wejściowych (warunki początkowe i brzegowe, współczynniki równań i wyrazy prawej strony); błąd dyskretyzacji, związany z przejściem do dyskretnego analogu problemu wyjściowego; oraz błąd zaokrąglenia, związany ze skończoną precyzją liczb reprezentowanych w komputerze.

Naturalnym wymogiem dla każdego konkretnego algorytmu obliczeniowego jest zgodność rzędów wielkości tych trzech typów błędów.

Metoda numeryczna, czyli przybliżona, jest zawsze realizowana jako algorytm obliczeniowy. Dlatego wszystkie wymagania stawiane algorytmom w ogólności odnoszą się także do algorytmów obliczeniowych. Przede wszystkim algorytm musi być wykonalny — musi rozwiązywać problem w akceptowalnym czasie obliczeń. Ważną charakterystyką algorytmu jest jego dokładność — możliwość uzyskania rozwiązania problemu wyjściowego z zadaną precyzją w skończonej liczbie operacji.

Czas działania algorytmu zależy od liczby operacji wymaganych do osiągnięcia zadanej dokładności. Dla każdego problemu matematycznego zazwyczaj można zaproponować kilka algorytmów, które dają rozwiązanie o żądanej dokładności, ale przy różnej liczbie operacji. Algorytmy wymagające mniejszej liczby operacji do osiągnięcia tej samej dokładności nazywa się bardziej ekonomicznymi lub bardziej efektywnymi.

W trakcie wykonywania algorytmu obliczeniowego na każdym kroku obliczeniowym powstaje pewien błąd. Od kroku do kroku błąd ten może narastać lub nie narastać (a w niektórych przypadkach może nawet się zmniejszać). Jeśli błąd narasta nieograniczenie w trakcie obliczeń, algorytm nazywa się niestabilnym, czyli rozbieżnym. W przeciwnym razie algorytm nazywa się stabilnym, czyli zbieżnym.

Ogromna różnorodność metod numerycznych znacznie utrudnia wybór konkretnej metody w każdym konkretnym przypadku. Ponieważ do implementacji danego modelu można wykorzystać kilka alternatywnych metod algorytmicznych, wybór konkretnej metody dokonywany jest z uwzględnieniem tego, która z nich najlepiej odpowiada modelowi pod względem efektywności, stabilności i dokładności wyników, a także która jest najbardziej znana członkom zespołu projektowego.

W tworzeniu różnorodnych systemów oprogramowania wykorzystywanych do rozwiązywania szerokiego zakresu zadań badawczych, projektowo-inżynierskich i zarządczych, modele matematyczne stanowią obecnie podstawę. Rodzi to potrzebę implementacji modelu w postaci programu komputerowego. Proces tworzenia wiarygodnego i efektywnego oprogramowania jest nie mniej złożony niż wszystkie wcześniejsze etapy tworzenia modelu matematycznego. Skuteczne rozwiązanie tego zadania jest możliwe tylko przy pewnym opanowaniu współczesnych języków i technologii programowania, znajomości możliwości obliczeniowych, dostępnego oprogramowania oraz specyfiki implementacji metod matematyki obliczeniowej.

Proces tworzenia oprogramowania można podzielić na kilka etapów:

  • przygotowanie założeń projektowych do tworzenia oprogramowania;
  • projektowanie struktury systemu oprogramowania;
  • kodowanie algorytmu;
  • testowanie i debugowanie;
  • utrzymanie i eksploatacja.

Założenia projektowe do tworzenia oprogramowania dokumentowane są w formie specyfikacji. Na etapie projektowania kształtuje się ogólną strukturę systemu oprogramowania. Cały program dzieli się na moduły programowe. Dla każdego modułu formułuje się wymagania funkcjonalne i opracowuje algorytm realizujący te funkcje. Definiuje się schemat interakcji między modułami — znany jako diagram przepływu danych systemu oprogramowania. Opracowuje się plan testów oraz określa dane wejściowe do testowania poszczególnych modułów i całego systemu.

Większość programów realizujących modele matematyczne składa się z trzech głównych części:

  • preprocesora (przygotowanie i weryfikacja danych wejściowych modelu);
  • solvera (rozwiązywanie problemu, przeprowadzanie eksperymentu obliczeniowego);
  • postprocesora (wizualizacja i prezentacja wyników).

Należy przywiązywać dużą wagę do stosowania nowoczesnych technologii programowania. Celem każdej takiej technologii jest przede wszystkim zwiększenie wiarygodności oprogramowania i wzrost produktywności programistów. Im poważniejszy i większy jest projekt programistyczny, tym istotniejsze stają się kwestie zastosowania nowoczesnych technologii programowania. Zaniedbanie tych kwestii może prowadzić do znacznych przekroczeń terminów i zmniejszenia wiarygodności systemu oprogramowania.

Krytycznym czynnikiem zapewniającym wiarygodność i krótki czas opracowania systemu oprogramowania do rozwiązywania określonej klasy problemów jest dostępność dobrze rozwiniętej biblioteki wzajemnie kompatybilnych modułów programowych. Program jest bardziej wiarygodny i może zostać opracowany szybciej, gdy w największym możliwym stopniu wykorzystuje się standardowe komponenty programowe.

Adekwatność modelu matematycznego to stopień, w jakim wyniki uzyskane z opracowanego modelu odpowiadają danym eksperymentalnym lub wynikom problemu testowego (benchmarku).

Walidacja modelu realizuje dwa cele:

  • weryfikację słuszności zestawu hipotez sformułowanych na etapach koncepcyjnego i matematycznego sformułowania problemu. Do weryfikacji hipotez należy przystąpić tylko po sprawdzeniu metod rozwiązania oraz po przeprowadzeniu pełnego debugowania oprogramowania i usunięciu wszystkich błędów i konfliktów;
  • ustalenie, że dokładność wyników odpowiada dokładności określonej w założeniach projektowych.

Walidacja opracowanego modelu matematycznego jest przeprowadzana poprzez porównanie go z dostępnymi danymi eksperymentalnymi dotyczącymi rzeczywistego obiektu lub z wynikami innych, wcześniej opracowanych i dobrze zweryfikowanych modeli. W pierwszym przypadku mówi się o walidacji przez porównanie z eksperymentem, w drugim — o porównaniu z wynikami problemu testowego.

Kwestia dokładności modelowania zależy od wymagań stawianych modelowi oraz od jego przeznaczenia. Należy również uwzględnić dokładność wyników eksperymentalnych lub specyfikę sformułowań problemu testowego. Dla modeli przeznaczonych do obliczeń orientacyjnych i szacunkowych za zadowalającą uważa się dokładność 10–15%. Dla modeli stosowanych w systemach kontroli i monitorowania wymagana dokładność może wynosić 1–2% lub nawet więcej.

Gdy pojawiają się problemy z adekwatnością modelu, korektę należy zacząć od systematycznej analizy wszystkich możliwych przyczyn rozbieżności między wynikami modelowania i wynikami eksperymentalnymi. Najpierw należy zbadać model i ocenić jego stopień adekwatności dla różnych wartości parametrów zmiennych (warunki początkowe i brzegowe, parametry charakteryzujące właściwości modelowanych obiektów). Jeśli model jest nieadekwatny w zakresie parametrów interesującym badacza, można spróbować doprecyzować wartości stałych i parametrów początkowych modelu. Jeśli to również nie przynosi pozytywnych wyników, jedynym pozostałym sposobem ulepszenia modelu jest zmiana przyjętego systemu hipotez. Taka decyzja oznacza w praktyce powrót do drugiego etapu procesu tworzenia modelu i może wiązać się nie tylko z istotną zmianą sformułowania matematycznego, ale również metod rozwiązania (na przykład przejście z metod analitycznych na numeryczne), całkowitym przeprojektowaniem oprogramowania oraz nowym cyklem walidacji modelu. Z tego powodu decyzja o zmianie przyjętego systemu hipotez musi być dokładnie przemyślana i podjęta tylko wtedy, gdy wyczerpano wszystkie inne możliwości poprawy adekwatności modelu.

Modele opisowe mają na celu charakteryzowanie badanych parametrów danego zjawiska lub procesu, a także badanie wzorców zmian tych parametrów. Modele te mogą być wykorzystywane do badania właściwości i zachowania badanego obiektu przy różnych kombinacjach danych wejściowych i warunków działania; w budowie modeli optymalizacyjnych; oraz w budowie modeli symulacyjnych systemów złożonych.

Modele opracowywane do celów badawczych zazwyczaj nie są doprowadzane do poziomu systemów oprogramowania przeznaczonych do rozpowszechniania wśród użytkowników zewnętrznych. Ich okres istnienia jest zwykle ograniczony do czasu trwania programu badawczego w odpowiednim obszarze. Modele te charakteryzują się eksploracyjnym charakterem, wykorzystaniem nowych procedur i algorytmów obliczeniowych oraz nierozwiniętym interfejsem użytkownika.

Modele oraz systemy oprogramowania budowane na ich podstawie, przeznaczone do dalszego rozpowszechniania wśród użytkowników zewnętrznych lub do komercyjnego wydania, charakteryzują się dobrze rozwiniętym, przyjaznym dla użytkownika interfejsem oraz mocnymi preprocesorami i postprocesorami. Modele te są zazwyczaj oparte na sprawdzonych i dobrze ugruntowanych sformułowaniach i procedurach obliczeniowych. Należy jednak pamiętać, że takie modele są przeznaczone jedynie do rozwiązywania jasno określonej klasy problemów.

Niezależnie od przeznaczenia modelu, zespół programistyczny jest zobowiązany do przeprowadzenia zarówno analizy kwalitatywnej, jak i kwantytatywnej wyników modelowania.

Poprzez pracę z modelem twórcy stają się specjalistami w dziedzinie związanej z obiektem modelowania. Rozwijają wystarczająco głębokie zrozumienie właściwości obiektu i są w stanie przewidywać oraz wyjaśniać jego zachowanie.

Kompleksowa analiza wyników modelowania umożliwia zatem:

  • modyfikację rozpatrywanego obiektu, znalezienie jego optymalnych charakterystyk lub przynajmniej uwzględnienie jego zachowania i właściwości w najlepszy możliwy sposób;
  • wyznaczenie zakresu stosowalności modelu;
  • weryfikację słuszności hipotez przyjętych na etapie sformułowania matematycznego oraz ocenę możliwości uproszczenia modelu w celu zwiększenia jego efektywności przy zachowaniu wymaganej dokładności;
  • wskazanie kierunku dalszego rozwoju modelu.