26 kwietnia 2024


Przeglądam na bieżąco strony internetowe dedykowane systemom CAD. Na jednym z blogów znalazłem opis problemu z takim komentarzem: „I to jest właśnie piękno CATII – już dawno przestałem myśleć, że się czegoś nie da zrobić – po prostu prawdopodobnie nie znam na to jeszcze odpowiedniej metody.”

Andrzej Wełyczko

Problem polegał na znalezieniu takiego punktu zadanej krzywej, w którym promień krzywizny jest najmniejszy. Zadanie wydaje się trywialne, ale... w systemie CATIA V5 nie ma polecenia, które wyznacza taki punkt. Za pomocą odpowiedniej formuły obliczeniowej można zdefiniować wartość minimalnego promienia krzywizny wskazanej krzywej (Rys. 1) – tu parametr MinCurvRadius = minimumCurvatureRadius(‘Geometrical Set.1\MyCurve‘) dla krzywej MyCurve. Za pomocą polecenia Porcupine Curvature Analysis można otrzymać rozkład krzywizny lub promienia krzywizny tej krzywej w każdym jej punkcie, ale nie można zdefiniować punktu z minimalnym promieniem krzywizny.

definicja punktu krzywej
Rys. 1

Można oczywiście pokornie przyjąć do wiadomości taki „brak” i zapomnieć o problemie lub zastanowić się nad opracowaniem metody, która rozwiąże problem. Pierwszym i trochę prymitywnym rozwiązaniem może być metoda iteracyjna, w której położenie poszukiwanego punktu jest ustalone „ręcznie”. Dla dowolnego punktu XPoint krzywej MyCurve za pomocą odpowiedniej formuły obliczeniowej można określić promień krzywizny w tym punkcie (Rys. 2): XPointRadius = 1mm/curvature(‘Geometrical Set.1\MyCurve‘, ‘Geometrical Set.1\XPoint‘).

Rys02
Rys. 2

Zadanie polega na znalezieniu takiej wartości współrzędnej Ratio punktu XPoint, dla której wartości parametrów xPointRadius i MinCurvRadius są równe. Po wykonaniu polecenia Porcupine Curvature Analysis wiemy przecież w jakiej części analizowanej krzywej znajduje się poszukiwany punkt (tu wstępnie ustalono Ratio = 0,22), a potem z małym krokiem (na przykład Step = 0,0001) ustalić taką wartość parametru Ratio, dla której parametry MinCurvRadius i xPointRadius mają równe wartości (Rys. 3).

Rys03
Rys. 3

Nic trudnego, ale czy nie można byłoby „zmusić” CATII do tego, aby taki punkt był wyznaczony automatycznie?

Poszukiwanie punktu krzywej z minimalnym promieniem krzywizny jest typowym zadaniem optymalizacyjnym i dlatego kolejna metoda korzysta z możliwości jakie daje polecenie Optimization w środowisku Product Engineering Optimizer (Rys. 4).

Rys04
Rys. 4

Definicja zadania optymalizacyjnego jest w tym przypadku bardzo oczywista:

  • Funkcja celu: minimalizacja wartości parametru xPointRadius. Uwaga: Możliwe jest zdefiniowanie parametru pomocniczego Delta, którego wartość będzie obliczona za pomocą formuły: Delta = 1mm/curvature(‘Geometrical Set.1\MyCurve‘ ,‘Geometrical Set.1\XPoint‘) – minimumCurvatureRadius(‘Geometrical Set.1\MyCurve‘). W takim przypadku zadanie optymalizacyjne polega na znalezieniu takiej wartości parametru swobodnego, dla którego Delta = 0mm, czyli Optimization type: Target Value, Optimized parameter: Delta oraz Target value = 0mm.
  • Parametr swobodny: współrzędna Ratio punktu xPoint.

Zaleca się ustalenie dozwolonego zakresu wartości dla parametrów swobodnych, aby uniknąć poszukiwania rozwiązania optymalnego dla wartości generujących rozwiązania nielogiczne z konstrukcyjnego punktu widzenia. Z tego powodu dla parametru Ratio ustalono Inf. Range = 0 i Sup. Range = 1.
Mniej oczywisty jest wybór algorytmu optymalizacji oraz kryteriów zakończenia obliczeń. Spośród pięciu dostępnych algorytmów (Rys. 5) w tym przypadku należy rozważyć zastosowanie jednego z dwóch: Gradient Algorithm Without Constraints oraz Simulated Annealing Algorithm.

Rys05
Rys. 5

Pozostałe algorytmy są dedykowane do rozwiązywania zadań optymalizacyjnych, w których zdefiniowano dodatkowe ograniczenia (Constraints), czyli zależności pomiędzy parametrami swobodnymi.
Simulated Annealing Algorithm poszukuje rozwiązania optymalnego w całej przestrzeni wyznaczonej przez parametry swobodne, a obliczenia są zakończone dopiero wtedy, gdy jedno z kryteriów zatrzymania optymalizacji zostanie spełnione. Obliczenia metodą Gradient Algorithm Without Constraints są zakończone po znalezieniu optimum lokalnego, niezależnie od tego, czy kryteria zatrzymania optymalizacji są spełnione czy nie. Dla krzywej z jednym ekstremum zastosowanie dowolnego z tych dwóch algorytmów kończy się wyznaczeniem szukanego minimum. Na przykład dla Gradient Algorithm Without Constraints punkt z minimalnym promieniem krzywizny zostaje znaleziony dla domyślnych kryteriów zakończenia obliczeń (Rys. 6).

Rys06 bRys. 6

Nie muszę chyba dodawać, że parametr MinCurvRadius oraz analiza Porcupine Curvature Analysis.1 nie są konieczne do wykonania zadania optymalizacyjnego, czyli znalezienia punktu krzywej z minimalnym promieniem krzywizny. Zostały one zdefiniowane po to, aby mieć możliwość porównania z wynikami optymalizacji.



Problem wyznaczenia punktu z minimalnym promieniem krzywizny staje się znacznie trudniejszy dla krzywej, która ma więcej niż jedno minimum lokalne. W takim przypadku (z powodów opisanych wcześniej) należy wybrać Simulated Annealing Algorithm, ale dla relatywnie niskich wartości parametrów zatrzymania obliczeń (Termination criteria) nie ma gwarancji, że system znajdzie minimum globalne (Rys. 7).

Rys07 b

Jeśli system znalazł optimum lokalne, to optymalizację należy powtórzyć, ale tym razem dla innych kryteriów zatrzymania obliczeń. Nie ma uniwersalnych zaleceń dotyczących wartości parametrów Maximum numer of updates i Consecutive updates without improvements, bo te mogę być inne dla różnych modeli geometrycznych i rodzajów zadań optymalizacyjnych. Trzeba jednak ustalić wartości tych parametrów na takim poziomie, aby Simulated Annealing Algorithm miał szansę upewnić się, że znalezione optimum jest wyznaczone dokładnie, a także sprawdzić czy jest to optimum globalne. Z tego powodu powtórne obliczenia optymalizacyjne wykonano dla znacznie większej wartości parametru Maximum numer of updates (Rys. 8).

Rys08 b
Rys. 8

Sprawdzanie wartości parametru Consecutive updates without improvements zostało wyłączone.
Wyznaczanie punktu z minimalnym promieniem krzywizny za pomocą polecenia Optimization nie jest niestety metodą uniwersalną. Na przykład dla krzywej pokazanej na rysunku 9 zastosowanie metody opisanej powyżej nie zakończyło się pomyślnie. Większe wartości parametrów definiujących kryteria zakończenia optymalizacji z pewnością umożliwią znalezienie poprawnego rozwiązania, ale wtedy czas obliczeń byłby zbyt duży. Takie rozwiązanie może być zaakceptowane tylko w przypadku, gdy poszukiwanie optimum jest realizowane interaktywnie przez użytkownika, bo w takim przypadku można zawęzić obszar poszukiwań do zakresu określonego wstępnie po wykonaniu Porcupine Curvature Analysis.
Jeśli w systemie CATIA V5 nie ma polecenia, które generuje na zadanej krzywej punkt z minimalnym promieniem krzywizny, to jest zupełnie naturalne, że poszukujemy metody uniwersalnej, która wypełni tę „lukę”.

Rys09 b
Rys. 9

Uniwersalnej, czyli takiej, która gwarantuje znalezienie szukanego optimum relatywnie szybko oraz niezależnie od kształtu i wielkości krzywej, a najlepiej takiej, którą można zapamiętać i ponownie zastosować (na przykład jako szablon konstrukcyjny typu PowerCopy lub User Feature).
Szach mat? Nie byłbym sobą gdybym zaczął omawiać problem, na który nie ma rozwiązania (patrz cytat we wstępie). Szczegóły w kolejnym odcinku...

Andrzej Wełyczko


artykuł pochodzi z wydania 12 (111) grudzień 2016