


주의 사항 I: 이 튜토리얼은 Linux 또는 Windows에서만 따라 할 수 있습니다. 2026년 7월 24일 기준으로 Qblade는 Mac 버전을 제공하지 않습니다.
주의 사항 II: 이 튜토리얼은 중상급 수준입니다. 가능한 한 자세히 설명하겠지만, 일부 구성은 직접 설정해야 합니다.
풍력 터빈을 직접 만들고 싶었지만 성능이 어떨지 확신이 서지 않았던 적이 있나요? 이 가이드를 사용하면 수만 개의 데이터 포인트를 분석하는 machine learning 모델의 힘을 활용하여 가정에 가장 적합한 풍력 터빈을 만들 수 있습니다!
효율적인 도시형 수직축 풍력 터빈(Vertical Axis Wind Turbine, VAWT)을 설계하는 일은 매우 어렵습니다. 블레이드의 Twist, Solidity, Tip Speed Ratio(λ)를 완벽하게 조합하려면 일반적으로 수천 시간의 brute-force 전산 유체 역학(CFD) 시뮬레이션이 필요합니다.
이 Instructable에서는 AI 기반 Surrogate-Based Optimization 엔진을 구축합니다. 시뮬레이션 데이터를 사용해 터빈의 물리 법칙을 학습하는 AI "두뇌"(Gaussian Process Regressor)를 훈련합니다. 그런 다음 evolutionary algorithm을 사용해 수학적으로 절대적으로 최적인 공기역학적 설계를 찾아냅니다.


시작하려면 Qblade community edition을 다운로드해야 합니다. Qblade는 업계 수준의 소프트웨어이며, 제작사의 표현에 따르면 "풍력 터빈의 모든 측면을 다루는 풍력 터빈 시뮬레이션 코드입니다. 설계, 해석 및 인증."

그런 다음 최신 버전의 Python을 다운로드해야 합니다.

Python을 설치한 후에는 사용할 machine learning 라이브러리인 Sckit-Learn을 설치해야 합니다. 명령 프롬프트를 열기만 하면 됩니다. 가상 환경(venv)을 만드는 것을 강력히 권장합니다.


이제 사용할 ML 개념을 설명하겠습니다. 이미 ML을 알고 있다면 이 부분은 건너뛰어도 됩니다.
데이터 포인트가 흩어져 있는 산점도가 있고, 미래 값을 예측하기 위해 그 점들을 관통하는 선을 그리고 싶다고 상상해 보세요.
표준 회귀(예: 선형 회귀)에서는 하나의 고정된 형태(곧은 막대기 같은 형태)를 데이터에 강제로 맞춥니다. Gaussian Process Regression(GPR)은 완전히 다른 방식으로 접근합니다. 하나의 고정된 선을 추측하는 대신, 데이터에 맞을 수 있는 무한히 많은 곡선 형태의 유연한 선을 고려합니다.
GPR은 데이터에 맞을 수 있는 모든 가능한 선을 고려하므로 단일 예측만 제공하지 않습니다. 다음 두 가지를 제공합니다:

이제 사용할 ML 개념을 설명하겠습니다. 이미 ML을 알고 있다면 이 부분은 건너뛰어도 됩니다.
표준 machine learning이 수학적 패턴을 찾기 위해 교과서를 공부하는 학생과 같다면, Evolutionary Model (또는 Evolutionary Algorithm)은 "적자생존"을 이용해 최고의 경주마를 교배하는 것과 같습니다.
완벽한 답을 계산하기 위해 복잡한 미적분을 사용하는 대신, 생물학적 진화의 규칙인 돌연변이, 번식, 자연 선택을 차용하여 시간이 지나면서 최선의 해를 "진화"시킵니다.
다음의 간단한 4단계 순환을 반복하여 문제를 해결합니다:
이 과정을 수백 또는 수천 세대 동안 반복합니다. 나쁜 특성은 사라지고 좋은 특성은 누적되며, 결국 개체군은 고도로 최적화된 해로 진화합니다.


NACA 4-digit series 0018 에어포일과 NACA 0015를 선택하려고 합니다. 이들은 일반적으로 도시형 VAWT에 가장 적합한 에어포일입니다.
간단한 역사 이야기입니다. NACA 4-digit airfoil series 는 NASA의 전신인 National Advisory Committee for Aeronautics(NACA)가 1930년대에 개발했습니다. 항공기 날개의 에어포일 형상을 체계적으로 설명하기 위한 것이었습니다. 이 시리즈의 각 에어포일은 네 자리 숫자로 정의되며, 이 숫자에는 에어포일의 주요 기하학적 특성인 캠버, 최대 캠버 위치, 두께가 인코딩되어 있습니다.


그런 다음 두 에어포일 각각에 대해 Reynolds number 50,000부터 1,000,000까지 100,000씩 증가시키며 Airfoil Analysis를 실행하려고 합니다.

그런 다음 두 에어포일의 polar를 외삽하려고 합니다.


800개의 블레이드 프로파일을 살펴볼 예정이므로 하나씩 수작업으로 만드는 대신 procedural generation을 사용해 800개 프로파일을 모두 생성합니다. 이 프로파일들은 twist와 solidity가 서로 다릅니다.
Python 프로그램을 실행하기만 하면 800개의 .bld 파일이 생성됩니다. 각 프로파일을 업로드하세요. 어느 블레이드가 NACA 0015를 따르고 어느 블레이드가 NACA 0018을 따르는지 반드시 확인하세요.


NOAA의 풍력 데이터를 사용하여 현재 거주 지역의 풍력 조건을 반영하도록 시뮬레이션을 설정합니다.


완료되면 800개의 시뮬레이션을 실행하고 데이터를 컴퓨터에 .csv 파일로 내보냅니다. 먼저 출력 계수 데이터를 내보낸 다음, 800개 블레이드 각각의 Rotor Torque 데이터를 내보냅니다.

다음 구조에 따라 CSV 파일을 저장하고, 이후에 사용할 python 파일과 동일한 폴더에 저장해야 합니다.

AI는 먼저 원시 전산 유체 역학(Computational Fluid Dynamics, CFD) 시뮬레이션 데이터를 구문 분석하고 정제합니다. 이 데이터는 블레이드 두께, 비틀림, 솔리디티와 같은 터빈 매개변수를 Torque Ripple Factor(TRF)로 측정한 공력 효율(Cp) 및 구조 진동 하중과 연결합니다. 가능한 모든 설계에 대해 CFD 시뮬레이션을 지속적으로 실행하는 데 드는 막대한 계산 시간과 비용을 줄이기 위해, 시스템은 수학적으로 견고한 Gaussian Process 대리 모델을 학습시켜 새롭고 검증되지 않은 형상에 대한 Cp와 TRF를 신속하게 예측합니다. 그런 다음 이러한 예측 모델을 유전 알고리즘(NSGA-II)에 입력하여 수천 개의 설계를 평가하고 수학적으로 최적인 절충 해를 나타내는 "Pareto front"를 도출합니다. 궁극적으로 이 파이프라인은 엔지니어가 공력 발전량을 극대화하는 동시에 구조 피로와 토크 리플을 안전하게 최소화하는 실제 터빈 구성을 체계적으로 발견할 수 있도록 합니다.

균형 조정 TRF(Torque Ripple Factor) 및 Cp(출력 계수) 은 풍력 터빈 설계에서 근본적인 절충 관계입니다. 발전량과 구조적 생존성을 직접 대립시키기 때문입니다.
Cp(발전량) 극대화: Cp는 터빈의 공력 효율을 측정합니다. 가능한 한 많은 풍력 에너지를 추출하려면 이 값을 극대화하는 것이 주요 목표입니다.
TRF(구조적 생존성) 최소화: TRF는 터빈에 작용하는 구조 하중과 진동력을 나타냅니다. 구조 피로를 줄이고 기계적 고장을 방지하려면 이 값을 최소화해야 합니다.

다목적 최적화 문제에서 Pareto front 는 다른 목적을 악화시키지 않고는 어느 한 목적도 개선할 수 없는 최적 해의 집합입니다. 서로 경쟁하는 목표는 본질적으로 충돌하므로 단 하나의 "완벽한" 답이 존재하는 경우는 드뭅니다. 대신 Pareto front는 가능한 최상의 절충 해를 나타내는 트레이드오프 경계선을 시각화합니다.
이 프로젝트에서 Pareto front는 공력 발전량(Cp)을 극대화하면서 구조 진동 하중(TRF)을 최소화하는 이상적인 풍력 터빈 형상을 도출합니다. 엔지니어는 이 경계 곡선을 분석하여 효율성과 기계적 내구성에 대한 구체적인 목표에 맞는 설계 절충안을 쉽게 선택할 수 있습니다.
이는 전체 프로젝트의 중앙 제어 보드입니다. 디렉터리 경로, 터빈 설계의 물리적 경계 한계(최솟값 및 최댓값 등), 머신 러닝 하이퍼파라미터, 유전 최적화기의 세부 설정을 저장합니다.
원시 전산 유체 역학(CFD) 시뮬레이션 파일을 구문 분석하여 공력 효율(Cp)과 구조 진동(TRF) 데이터를 추출합니다. 또한 향후 실행 속도를 높이기 위해 데이터를 캐시하고, config 파일에 설정된 규칙을 사용하여 통계적 이상치나 불가능한 값을 제거합니다.
머신 러닝의 핵심 두뇌입니다. 정제된 데이터를 사용해 Gaussian Process 대리 모델을 학습시키고, 완전히 새로운 터빈 설계의 Cp와 TRF를 신속하게 예측합니다. 데이터 분할, 최적의 수학적 커널 자동 탐색, 모델 정확도 검증을 처리합니다.
진화 엔진입니다. 유전 알고리즘(NSGA-II)을 사용하여 수천 개의 잠재적 터빈 설계를 "진화"시킵니다. 대리 모델을 지속적으로 조회하여 발전량(Cp)을 극대화하고 구조적 마모(TRF)를 최소화하는 최상의 절충안을 제공하는 설계를 찾습니다.
주 실행기입니다. 데이터 로더를 실행하고, 대리 모델 학습을 시작하며, 최적화기를 실행하고, 결과를 고품질 그래프로 생성하여 모든 기능을 연결합니다. 마지막에는 특정 입력을 수동으로 테스트할 수 있는 대화형 "가상 풍동"도 제공합니다.
5개 파일을 모두 준비했으면 명령 프롬프트에서 venv를 열고 메인 파일을 실행합니다.

AI의 출력 결과는 지정된 폴더에 자동으로 생성됩니다.


outputs 폴더를 열면 AI가 찾은 모든 최적값이 포함된 csv 파일을 확인할 수 있습니다. 그래프를 살펴보면 AI의 정확도를 시각적으로 확인할 수 있습니다.

figures 폴더에는 최적의 터빈이 얼마나 잘 작동하는지 보여 주는 그래프가 들어 있습니다. 특정 지점을 초과하는 TRF에 적용되는 페널티를 수정하여 블레이드 설계를 간소화할 수 있습니다.


또한 여러분의 AI 터빈 설계가 원시 테스트 파일보다 얼마나 더 우수한지도 확인할 수 있습니다.

AI를 여러 번 실행하면 시간이 지나면서 어떻게 개선되는지 확인할 수 있습니다.

이제 이러한 학습 결과를 바탕으로 CAD로 이동하여 Fusion360에서 정확히 최적화된 풍력 터빈을 설계하겠습니다.

먼저 최적의 에어포일을 스케치하고, 모델이 최적이라고 판단한 값을 그대로 솔리디티에 적용합니다.

그런 다음 Qblade에서 시뮬레이션한 블레이드 크기만큼 간단히 돌출합니다(제 경우에는 1 meter). AI가 비틀림이 최적이라고 판단했다면 여기에도 비틀림을 추가해야 합니다. 제 경우 AI는 0-degree 비틀림이 최적이라고 판단했기 때문에, 비틀림이 없는 풍력 터빈을 제작하고 있습니다.


그런 다음 원형 패턴을 만들어 원하는 블레이드 수를 얻습니다.

그런 다음 모든 블레이드를 연결하는 리브를 간단히 만듭니다.

그런 다음 이를 렌더러에 업로드하여 하우징과 함께 어떻게 보이고 상호작용하는지 확인할 수 있습니다. 보시다시피 외관이 꽤 좋고, 콘도 스타일의 하우징에도 이런 터빈 4개가 들어갑니다.

풍력 터빈의 목적은 전력을 생산하는 것이므로, 첨부된 알고리즘을 사용하면 풍력 터빈이 생산하는 전력을 추정할 수 있습니다.



일반적으로 토크가 낮아 전구를 작동시키기에 충분하므로, 뒷마당 조명으로도 사용할 수 있습니다. 적절히 구성하면 울타리 조명으로도 사용할 수 있습니다.

모델 슬라이싱은 보유한 3D 프린터와 사용하는 슬라이싱 소프트웨어에 따라 크게 달라집니다. 일반적인 조언을 드리자면, 블레이드의 infill density는 5~6%, 베이스는 약 8%로 설정하고 속도는 중간으로 설정하는 것이 좋습니다. 또한 오인쇄로 인해 필라멘트가 너무 많이 낭비되지 않도록 각 부품을 한 번에 하나씩 출력하는 것을 권장합니다.

그런 다음 블레이드 설계를 3D 프린트하여(햇빛에 강한 재료를 사용해야 합니다) 실제로 오프그리드 풍력 에너지를 생산할 수 있습니다.
면책 조항: 여기 사진에 나온 프로젝트는 터빈 제작에 관한 저의 오래된 프로젝트이지만, Fusion360으로 제작한 3D 프린트 풍력 터빈이 전력을 생산할 수 있다는 점을 보여 주는 데 도움이 됩니다. 이 지침을 따라 최적화된 터빈을 개발한다면 제 오래된 설계보다 훨씬 더 많은 전력을 생산할 것입니다. 당시에는 적절한 터빈 설계 원리에 대한 지식이 충분하지 않았기 때문입니다.

그런 다음 풍력 터빈을 야외로 가져가 생산하는 풍력 에너지를 테스트할 수 있습니다.
이 튜토리얼을 여기까지 계속 따라오셨다면 축하드립니다. 이 instructable을 만드는 일은 결코 쉽지 않았으므로 따라오기도 분명 쉽지 않았을 것입니다. 여기까지 성공적으로 진행하셨다면 Multi Objective Surrogate Based Optimization에 대해 확실히 이해하게 되었을 것입니다.
원문: https://www.instructables.com/Using-Machine-Learning-to-Optimize-the-Best-Urban-/