1. 서 론
유한요소법을 이용한 위상최적설계 기법은 기계구조물의 경량화 설계뿐만 아니라, MEMS, 전자기, 유체 분야에서 원하는 거동을 얻기 위한 최적의 레이아웃을 얻는데 많이 사용된다. Bensøe와 Kikuchi(1988)가 균질화 기법을 이용한 위상최적설계 기법을 개발한 이후 밀도법(SIMP : Solid Isotropic Material with Penalizaation; Bensøe, 1995)을 이용한 위상최적설계 기법은 구현의 간단함으로 인해 현재는 여러 상용프로그램에 적용되어 쉽게 활용되고 있다. Sigmund(2001)은 SIMP기반의 컴플라이언스(compliance) 최소화 문제에 대한 Matlab 코드를 99줄로 구현하여, 약간의 코드 수정만으로 누구나 쉽게 위상최적설계를 활용할 수 있도록 하였다. 하지만, 위상최적화 문제에서 체적조건이 주어진 컴플라이언스 최소화 문제와는 다르게 응력제한조건을 고려한 체적최소화 문제는 최적화 과정에서 특이성(singularity), 응력제한조건의 국부성(local nature of stress constraints), 그리고 설계변수에 대한 높은 비선형성을 포함하고 있기 때문에 최적설계를 수행하는데 큰 어려움이 있다.
Le 등(2010)은 이러한 응력제한조건을 고려한 위상최적설계 문제를 해결하기 위한 방안을 제안하였다. 특이성 문제를 해결하기 위해서 재료밀도의 분포와 마찬가지로 밀도값이 0과 1 사이의 갖도록 하면서 체적에 적용되는 재료 밀도의 차수보다 응력에 적용되는 재료 밀도의 차수를 낮추는 응력완화기법(stress relaxation)을 적용하였다. 응력의 국부성을 해결하기 위해서 p-norm으로 정의하는 전역응력치(global stress measure) 을 정의하여 최대응력 를 근사할 수 있게 하였다. Amir (2021)은 응력제한조건을 가지며 컴플라이언스(compliance)가 최소가 되는 문제의 위상최적설계를 수행하였다.
설계변수에 대한 높은 비선형성을 포함하는 문제에 대해서는 정확한 설계민감도를 구하는 것이 매우 중요하며, 정확한 설계민감도를 얻기 위해 해석적인 수식 유도과정을 동반한다. 이러한 해석적인 방법 중 보조변수방법(adjoint variable method)이 가장 많이 사용되고 있다. 이 방법은 응답해석 시스템 방정식과 유사한 보조방정식을 추가로 풀기만 하면 설계변수의 수에 상관없이 빠르고 정확한 설계민감도를 구하는 방법이다. 하지만, 이러한 방법은 복잡한 수식 유도과정을 동반하게 되며, 제한조건의 수만큼 보조방정식을 풀어야 하는 단점이 있다. 특히 컴플라이언스 문제를 제외한 대부분의 위상최적설계문제에서 해석적 설계민감도 유도과정은 상당히 복잡하기 때문에 많은 노력을 필요로 한다. 최근 Chandrasekhar 등(2021)은 JAX(Bradbury et al., 2018) 라이브러리를 사용하여 설계민감도를 자동미분(automatic differentiation)으로 구하고 이를 적용하여 컴플라이언스 최소화, 변위 컨버터 설계, 그리고 재료설계 문제에 대한 위상최적설계를 수행하였다.
본 논문에서는 역전파 방법(backpropagation method)을 이용한 자동미분법을 이용하여 설계민감도를 구하고 이를 응력제한조건을 고려한 위상최적화 문제에 적용하였다. 응력제한조건에서 발생하는 문제를 해결하기 위해 Le 등(2010)가 제안한 응력완화법과 p-norm 전역응력치를 사용하였다. 설계민감도에서 자동미분을 구현하기 위해 Python의 Pytorch 라이브러리(Paszke et al., 2017)를 사용하였다. Pytorch의 환경에서는 설계변수를 torch변수로 선언하고, 목적함수와 제한조건의 평가는 설계변수의 순방향 전파(forward propatation)을 통해 얻는다. 설계민감도는 이러한 목적함수와 제한조건의 평가 후 역전파 과정을 통해 자동미분의 형태로 구해진다. 자동미분을 이용하여 설계민감도 계산하는 것은 보조변수방법에서 보조평형방정식을 푸는 것 대신에 역전파 과정을 진행하는 것이라 할 수 있다. 본 논문에서는 역전파 기반의 자동미분 방법에 대해서 살펴보고 수치예제를 통해 기존의 보조변수방법으로 얻어진 설계민감도와 역전파 기반 자동미분을 이용한 설계민감도의 정확도를 비교하고 제안된 방법의 효율성을 검증하였다.
2. 본 론
이 장에서는 응력제한조건을 고려한 위상최적설계의 정식화와 함께 기존의 설계민감도 해석 방법과 역전파 기반 자동미분법을 이용한 설계민감도 계산과정을 소개하고자 한다.
2.1 응력제한조건을 고려한 위상최적설계 정식화
밀도법 기반의 응력제한조건을 위상최적설계 문제는 다음과 같이 정식화할 수 있다.
여기서, 은 설계변수인 재료 밀도 벡터로 유한요소에서 요소당 0에서 1 사이의 값을 갖는다. 는 요소 의 체적이며, 유한요소의 은 강성행렬이다. 주어진 하중벡터 에 대한 변위값은 이다. 는 요소별로 계산되는 von Mises 응력 중 최대값을 나타내며, 은 허용응력을 나타낸다. 은 위상최적설계에서 체커보드(chekerboard) 현상을 완화하고 안정된 최적해를 얻기 위한 필터링된 재료 밀도 벡터로 각 요소별 필터링된 재료 밀도 값은 다음과 같이 계산한다.
은 번째 요소의 중심위치 에서의 가중함수로 필터반경 내의 번째 요소와의 거리에 따라 결정되며 항상 양의 값을 갖는다.
2.2 응력완화와 전역응력치 계산
응력완화는 설계공간에서 응력의 특이성(singularity)를 피하기 위해 응력 설계 공간을 완화하는 방법이다. 응력의 특이성은 하중 지지부와 같이 재료가 필요한 부분에 응력을 낮추기 위해 오히려 재료가 사라지는 것과 같이 우리가 원하지 않는 결과를 주기도 한다. 이 문제를 해결하기 위해서 응력영역에서도 SIMP 방법에서 0과 1 사이의 중간영역(intermediate density value) 재료 밀도를 허용하여 설계 공간을 완화하는 방법을 적용한다. 하지만 이러한 중간영역 재료 밀도는 물리적으로 의미가 없기 때문에 재료 밀도를 분포를 극단적으로(black-and- white design; 즉, 재료 밀도가 0 또는 1에 가까운 값을 갖도록)가져갈 필요가 있다. 이를 위해서 재료의 체적이 와 같을 때 재료상수(또는 강성)에 패널티 값 을 고려한 가중치 을 다음과 같이 사용한다.
여기서, 과 은 최대 그리고 최소 재료의 영률(Young’s modulus)이며, 은 재료가 모두 채워져 있을 때(solid)의 체적이다. 본 논문에서는 각각 의 값을 사용하였다. 응력도 설계영역에서 응력의 특이성을 피하고 응력에 의해 black-and-white 재료 분포를 더 잘 이루어질 수 있도록 응력에 대한 패널티 값 을 고려한 응력 가중치 을 다음과 같이 사용한다.
여기서, 은 영률이 이고 푸아송 비가 =0.3일 때의 탄성텐서(elasticity tensor)을 의미하고, 는 요소 의 변형율-변위 관계 행렬이다. 그리고 은 식 (3)를 요소 의 DOF(Degree Of Freedom)에서의 변위이다. 은 요소 의 응력벡터 성분이며, 은 von Mises 응력으로 식 (4d)의 보조 벡터 행렬 값을 이용해 구할 수 있다. 최종적으로 식 (4b)의 은 요소 의 von Mises 응력 (식 (4c))에 밀도 가중치 을 고려한 완화된 응력치이다.
패널티 값 와 을 이용하여 응력의 특이성을 완화시키는 방법을 pq-relaxation이라 하며(Bruggi, 2008), 본 논문에서는 =3, =1/2의 값을 사용하였다. 이 때, 체적과 강성 그리고 응력 함수에 대한 밀도 근사는 Fig. 1과 같다. 0과 1 사이의 밀도값을 갖는 경우 재료 상수는 체적보다 작은 가중치를 갖도록 하며, 응력은 체적 보다 큰 가중치를 갖도록 한다. 이러한 강제(penalization)는 최종 위상최적설계에서 재료 분포를 나타내는 밀도값이 0 또는 1에 가까운 값을 갖도록 강제할 수 있다(Le et al., 2010).
응력제한조건을 고려한 위상최적설계 문제에서는 다음과 같이 모든 요소에서 평가되는 응력 이 허용응력을 만족해야 한다.
식 (5)은 다음과 같이 다시 쓸 수 있다.
식 (5)을 고려할 경우, 유한요소의 개수 값이 클수록 제한조건수가 많아지기 때문에 보조변수방법을 이용한 설계민감도 해석시에 계산 비용이 극단적으로 증가하는 단점이 있다. 또한, 식 (6)에서 은 설계변수 에 대해 미분가능하지 않다. 이러한 문제를 해결하기 위해 다음과 같이 을 근사할 수 있는 전역응력치 를 정의하여 개의 국부 응력제한조건을 갖는 문제를 전역응력치 하나를 제한조건으로 갖는 문제로 다음과 같이 바꾸어 최적화를 진행한다(Le et al., 2010).
여기서, 은 p-norm 또는 KS(Kreisselmeier-Steinhauser) 함수로 정의된 전역응력치이다. 식 (8)의 전역응력치는 일 때, 값으로 수렴함이 알려져 있으나 너무 큰 값은 수치적으로 안정된 값을 주지 못할 수 있으므로(Le et al., 2010), 본 논문에서는 =8을 사용하였다.
실제 은 실제 물리적인 값이 아니므로 정규화 파라미터 를 식 (7)과 같이 적용하여, 이 값이 에 근사화하도록 한다. 파라미터 값은 최적화를 통해 업데이트 되며, 번째() 최적화 과정에서의 파라미터 값은 다음과 같이 계산된다.
은 과 사이의 변화량을 조절하는 제어 파라미터이다. 본 논문에서는 전체 최적화 과정에서 , 정규화 파라미터 초기값은 로 설정하였다.
2.3 설계민감도 해석
위상최적설계에서 최적해를 빠르게 얻기 위해서는 정확한 설계민감도 정보가 필요하다. 위상최적설계에서 설계변수는 각 요소에 정의된 밀도값 이며, 유한요소의 수만큼 많은 설계변수를 포함하고 있다. 목적함수의 수보다 설계변수가 많을 경우 보조변수방법을 이용한 설계민감도법이 가장 효율적이지만, 식 (7)과 같이 주어진 응력제한조건에 대한 설계민감도는 이 방법을 이용할 경우 해석적으로 복잡한 수식유도 과정을 거쳐야 한다. 인공신경망에서는 역전파를 이용한 자동미분방법을 이용하여 가중치와 편차에 대해 손실함수의 민감도를 구하고 이러한 손실함수가 최소가 되도록 하는 최적의 가중치와 편차를 얻는다. 자동미분 방법은 목적함수를 설계민감도를 통해 표현하기만 하면 자동으로 손쉽게 설계민감도를 구할 수 있는 장점이 있어 보조변수방법의 복잡한 수식유도과정을 피할 수 있다. 본 장에서는 p-norm으로 정의된 응력에 대한 설계민감도를 보조변수방법으로 구하는 과정을 살펴보고 이러한 설계민감도를 역전파 기반 자동미분으로 구현하는 것을 살펴보도록 하겠다.
2.3.1 보조변수방법
식 (7)에서 p-norm 응력 의 밀도 에 대한 설계민감도는 식 (2)의 필터를 적용할 때 다음과 같이 구할 수 있다.
여기서, 식 (10a)의 필터된 밀도 에 대한 에 설계민감도는 보조변수법을 이용하여 다음과 같이 구할 수 있다.
식 (10b)는 중심 요소에서 거리 내에 있는 요소들 의 거리 가중함수이다. 는 번째 요소 DOF에 해당하는 보조변수 벡터이며 은 일 때 요소 의 강성행렬이다. 이 보조변수 벡터는 다음과 같은 보조변수방정식을 풀어 얻게 된다.
여기서 는 식 (1c)에 주어진 선형방정식의 강성행렬과 같다. 식 (11)의 우측항은 대한 명시적인 의존항(explicit dependence) 암시적인 의존항(implicit dependence)으로 구성된다. 암시적인 의존항은 식 (12)으로 부터 얻어지는 보조변수로 대체되며, 그 결과 식 (11)의 우측항은 설계변수에 대한 명시적인 의존항만으로 표현된다. 즉, 식 (1c)의 시스템 방정식에서 구성된 강성행렬을 이용하여 식 (12)의 보조평형방정식을 추가적으로 풀기만 하면 설계변수의 수와 상관없이 빠르고 효율적으로 설계민감도를 구할 수 있다.
하지만, 식 (11), (12)에서 알 수 있듯이 설계민감도 계산은 목적함수에 따라 복잡한 유도과정을 거쳐야 하며, 목적함수와 제한조건의 수만큼 보조방정식 (12)를 풀어야 하기때문에 이에 따른 계산비용이 증가할 수 있는 문제가 있다. 본 논문에서는 이러한 복잡한 수식의 유도과정을 필요로 하는 설계민감도법의 단점을 극복하기 위해 역전파 기반의 자동미분법을 이용해 설계민감도를 구현하는 것을 다음과 같이 제안하고자 한다.
2.3.2 역전파 방법
자동미분법은 복잡한 계산과정이 필요한 미분 계산에서 매우 강력한 도구이다. 기본적으로 설계 변수에 대한 미분의 대상이 되는 목적함수를 순방향 전파를 이용해 구하고, 목적함수의 미분값은 역적파 과정을 구하게 된다. 순방향 전파의 개념은 평가하고자 하는 함수 가 와 같이 함수 와 의 합성함수로 구성될 때 식 (13a)과 같이 와 를 순차적으로 평가하는 것으로 설명할 수 있다.
(forward propagation)
(backward propagation)
(evaluation of derivative)
이때, 함수 의 에 대한 미분 값은 다음과 같이 구할 수 있다.임의의 함수의 미분값을 구하기 위한 대한 과정은 다음과 같다. 1) 순방향 전파를 이용하여 의 값을 구한 후, 2) 식 (13b)에서 함수 와 의 와 에 대한 자코비안(Jacobian) 와 를 각각 구하고, 3) 식 (13c)을 이용하여 최종적인 자코비안 를 계산한다. 이 과정을 Fig. 2에 나타내었다. 2)의 과정을 통해 3)의 미분값을 평가하는 과정을 역전파과장이라 한다.
위상최적설계에서 식 (8)과 같이 주어진 p-norm 응력에 대한 역전파 기반 설계민감도 해석과정을 보여주기 위해 다음과 같이 p-norm응력을 , 그리고 의 함성함수 형태로 표현하면 다음과 같다.
식 (14)에서, 은 식 (8)에서 von-Mises 응력을 이용하여 계산하는 p-norm을 구하는 KS 함수이며, 은 식 (2)에서 각 요소의 밀도 로 이루어진 밀도 벡터 의 필터링 함수이다. 밀도 벡터 를 설계변수라 할 때, p-norm 응력함수의 설계민감도는 다음의 식 (15)와 같이 구할 수 있다.
이를 식 (13)과 같이 함수 을 구하기 위한 순방향 전파 과정과 p-norm 응력의 설계변수 에 대한 설계민감도를 위한 역방향 전파과정은 다음과 같으며 이러한 과정을 Fig. 3에 나타내었다.
(forward propagation)
(backward propagation)
(evaluation of derivative)
은 의 설계변수 에 대한 설계민감도이다. 식 (16)에서 목적함수 의 평가부터, 그리고 등을 포함한 자동미분값을 구하는 것은 PyTorch(Paszke et al., 2017)와 같은 python 라이브러리를 이용하여, 별도의 복잡한 수식 유도 없이 독립변수(설계변수) 를 정의하고 미분하고자 하는 함수만 정의하면 쉽게 구현할 수 있다. PyTorch를 이용한 설계변수 (rho 변수)의 선언은 CODE SNIPPET 1 같이 할 수 있다.
CODE SNIPPET 2
def stress_PN(rho):
rho_hat = filter(rho) # density filter(식 (2))
K = assemble(rho) # assemble stiffness matrix K
u = solver(K) # solve Ku=f
sress_PN = stressCal(u) # calculate p-norm stress(식 (8))
return stress_PN
CODE SNIPPET 3
sig_PN = stress_PN(rho) # call the function stress_PN and perform the forward propagation(식 (16a))
sig_PN.backward() # perform back propagation(식 (16b))
sig_PN_sensitivity = rho.grad # evaluation of derivative(식 (16c))
rho_init은 변수 rho의 초기값을 의미하며, requires_grad 옵션을 True로 설정하여 rho가 목적함수의 자동미분을 위한 독립변수임을 선언해야 한다. 구하고자 하는 목적함수 는 CODE SNIPPET 2와 같이 이미 선언된 독립변수 rho의 함수 stress_PN(rho)로 정의한다. CODE SNIPPET2에서 정의된 함수 stress_PN(rho)을 호출하면 식 (16a)의 순방향전파 과정을 통해 p-norm 응력 을 sig_PN로 반환할 수 있다.이 때 반환된 p-norm 응력 sig_PN 값을 통해 내장함수인 backward() 함수를 이용하면 식 (16b)와 같이 설계민감도를 위한 역방향 전파과정이 수행되게 된다. 마지막으로 grad 명령을 통해 최종적으로 식 (16c)와 같이 설계민감도를 sig_PN_sensitivity를 얻을 수 있다. 이 전체 과정은 CODE SNIPPET 3에 나타내었다.
설계변수를 구할 때 가장 어려운 부분은 설계변수에 대해 암시적 의존항을 구하는 것이며, 본 논문에서 이러한 항은 식(16b)의 을 구하는 것이다. 보조변수방법에서는 이러한 암시적 의존항을 직접 구하는 대신에 본래 시스템 방정식과 같은 형태의 보조변수방정식을 세우고 여기서 얻어지는 보조변수로 이 항을 대치한다. 자동미분방법에서는 이러한 보조변수방정식을 푸는 것 대신에 역전파 과정을 이용하여 암시적 의존항을 처리하고 설계민감도를 구하게 된다. 보조변수방법에서 목적함수와 제한조건의 수에 따라 보조변수방정식을 풀어야 하는 것과 마찬가지로 자동미분법에서도 목적함수와 제한조건의 개수에 따라 역전파를 진행하게 된다. 따라서, 두 방법의 효율성을 비교하기 위해서는 보조변수방정식을 푸는 속도와 역전파 과정을 진행하는 속도의 차이를 알아보면 된다. 다음 장에서는 수치예제를 통해 두 설계민감도를 비교하고 정확성과 효율성을 검증하도록 하겠다.
2.4 수치예제 결과 및 고찰
2.4.1 설계민감도 비교 검증
역전파 방법을 이용한 설계민감도의 정확성을 보조변수방법과 비교하여 검증하였다. Fig. 4는 설계민감도 검증을 위한 예제이다. 가로 세로의 길이는 각각 32mm과 20mm이고 요소수는 32×20이다. 작용하는 힘은 이다. 본 예제에서의 초기 밀도값은 모두 이며, 필터 반경은 이다. Fig. 5는 Fig. 4 문제에 대한 von Mises 응력값을 식 (4a)를 이용하여 구하고 이를 요소별로 표현한 그림으로 최대값은 하중이 가해지는 부분에서 의 값을 갖는다. p-norm 응력값은 로 최대 von Mises 응력값과 유사한 수치를 갖는다. 이 값은 식 (7)에서 조정 파라미터 값을 이용하여 최대 von Mises 응력에 근사하게 되며, 식 (9)에 의해 는 최적화가 진행되어 업데이트가 된다.
Table 1은 Fig. 5에 표시된 5개의 지점에서 밀도값에 대한 p-norm 응력의 설계민감도 값을 보조변수방법(AVM)과 역전파 기반 자동미분방법(AD)을 이용하여 구한 결과를 비교한 것이다. 비교 결과 두 방법이 소수 10자리 수까지 일치하는 것을 알 수 있다.
Table 1.
Design sensitivity comparison
Table 2에서는 보조변수법(AVM)과 역전파 기반의 자동미분법(AD)을 이용한 설계민감도 계산시간을 비교하였고, 그 결과를 Fig. 6에 나타내었다. 계산 시 사용한 컴퓨터 사양은 Inter(R) Core(TM) i9-9900T CPU 2.11GHz, 6GB RAM이다. 요소수가 늘어남에 따라 설계민감도 해석시간이 늘어나며, 두 방법의 차이는 약 20% 정도로 요소수가 늘어남에 따라 그 차이가 조금씩 늘어나는 경향이 있다. 보조변수방법에서 응답해를 구하는 것과 마찬가지로 자동미분법에서는 순방향 전파시에 응답해를 구하기 때문에 두 방법의 시간차이는 보조변수방정식을 푸는 것과 역전파를 진행하는 시간의 차이라 할 수 있고 역전파를 이용한 민감도 계산이 더 효율적임을 알 수 있다.
Table 2.
Design Sensitivity Computation time (sec)
| 유한요소 수 | AVM(a) | AD(b) | (b)/(a) * 100(%) |
| 640 | 0.1915 | 0.0847 | 226.09 |
| 2560 | 1.9428 | 1.6127 | 120.47 |
| 5760 | 15.3071 | 12.6681 | 120.83 |
| 10240 | 81.94 | 66.7675 | 122.72 |
2.4.2 위상최적설계 결과
다음으로 보조변수법과 역전파 기반 자동미분법을 이용한 설계민감도법을 각각 적용하여 응력제한조건을 고려한 위상최적설계를 수행하였다. Fig. 7은 수행하고자 하는 예제의 하중과 경계조건을 나타낸다. 가로 세로의 길이는 각각 240mm과 40mm이고 요소수는 240×40이다. 작용하는 힘은 으로 응력집중 현상을 막기 위해 중앙 상단 9개의 노드에 대칭적으로 하중을 가하였다. 본 예제에서의 초기 밀도값은 모두 이며, 필터 반경은 이다. 목적함수는 식 (1a)의 체적를 최대체적 로 정규화 정규화한 이며, 응력허용조건 (식 (1b))을 만족시키며 정규화한 체적이 최소화가 되는 위상최적설계를 수행하였다. 사용한 최적설계 알고리즘은 MMA(Svanberg, 1987)이다. 최적화된 재료밀도 의 분포와 von Mises 응력분포는 Fig. 8과 같고 보조변수방법과 역전파 기반 자동미분 방법을 이용한 최적설계 결과는 Table 3과 같다.
Table 3.
Optimization results comparison
| AVM(a) | AD(b) | |
| 0.3957 | 0.3957 | |
| (MPa) | 5.0 | 5.0 |
| Compliance(Nmm) | 4159.315 | 4159.209 |
| # of iterations | 828 | 828 |
| Gray-level indicator(%) | 18.798 | 18.794 |
여기서, Gray-level indicator(Sigmund, 2007)는 gray scale 정도, 즉 에 가까운 밀도값의 비율을 나타내는 것으로 두 위상최적설계의 재료 밀도의 일치 정도를 살펴보기 위해 비교하였다. 목적함수인 정규화된 최적 체적값을 비교한 결과 모든 수치가 일치함을 알 수 있고, 이는 역전파 기반 자동미분법을 이용한 설계민감도의 값이 해석적으로 정확한 보조변수방법과 일치함을 보여준다.
3. 결 론
본 연구에서는 인공신경망에서 쓰이는 역전파 기법을 이용하여 설계민감도를 구하고 이를 응력제한조건을 고려한 위상최적설계에 적용하였다. 응력제한조건에 대한 보조변수방정식을 이용한 설계민감도법은 해석적으로 정확하고 효율적이나 복잡한 수식유도과정을 거쳐야 하는 단점이 있다. 자동미분법은 이러한 단점을 피할 수 있을 뿐만 아니라 설계민감도 계산시간에서도 약 20% 정도 빠른 것을 확인하였다. 또한, 해석적인 방법으로 구한 설계민감도와 같은 정확도를 보여준다. 몇몇의 수치예제를 통해 제시된 자동미분방법이 매우 정확하며 효율적임을 검증하였다.










