확인된 사항

  1. ANN에 의한 소성 보정이 제대로 이루어지지 않는 문제점

    1. 보정 후의 stress 가 오히려 증가하는 문제
    2. 매트랩 결과도 일치함.
    3. 학습 결과에 문제가 있지 않은지 확인 필요
  2. 아바쿠스와 매트랩에 의한 stress 계산 결과가 다름.

    1. 같은 trial stress에 대해 다른 결과값
  3. UMAT loop 잘 돌아가지만 소성 부분에서 출력이 되지 않는 문제 발생

    1. element 개수를 조절했을 때 1element의 경우 잘 돌아가지만 응력이 감소하는 문제
      1. time increment size 에 따라서도 결과가 다름
        1. 이거 MSG 파일 확인해서 increment size가 학습 범위 내에 들어오는지 확인해봐야 할 것 같음 ←확인 결과 이건 문제 없음
        2. ANN 유효성 평가를 다시 체크
          1. REF cae파일에서 tr corrected 확인해서 파악 ← input을 매트랩쪽 학습 인공신경망에 넣은 경우에도 같은 값이 나옴

          2. 학습이 제대로 안됐다?

          3. DDSDDE가 음의 값이 나오는 input이 지속적으로 나올 수 있나? ← DDSDDE는 음수가 아닌 것으로

        3. DDSDDE가 음의 값이 나오는 것 같은데 맞는지 확인해보고, 해당 증분 조건에서 정말 저렇게 나오는지 확인이 필요해보임
      2. time increment에 의해 훈련 범위 맞추는지가 판가름되어 나타나는 문제인 것으로 확인됨.
        1. time increment 범위를 학습 범위에 맞춰서 테스트 필요
          1. time increment에 의해서 DSTRAN이 결정되고
          2. 이걸로 EPS가 나중에 계산됨
    2. 2 element의 경우 각 node에서 값이 튀고, 중간부터 출력이 되지 않는 문제 발생
      1. 이게 multielement case에서 출력이 되지 않는 문제 발생시키는 것 같음

      2. ANN의 정확성이 더 높아져야 하거나

      3. DDSDDE를 안정화시킬 방법이 필요하다.

확인해야할 사항

  1. 출력되는 값의 gradient를 고정하거나 조절할 수 있는 인공신경망

  2. DDSDDE를 고정값으로 사용했을 때의 UMAT 결과

자료 구성

  1. 이전 미팅에서 문제가 된 UMAT 구동 안되는 문제는 해결됨. 그러나 소성 파트의 결과가 출력되지 않는 문제가 발생함.
    1. message 파일 확인했을 때 소성 시작 부분에서 NaN으로 나오고, 출력된 부분 확인해보면 탄성 부분만 나오는 것이 확인됨
  2. multielement에서 DDSDDE의 문제일 수도 있을 것 같아서 1element에 대해서 테스트를 해봄
    1. 소성부분이 나오긴 하는데 응력이 증가하지 않고 감소하는 문제
    2. 처음에는 UMAT 상에서 부호가 잘못되었거나 하는 문제일거라 생각해서 UMAT 디버깅을 시도했으나 큰 문제가 없었음
    3. 추후에 확인된 원인은 time increment size에 따라 학습 범위를 벗어나는 문제 때문인 것으로 확인됨.
      1. 이건 나중에 3D 에 적용할 때에도 고려되야할 사항
      2. 여러 element가 사용되는 경우 학습 범위 안쪽으로 delta eps값을 조절하기 어려울 것으로 생각됨
    4. 학습 범위 내로 들어오도록 time increment를 조절했을 때 어느정도 일치하는 경향성
    5. 그러나 multielement의 경우에는 마찬가지로 잘 수렴하지 않는 문제가 발생함
    6. 2,3 element에 대해서 테스트 진행, 및 그 결과
    7. 결론
  3. DDSDDE 튀는 문제 해결책
    1. 인공신경망 결과값 조절이 가능한지 조사 필요

    2. eps가 감소하는 경우 이전 eps를 유지하도록 하는 방식?

      1. 이러면 그 다음 step에서 같은 결과가 나오게 됨
      2. stress던 eps던 뭐 하나는 바껴야 하는데
      3. 음의 값이 나오게 되면 다시 돌리는 방식?
        1. trial stress를 수정한다던가..
    3. 손실함수 사용

      손실 함수를 수정하는 방법은 주로 원하는 출력값의 범위나 모델의 학습 동작을 조절하기 위해 사용됩니다. 아래에 몇 가지 손실 함수 수정 방법을 설명합니다:

      1. 제약 조건 추가:

        • 원하는 출력값 범위를 지정하기 위해 제약 조건을 추가하는 방법입니다. 이를 통해 모델이 특정 범위 내에서만 출력을 생성하도록 강제할 수 있습니다.
        • 예를 들어, 회귀 문제에서 출력값이 [0, 1] 범위에 있어야 할 경우, 손실 함수에 다음과 같은 제약 조건을 추가할 수 있습니다:
        pythonCopy code
        loss = original_loss + lambda * max(0, predicted_output - 1) + lambda * max(0, -predicted_output)
         

        여기서 **predicted_output**는 모델의 출력값이고, **lambda**는 제약 조건의 강도를 조절하는 하이퍼파라미터입니다.

      2. 커스텀 손실 함수 정의:

        • 원하는 손실 함수를 직접 정의하여 출력값을 조절할 수 있습니다. 이 방법을 사용하면 출력값에 대한 제약 조건을 자세하게 조절할 수 있습니다.