확인된 사항
-
ANN에 의한 소성 보정이 제대로 이루어지지 않는 문제점
- 보정 후의 stress 가 오히려 증가하는 문제
- 매트랩 결과도 일치함.
- 학습 결과에 문제가 있지 않은지 확인 필요
-
아바쿠스와 매트랩에 의한 stress 계산 결과가 다름.
- 같은 trial stress에 대해 다른 결과값
-
UMAT loop 잘 돌아가지만 소성 부분에서 출력이 되지 않는 문제 발생
- element 개수를 조절했을 때 1element의 경우 잘 돌아가지만 응력이 감소하는 문제
- time increment size 에 따라서도 결과가 다름
이거 MSG 파일 확인해서 increment size가 학습 범위 내에 들어오는지 확인해봐야 할 것 같음←확인 결과 이건 문제 없음- ANN 유효성 평가를 다시 체크
-
REF cae파일에서 tr corrected 확인해서 파악← input을 매트랩쪽 학습 인공신경망에 넣은 경우에도 같은 값이 나옴 -
학습이 제대로 안됐다?
-
DDSDDE가 음의 값이 나오는 input이 지속적으로 나올 수 있나?← DDSDDE는 음수가 아닌 것으로
-
- DDSDDE가 음의 값이 나오는 것 같은데 맞는지 확인해보고, 해당 증분 조건에서 정말 저렇게 나오는지 확인이 필요해보임
- time increment에 의해 훈련 범위 맞추는지가 판가름되어 나타나는 문제인 것으로 확인됨.
- time increment 범위를 학습 범위에 맞춰서 테스트 필요
- time increment에 의해서 DSTRAN이 결정되고
- 이걸로 EPS가 나중에 계산됨
- time increment 범위를 학습 범위에 맞춰서 테스트 필요
- time increment size 에 따라서도 결과가 다름
- 2 element의 경우 각 node에서 값이 튀고, 중간부터 출력이 되지 않는 문제 발생
-
이게 multielement case에서 출력이 되지 않는 문제 발생시키는 것 같음
-
ANN의 정확성이 더 높아져야 하거나
-
DDSDDE를 안정화시킬 방법이 필요하다.
-
- element 개수를 조절했을 때 1element의 경우 잘 돌아가지만 응력이 감소하는 문제
확인해야할 사항
-
출력되는 값의 gradient를 고정하거나 조절할 수 있는 인공신경망
-
DDSDDE를 고정값으로 사용했을 때의 UMAT 결과
자료 구성
- 이전 미팅에서 문제가 된 UMAT 구동 안되는 문제는 해결됨. 그러나 소성 파트의 결과가 출력되지 않는 문제가 발생함.
- message 파일 확인했을 때 소성 시작 부분에서 NaN으로 나오고, 출력된 부분 확인해보면 탄성 부분만 나오는 것이 확인됨
- multielement에서 DDSDDE의 문제일 수도 있을 것 같아서 1element에 대해서 테스트를 해봄
- 소성부분이 나오긴 하는데 응력이 증가하지 않고 감소하는 문제
- 처음에는 UMAT 상에서 부호가 잘못되었거나 하는 문제일거라 생각해서 UMAT 디버깅을 시도했으나 큰 문제가 없었음
- 추후에 확인된 원인은 time increment size에 따라 학습 범위를 벗어나는 문제 때문인 것으로 확인됨.
- 이건 나중에 3D 에 적용할 때에도 고려되야할 사항
- 여러 element가 사용되는 경우 학습 범위 안쪽으로 delta eps값을 조절하기 어려울 것으로 생각됨
- 학습 범위 내로 들어오도록 time increment를 조절했을 때 어느정도 일치하는 경향성
- 그러나 multielement의 경우에는 마찬가지로 잘 수렴하지 않는 문제가 발생함
- 2,3 element에 대해서 테스트 진행, 및 그 결과
- 결론
- DDSDDE 튀는 문제 해결책
-
인공신경망 결과값 조절이 가능한지 조사 필요
-
eps가 감소하는 경우 이전 eps를 유지하도록 하는 방식?
- 이러면 그 다음 step에서 같은 결과가 나오게 됨
- stress던 eps던 뭐 하나는 바껴야 하는데
- 음의 값이 나오게 되면 다시 돌리는 방식?
- trial stress를 수정한다던가..
-
손실함수 사용
손실 함수를 수정하는 방법은 주로 원하는 출력값의 범위나 모델의 학습 동작을 조절하기 위해 사용됩니다. 아래에 몇 가지 손실 함수 수정 방법을 설명합니다:
-
제약 조건 추가:
- 원하는 출력값 범위를 지정하기 위해 제약 조건을 추가하는 방법입니다. 이를 통해 모델이 특정 범위 내에서만 출력을 생성하도록 강제할 수 있습니다.
- 예를 들어, 회귀 문제에서 출력값이 [0, 1] 범위에 있어야 할 경우, 손실 함수에 다음과 같은 제약 조건을 추가할 수 있습니다:
pythonCopy code loss = original_loss + lambda * max(0, predicted_output - 1) + lambda * max(0, -predicted_output)여기서
**predicted_output**는 모델의 출력값이고,**lambda**는 제약 조건의 강도를 조절하는 하이퍼파라미터입니다. -
커스텀 손실 함수 정의:
- 원하는 손실 함수를 직접 정의하여 출력값을 조절할 수 있습니다. 이 방법을 사용하면 출력값에 대한 제약 조건을 자세하게 조절할 수 있습니다.
-
-