FISLAB Scilab용 퍼지 추론 툴박스

FISLAB Scilab용 퍼지 추론 툴박스

초록

본 논문은 Scilab 환경에서 퍼지 제어기를 설계·시뮬레이션하기 위한 툴킷인 FISLAB의 구조와 사용법을 소개한다. 패키지의 설치 요구사항, 기본 워크플로우, 주요 함수(퍼지화, 규칙 기반 추론, 디퍼지화 등)를 상세히 설명하고, 예제와 함께 실제 적용 사례를 제시한다. 또한 기존 MATLAB Fuzzy Logic Toolbox와의 차별점 및 제한점을 논의한다.

상세 분석

FISLAB는 Scilab이라는 오픈소스 수치 해석 플랫폼 위에 구축된 퍼지 논리 시스템으로, 전통적인 규칙 기반 퍼지 제어기의 전 과정을 지원한다. 먼저 패키지 구조를 살펴보면, 핵심 모듈은 ‘fis’, ‘mf’, ‘rule’, ‘defuzzify’ 네 개의 서브디렉터리로 구분되며, 각각 퍼지 시스템 객체, 멤버십 함수 정의, 규칙 베이스 관리, 디퍼지화 연산을 담당한다. 설치 과정에서는 Scilab 5.x 이상과 Java Runtime Environment가 필요하며, 환경 변수 설정을 통해 자동 로드가 가능하도록 설계되었다.

FISLAB의 주요 함수는 MATLAB의 Fuzzy Logic Toolbox와 유사한 인터페이스를 제공한다. newfis 함수로 빈 퍼지 시스템 객체를 생성하고, addvaraddmf를 통해 입력·출력 변수와 그에 대응하는 멤버십 함수를 정의한다. 멤버십 함수는 삼각형, 가우시안, 트라페zo이드 등 6가지 기본 형태를 지원하며, 사용자 정의 함수도 스크립트 형태로 추가 가능하다. 규칙 정의는 addrule 함수를 이용해 ‘IF‑THEN’ 형태의 논리식을 입력하며, 각 규칙에 가중치와 연결 연산자(AND/OR)를 지정할 수 있다.

추론 단계는 evalfis 함수가 담당한다. 입력 벡터가 주어지면, 먼저 각 입력에 대한 퍼지화가 수행되고, 규칙 전제부와 결합 연산자를 통해 활성화 강도가 계산된다. 그 후, Mamdani 방식의 최소·최대 연산을 적용해 출력 멤버십 함수가 집계되고, 디퍼지화는 중심 평균(Center of Gravity) 방법이 기본값으로 제공된다. 필요에 따라 무게 평균, 최대값 등 다른 디퍼지화 기법도 옵션으로 선택 가능하다.

성능 측면에서 FISLAB는 Scilab 자체의 인터프리터 특성상 대규모 실시간 제어보다는 오프라인 시뮬레이션에 적합하다. 함수 호출 시마다 객체 복사가 일어나므로, 루프 내에서 반복 호출할 경우 메모리 사용량이 급증할 수 있다. 이를 완화하기 위해서는 퍼지 시스템 객체를 전역 변수로 유지하고, evalfis만을 반복 호출하는 패턴이 권장된다.

또한, FISLAB는 GUI 기반 설계 툴을 제공하지 않는다. 모든 설정이 스크립트 기반이므로, 사용자는 코드 작성에 익숙해야 한다. 반면, 오픈소스 특성 덕분에 사용자 정의 멤버십 함수나 새로운 규칙 엔진을 직접 구현할 수 있는 확장성이 큰 장점으로 작용한다.

마지막으로, 논문은 FISLAB와 MATLAB Fuzzy Logic Toolbox를 비교하면서, 기능적 차이는 거의 없지만 라이선스 비용, 플랫폼 독립성, 커뮤니티 지원 측면에서 FISLAB가 유리함을 강조한다. 다만, 문서화 수준이 아직 미흡하고, 최신 Scilab 버전과의 호환성 검증이 필요하다는 점을 한계로 제시한다.