상담문의

[HEEDS] AI 를 이용한 Sherpa 알고리즘, 기능 소개

2025-10-29

 응축기가 연결된 고압탱크 단열재의 두께 최적화


 고압탱크는 암모니아 가스를 저장하고 있습니다. 이 암모니아 가스는 건도를 일정하게 유지하면서, 액체 상태와 기체 상태의 두가지 상으로 존재합니다. 만약 암모니아 가스의 온도가 하강하여 내압이 저하될 경우 암모니아 가스의 건도가 상승하기 때문에 응축기를 가동하여 기화된 암모니아 가스를 액화하여 건도를 일정하게 유지해야 합니다. 여기서 두가지 상충된 제약조건이 발생합니다. 암모니아 가스의 온도를 높일 경우, 고압탱크의 내압이 증가하기 때문에 이를 견딜 수 있는 탱크의 벽두께는 증가해야 합니다. 반면에 암모니아 가스의 온도를 낮출 경우, 고압탱크의 내압이 감소하여 암모니아 가스의 기화가 발생하며, 응축기를 가동하여 건도를 낮추어야 합니다. 즉, 응축기의 가동 비용이 발생합니다. 이와 같은 최적화 문제를 다음과 같이 셋팅해 보았습니다.



 단열재의 비용, 고압탱크의 비용, 응축기의 비용은 다음과 같습니다. 단열재의 비용은 벽두께를 x라고 하였을 때, 두께에 비례하여 증가합니다. 고압탱크의 비용은 내압에 견뎌야 하기 때문에 용기 내부에 발생하는 압력에 비례하여 증가합니다. 응축기의 가동 비용은 암모니아 가스를 액화하는 비용에 따라서 증가하므로 가스의 질량 유량에 비례합니다. 이와 같은 세가지 관계식을 아래와 같이 기술할 수 있습니다. 단열재의 비용을 IC, 고압탱크의 비용을 VC, 응축기의 가동에 따른 에너지 소모 비용을 RC 라고 하면, 목적함수는 이 세 가지를 합산한 수식으로 표현이 가능합니다. 따라서, 목적함수가 최소가 되는 조건이 이 문제의 설계변수 정식화 입니다.



 이 최적화 문제를 풀기 위해서 사용할 수 있는 알고리즘은 다양하게 존재합니다. 먼저, 목적함수를 유니모달 함수로 가정하면, 최속강하법, 일변수 탐색법, 격자 탐색법, Sherpa 알고리즘 등이 있습니다. 유니모달 함수란 아래 그림과 같이 peak 점이 한 개인 함수입니다. 



 이번 시간에는 최속강하법을 이용한 최적화 탐색 알고리즘에 대해 알아보겠습니다. 그리고 추후에 AI 기능을 이용한 Sherpa 알고리즘에 대해 소개드릴 예정입니다. 

탐색 방법에 따른 알고리즘의 효율성 고찰

 일변수 탐색법 및 최속강하법은 아래 그림과 같이 3차원 그래프를 등고선으로 표현하여 그 경로를 도시할 수 있습니다. 일변수 탐색법은 그 경로가 서로 직각을 유지하며 연속적으로 산 정상의 위치를 찾아냅니다. 여기서 탐색의 방향은 이미 정해져 있기 때문에 최적의 방향을 찾지 않습니다. 반면에 최속강하법은 일변수 탐색법과 달리 최적의 방향을 계산하며 산 정상의 위치를 찾아냅니다. 따라서 일변수 탐색법과 비교하여 최적점을 탐색하는데 더 적은 시간이 소요됩니다. 



 격자 탐색법은 설계변수를 등간격을 유지하며 탐색하는 방법으로 산 정상까지 도착하는데 가장 느린 알고리즘을 사용합니다. 고압탱크의 두께를 최적화 하는 위의 문제에서 격자 탐색법과 최속강하법을 아래 그림과 같이 서로 비교하였습니다. 


 격자 탐색법은 효율이 낮기 때문에 200회 이상 반복이 발생하였습니다. 반면에 최속강하법은 빠른 탐색으로 36회의 반복이 발생하였습니다. 유니모달 함수와 같이 산 정상이 한 개인 경우 위와 같은 알고리즘으로 비교적 쉽게 최적화를 수행 할 수 있습니다. 그리나 산 정상이 많은 복잡한 함수의 경우 이 알고리즘은 사용할 수 없으며, 다음에 소개드릴 Sherpa 알고리즘을 사용해야 합니다. 


결  론 


 Simcenter Heeds 를 원활하게 사용하기 위해서 몇가지 탐색 알고리즘에 대해 알아보았습니다. Simcenter Heeds 는 탐색이 가장 빠른 Sherpa 알고리즘을 사용하고 있으며, 이 알고리즘은 AI 에 기반합니다. 이번 시간에는 고전적인 탐색 방법인 일변수 탐색법, 격자 탐색법, 최속강하법을 알아보았습니다. 산 정상까지 올라가는데 격자 탐색법이 가장 느린 알고리즘을 사용합니다. 시간과 효율성을 고려한다면 최속강하법이 가장 빠른 알고리즘이라고 할 수 있습니다. 이 탐색법은 유니모달 함수에 대해서 적용이 가능하며, 산 정상이 다수인 함수인 경우 사용이 불가능합니다. 

<matlab code>
x=100;
T=5;
m=7237;
% q=linspace(0,2,201);
Q=zeros(1,50);
R=zeros(1,50);
U=zeros(1,50);
V=zeros(1,50);
W=zeros(1,50);
qL=zeros(1,50);
qU=zeros(1,50);


for i=1:50

    DcDx=0.9*21*x^(-0.1)-9000*(25-T)/(x^2);
    A=-2800/(T+273)+16.33;
    DcDt=2.2*1.2*(exp(A)-100)^(0.2)*exp(A)*2800/((T+273)^2)-9000/x;
    %steepest ascent method
    g=[DcDx DcDt];

    % golden search method
    iter=0;
    phi=(1+sqrt(5))/2;
    XU=8;
    XL=0;
    while(1)
        d = (phi-1)*(XU - XL);
        X1 = XL + d;
        X2 = XU - d;
        q=[X1 X2];
        x2=x-DcDx*q;
        T2=T-DcDt*q;
        P=exp(16.33-2800./(T2+273));
        alpha=21*x2.^(0.9)+1000+2.2*(P-100).^(1.2)+9000*(25-T2)./x2;
        
        if alpha(1) < alpha(2)
            XOPT = X1;
            XL = X2;
        else
            XOPT = X2;
            XU = X1;
        end
        qL(i,iter+1)=XL;qU(i,iter+1)=XU;
        
        iter=iter+1;
        if XOPT~=0, ea = (2 - phi) * abs((XU - XL) / XOPT) * 100;end
        if ea <= 0.0001 || iter >= 50,break,end
    end
    q=XOPT;
    
           
    x1=x-q*DcDx;
    T1=T-q*DcDt;
    P=exp(16.33-2800/(T1+273));
    y=21*x1^(0.9)+1000+2.2*(P-100)^(1.2)+9000*(25-T1)/x1;
                
    if (y < m) && (P > 150) && (T1 < 25) && (x1 > 0)
        m=y;
        x=x1;
        T=T1;
    end
    
    Q(i)=m;
    R(i)=x;
    U(i)=T;
    G(i,:)=[DcDx DcDt]';
    V(i)=-q*DcDx;
    W(i)=q; 
    
end    

BB=[R' U'];
AA=[qL(10,:)' qU(10,:)'];


댓글 없음

댓글 쓰기

이런자료는 어때요?
캐디언스 시스템
(주) 캐디언스시스템

서울본사 : 서울시 금천구 가산디지털 1로 212, 코오롱디지털타워애스턴 1006호