AI-система генеративного дизайну виробів

Клієнт отримує CAD-файл деталі, але конструкція перетяжена: коефіцієнт запасу 3 при необхідному 1.5. Починається довга ручна оптимізація — ітерації, перерахунки, нові прототипи. Місяць роботи інженера, а маса знизилася на 10%. Ми пропонуємо інший підхід: AI сам знаходить оптимальну форму за години,

Напрямки AI-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1302
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    998
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1267
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    714
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1006

Клієнт отримує CAD-файл деталі, але конструкція перетяжена: коефіцієнт запасу 3 при необхідному 1.5. Починається довга ручна оптимізація — ітерації, перерахунки, нові прототипи. Місяць роботи інженера, а маса знизилася на 10%. Ми пропонуємо інший підхід: AI сам знаходить оптимальну форму за години, а не тижні. Топологічна оптимізація дозволяє знизити масу на 30-40% без втрати міцності (SIMP, класичний метод).

Приклад: для авіаційного кронштейна масою 2,3 кг при коефіцієнті запасу 3 ми знизили масу до 1,4 кг без втрати міцності. На ручну оптимізацію пішло б 3 тижні, AI впорався за 6 годин. Економія матеріалу — 0,9 кг, що при ціні алюмінію дає суттєву економію на одній деталі, а при серії — десятки тисяч гривень. Час проєктування скоротився в 10 разів.

Ми розробляємо систему генеративного дизайну, яка аналізує навантаження та граничні умови, а потім генерує конструкцію з мінімально можливою вагою при заданій міцності. Стек — Python, PyTorch, Scipy, OpenCASCADE. Застосування машинного навчання в інженерії (ML для CAD) автоматизує рутинні завдання. Результат — до 40% економії матеріалу та прискорення циклу проєктування в 5–10 разів.

Як працює генеративний дизайн: від SIMP до VAE

Топологічна оптимізація з SIMP

Класичний метод — SIMP (Solid Isotropic Material with Penalization). Алгоритм ітеративно розподіляє матеріал в дискретній сітці, прагнучи мінімізувати податливість при заданому об'ємі. Підходить для задач з чіткими навантаженнями: кронштейни, рами, опори.

import numpy as np from scipy.sparse import lil_matrix from scipy.sparse.linalg import spsolve class TopologyOptimizer: """ SIMP (Solid Isotropic Material with Penalization) метод. Класичний алгоритм генеративного дизайну. """ def __init__( self, nelx: int = 60, # елементів по X nely: int = 30, # елементів по Y volfrac: float = 0.5, # цільова частка матеріалу (50%) penal: float = 3.0, # ступінь штрафу rmin: float = 1.5 # радіус фільтра ): self.nelx = nelx self.nely = nely self.volfrac = volfrac self.penal = penal self.rmin = rmin def optimize( self, load_case: dict, # {node: (fx, fy), ...} boundary_conditions: dict, # {node: (ux, uy), ...} — 0=фіксовано max_iterations: int = 100 ) -> np.ndarray: """Повертає матрицю густин (0=порожньо, 1=матеріал)""" # Ініціалізація x = np.full((self.nely, self.nelx), self.volfrac) xold = x.copy() for iteration in range(max_iterations): # Скінченно-елементний аналіз U = self._finite_element_analysis(x, load_case, boundary_conditions) # Обчислення чутливостей dc = self._sensitivity_analysis(x, U) # Фільтрація чутливостей dc = self._filter_sensitivity(x, dc) # Оновлення через OC (Optimality Criteria) x = self._oc_update(x, dc) # Конвергенція change = np.max(np.abs(x - xold)) xold = x.copy() print(f"Iter {iteration+1:3d}, Volume: {x.mean():.4f}, Change: {change:.4f}") if change < 0.01: print(f"Converged at iteration {iteration+1}") break return x def _oc_update(self, x: np.ndarray, dc: np.ndarray) -> np.ndarray: """Optimality Criteria update""" l1, l2 = 0, 1e9 move = 0.2 while (l2 - l1) / (l1 + l2) > 1e-3: lmid = 0.5 * (l1 + l2) xnew = np.maximum( 1e-3, np.maximum( x - move, np.minimum( 1.0, np.minimum(x + move, x * np.sqrt(-dc / lmid)) ) ) ) if xnew.mean() - self.volfrac > 0: l1 = lmid else: l2 = lmid return xnew 

Чому SIMP не підходить для складних деталей?

SIMP чутливий до початкових умов і може застрягати в локальних мінімумах. Для задач з множинними навантаженнями або нелінійними обмеженнями краще підходять нейромережеві методи — вони генерують різноманітні варіанти, з яких інженер обирає найкращий.

Як VAE генерує нові дизайни?

Ми використовуємо варіаційний автокодер (VAE), який навчається на датасеті оптимізованих дизайнів. На вхід подається вектор фізичних умов (навантаження, границі), на виході — нова форма із заданими властивостями. Це дає сотні варіантів за секунди. Варіаційні автокодери були запропоновані Kingma та Welling (Auto-Encoding Variational Bayes).

import torch import torch.nn as nn class DesignGeneratorVAE(nn.Module): """ Variational Autoencoder для генерації нових дизайнів за заданими фізичними вимогами. """ def __init__(self, latent_dim: int = 64, design_resolution: int = 64): super().__init__() self.latent_dim = latent_dim res = design_resolution # Енкодер: дизайн → латентний вектор self.encoder = nn.Sequential( nn.Conv2d(1, 32, 4, stride=2, padding=1), # res/2 nn.ReLU(), nn.Conv2d(32, 64, 4, stride=2, padding=1), # res/4 nn.ReLU(), nn.Conv2d(64, 128, 4, stride=2, padding=1), # res/8 nn.ReLU(), nn.Flatten() ) encoder_out_size = 128 * (res // 8) ** 2 self.fc_mu = nn.Linear(encoder_out_size, latent_dim) self.fc_logvar = nn.Linear(encoder_out_size, latent_dim) # Умовний вектор: фізичні обмеження self.condition_proj = nn.Linear(16, latent_dim) # Декодер: латентний вектор + умова → дизайн self.decoder_input = nn.Linear(latent_dim * 2, 128 * (res // 8) ** 2) self.decoder = nn.Sequential( nn.ConvTranspose2d(128, 64, 4, stride=2, padding=1), nn.ReLU(), nn.ConvTranspose2d(64, 32, 4, stride=2, padding=1), nn.ReLU(), nn.ConvTranspose2d(32, 1, 4, stride=2, padding=1), nn.Sigmoid() ) self.res = res def generate(self, conditions: torch.Tensor, n_samples: int = 1) -> torch.Tensor: """ conditions: тензор фізичних обмежень (навантаження, граничні умови) Повертає матрицю густин 64×64 для кожного зразка """ with torch.no_grad(): z = torch.randn(n_samples, self.latent_dim) c = self.condition_proj(conditions.expand(n_samples, -1)) zc = torch.cat([z, c], dim=1) h = self.decoder_input(zc) h = h.view(n_samples, 128, self.res // 8, self.res // 8) return self.decoder(h) 

Інтеграція з CAD (через Python-OCC)

Отриману матрицю густин конвертуємо в 3D-сітку через Marching Cubes, згладжуємо та експортуємо в STL. Далі імпорт у будь-яку CAD-систему для фінального доопрацювання.

from OCC.Core.BRepBuilderAPI import BRepBuilderAPI_MakeSolid from OCC.Core.TopoDS import TopoDS_Shape import trimesh import numpy as np def density_to_mesh(density_matrix: np.ndarray, threshold: float = 0.5) -> trimesh.Trimesh: """Конвертуємо матрицю густин в 3D mesh через marching cubes""" from skimage.measure import marching_cubes # 2D → 3D екструзія для демонстрації density_3d = np.stack([density_matrix] * 10, axis=-1) verts, faces, normals, _ = marching_cubes( density_3d, level=threshold, spacing=(1.0, 1.0, 1.0) ) mesh = trimesh.Trimesh(verts=verts, faces=faces, vertex_normals=normals) mesh = trimesh.smoothing.filter_laplacian(mesh, iterations=10) return mesh def export_to_stl(mesh: trimesh.Trimesh, output_path: str) -> None: mesh.export(output_path) 

Як впровадити AI-генеративний дизайн: покрокове керівництво

  1. Аудит поточних конструкцій та навантажень — збір даних про граничні умови, матеріали, коефіцієнти запасу.
  2. Вибір методу — SIMP для чітких задач, VAE для багатоваріантної генерації.
  3. Розробка моделі — реалізація алгоритму, навчання VAE на вашому датасеті (якщо потрібно).
  4. Генерація та валідація — отримання варіантів, перевірка методом скінченних елементів (NASTRAN, Ansys).
  5. Інтеграція з CAD — конвертація в STL/STEP, імпорт в SolidWorks, CATIA або Fusion 360.
  6. Тестування та доопрацювання — фіналізація конструкції, передача документації (model card).

Яких результатів можна досягти за допомогою генеративного дизайну?

Область Задача Обмеження Мета Економія матеріалу
Авіація Кронштейн Навантаження на зсув -40% ваги Суттєва економія при ціні матеріалу
Медицина Кістковий імплант Біомеханічні навантаження Пористість для остеоінтеграції Індивідуально
Авто Амортизаційна скоба Ударні навантаження -30% матеріалу Значна економія
Архітектура Несучі колони Вітрові + снігові навантаження Мінімальний матеріал Індивідуально

Порівняння методів SIMP та VAE

Метод Застосовність Вимоги до даних Час генерації Результат
SIMP Чіткі фізичні задачі, лінійна пружність Параметри навантажень, граничні умови Хвилини Єдине оптимальне рішення
VAE Множинні навантаження, нелінійні обмеження Датасет оптимізованих дизайнів (1000+) Секунди (після навчання) Множина варіантів
Типові помилки при впровадженні генеративного дизайну
  • Ігнорування граничних умов: якщо неправильно задані точки кріплення, AI видасть гарну, але марну форму.
  • Перенавчання VAE на малому датасеті: менше 1000 зразків призводить до галюцинацій — нереалістичних дизайнів.
  • Відсутність валідації методом скінченних елементів: AI-результат потрібно перевіряти в NASTRAN або Ansys.

Що входить в нашу роботу

Ми реалізуємо проект під ключ:

  • Аудит поточних конструкцій та навантажень.
  • Розробка математичної моделі — SIMP або VAE.
  • Навчання моделі на ваших даних (якщо потрібен VAE).
  • Генерація та експорт в STL/STEP.
  • Інтеграція з CAD-середовищем.
  • Документація: model card, інструкція з донавчання.
  • Підтримка на етапі впровадження.

Наш досвід та гарантії

Ми займаємося AI-інжинірингом більше 7 років, реалізували 20+ проектів в авіації, автомобілебудуванні та медицині. Надаємо гарантію на працездатність алгоритму у ваших умовах. За потреби проводимо донавчання моделі на нових даних. Всі вихідні коди та model card передаються замовнику.

Терміни

Базовий SIMP-прототип — 1–2 тижні. Повноцінна система з VAE — 4–6 тижнів. Терміни розраховуються індивідуально після аналізу задачі. У нас є досвід прискорення проектів за рахунок transfer learning та квантизації (INT8) — latency p99 знижується в 2 рази.

Оцініть потенціал для вашої деталі

У проектах ми досягаємо зниження маси на 35-40% для деталей з алюмінію та титану. Якщо ваш поточний процес проєктування потребує тижнів ручної оптимізації, зв'яжіться з нами для демонстрації можливостей. Замовте аудит вашої деталі та отримайте демо-розрахунок за 2 дні — зв'яжіться з нами.