KR101907884B1 - Fpga 구조를 갖는 입자군집최적화 실행 장치 및 방법 - Google Patents

Fpga 구조를 갖는 입자군집최적화 실행 장치 및 방법 Download PDF

Info

Publication number
KR101907884B1
KR101907884B1 KR1020170136838A KR20170136838A KR101907884B1 KR 101907884 B1 KR101907884 B1 KR 101907884B1 KR 1020170136838 A KR1020170136838 A KR 1020170136838A KR 20170136838 A KR20170136838 A KR 20170136838A KR 101907884 B1 KR101907884 B1 KR 101907884B1
Authority
KR
South Korea
Prior art keywords
pso
block
particle
state
particles
Prior art date
Application number
KR1020170136838A
Other languages
English (en)
Inventor
이헌철
권용성
홍언표
김기표
Original Assignee
국방과학연구소
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 국방과학연구소 filed Critical 국방과학연구소
Priority to KR1020170136838A priority Critical patent/KR101907884B1/ko
Application granted granted Critical
Publication of KR101907884B1 publication Critical patent/KR101907884B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4873Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Nonlinear Science (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

본 발명은 입자군집최적화(PSO) 알고리즘을 FPGA(Field-Programmable Gate Array) 구조로 구현한 입자군집최적화 실행 장치 및 방법에 관한 것으로, 시간 가변 특성을 갖는 모의 난수를 발생하는 모의 난수 발생기; 입자군집최적화(PSO) 알고리즘 수행시 제1공유 엘리먼트를 이용하여 PSO알고리즘의 각 PSO상태에 대응되는 입자 관련 곱셈 계산을 수행하는 곱셈 블럭; 상기 PSO알고리즘 수행시 제2공유 엘리먼트를 이용하여 PSO알고리즘의 각 PSO상태에 대응되는 나눗셈 계산을 수행하는 나눗셈 블럭; 및 상기 PSO알고리즘의 복수의 PSO상태를 개별처리하는 복수의 PSO상태 처리 블록으로 구성되어, 상기 모의난수 발생기, 곱셈 블록 및 나눗셈 블럭과의 연계성에 의해 결정되는 각 PSO상태 처리 블록의 속성에 근거하여 복수의 입력 입자를 파이프라인 구조 또는 병렬 구조로 처리하는 PSO코어 블록;을 포함하여 구성된다.

Description

FPGA 구조를 갖는 입자군집최적화 실행 장치 및 방법{PARTICLE SWARM OPTIMIZATION PERFORMING APPATATUS HAVING FPGA STRUCTURE AND METHOD THEREOF}
본 발명은 입자군집최적화(PSO) 알고리즘을 FPGA(Field-Programmable Gate Array) 구조로 구현한 입자군집최적화 실행 장치 및 방법에 관한 것이다.
입자군집최적화(Particle Swarm Optimization, PSO) 알고리즘은 군집지능 (Swarm Intelligence) 개념을 활용한 대표적인 샘플링(sampling) 기반 최적화 알고리즘이다. 최적화를 위한 목적함수가 복잡하거나 제약조건들이 비선형성을 갖더라도 좋은 성능을 나타내기 때문에 각광을 받아오고 있다. 상기 입자군집최적화 알고리즘의 기본 원리는 다음과 같다.
① 각 입자는 최적화 타겟에 이끌린다(Attraction).
② 각 입자는 자신의 히스토리(History)를 기억한다(Memory).
③ 모든 입자들은 정보를 공유한다(Sharing).
④ 각 입자는 반복적 업데이트를 통해 최적화 타겟을 찾아간다(Iteration).
도 1은 기존의 입자군집최적화 알고리즘의 수행순서를 나타낸다.
도 1에 도시된 바와같이, 입자군집최적화 알고리즘은 상기와 같은 기본 원리를 바탕으로, 먼저 최적화 대상을 나타내는 다차원 탐색영역내에서 무작위로 입자들의 위치를 추출하고(S100), 상기 추출된 각 입자에 대하여 대상 시스템의 제약조건을 이용한 목적함수를 이용하여 평가한다(S110). 이어서 상기 평가 결과 성전된 입자의 개별 전역치(Personal best)와 전역 최적치(global best)를 기반으로 입자별로 속도 및 위치를 업데이트한다(S120). 상기 단계(S100~S120)는 정해진 횟수만큼 반복적으로 수행되며 이에 따라 입자별로 속도 및 위치가 계속 업데이트된다. 이후 정해진 햇수에 도달하면 상기 갱신된 입자들의 위치를 기반으로 대상 시스템의 최적치를 획득하게 된다.
상기 입자군집최적화 알고리즘의 성능은 샘플링에 사용되는 입자의 개수에 영향을 받게 된다. 입자의 개수가 많을수록 국부 최소치(local minimum) 또는 국부 최대치(local maximum)에 빠질 위험성은 줄어들지만, 계산량이 그에 비례하여 많아지게 된다. 따라서, 최적화 결과를 실시간으로 사용하는 시스템에 적용할 때에는 사용가 능한 입자의 개수가 제한되기 때문에 알고리즘 성능 역시 한계를 갖게 된다.
이 문제를 해결하기 위해 크게 두 가지 방법이 사용되고 있다.
첫 번째는 하드웨어적으로 고속 프로세서(processor)를 사용하는 것이다. 하지만, 프로세서는 속도가 올라갈수록 그에 따른 가격이 상승하므로 비용 측면에서 비효율적이다. 두 번째는 입자군집최적화 알고리즘을 속도 측면에서 개선하는 것이다. 하지만, 이 방법은 입자군집최적화 알고리즘의 기반에 되는 입자 샘플링 과정을 반드시 거쳐야 하므로 속도 측면에서 개선되긴 힘든 어려움이 있다.
본 발명의 일 목적은 입자군집최적화(PSO) 알고리즘을 FPGA)로 구현하여 PSO 알고리즘의 처리 속도를 대폭적으로 향상시킬 수 있는 FPGA 구조를 갖는 입자군집최적화 실행 장치 및 방법을 제공하는데 있다.
본 발명의 다른 목적은 입자의 연산량을 크게 증가시키지 않고 PSO알고리즘을 안정적인 수행할 수 있는 FPGA 구조를 갖는 입자군집최적화 실행 장치 및 방법을 제공하는데 있다.
상기와 같음 목적을 달성하기 위하여 본 발명의 실시예에 따른 FPGA 구조를 갖는 입자군집최적화 실행 장치는, 시간 가변 특성을 갖는 모의 난수를 발생하는 모의 난수 발생기; 입자군집최적화(PSO) 알고리즘 수행시 제1공유 엘리먼트를 이용하여 PSO알고리즘의 각 PSO상태에 대응되는 입자 관련 곱셈 계산을 수행하는 곱셈 블럭; 상기 PSO알고리즘 수행시 제2공유 엘리먼트를 이용하여 PSO알고리즘의 각 PSO상태에 대응되는 나눗셈 계산을 수행하는 나눗셈 블럭; 및 상기 PSO알고리즘의 복수의 PSO상태를 개별처리하는 복수의 PSO상태 처리 블록으로 구성되어, 상기 모의난수 발생기, 곱셈 블록 및 나눗셈 블럭과의 연계성에 의해 결정되는 각 PSO상태 처리 블록의 속성에 근거하여 복수의 입력 입자를 파이프라인 구조 또는 병렬 구조로 처리하는 PSO코어 블록;을 포함할 수 있다.
본 발명의 실시예에 따라, 상기 복수의 PSO상태 처리 블록은 PSO알고리즘을 입자 계산 방식에 따라 분할한 8개의 PSO상태 각각에 대응되도록 구현될 수 있다.
본 발명의 실시예에 따라, 상기 복수의 PSO상태 처리 블록은 각 PSO상태에서 입자 관련 계산이 요구되는 경우에는 파이프라인 구조로 구현되고, 모든 입자들이 공유 자원에 대한 엑세스 없이 동일한 계산 과정을 거치는 경우에는 병렬 구조로 구현될 수 있다.
본 발명의 실시예에 따라, 상기 복수의 PSO상태 처리 블록은 상기 곱셈 블록 및 나눗셈 블럭을 이용하거나 모의 난수 발생기를 이용하여 각 입자에 대한 순차 계산을 수행하는 제1PSO상태 처리 블록; 및 상기 곱셈 블록과 나눗셈 블럭과 모의 난수 발생기를 사용하지 않고 모든 입자들에 대하여 동일한 계산 과정을 수행하는 제2PSO상태 처리블록을 포함하며, 상기 제1PSO상태 처리 블록은 파이프 라인구조로 구현되고, 상기 제2PSO상태 처리 블록은 병렬 구조로 구현될 수 있다.
본 발명의 실시예에 따라, 상기 제1PSO상태 처리 블록은 PSO상태 0를 처리하는 블록으로서, 입력된 초기값 벡터를 기준으로 기정의된 탐색 공간내에서 복수의 입자들을 샘플링하는 입자 샘플링 블록; PSO상태 4를 처리하는 블록으로서, 이전의 PSO상태 3에서 계산된 입자별 비용을 사용하여 입자별 개별 최적치와 전역 최적치를 도출하여 업데이트하는 최적치 계산 블록; 및 PSO상태 6을 처리하는 블록으로서, 이전의 PSO상태 5에서 업데이트된 입자별 속도 및 위치가 종료조건에 해당하는지 판단하는 종료조건 판단 블록;을 포함할 수 있다.
본 발명의 실시예에 따라, 상기 종료조건 판단 블록은 입자 계산이 미리 정해진 반복 횟수 도달되었는지와 상기 입자별 속도 및 위치가 수렴 조건 부합되는지의 여부 중 적어도 하나가 충족되면 종료조건에 해당되는 것으로 판단할 수 있다.
본 발명의 실시예에 따라, 상기 제2PSO상태 처리 블록은 동일 시간에 입자들의 개수만큼 블록의 인스턴스들을 생성 및 활용하여 입자들에 대한 계산을 병렬화하여 처리할 수 있다.
본 발명의 실시예에 따라, 상기 제2PSO상태 처리 블록은, PSO상태 1를 처리하는 블록으로서, PSO상태 0에서 샘플링된 각 입자를 최적화 대상이 요구하는 자리수 및 유효숫자에 맞춰서 업데이트하는 입자 보정 블록; PSO상태 2를 처리하는 블록으로서, 이전의 PSO상태 1에서 업데이트된 입자에 대하여 제약조건 관련 변수들을 업데이트하고 입자별 제약조건을 계산하는 제약조건 계산 블록; PSO상태 3를 처리하는 블록으로서, 이전의 PSO상태 2에서 계산된 입자별 비용을 사용하여 입자별 개별 최적치 및 전역 최적치를 도출하여 업데이트하는 비용 계산 블록; PSO상태 5를 처리하는 블록으로서, 이전의 PSO상태 4에서 계산된 입자별 개별 최적치 및 전역 최적치를 사용하여 입자별 속도 및 위치를 업데이트하는 입자 업데이트 블록; 및 PSO상태 7을 처리하는 블록으로서, 이전의 PSO상태 6에서 처리되어 전달된 전역 최적치 또는 모든 입자들의 위치값의 평균값을 최종 최적값으로 선택하는 최종 최적치 계산 블록;을 포함할 수 있다.
본 발명의 실시예에 따라, 상기 제약조건 계산 블록은 사전에 정의된 시스템 파라미터들과 시스템 모델을 이용하여 시스템 제약조건들을 계산할 수 있다.
본 발명의 실시예에 따라, 상기 PSO코어 블록은 다차원 초기값 벡터의 입출력을 담당하는 I/O인터페이스; 복수의 PSO상태를 계수하는 클럭 카운터; 각 상태에서 복수의 입력 입자를 카운트하는 입자수 카운터; 및 상기 클럭 카운터와 입자수 카운터 값을 근거로 8개의 PSO 상태들을 제어하는 PSO상태 제어기를 더 포함하며, 상기 PSO상태 처리 블록은 상기 PSO상태 제어기의 제어에 따라 각 PSO 상태를 파이프라인 또는 병렬 구조로 수행할 수 있다.
본 발명의 실시예에 따라, 상기 각 PSO상태는 고유 계산시간을 갖도록 구현되고, 상기 PSO상태 제어기는 상기 클럭 카운터에 의해 각 PSO상태의 고유 계산시간에 해당하는 클럭 수가 모두 카운트되면 현재 PSO상태에서 복수의 입자에 대한 처리를 완료하고 다음 PSO상태로 전이하도록 제어할 수 잇다.
본 발명의 실시예에 따라, 상기 제1공유 엘리먼트는 PSO코어 블럭으로부터 2개의 입력 벡터를 곱셈하여 하나의 벡터를 출력하는 이진 곱셈기; 및 상기 이진 곱셈기에서 출력되는 벡터의 길이를 입력 벡터와 길이를 동일하게 맞춤과 동시에 고정소수점 자리수를 맞추는 텍터 보정기를 포함하고, 상기 제2공유 엘리먼트는 클럭 카운터, I/O인터페이스, 나눗셈 상태 제어기, 2보수 변환기, 가산기 및 감산기를 포함할 수 있다.
본 발명의 실시예에 따라, 상기 모의난수발생기는 LSFR(Linear Feedback Shift Register)에 기반하여 모의난수를 발생시킬 수 있다.
상기와 같음 목적을 달성하기 위하여 본 발명의 실시예에 따른 FPGA 구조를 갖는 입자군집최적화 실행 방법은, 초기값 벡터를 기준으로 사전에 설정된 탐색 공간내에서 복수의 입자들을 샘플링하는 제1단계; 상기 샘플링된 복수의 입자를 최적화 대상이 요구하는 자리수 및 유효숫자에 맞게 보정하는 제2단계; 상기 보정된 복수의 입자에 대하여 제약조건 관련 변수들을 업데이트하고 입자별 제약조건을 계산하는 제3단계; 상기 계산된 제약조건을 사용하여 목적 함수를 계산하고 입자별로 비용을 계산하는 제4단계; 상기 계산된 입자별 비용을 이용하여 입자별 최적치 및 전역 최적치를 도출하여 업데이트하는 제5단계; 상기 계산된 입자별 최적치 및 전역 최적치를 이용하여 입자별 속도 및 위치를 업데이트하는 제6단계; 및 현재까지 수행된 입자 계산이 미리 정해진 반복 횟수 도달되었는지와 입자별 속도 및 위치가 수렴 조건에 부합되는지를 체크하여 종료조건에 도달되었는지 판단하는 제7단계; 및 상기 반복 횟수에 도달하거나 상기 수렴 조건에 부합하면 최종적으로 업데이트된 입자들의 위치값의 평균값을 최종 최적값으로 선택하는 제8단계;를 포함할 수 있다.
본 발명의 실시예에 따라, 상기 제1,제5 및 제7단계는 곱셈 및 나눗셈을 위한 공유 자원을 이용하여 입자 계산을 수행하므로 파이프라인 구조로 수행하고, 나머지 제2 내지 제4단계, 제6단계 및 제8단계는 모든 입자들이 상기 공유 자원에 대한 엑세스 없이 동일한 계산 과정을 거치므로 병렬 구조로 수행될 수 있다.
상기 실시예에 따라 본 발명은 입자군집최적화 알고리즘을 FPGA로 구현함으로써 알고리즘의 속도를 크게 향상시킬 수 있고, 입자군집최적화 알고리즘의 연산량이 입자의 개수에 비례해서 증가하지 않기 때문에 입자의 개수에 따른 연산량과 성능 간 trade-off 관계를 완화시킬 수 있는 효과가 있다.
또한, 본 발명은 입자군집최적화 알고리즘이 FPGA에서 독립적으로 수행됨으로써 CPU에서 수행되는 다른 알고리즘 수행에 의해 속도가 저하되지 않는 장점이 있다.
이에 부가하여 본 발명은 CPU에서 수행되는 다른 태스크(task)들과 충돌이 일어나지 않으므로 입자군집최적화 알고리즘을 보다 안정적으로 수행할 수 있으며, 특히 입자군집최적화 알고리즘을 FPGA로 구현함으로써 해당 알고리즘에 대한 별도 검증이 가능한 효과가 있다.
도 1은 기존의 입자군집최적화 알고리즘의 수행순서를 나타낸 순서도.
도 2는 본 발명에 따른 FPGA 기반 입자군집최적화 알고리즘의 수행 순서를 나타낸 순서도.
도 3은 PSO알고리즘의 각 상태별 FPGS구현 구조를 나타낸 도면.
도 4는 본 발명의 실시예에 따른 FPGA 구조를 갖는 입자군집최적화 실행 장치의 상세 구성도.
도 5 및 도 6은 PSO상태블록이 복수의 PSO상태를 수행할 때 블록별 파이프라인 구조 또는 병렬 구조를 설명하기 위한 타이밍도.
본 명세서에서 사용되는 기술적 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아님을 유의해야 한다. 이하의 설명에서 사용되는 구성요소에 대한 접미사 "모듈" 및 "부"는 명세서 작성의 용이함만이 고려되어 부여되거나 혼용되는 것으로서, 그 자체로 서로 구별되는 의미 또는 역할을 갖는 것은 아니다.
그리고, 본 명세서에서 사용되는 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "구성된다." 또는 "포함한다." 등의 용어는 명세서상에 기재된 여러 구성 요소들, 또는 여러 단계를 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
또한, 본 명세서에 개시된 기술을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 명세서에 개시된 기술의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
본 발명은 입자군집최적화 알고리즘을 FPGA(Field-Programmable Gate Array)에 구현하는 구조 및 방법을 제안한다. 입자군집최적화 알고리즘이 FPGA에 구현되면 입자들에 대한 계산이 병렬적으로 처리될 수 있고, 그 처리 과정 역시 물리적인 연결 상태이므로 속도가 크게 개선될 수 있다. 다만, 입자군집최적화 알고리즘을 FPGA에 그대로 구현하면 최적화 성능이 매우 떨어지게 된다. 본 발명에서는 입자군집최적화 알고리즘의 우수한 성능을 유지하면서 FPGA 구현할 수 있는 방법을 제안한다.
기존 CPU 기반 입자군집최적화 알고리즘에서는 하나의 상태(PSO state)내에서 수행될 수 있는 부분들도 FPGA에서는 시분할 방식으로 두 개 이상의 상태들로 구분되어 수행되어야 하는 부분들도 있다. 특히, 목적함수를 계산하는 과정은 일반적으로 다양한 변수들을 사용하게 되고, 다수의 컴포넌트(component)를 공유 또는 복제해서 사용하는 등 복잡한 연산이 요구되기 때문에 FPGA 구현 시에는 목적함수 계산 과정은 좀 더 세분화될 필요가 있다.
도 2는 본 발명에 따른 FPGA 기반 입자군집최적화 알고리즘의 수행 순서도를 나타낸 순서도를 나타내고, 도 3은 각 상태별 FPGS구현 구조를 나타낸다.
본 발명은 도 2와 같은 새로운 수행 순서도에 기반하여 FPGA 기반 입자군집최적화 알고리즘을 구현할 수 있다. 또한 본 발명은 도 3에 도시된 바와같이 입자군집최적화 알고리즘(PSO)의 각 상태(PSO_State)를 파이프라인 구조 또는 병렬 구조로 구현할 수 있다. 이때 순차적 수행이 필수적인 PSO상태(PSO_State)는 파이프라인 구조로 구현한다. 하지만, 모든 입자들이 공유 자원에 대한 엑세스 없이 동일한 계산 과정을 거칠 수 있는 PSO상태(PSO_State)는 병렬 구조로 구현함으로써 전체 계산 시간을 단축할 수 있도록 한다. 이러한 구현 구조 윈칙에 따라 본 발명의 실시예에서는 입자군집최적화 알고리즘(PS))을 파이프라인 또는 병렬 구조를 채용하는 8개의 상태(PSO_State 0~PSO_State 7)를 나타낼 수 있다. 따라서, 상기와 같은 상태별 구현 구조에 따라 다음과 같은 상태별 구조 방법이 수행될 수 있다.
도 2 및 도 3을 참조하면, 먼저 상태 0(PSO_State 0)에서는 입력된 초기값 벡터(PSO_initial_vector)를 기준으로 미리 정의된 탐색 공간 내에서 N개의 입자들을 샘플링한다(S200). 상기 샘플링은 각 입자에 해당하는 클럭에서 모의 난수발생기(Pseudo Random Number Generator : PRNG)로부터 생성된 값을 받음으로써 수행한다. 상기 상태 0(PSO_State 0)는 N개의 입자들은 서로 다른 샘플링 결과들을 사용해야 하기 때문에 파이프라인 구조로 구현된다.
상기 상태 1(PSO_State 1)에서는 입자들을 최적화 대상의 형식에 맞춘다 (S210). 모의 난수발생기 컴포넌트(PRNG)로부터 받은 값 또는 업데이트된 입자들의 위치값은 이진수의 배열로서 고정 소수점 형식을 갖고 있다. 상기 값들을 최적화 대상이 요구하는 조건, 즉 자리수 및 유효숫자에 맞춰서 업데이트한다. 상기 상태 1은 입자 샘플링 블록(로직)이 각 입자별로 독립적으로 구현될 수 있으므로 병렬 구조로 구현하여 전체 계산 시간을 단축한다.
상기 상태 2(PSO_State 2)에서는 최적화 제약조건 관련 변수들을 업데이트하고 입자별 제약조건을 계산한다(S220). 상기 상태 2는 제약조건 계산 블록(로직)이 각 입자별로 독립적으로 구현될 수 있으므로 병렬 구조로 구현하여 전체 계산 시간을 단축한다.
상기 상태 3(PSO_State 3)에서는 상태 2(PSO_State 2)에서 계산된 제약조건을 사용하여 입자별 목적함수를 업데이트하고 상기 업데이트된 목적 함수를 이용하여 입자별 비용(cost)을 계산한다(S230). 이때 목적함수 허용 범위를 벗어나는 비용에 대해서는 미리 정해진 최대값으로 업데이트한다. 상기 상태 3은 비용 계산 블록(로직)이 각 입자별로 독립적으로 구현될 수 있으므로 병렬 구조로 구현하여 전체 계산 시간을 단축한다.
상기 상태 4(PSO_State 4)에서는 상태 3(PSO_State 3)에서 계산된 입자별 비용을 사용하여 입자별 개별 최적치(personal best) 및 전역 최적치(global or swarm best)를 도출하여 업데이트한다(S240). 상기 개별 최적치 및 전역 최적치 계산은 최소값 또는 최대값을 찾는 과정으로서, N개의 입자들의 위치값들을 순차적으로 비교하며 찾아야 하므로 파이프라인 구조로 구현되어야 한다.
상기 상태 5(PSO_State 5)에서는 상태 4(PSO_State 4)에서 계산된 입자별 개별 최적치 및 전역 최적치를 사용하여 입자별 속도 및 위치를 업데이트한다(S250). 상기 입자별 속도 및 위치 업데이트는 속도 및 위치 업데이트 로직에서 각 입자별로 독립적으로 수행할 수 있으므로 병렬 구조로 구현함으로써 전체 계산 시간을 단축한다.
상기 상태 6(PSO_State 6)에서는 입자군집최적화 종료조건의 계산 및 판단을수행한다(S260). 즉, 현재의 상태가 미리 정해진 반복 횟수 (epoch)에 도달했는지 그리고 업데이트 값(입자별 속도 및 위치)이 수렴조건에 부합하는지 판단한다. 판단 결과 종료조건에 해당되면 마지막 상태인 상태 7(PSO_State 7)로 전이되고, 그렇지 않으면 상태 1(PSO_state 1)로 전이시킨다. 상기 수렴조건 계산 및 판단 과정은 입자들의 위치값들에 대해 순차적으로 수행되어야 하므로 파이프라인 구조로 구현된다.
상기 상태 6(PSO_State 6)에서 최종적으로 업데이트된 입자들의 위치값은 이진수의 배열로서 고정소수점 형식을 갖고 있다. 따라서, 상태 7(PSO_State 7)에서는 최종 입자 위치를 이용하여 최적치를 계산한다(S270). 즉, 최종적으로 업데이트된 입자들의 위치값을 최적화 대상이 요구하는 조건, 즉 자리수 및 유효숫자에 맞춰서 업데이트하고, 이어서 전역 최적치 또는 모든 입자들의 위치값의 평균값을 최종 최적값으로 선정한다. N개의 입자들의 위치값의 평균값을 최종 최적값으로 선정하는 경우 평균값 계산을 위한 과정은 순차적으로 수행되어야 하므로 파이프라인 구조로 구현된다.
이와같이 본 발명은 각 상태별 구현 구조를 구현할 때 순차적 수행이 필수적인 상태는 파이프라인 구조로 구현하고, 모든 입자들이 공유 자원에 대한 엑세스 없이 동일한 계산 과정을 거칠 수 있는 경우에는 병렬 구조로 구현함으로써 전체 계산 시간의 단축을 도모한다. 이러한 병렬 구조 기반 구현을 통해 본 발명에 따른 입자군집최적화 알고리즘 구조는 기존 CPU에서 수행될 때보다 훨씬 빠르게 수행될 수 있고, 더불어 실시간 시스템 적용에도 기여할 수 있게 된다.
따라서, 본 발명은 상기와 같은 상태별 파이프라인 또는 병렬 구조를 입자군집최적화 알고리즘에 적용하여 FPGA기반의 입자군집최적화 알고리즘 구조를 구현할 수 있다.
도 4는 본 발명의 실시예에 따른 FPGA 구조를 갖는 입자군집최적화 실행 장치의 상세 구성도이다.
도 4를 참조하면, 본 발명의 실시예에 따른 실시예에 따른 입자군집최적화 알고리즘의 FPGA구조는 모의난수를 발생시키는 LSFR(Linear Feedback Shift Register) 기반의 모의난수발생기(Pseudo Random Number Generator : PRNG)(100), 고정소수점 곱셈을 수행하는 곱셈 블록(FixedP_Mul)(110), 고정소수점 나눗셈을 수행하는 나눗셈 블록(FixedP_Div)(120) 및 입자군집최적화 알고리즘을 수행하여 대상 시스템의 최적치를 계산하는 PSO코어 블록(PSO_CORE)(130)을 포함한다.
상기 FPGA구조에서 입력 신호는 최적화 대상에 대한 다차원 초기값 벡터 (initial_vector), 클럭 신호(clk_i), 리셋 신호(rst_i) 및 모의난수발생기(Pseudo Random Number Generator : PRNG)의 시작 신호(start_i)로 구성된다. 출력 신호는 다차원 결과값 벡터(result_vector)를 나타내는 신호로 구성된다.
입자군집최적화는 샘플링 기반 최적화 알고리즘이기 때문에, 초기 샘플링 단계 및 입자의 위치 업데이트를 위해서 난수를 사용한다. 실제 난수발생기를 사용하기 위해서는 별도 회로 구성이 필요하기 때문에, 본 발명은 일반적으로 알려진 LSFR(Linear Feedback Shift Register)를 이용하여 LSR기반의 모의난수발생기 (PRNG)(100)를 구현한다. 상기 LSFR은 입력된 초기값에 기반하여 배타적 (exclusive) OR 로직을 여러 번 반복시킴으로써 난수를 생성한다. 일 예로 본 발명은 클럭 신호(clk_i)의 상승 에지(rising edge)마다 시작 신호(start_i) 값에 기반하여 난수를 발생시키며, 이에 한정되는 것은 아니다. 상기 모의난수발생기(100)는 클럭 신호(clk_i)의 매 클럭마다 업데이트된다.
입자군집최적화 알고리즘은 소수점 레벨까지 다루는 정밀한 최적화 알고리즘이기 때문에 소수점 연산이 가능해야 한다. FPGA에 부동소수점 연산 기능을 구현할 수 있으나 FPGA 로직 자원을 과도하게 소비하여 부동소수점 연산을 FPGA에 구현하는 것은 비효율적이라는 것이 일반적으로 알려져 있다. 따라서, FPGA에서 합성 가능한 소수점 연산을 위해서는 성능저하를 최소화하면서도 적정 로직 자원으로 설계 가능한 컴포넌트 또는 함수 구현이 필수적이다.
따라서, 본 발명은 입자군집최적화 알고리즘의 FPGA 구현을 위해 고정소수점 곱셈을 수행하는 곱셈 블록(FixedP_Mul)(110)을 구현한다. 상기 곱셈 블록 (110)은 입력된 2개의 벡터(mul_input_vectors)를 이진수 곱셈기(binary multiplier)를 이용하여 곱셈하여 하나의 벡터(mul_output_vector)를 출력한다. 그런데, 상기 출력되는 벡터(mul_output_vector)의 길이는 입력 벡터 ((mul_input_vector)보다 길어지기 때문에, 벡터 보정 로직을 통해 입력 벡터와 길이를 동일하게 맞춤과 동시에 고정소수점 자리수를 맞춰주는 보정 과정(vector truncation)을 거친 후에 출력한다.
한편, 입자의 고정소수점 기반 나눗셈은 일반적으로 고정소수점 곰셈보다 복잡한 과정이 필요하기 때문에 나눗셈 블록(FixedP_Div)(120)으로 구현한다. 상기 나눗셈 블록(FixedP_Div)(120)은 블록제어 신호(div_enable)에 의해 동작되어 나눗셈 연산을 위한 두 개의 벡터(div_input_vectors)를 나눗셈 연산하여 하나의 벡터(div_output_vector)를 출력한다. 이때 상기 나눗셈 블록(120)에는 내부 로직 구현을 위해 클럭 신호와 리셋 신호가 입력된다.
상기 나눗셈 블록(120)에는 컴포넌트의 입출력을 담당하는 입출력 인터페이스(I/O Interface)가 포함되며, 해당 블록(120)에서의 고정소수점 나눗셈 연산은 6개의 상태(state)로 구성되어 있다. 각 상태마다 시간 지연(delay)이 발생하고 내부 신호 간 의존성을 해결하기 위해 클럭 카운터(clock counter)가 포함된다. 나눗셈 상태 제어기(division state controller)는 클럭 카운터를 이용하여 6개의 나눗셈 상태들을 제어하는데, 각 상태를 제어할 때 2의 보수 변환기, 가산기 및 감산기가 활용된다. 따라서, 각 상태에 따라 요구되는 클럭의 개수를 예측하였고, 그 예측된 값을 이용하여 나눗셈 상태가 제어된다. 출력 벡터는 입력 벡터들의 크기와 동일하도록 구현된다.
상기 PSO코어 블록(PSO_CORE)(130)에는 입자군집최적화(PSO) 알고리즘을 수행하기 위한 다차원 초기값 벡터(initial_vector), 클럭 신호(clk_i) 및 리셋 신호(rst_i)가 입력되고, 알고리즘이 종료되면 다차원 결과값 벡터(result_vector)가 출력된다. 상기 PSO코어 블록(130)에는 입출력을 담당하는 입출력 인터페이스(I/O Interface)가 포함될 수 있다. 본 발명에서 입자군집최적화 알고리즘은 8개의 상태로 구성될 수 있다. 이 경우 각 상태마다 시간 지연(delay)이 발생하고 내부 신호 간 의존성을 해결하기 위해 클럭 계수기(clock counter)를 구비한다. 또한, 상기 PSO코어 블록(130)은 입자간 의존관계(dependency)가 존재하는 상태에서의 정확한 연산을 수행하기 위한 입자수 카운터(particle number counter)와, 상기 클럭 카운터와 입자수 계수기를 이용하여 8개의 PSO 상태들을 제어하는 PSO상태 제어기(PSO state controller) 및 상기 PSO상태 제어기의 제어에 따라 8개의 PSO 상태를 파이프라인 또는 병렬 구조로 수행하는 PSO상태 처리 블록을 포함할 수 있다.
상기 PSO상태 블록은 8개의 PSO 상태에 대응되는 8개의 개별 블록으로 구성된다. 상기 개별 블록은 도 3에 도시된 각 상태에 각각 대응되어 파이프라인 또는 병렬 구조를 갖는다. 이때, 상기 개별 블록의 명칭은 설명의 편의를 위하여 부여한 것일 뿐 그의 성능을 나타내는 다른 용어로 대체될 수 있다. 이하 PSO상태 블록에서 8개의 PSO 상태를 수행하는 동작을 도 4를 참조하여 설명하면 다음과 같다
도 4에 도시된 봐같이 8개의 PSO상태를 수행하기 위하여 입자 샘플링 블록은 PSO상태 제어기의 제어에 따라 먼저 입자(e.g., 100개의 위치들을 초기화(particle initialization)하고 모의난수발생기(PRNG)(100)로부터 난수 벡터를 입력받아, 통해 입자의 위치들을 샘플링(추출)한다. 이 과정에서 고정소수점 곱셈이 수행되기 때문에 입자 샘플링 블록은 곱셈 블록(FixedP_Mul)(110)을 사용한다. 이어서 상기 추출된 입자 위치 벡터들을 최적화 대상이 요구하는 포맷에 맞추는 작업(particle truncation)이 입자 보정블록에서 수행된다. 예를 들어, 최적화 대상의 변수형이 정수이면 소수점으로 표현된 입자 위치에 대해 라운딩(rounding) 혹은 실링 (ceiling) 작업이 수행된다.
일단 상기 추출된 입자 위치 벡터들을 최적화 대상이 요구하는 포맷에 맞춰지면 제약조건 계산 블록은 사전에 정의된 시스템 파라미터들과 시스템 모델을 이용하여 시스템 제약조건들을 계산한다. 이 과정에서 고정소수점 곱셈 및 나눗셈이 수행되기 때문에 제약조건 계산 블록은 곱셈 블록(100)과 나눗셈 블록(120)을 사용한다. 즉, PSO 코어블록(130)은 곱셈 블록(110)과 나눗셈 블록(120)로 연산을 요청할 때마다 각 블록(110, 120)은 연산 결과를 PSO코어 블록(130)으로 리턴한다. 단, 두 블록(110, 120)도 클럭신호에 기반하여 수행되기 때문에 각 결과값은 각 블록(110, 120)에서 사용된 클럭만큼 지연 후에 사용되어야 한다.
시스템 제약조건 계산이 완료되면 비용 계산 블록은 앞에서 계산된 시스템 제약조건들을 용하여 목적함수를 계산하는데, 이 과정에서 고정소수점 곱셈 및 나눗셈이 수행되기 때문에 곱셈 블록(100)과 나눗셈 블록(120)을 사용한다. 상기 목적함수를 계산이 종료되면 비용 계산 블록은 계산된 목적함수에 기반하여 입자별 비용(cost)을 얻을 수 있다.
이어서, 최적치 계산 블록은 비용 계산 블록에서 획득된 입자별 비용을 비교하여 입자별 개별 최적치(personal best)와 전역 최적치(global best)를 계산한다. 이 과정은 비교기를 사용하여 수행되는데 입자의 개수만큼 시간이 소요되므로 클럭 계수기를 사용하여 적절하게 시간 지연을 구현한다.
입자별 개별 및 전역 최적치가 계산되면 입자 업데이트 블록은 최적치 계산 블록에서 계산된 입자별 개별 최적치와 전역 최적치, 그리고 입자들의 이전 위치들을 사용하여 입자별로 새로운 속도 및 위치를 업데이트한다. 이 과정에서 고정소수점 곱셈이 수행되기 때문에 곱셈 블록(100)을 사용하고, 모의난수발생기 (PRNG) (100)로부터 난수 벡터를 입력받아서 업데이트에 사용한다.
이후 종료조건 판단 블록은 입자군집최적화 종료 조건을 판단한다. 상기 입자군집최적화 종료 조건은 다음의 두 가지이다. 하나는 미리 정해진 반복 횟수 도달 여부이고, 또 다른 하나는 수렴 조건 부합 여부이다. 두 가지 종료조건 중 하나라도 해당되면 종료조건 판단 블록은 입자군집최적화 알고리즘을 종료한다. 반면에 두 가지 종료조건 중 하나라도 해당되지 않으면 입자 샘플링 블록에 의한 작업부터 다시 수행하면서 종료 조건에 부합될 때까지 반복하게 된다.
따라서, 두 가지 종료조건 중 하나라도 해당되어 입자군집최적화 알고리즘이 종료되면, 최종 최적치 계산 블록은 종료조건 판단 블록을 통해 입력된 입자들의 최종 위치들을 기반으로 최적치를 계산하여 획득한다. 본 발명은 마지막 전역 최적치를 최종 최적치로 사용하며, 상기 마지막 전역 최적치는 고정소수점 형태로 되어 있기 때문에 최종 최적치 계산 블록은 최적화 대상이 요구하는 형식으로 변환한다.
도 5 및 도 6은 PSO상태블록이 복수의 PSO상태를 수행할 때 블록별 파이프라인 구조 또는 병렬 구조를 설명하기 위한 타이밍도이다.
본 발명은 PSO알고리즘을 수행하기 위한 입자 관련 계산이 공유 자원을 활용하게 되거나 PRNG와 같이 시변(time-variant) 특성을 갖는 블록(로직 또는 컴포넌트)를 사용하는 경우 해당 PSO상태 더 상세하게는 해당 PSO상태를 수행하는 PSO상태블록을 파이프라인 구조로 구현한다. 일 예로, 도 3에 도시된 PSO상태 0, 4, 6를 수행하는 도 4에 개시된 입자 샘플링 블록, 종료 조건 판단 블록은 파이프라인 구조로 구현된다.
도 5에 도시된 바와같이, 복수의 로직 블록(logic block) 즉 PSO상태 처리블록들의 계산 시간 확보 및 다른 블록(FixedP_Mul, FixedP_Div, PRNG)을 이용한 계산 시간 확보 등을 위해 클럭 카운터가 필요하다. 각 PSO상태는 고유 계산시간을 갖도록 구현되고, 클럭 카운터가 각 고유 계산시간에 해당하는 클럭의 개수에 도달하게 되면 해당 각 PSO상태에서 복수의 입자(Particle #1~Particle #N)에 대한 알고리즘 수행은 완료되고, 다음 PSO상태로 전이된다. 입자수 가운터는 입자들 간 구분을 위해 입자 개수 카운터(particle number counter)가 필요하다. 파이프 라인 구조에서 각 입자에 대한 계산은 서로 다른 블럭 출력값을 이용하여 수행되지만, 입자마다 소요되는 클럭의 개수는 동일하다. 상기 입자수 카운터의 값은 정해진 클럭 개수마다 증가하다가 전체 입자 개수(N)에 도달하게 되면 더 이상 증가하지 않고, 다음 PSO상태로 로 전이됨과 동시에 초기화된다.
한편 본 발명에서 알고리즘 수행을 위한 입자들에 대한 계산이 공유 자원을 활용하지 않고 PRNG와 같이 시변(time-variant) 특성을 갖는 블록을 사용하지 않는 경우, 해당 PSO상태 더 상세하게는 해당 PSO상태를 수행하는 PSO상태블록은 도 6에 도시된 바와같이 병렬 구조로 구현한다. 이 구조는 알고리즘 수행 속도를 크게 향상시킬 수 있다. 일 예로, 도 3에 도시된 PSO상태 1~3, 5, 7을 수행하는 도 4에 개시된 입자 보정 블록, 제약조건 계산 블록, 비용 계산블록, 입자 업데이트 블록 및 최종 최적치 계산 블록은 병렬 구조로 구현된다.
전술한 파이프라인 구조 기반의 PSO상태에서의 알고리즘 구현에서와 동일하게 병렬 구조 기반의 PSO상태에서의 알고리즘 구현은 로직 블록(logic block)들의 계산 시간 확보 및 다른 블록(FixedP_Mul, FixedP_Div, PRNG)을 이용한 계산 시간 확보 등을 위해 클럭 카운터(clock counter)가 필요하다. 각 PSO상태는 고유 계산시간을 갖도록 구현되고, 클럭 카운터가 각 고유 계산시간에 해당하는 클럭의 개수에 도달하게 되면 해당 PSO상태에서의 알고리즘 수행은 완료되고, 다음 PSO상태로 전이된다.
병렬 구조를 사용하는 복수의 PSO상태 처리 블록들은 시간 가변(time-variant) 특성을 갖지 않기 때문에, 도 5에 도시된 바와같이 동일 시간에 입자들의 개수만큼 블록의 인스턴스(복제본)들을 생성하여 활용함으로써 입자들에 대한 계산을 병렬화하여 알고리즘을 수행할 수 있다.
상술한 바와같이 본 발명은 입자군집최적화 알고리즘을 FPGA로 구현함으로써 알고리즘의 속도를 크게 향상시킬 수 있고, 입자군집최적화 알고리즘의 연산량이 입자의 개수에 비례해서 증가하지 않기 때문에 입자의 개수에 따른 연산량과 성능 간 trade-off 관계를 완화시킬 수 있다.
이에 더하여 본 발명은 입자군집최적화 알고리즘이 FPGA에서 독립적으로 수행됨으로써 CPU에서 수행되는 다른 알고리즘 수행에 의해 속도가 저하되지 않으며, CPU에서 수행되는 다른 태스크(task)들과 충돌이 일어나지 않으므로 입자군집최적화 알고리즘이 보다 안정적으로 수행될 수 있다. 또한, 본 발명은 입자군집최적화 알고리즘을 FPGA로 구현함으로써 해당 알고리즘에 대한 별도 검증이 가능한 장점이 있다.
그리고 본 발명에 따른 입자군집최적화 알고리즘의 FPGA 구조 및 그 수행방법은 상기 설명된 실시예들에 한정되게 적용될 수 있는 것이 아니라, 상기 실시예들은 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로, 상술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다.
100 : 모의난수발생기(PRNG) 110 : 곱셈 블록
120 : 나눗셈 블록 130 : PSO코어 블록

Claims (15)

  1. 시간 가변 특성을 갖는 모의 난수를 발생하는 모의 난수 발생기;
    입자군집최적화(PSO) 알고리즘 수행시 제1공유 엘리먼트를 이용하여 PSO알고리즘의 각 PSO상태에 대응되는 입자 관련 곱셈 계산을 수행하는 곱셈 블럭;
    상기 PSO알고리즘 수행시 제2공유 엘리먼트를 이용하여 PSO알고리즘의 각 PSO상태에 대응되는 나눗셈 계산을 수행하는 나눗셈 블럭; 및
    상기 PSO알고리즘의 복수의 PSO상태를 개별처리하는 복수의 PSO상태 처리 블록으로 구성되어, 상기 모의난수 발생기, 곱셈 블록 및 나눗셈 블럭과의 연계성에 의해 결정되는 각 PSO상태 처리 블록의 속성에 근거하여 복수의 입력 입자를 파이프라인 구조 또는 병렬 구조로 처리하는 PSO코어 블록;을 포함하는 것을 특징으로 하는 FPGA 구조를 갖는 입자군집최적화 실행 장치.
  2. 제1항에 있어서, 상기 복수의 PSO상태 처리 블록은
    PSO알고리즘을 입자 계산 방식에 따라 분할한 8개의 PSO상태 각각에 대응되도록 구현되는 것을 특징으로 하는 FPGA 구조를 갖는 입자군집최적화 실행 장치.
  3. 제1항에 있어서, 상기 복수의 PSO상태 처리 블록은
    각 PSO상태에서 입자 관련 계산이 요구되는 경우에는 파이프라인 구조로 구현되고, 모든 입자들이 공유 자원에 대한 엑세스 없이 동일한 계산 과정을 거치는 경우에는 병렬 구조로 구현되는 되는 것을 특징으로 하는 FPGA 구조를 갖는 입자군집최적화 실행 장치.
  4. 제1항에 있어서, 상기 복수의 PSO상태 처리 블록은
    상기 곱셈 블록 및 나눗셈 블럭을 이용하거나 모의 난수 발생기를 이용하여 각 입자에 대한 순차 계산을 수행하는 제1PSO상태 처리 블록; 및
    상기 곱셈 블록과 나눗셈 블럭과 모의 난수 발생기를 사용하지 않고 모든 입자들에 대하여 동일한 계산 과정을 수행하는 제2PSO상태 처리블록을 포함하며,
    상기 제1PSO상태 처리 블록은 파이프 라인구조로 구현되고,
    상기 제2PSO상태 처리 블록은 병렬 구조로 구현되는 것을 특징으로 하는 FPGA 구조를 갖는 입자군집최적화 실행 장치.
  5. 제4항에 있어서, 상기 제1PSO상태 처리 블록은
    PSO상태 0를 처리하는 블록으로서, 입력된 초기값 벡터를 기준으로 기정의된 탐색 공간내에서 복수의 입자들을 샘플링하는 입자 샘플링 블록;
    PSO상태 4를 처리하는 블록으로서, 이전의 PSO상태 3에서 계산된 입자별 비용을 사용하여 입자별 개별 최적치와 전역 최적치를 도출하여 업데이트하는 최적치 계산 블록; 및
    PSO상태 6을 처리하는 블록으로서, 이전의 PSO상태 5에서 업데이트된 입자별 속도 및 위치가 종료조건에 해당하는지 판단하는 종료조건 판단 블록;을 포함하는 것을 특징으로 하는 FPGA 구조를 갖는 입자군집최적화 실행 장치.
  6. 제5항에 있어서, 상기 종료조건 판단 블록은
    입자 계산이 미리 정해진 반복 횟수 도달되었는지와 상기 입자별 속도 및 위치가 수렴 조건 부합되는지의 여부 중 적어도 하나가 충족되면 종료조건에 해당되는 것으로 판단하는 것을 특징으로 하는 FPGA 구조를 갖는 입자군집최적화 실행 장치.
  7. 제4항에 있어서, 상기 제2PSO상태 처리 블록은
    동일 시간에 입자들의 개수만큼 블록의 인스턴스들을 생성 및 활용하여 입자들에 대한 계산을 병렬화하여 처리하는 것을 특징으로 하는 FPGA 구조를 갖는 입자군집최적화 실행 장치.
  8. 제4항에 있어서, 상기 제2PSO상태 처리 블록은
    PSO상태 1를 처리하는 블록으로서, PSO상태 0에서 샘플링된 각 입자를 최적화 대상이 요구하는 자리수 및 유효숫자에 맞춰서 업데이트하는 입자 보정 블록;
    PSO상태 2를 처리하는 블록으로서, 이전의 PSO상태 1에서 업데이트된 입자에 대하여 제약조건 관련 변수들을 업데이트하고 입자별 제약조건을 계산하는 제약조건 계산 블록;
    PSO상태 3를 처리하는 블록으로서, 이전의 PSO상태 2에서 계산된 입자별 비용을 사용하여 입자별 개별 최적치 및 전역 최적치를 도출하여 업데이트하는 비용 계산 블록;
    PSO상태 5를 처리하는 블록으로서, 이전의 PSO상태 4에서 계산된 입자별 개별 최적치 및 전역 최적치를 사용하여 입자별 속도 및 위치를 업데이트하는 입자 업데이트 블록; 및
    PSO상태 7을 처리하는 블록으로서, 이전의 PSO상태 6에서 처리되어 전달된 전역 최적치 또는 모든 입자들의 위치값의 평균값을 최종 최적값으로 선택하는 최종 최적치 계산 블록;을 포함하는 것을 특징으로 하는 FPGA 구조를 갖는 입자군집최적화 실행 장치.
  9. 제8항에 있어서, 상기 제약조건 계산 블록은
    사전에 정의된 시스템 파라미터들과 시스템 모델을 이용하여 시스템 제약조건들을 계산하는 것을 특징으로 하는 FPGA 구조를 갖는 입자군집최적화 실행 장치.
  10. 제1항에 있어서, 상기 PSO코어 블록은
    다차원 초기값 벡터의 입출력을 담당하는 I/O인터페이스;
    복수의 PSO상태를 계수하는 클럭 카운터;
    각 상태에서 복수의 입력 입자를 카운트하는 입자수 카운터; 및
    상기 클럭 카운터와 입자수 카운터 값을 근거로 8개의 PSO 상태들을 제어하는 PSO상태 제어기를 더 포함하며,
    상기 PSO상태 처리 블록은
    상기 PSO상태 제어기의 제어에 따라 각 PSO 상태를 파이프라인 또는 병렬 구조로 수행하는 것을 특징으로 하는 FPGA 구조를 갖는 입자군집최적화 실행 장치.
  11. 제10항에 있어서, 상기 각 PSO상태는 고유 계산시간을 갖도록 구현되고,
    상기 PSO상태 제어기는
    상기 클럭 카운터에 의해 각 PSO상태의 고유 계산시간에 해당하는 클럭 수가 모두 카운트되면 현재 PSO상태에서 복수의 입자에 대한 처리를 완료하고 다음 PSO상태로 전이하도록 제어하는 것을 특징으로 하는 FPGA 구조를 갖는 입자군집최적화 실행 장치.
  12. 제1항에 있어서, 상기 제1공유 엘리먼트는
    PSO코어 블럭으로부터 2개의 입력 벡터를 곱셈하여 하나의 벡터를 출력하는 이진 곱셈기; 및
    상기 이진 곱셈기에서 출력되는 벡터의 길이를 입력 벡터와 길이를 동일하게 맞춤과 동시에 고정소수점 자리수를 맞추는 텍터 보정기를 포함하고,
    상기 제2공유 엘리먼트는 클럭 카운터, I/O인터페이스, 나눗셈 상태 제어기, 2보수 변환기, 가산기 및 감산기를 포함하는 것을 특징으로 하는 FPGA 구조를 갖는 입자군집최적화 실행 장치.
  13. 제1항에 있어서, 상기 모의난수발생기는
    LSFR(Linear Feedback Shift Register)에 기반하여 모의난수를 발생시키는 것을 특징으로 하는 FPGA 구조를 갖는 입자군집최적화 실행 장치.
  14. 입자 샘플링 블록에 의하여, 초기값 벡터를 기준으로 사전에 설정된 탐색 공간내에서 복수의 입자들을 샘플링하는 제1단계;
    입자 보정 블록에 의하여, 상기 샘플링된 복수의 입자를 최적화 대상이 요구하는 자리수 및 유효숫자에 맞게 보정하는 제2단계;
    제약조건 계산 블록에 의하여, 상기 보정된 복수의 입자에 대하여 제약조건 관련 변수들을 업데이트하고, 입자별 제약조건을 계산하는 제3단계;
    비용 계산 블록에 의하여, 상기 계산된 제약조건을 사용하여 목적 함수를 계산하고 입자별로 비용을 계산하는 제4단계;
    최적치 계산 블록에 의하여, 상기 계산된 입자별 비용을 이용하여 입자별 최적치 및 전역 최적치를 도출하여 업데이트하는 제5단계;
    입자 업데이트 블록에 의하여, 상기 계산된 입자별 최적치 및 전역 최적치를 이용하여 입자별 속도 및 위치를 업데이트하는 제6단계; 및
    종료조건 판단 블록에 의하여, 현재까지 수행된 입자 계산이 미리 정해진 반복 횟수 도달되었는지와 입자별 속도 및 위치가 수렴 조건에 부합되는지를 체크하여 종료조건에 도달되었는지 판단하는 제7단계; 및
    최종 최적치 계산 블록에 의하여, 상기 반복 횟수에 도달하거나 상기 수렴 조건에 부합하면 최종적으로 업데이트된 입자들의 위치값의 평균값을 최종 최적값으로 선택하는 제8단계;를 포함하고,
    상기 제1,제5 및 제7단계는
    곱셈 및 나눗셈을 위한 공유 자원을 이용하여 입자 계산을 수행하므로 파이프라인 구조로 수행하고, 나머지 제2 내지 제4단계, 제6단계 및 제8단계는 모든 입자들이 상기 공유 자원에 대한 엑세스 없이 동일한 계산 과정을 거치므로 병렬 구조로 수행되는 것을 특징으로 하는 FPGA 구조를 갖는 입자 군집최적화 실행방법인 것을 특징으로 하는 FPGA 구조를 갖는 입자군집최적화 실행방법.
  15. 삭제
KR1020170136838A 2017-10-20 2017-10-20 Fpga 구조를 갖는 입자군집최적화 실행 장치 및 방법 KR101907884B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170136838A KR101907884B1 (ko) 2017-10-20 2017-10-20 Fpga 구조를 갖는 입자군집최적화 실행 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170136838A KR101907884B1 (ko) 2017-10-20 2017-10-20 Fpga 구조를 갖는 입자군집최적화 실행 장치 및 방법

Publications (1)

Publication Number Publication Date
KR101907884B1 true KR101907884B1 (ko) 2018-12-10

Family

ID=64670768

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170136838A KR101907884B1 (ko) 2017-10-20 2017-10-20 Fpga 구조를 갖는 입자군집최적화 실행 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101907884B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109919389A (zh) * 2019-03-15 2019-06-21 上海海洋大学 一种基于pso双目标优化的海表面温度时间序列预测方法
KR102604777B1 (ko) * 2023-02-10 2023-11-21 국방과학연구소 충격 신호 생성용 입자 군집 최적화 알고리즘
CN118519789A (zh) * 2024-07-24 2024-08-20 山东浪潮科学研究院有限公司 Gpgpu并行数据处理优化方法、设备及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101072448B1 (ko) 2010-04-27 2011-10-11 강원대학교산학협력단 무선센서 네트워크 시스템 및 그의 클러스터링 방법
KR101291443B1 (ko) 2010-09-10 2013-07-30 성균관대학교산학협력단 네트워크 구조와 과업복잡성을 이용한 조직창의성 시뮬레이션 시스템
JP2014209274A (ja) * 2013-04-16 2014-11-06 株式会社神戸製鋼所 計算装置及び計算方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101072448B1 (ko) 2010-04-27 2011-10-11 강원대학교산학협력단 무선센서 네트워크 시스템 및 그의 클러스터링 방법
KR101291443B1 (ko) 2010-09-10 2013-07-30 성균관대학교산학협력단 네트워크 구조와 과업복잡성을 이용한 조직창의성 시뮬레이션 시스템
JP2014209274A (ja) * 2013-04-16 2014-11-06 株式会社神戸製鋼所 計算装置及び計算方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109919389A (zh) * 2019-03-15 2019-06-21 上海海洋大学 一种基于pso双目标优化的海表面温度时间序列预测方法
CN109919389B (zh) * 2019-03-15 2023-12-05 上海海洋大学 一种基于pso双目标优化的海表面温度时间序列预测方法
KR102604777B1 (ko) * 2023-02-10 2023-11-21 국방과학연구소 충격 신호 생성용 입자 군집 최적화 알고리즘
CN118519789A (zh) * 2024-07-24 2024-08-20 山东浪潮科学研究院有限公司 Gpgpu并行数据处理优化方法、设备及介质

Similar Documents

Publication Publication Date Title
KR101907884B1 (ko) Fpga 구조를 갖는 입자군집최적화 실행 장치 및 방법
Sun et al. A universal method of linear approximation with controllable error for the efficient implementation of transcendental functions
JP7292297B2 (ja) 確率的丸めロジック
Wang et al. Design of high-throughput fixed-point complex reciprocal/square-root unit
CN112051980A (zh) 一种基于牛顿迭代法的非线性激活函数计算装置
CN111061992A (zh) 一种基于抛物线的函数拟合方法及其装置
US11551087B2 (en) Information processor, information processing method, and storage medium
Pritsker Hybrid implementation of Extended Kalman Filter on an FPGA
CN110506255B (zh) 节能型可变功率加法器及其使用方法
CN113778378B (zh) 一种求解复数n次方根的装置和方法
CN115936076A (zh) 一种适配深度学习硬件加速器的可重构激活函数硬件装置
CN110837624A (zh) 一种针对sigmoid函数的近似计算装置
Schwiegelshohn et al. A resampling method for parallel particle filter architectures
Ayhan et al. Approximate fully connected neural network generation
Naregal et al. Design and implementation of high efficiency vedic binary multiplier circuit based on squaring circuits
Su et al. Processing element architecture design for deep reinforcement learning with flexible block floating point exploiting signal statistics
CN116194890A (zh) 用于执行计算任务的硬件加速器
Wasef et al. Hardware implementation of Multi-Rate input SoftMax activation function
CN108174114B (zh) 熵值计算装置及熵值计算方法
Kumar et al. Approximate Multiplier based on Low power and reduced latency with Modified LSB design
Caffarena et al. Architectural synthesis of DSP circuits under simultaneous error and time constraints
Razak et al. High speed numerical integration algorithm using FPGA
Abe et al. High-order polynomial activation function and regenerative internal weights for FPGA implementation of reservoir computing
Palangpour et al. Particle Swarm Optimization: A Hardware Implementation.
Prathyusha et al. Designing a Mac Unit Using Approximate Multiplier