해당 논문은 다음과 같은 출처를 갖습니다.
논문 출처:
https://deepblue.lib.umich.edu/items/02757539-02a2-4afa-9de9-4cd6d600eaf3
제목:
Aerodynamic Design and Optimization via a Specialized Agentic Generative AI Framework
항공 우주 분야에서 동적 디지털 트윈의 실제 구현은 신속한 다분야 설계 분석 및 최적화(Multidisciplinary Design Analysis and Optimization, MDAO)를 필요로 하지만, 현재 이 프로세스는 느린 수동 워크플로우에 의해 제한된다.
본 논문에서는 높은 수준의 자연어 명령으로부터 복잡한 MDAO 워크플로우의 합성을 자동화하는 에이전트 기반 생성형 인공지능 프레임워크를 소개하고자 한다.
해당 프레임워크는 OpenAeroStruct 도구를 사용하여 공기역학적 최적화 스크립트를 자율적으로 생성, 실행 및 분석하는 다중 에이전트 아키텍처를 사용한다.
비행기를 설계한다고 가정했을 때 설계를 위해서는 다음과 같은 여러 분야를 고려해서 복잡한 연결을 한꺼번에 고려해야 하는데, 이때 이러한 복잡한 연결을 한꺼번에 고려해서 최적의 설계를 찾는 과정이 바로 MDAO이다.

MDAO는 큰 개념이고, OpenAeroStruct는 그중에서도 "날개 설계 최적화"에 특화된 실습용 도구이다.
쉽게 말하면 "날개 모양을 바꾸면서 공기 흐름(공력)과 구조 강도를 동시에 계산하고, 최적의 모양을 자동으로 찾아주는 오픈소스 프로그램이다.
작동 방식:
목표:
자연어로 원하는 설계 요구를 주면 LLM 기반 여러 에이전트가 협업하여 항공기 날개 또는 유사 MDAO 문제의 해석, 코드 생성, 실행, 분석, 리포트까지 자동으로 끝내는 프레임워크를 만든다.
문제 의식:
기존 MDAO 작업은 매우 복잡하고 사람 손이 많이 가며 느렸다 --> 디지털 트윈(실제 자산과 실시간 양방향으로 연계되는 가상모델)에 필요한 신속한 업데이트가 불가능했다.
기여:
OpenAeroStruct(오픈소스 항공-구조 해석, 최적화 툴)를 사례로, multi-agent(다중 에이전트) 설계로 단계를 나눠 처리함으로써 신뢰성 높은 실행 가능한 코드와 진단/보고서 생성까지 자동화했다.
또한 단일 LLM 한 번의 출력이 가진 불안정성을 극복했다고 한다.
디지털 트윈을 실무에서 활용하려면 가상 모델을 자주 빠르게 바꿔야 하는데, 현재 MDAO는 사람의 전문지식과 수작업이 많이 필요해 속도와 확장성이 부족했다.
LLM을 단독으로 쓰면 코드 문법 오류, 변수 연결 오류, 컨텍스트(문맥) 부족 등으로 실행 불가 코드가 나오기 쉽다.
따라서
결과적으로 디지털 트윈 업데이트의 속도, 신뢰성, 자동화 수준을 개선하려는 것이 목표이다.

1. 사용자 입력(자연어 요구)
2. Task Reformulation Agent (작업 재구성 에이전트)
자연어를 구조화된 데이터(schema화된 Python 객체)로 변환, 누락된 조건(예: 목적 함수 미지정)이 있으면 알려줌
필요 이유
: 사람의 자연어를 컴퓨터가 확실하게 이해할 수 있도록 규격화하는 과정
3. 세 가지 Scripting Agents(코드 생성 에이전트들) - 분업
4. 통합 스크립트 실행(오토메이션)
5. Initial Analysis Agent(초기 분석 에이전트)
역할
: 생성된 보고서(PDF)를 읽어 최적화 성공 여부 판단, 디자인 변수들의 상한/하한 도달 여부, 수렴성 등을 판단하고 원인 분석, 권장 조치 제시.
RAG로 물리적 의미를 보강해서 진단의 신뢰도를 높임.
6. Report Writing Agent
7. RAG
수치 데이터(좌표점 배열)로 비행기 날개를 3D로 해석하려면 “이 부분에서 공기가 얼마나 흐르고, 힘이 얼마나 걸리는지”를 계산이 필요하다. 그 계산은 연속적인 면 대신, “조각조각 쪼개진 격자점(mesh grid)” 위에서 이루어지며, 즉, “메쉬”는 그림이 아니라 좌표(x,y,z)의 집합이다.
OpenAeroStruct의 Mesh 예시
OAS에서 자주 쓰는 메쉬 예시는 이런 형태이다.
mesh_dict = { "num_y": 5, # 날개 span 방향으로 몇 등분할지 "num_x": 2, # chord 방향(앞~뒤)으로 몇 등분할지 "wing_type": "rect" } mesh = generate_mesh(mesh_dict)이 generate_mesh() 함수가 만들어내는 건
겉으로 보면 “날개 모양 격자 이미지”처럼 보이지만, 실제로는 아래와 같은 수치 데이터이다mesh.shape # (5, 2, 3) mesh[0][0] # [x, y, z] 좌표 값
OAS는 현재 날개(Wing) 중심의 MDAO 툴로 즉, 지오메트리라고 해도 엔진·동체 전체가 아니라 날개 구성요소의 기하 정보만 다룬다.
지오메트리는 “형상 정의 단계”로서, 날개의 크기·비율·각도·트위스트(비틀림) 같은 물리적 설계 변수를 지정하는 부분이다.
geometry_options = { "span": 10.0, # 날개 폭 "chord": 1.0, # 날개 길이 "sweep": 5.0, # 뒤로 젖힌 각도 "taper": 0.8, # 끝날개가 뿌리날개 대비 얼마나 얇은지 "twist_cp": [0.0, 2.0] # 날개가 비틀린 정도 }이렇게 입력하면 OAS가 mesh 데이터 위에 이 값들을 적용해서
“이런 형상의 날개”를 해석할 수 있는 상태로 세팅한다.Geometry Agent는 “항공기 전체”가 아니라 “지금 해석 대상이 되는 형상(예: 날개)”의 매개변수를 생성하도록 한다.
주어진 목적(예: 항력 최소화, 양력 최대화)을 만족하는 설계변수를 반복 조정 과정


자연어 설명
->
LLM이 이를 규격화
->
3개의 에이전트가 메쉬, 형상 설계, 최적화 코드를 각자 작성 및 OpenAeroStruct가 읽을 수 있는 실행 가능한 코드를 생성
->
OAS가 날개 해석/최적화 계산을 수행하고, 수치적 결과 데이터를 생성
->
수치 데이터를 받아서 Initial Analysis가 결과의 의미(성공, 실패 원인)를 분석,
RAG를 통해 관련 문서를 검색해 판단의 근거와 보완 설명을 붙임
->
해당 결과 및 근거를 기반으로 리포트 작성
->
작성된 리포트는 다시 데이터로 활용될 수 있도록 저장
->
결과를 사용자에게 전달

LLM은 송주훈!!