퍼지 논리 제어

 

로봇공학 : Saeed B. Niku 저, 김정하, 염영일 역, 사이텍미디어, 2002 (원서 : Introduction to Robotics : Analysis. Systems. Applications, Prentice Hall, 2001), Page 351 ~ 370

 

1. 서론

2. 퍼지제어: 무엇이 필요한가?

3. 정확한 값과 애매한 값

4. 퍼지집합: 진리성과 소속의 정도

5. 퍼지화

6. 퍼지추론 규칙기반

7. 역퍼지화

     7.1 무게중심법 (center-of-graity method)

     7.2 맘다니 추론법 (Mamdani's inference method)

8. 퍼지논리 제어기의 시뮬레이션

9. 로봇 내의 퍼지논리의 응용

10. 설계 프로젝트

11. 요 약

 

 

1. 서론

다음 문장을 보자. 10월 26일, 목요일, 산 루이스 오비스포 (San Luis Obispo) 의 날씨는 매우 따뜻하였으나 사실상은 매우 뜨거운 날씨였다. 아침에 로보틱스 실험실의 문을 열었을 때 스팀배관이 실내로 새고 있는 것을 발견하였으며 실내는 매우 습하고 뜨거웠다. 로봇의 유압동력장치를 틀었을 때, 유압장치의 열기가 실험실의 열기에 합류해 온도가 더 상승하였다. 궁극적으로, 그 열기가 너무나 뜨거우므로 학생들이 좀더 편하기 위해 실험실의 열기를 조금이라도 내리기 위한 큰 선풍기를 들여놓아야 했다. 위와 같은 진술은 퍼지논리 (fuzzy logic) 에 관한 아주 좋은 예문이다. 고딕체로 표시된 단어를 유심히 살펴보면서 다시 한번 위의 글을 읽어보자.

10월26일, 목요일, 산 루이스 오비스포의 날씨는 매우 따뜻하였으나 사실상은 매우 뜨거운 날씨였다. 아침에 로보틱스 실험실의 문을 열었을 때 스팀배관이 실내로 새고 있는 것을 발견하였으며 실내는 매우 습하고 뜨거웠다. 로봇의 유압동력장치를 틀었을 때, 유압장치의 열기가 실험실의 열기에 합류해 온도가 더 상승하였다. 궁극적으로, 그 열기가 너무나 뜨거우므로 학생들이 좀더 편하기 위해 실험실의 열기를 조금이라도 내리기 위한 큰 선풍기를 들여놓아야 했다.

여기서 알 수 있듯이, 위의 문장을 다시 볼 때 명확하지 않은 모호한 상황을 나타내는 많은 문장들이 있다. 예를 들어 그 날의 날씨가 따뜻했다고 했는데 그 따뜻함이 85°F 또는 100°F 정도인가? 어느 정도라고 생각하는가? 실제로 산 루이스 오비스포에 살고 있다면 80°F 정도는 따뜻하다고 할 수 있다. 여기서 알 수 있듯이 온도에 관련된 표현은 사실상 애매하며 온도가 어느 정도인지는 전혀 표현되지 않았다. 계속해서 문장들을 살펴보면 애매 모호한 표현의 연속으로 이루어져 있다. 또한, 매우 뜨겁다는 의미가 정확히 얼마만큼 뜨거운 것을 의미하는지, 크다는 의미와 조금이나마 라는 의미가 어느 정도를 의미하는지 알 수 없다. 그리고 선풍기를 돌린다면 어느 정도 온도를 내릴 수 있는가? 다시 한번 위의 단락을 읽어보면 방금 언급했던 애매한 문장 이외에도 많은 애매한 문장들을 볼 수 있을 것이다. 분명히, 이러한 애매한 문장, 즉 퍼지문장 (fuzzy statement) 들은 일상대화에서 흔히 사용되며 모든 대화에서도 언제든지 사용된다.

더욱 재미있는 것은 사건이나 다른 현상들에 대한 퍼지 문장들은 문맥중심이라는 것이다. 알라스카 (Alaska)의 따뜻한 날씨는 달라스 (Dallas) 나 리오 드 자네이로 (Rio de janeiro) 의 따뜻한 날씨와는 아주 다르며 달라스의 여름에 따뜻한 날은 겨울의 따뜻한 날과도 아주 다르다. 여름의 달라스는 매우 뜨겁다고 예상되므로 85°F는 상대적으로 차가운 날씨인 반면에 1월 중순의 달라스에서는 오히려 덥다고 느낄 수 있을 것이다. 환자들이 의사에게 표현하는 고통을 표현하는 경우를 예로 들어 보자. 만약 한 어린이가 쓰러져서 말하기를 "정말 아파요"라고 말하였다면 의사가 이 고통을 이해하는 것은 이전에 끔찍한 사고를 경험했던 사람보다 그 정도가 덜할 것이다. 아기를 분만할 때의 고통의 정도에 대한 표현 또한 상처를 봉합할 때의 고통과 다를 것이다. 따라서 표현의 모호성을 문맥까지 확장시켜야 한다.

우리는 이러한 애매한 표현을 듣고 정확하지 않거나 설명하는 사람이나 설명되어지는 상황과 연관되어 있다면 그 의미를 이해할 수 있도록 배워왔고 심지어는 의미 없는 말이나 무의미한 말을 하는 사람이나 무의미한 상황까지도 그러하다. 또한 특별한 표현이 의미하는 범위를 다른 상황까지도 파악하여 연관시키는 법도 배웠고 애매한 표현을 유추하여 의미를 파악하는 법도 배웠다. 우리는 일상대화에서 배운 내용을 잘 사용하고 있고 자신을 표현하고 의미를 자세히 파악하기 위해 질문을 하기도 한다. 그러나 상황을 보다 잘 표현하기 위한 간단한 세 가지 예를 고려해보자.

첫 번째, 환경이 열악하여 의사에게 진료를 받기가 어렵고 전화로도 진료받는 것이 어려운 원거리의 환자에게 약을 처방할 수 있는 "전문가 기계 (expert machine)" 가 있다고 가정해보자. 그 기계는 환자에게 남자인지 여자인지, 몸의 상태나 증상, 고통, 열, 감기 등에 대해 물어 본 후, 이러한 상황들을 의사가 병의 원인에 대해 처방을 내려놓은 것을 기준으로 하는 참조표 (Lookup table) 나 치료 데이터 뱅크와 비교를 할 것이다. 이로부터 의사들은 병에 대한 원인과 처방을 알아낼 것이다. 지금 환자가 식도의 통증을 표현하고 있다고 가정해 보자. 만약 아픈 식도가 "정말로 상태가 나쁘고" 열이 "약 100° 라고 한다면 전문가 기계는 무엇을 이해할 수 있을까?

두 번째, 자동온도제어기 (temperature-control thermostat) 를 고려해 보자. 75°를 기준온도로 설정하여 온도를 제어한다고 가정하면 온도가 기준온도보다 높으면 에어컨을 켜야 하고 기준온도보다 낮으면 꺼야 한다. 이를 위해서 자동온도제어기의 기준 온도를 75°로 설정하기를 원한다. 간단한 마이크로프로세서 제어상에서 제어문장을 다음과 같이 쓸 수 있다.

            만일 온도 ≥ 75°F이라면 에어컨을 켠다.                                   (1)

이는 온도가 75°F 이상으로 올라가는 순간 에어컨은 켜지는 것을 의미한다. 그러나 온도가 74.9°F가 되면 에어컨은 꺼질 것이다. 전에 보았던 애마한 표현을 고려해볼 때 이것은 무엇을 의미하는가?

세 번째로 세탁기를 고려해 보자. 대부분의 경우, 세탁기는 세탁시간이 짧은 것을 제외하고 사용자가 세탁을 얼마나 해야 하는가 또는 세탁물이 얼마나 더러운가에 기초한 어떠한 선택사양도 없다. 스스로 물이 얼마나 청결한가를 검사하고 세탁방식을 조절하는 기계가 있다면 더 좋지 않을까? 이러한 경우에 더러운 물에 대한 깨끗한 물을 정의할 방법이 필요하게 된다. 무엇을 깨끗하다 하고 무엇을 것을 더럽다고 할 것이며 얼마나 더럽다고 할 것인가?

2. 퍼지제어: 무엇이 필요한가?

식 (1)을 고려해 보자.

만일 온도 ≥ 75°F이라면 에어컨을 켠다.

이 제어문장의 융통성을 향상시키는 한 가지 방법은 좀더 낮은 온도에서도 에어컨이 켜지게 하는 문장을 추가하되 적은 출력으로 가동되게 한다 (에어컨의 출력의 설정을 바꾸는 것이 가능하다고 가정하고). 그리고 나서, 이전의 제어문을 변경하고 아래와 같은 다른 제어문장을 추가한다.

만일 온도 ≥ 70°F이라면 에어컨을 최대 출력의 90%로 켠다       (2)

만일 온도 ≥ 75°F이라면 에어컨을 최대 출력으로 켠다.             (3)

이로써 시스템에 한 가지의 융통성을 추가하였고, 이제는 작동하는 한 가지 값에 의존하여 작동되는 것이 아니라 온도에 따라 반응하게 될 것이다. 각각의 문장들을 보면 아직도 제어기는 하나의 값에 따라 작동한다는 것을 숙지해야 한다. 결과적으로 시스템은 심지어 74.99°에서도 90%의 출력으로 작동한다.

이 같은 제어문장에는  여전히 커다란 두 가지 문제점이 있다. 첫 번째는 넓은 범위에 걸쳐서 제어를 하려고 한다면 원하는 값에 대한 작은 변화까지도 제어할 수 있는 위와 같은 수백 개의 제어문장들이 필요하게 될 것이다.

화학처리과정에서 ±10°F의 영역 안에서 0.1°F마다 제어가 수행되기를 원한다고 생각해 보자. 여기서는 거의 200개의 제어문장이 필요하게 될 것이다. 두 번째, 가능한 모든 변화에 대한 제어문장을 작성한다 하더라도 아직은 제어문을 일상의 대화에 관련지을 수는 없다. 결과적으로, 전에 다룬 예제의 의료전문기계가 환자의 의사소통을 할 수가 없었고 세탁기 또한 깨끗한 물과 더러운 물과의 관계를 연관지을 수가 없었다. 바비큐를 하는 경우는 어떻게 될까?

이것이 구어체의 애매한 표현 (fuzz descriptor) 을 구조적으로 정의하여 시스템에서 사용할 수 있는 공학적으로 유용한 문장으로 만드는 방법을 찾아야 하는 이유이다. 이를 위해 퍼지추론제어 (fuzz inference control) 라는 기술을 사용한다. 다음 몇 개의 절에서 퍼지추론의 정의(퍼지집합과 퍼지화) 와 제어규칙 (퍼지추론 규칙기반이라고 함)을 어떻게 기술하는지와 어떻게 결과들을 공학적으로 의미 있는 결과형식(역퍼지화라고 함) 으로 변환하는지 살펴볼 것이다. Lotfi Zadeh[1]의 논문에서 퍼지제어의 개념이 시작된 이후로 많은 개념이 추가되었다. 퍼지논리에 대해서 논의할 내용은 매우 많으나 로봇과 단순한 기계장비의 제어에 필요한 퍼지논리제어기를 설계하는 데 필요한 기본적인 퍼지논리 내용에 대해서만 다룰 것이다. 보다 많은 정보를 원한다면 참고문헌[2,3,4] 를 참고하도록 하자.

3. 정확한 값과 애매한 값

앞의 예제 문장에서 언급되었듯이, 문장 안의 모든 수치값들은 정확한 값 (crisp value) 이라고 한다. 정확한 값은 단 한번의 명확한 해석으로 정의된 값이다. 75°F와 같은 정확한 값은 어떠한 시스템에서도 동일한 값이며 명확하게 정의되며 측정이 가능한 값이다. 이값은 유일한 값 (singleton value) 이라고도 하며 애매한 값으로 정의된 값의 집합과는 상대적인 의미이다. 반대로, 애매한 값 (fuzzy value) 은 부정확하고 여러 가지로 해석이 가능하며 다른 값이 이 값과 연관된다.

4. 퍼지집합: 진리성과 소속의 정도

설정된 제어환경에서 퍼지집합을 사용하기 위해서는 퍼지집합을 정의해야 하며, 이 퍼지값에 관련된 퍼지집합 내의 모든 값들은 퍼지집합에 소속된 요소들이다. 퍼지집합의 각각의 값들은 100%(또는 1) 의 소속도 (degree of membership) 에서부터 0% (또는 0) 의 소속도까지 존재한다. 이는 정확한 값과는 대조적으로 다른 모든 값은 거짓이 되는 단 하나의 진리값을 가지며, 퍼지집합과의 각 퍼지값은 100%에서 0%까지의 진리도 (degree of truth)를 가진다.

이를 이해하기 위해서 한번 더 세탁기를 예로 들어보자. 만약 깨끗한 물을 완전히 깨끗한 물로 정의하고 정확한 값 (crisp value) 으로서 고려한다면 물이 완벽히 깨끗할 때 (어떠한 방법으로도 이물질이 발견되지 않는 정도의 물) 깨끗한 물의 문장은 참이 되며 다른 경우, 즉 지저분한 것이 아주 조금만 포함되어 있어도 이 문장은 거짓이 되며 물은 깨끗하지 않은 것이 된다. 이러한 정의에서는 어떠한 예외도 존재하지 않는다. 그러나 퍼지집합에서의 완벽히 깨끗한 물에 대한 정의에서 완벽히 깨끗한 물은 100%의 소독고 (또는 1)를 가진다. 그러나 약간 더러운 것이 포함된 물은 100%는 아니지만 아직은 깨끗한 물이며 아마도 95%정도는 될 것이다. 조금 더 더러운 물은 95% 정도는 아니고 약 90% 정도일 것이다. 따라서, 하나의 정확한 값 (singleton) 으로서 깨끗한 물의 정의에 관련된 집합 내의 모든 값은 다른 소속도와 진리도를 가진 셀 수 없이 많은 깨끗한 물이 존재할 가능성이 있다. 이 경우, 더러운 물이 깨끗한 물의 집합의 일부분이 될 수 있으나 0% (또는 0) 의 소속도와 0의 진리도를 가지게 된다. 한편, 더러운 물이라고 불리는 퍼지집합을 정의하면 이전에 논의하였던 완벽히 깨끗한 물은 더러운 물의 집합에서 0%의 소속도(진리도 또한 마찬가지이다)를 갖는 반면에, 더러운 물은 그 집합에서 100% 의 소속도(진리도 또한 마찬가지이다)를 갖는다. 깨끗한 물에서 90%의 소속도를 갖는 물은 더러운 물에서 15%의 소속도를 갖게 된다. 따라서 만일 두 개의 정의된 집합을 갖는다면 고려 대상인 물에 대해 두 개의 정의된 값을 가지게 되며, 각 집합의 요소들은 각각 다른 소속도를 갖는다.

다음의 일반적인 정확한 값을 고려해보자.

만약 규칙이 참이면 다음을 실행하라.              (4)

만일 규칙 (RULE) 이 100% 진실이라면 다음 (CONSEQUENCE) 을 실행할 것이다.

그러나 퍼지규칙 (fuzzy rule) 에서는 값이 반드시 100%의 진실이 아니어도 되나 집합 내의 소속도를 가지게 된다. 상당하는 소속값 (membership value) 이 규칙상에서 출력을 계산하는 데 사용된다. 입력 1과 입력 2라고 불리는 두 개의 입력 변수는 시스템에서 출력이라고 불리는 변수를 제어하는 데 사용되며 일반적인 집합의 규칙을 다음과 같이 쓸 수 있다.

만일 입력 1 = 입력 1의 집합 내 소속도 그리고     

입력 1 = 입력 2의 집합 내 소속도        

그러면 결과 = 출력집합 (OUTPUT-SET) 의 소속도

다음 몇 개의 절에서 퍼지화의 과정과 규칙기반과 역퍼지화를 논의할 것이다.

5. 퍼지화

퍼지화 (fuzzification) 는 입력과 출력값들을 그들의 소속함수 (membership function) 로 변환하는 과정이다. 퍼지화의 결과는 다른 퍼지 변수들의 다양한 소속도를 표현하는 도표의 집합이다.

온도를 예로 들어보자. 온도 변수를 퍼지 형태로 정의할 수 있으려면 원하는 온도의 범위를 집합의 수로 나누게 된다. 이해를 돕기 위해 매우 뜨거움, 뜨거움, 따뜻함, 차가움의 집합을 사용하자. 물론, 이 집합의 범위는 더 많거나 혹은 더 적은 집합으로 나뉠 수 있다. 다음은, 각 집합의 값을 할당한다. 대부분의 자연현상은 종 모양 (bell shape) 의 곡선을 그리기 때문에 집합의 값은 그림 1(a) 에서처럼 종 형태의 자연곡선의 값에 따라 할당될 것으로 예상할 수 있다. 그러나 실제로는, 자연적인 곡선으로써 할당하는 것은 상대적으로 어려운 반면, 그림 1(b)와 같이 곡선을 간단한 삼각형 형태로 근사화시키는 방법은 그리 정확하지는 않지만 훨씬 그리기 쉽다.

그 다음, 60°F에서 100°F 까지의 온도를 퍼지집합으로 만들기 위해서 그림 2에서처럼 상당하는 온도범위를 위의 정의처럼 할당한다. 각 집합은 온도들의 집합을 가지며 집합안의 모든 온도는 그림에서 보이듯이 소속도를 가지고 있다. 이전에 언급했던 바와 같이, 소위 78°와 같은 임의의 온도는 다른 집합에서 상당하는 소속값을 가질 것이다. 이 경우, 소속값은 뜨거움에서 0.27을, 따뜻함에서 0.7을 갖는다. 두 온도집합인 차가움과 매우 뜨거움은 하한이나 상한을 가지며 반대방향으로는 제한이 없기 때문에 삼각형 모양이 아니다.

이와 같은 방법으로 모델링된 소속함수를 수식으로 표현하는 것은 쉽다. 함수의 각 부분을 정의하기 위해 각각의 직선 위의 두 점을 표시한다. 그러면 직선 위의 모든 점들은 쉽게 정의된다. 예를 들면 매우 뜨거움과 뜨거움을 나타내는 함수는 다음과 같이 표현할 수 있다.

매우 뜨겁다: @90,0,@95,1@100,1      (5)

뜨겁다: @75,0@85,1@95,0                (6)

이러한 정의들에 기초하여, 모든 집합 내의 소속값들은 위의 한계값을 통하여 계산될 수 있다.

[그림 1] 정확한 값의 퍼지화

[그림 2]  온도에 대한 퍼지집합

6. 퍼지추론 규칙기반

퍼지추론 규칙기반 (fuzzy inference rule base) 은 시스템의 제어기에 해당하며 진리표 로직에 기초하고 있다. 규칙기반 (rule base) 은 퍼지집합과 입력 변수, 그리고 출력 변수들과 연관된 규칙의 집합이며 각 경우에 있어서 해야 할 일을 결정하게 해준다. 일반적으로 입력과 출력의 개수에 따라서 다음 중에서 하나의 형태를 갖는다.

예를 들면 온도를 입력 변수로 갖는 시스템에서 습도는 두 번째 입력이고, 에어컨의 출력설정이 출력이 되며 퍼지규칙 (fuzzy rule) 은 다음과 같다.

            만약 온도가 뜨겁고 습도가 습하다면 출력을 높여라.      (7)

그러나 위와 같은 규칙의 논리를 다음과 같이 다시 쓸 수 있다.

만약 온도가 뜨겁거나 습도가 습하면 출력을 높여라.

이들 두 규칙은 분명히 다르게 작동할 것이다. 보통, 진리표에서 첫 번째 경우에는 두 조건이 참이어야 실행되는 반면에, 두 번째 경우는 조건 중 하나만 참이면 실행된다. 그러나 이들은 모두 정확한 값이 아닌 퍼지값이며 모든 변수가 집합 내에서 소속값을 갖는다는 것을 상기해 보면 이들의 결과는 참이나 거짓의 형태로 결정되지 않는다. 따라서 "또는 (or)","그리고(and)" 의 규칙을 평가하기 위해서는 이들이 무엇을 의미하는가를 정의할 필요가 있다. 두 값 사이의 퍼지논리 규칙기반에서는 다음과 같이 사용된다.

"그리고 (and)" 연산에 의한 결과는 두 값 중의 최소값이다.

"또는 (or)" 연산에 의한 결과는 두 값 중의 최대값이다.

이 정의에 의하면, 논리 (logic) 시스템은 주어진 입력에 대한 모든 규칙을 검사할 수 있고 출력을 연산한다. 규칙을 검사하고 상당하는 출력을 찾는 논리 시스템을 퍼지추론엔진 (fuzzy inference engine) 이라고 한다. 이러한 엔진들은(물론, 전체 시스템의 일부분으로써) 사용자에 의해 다시 작성될 수 있고 FIDE™[5], Fudge™[6], Fuzzy Knowledge Builder™[7]와 같은 상용엔진을 구입할 수 있다.

규칙기반 내의 규칙의 총 개수는 각각의 입력 변수의 집합수를 곱한 값이다. 예를 들면 만약 퍼지집합에 m, n, p로 구성된 세 개의 입력 변수가 있다면 규칙의 총 개수는 R = m × n × p이다.

식 (7)은 설계자가 가시적으로 볼 수 있도록 도식적으로 검증이 가능하다. 그림 3은 이 식을 도식적으로 표현한 것이다. 모든 규칙들이 결정되면 그 규칙은 이와 유사한 방법으로 표현될 수 있다.

[그림 3]  규칙의 도식적 표현

7. 역퍼지화

역퍼지화 (defuzzification) 는 퍼지 출력값을 실제로 사용하기 위해서 등가의 정확한 값 (crisp value) 으로 변환하는 것이다. 퍼지규칙이 평가되고 해당되는 값들이 연산되면 결과의 형태는 다른 출력 퍼지집합에 해당되는 소속도 (membership value) 에 관련된 수치값이 될 것이다. 예를 들어 에어컨 출력의 강도 설정을 꺼짐, 낮게, 중간, 최고로 퍼지화된다고 가정하자. 규칙기반 (rule base) 에서 평가한 결과값이 25%이면 낮게이고 75%는 중간이다.역퍼지화는 에어컨 제어 시스템에 보낼 수 있는 단일값으로 변환하는 과정이다.

역퍼지화하는 데 다양하고도 많은 방법들이 있다. 여기서는 무게중심법과 맘다니 (Mamdani) 추론법 두 가지 방법을 살펴볼 것이다.

7.1 무게중심법 (center-of-graity method)

이 방법에서는 구하고자 하는 소속집합의 출력에 대한 등가의 값을 구하기 위해 출력 소속집합의 최대 단일값 (maximum singleton value) 과 각 출력 변수에 대한 소속값을 곱한다. 이러한 각 집합의 등가의 값들은 서로 더해지고 출력 소속값의 합으로 평균화됨으로써 등가 출력값이 출력으로 정의된다. 다음의 내용은 위에서 설명한 방법을 요약한 것이다:

예를 들면 에어컨 소속집합의 출력에서 얻어진 값들은 낮음이 0.4이고 중간이 0.6이며, 낮음에 대한 단일값은 30%, 중간은 최대 출력의 50%라고 가정하자. 에어컨의 출력값은 다음과 같다.

7.2 맘다니 추론법 (Mamdani's inference method)

이 방법에서는 그림 4에서 보여주듯이 상당하는 소속값에서 각 집합의 소속함수는 절사된다. 남은 소속함수들은 마치 "또는 (or)" 함수처럼 모두 더해진다. 이는 반복된 모든 영역은 마치 하나의 층과 같이 서로 겹쳐진다는 의미이며 위의 결과로 모든 영역을 대표하는 새로운 영역이 생성되며 무게중심법으로 생성된 영역은 등가의 출력이 된다. 맘다니의 방법은 다음과 같이 요약되어진다:

대부분의 프로그램은 곡선 아래의 부분을 적분하여 영역을 계산한다. 손으로 푸는 것도 다른 기술을 이용하면 가능하다.

규칙기반의 응용과 역퍼지화, 퍼지화 등의 과정을 통하여 출력으로 응용이 가능한 출력값을 연산할 수 있다. 다음의 예들은 출력값의 연산과정을 설명해 주고 있다.

[그림 4] 맘다니 추론법을 이용한 역퍼지화

[그림 5] 예제 1의 입력과 출력의 퍼지화

냉각 시스템 (cooling system) 은 퍼지논리에 의해 제어된다. 두 입력은 온도와 습도이며 출력은 에어컨의 강도 설정이다. 퍼지논리제어 시스템을 설계하라.

[해답] 위에서 살펴본 내용을 토대로 다음의 세 단계를 이용하여 시스템을 설계할 것이다.

1. 퍼지화 : 이 부분에서는 두 개의 입력과 하나의 출력을 가진 퍼지집합을 구성한다. 보고자하는 온도의 범위는 60°F에서 100°F로, 원하는 습도의 범위는 0%에서 100%이고 출력 설정은 0%에서 100%이다. 그림 5는 두 개의 입력과 하나의 출력에 대한 세 개의 퍼지집합을 보이고 있다. 온도의 범위는 매우 뜨거움, 뜨거움, 따뜻함, 차가움 등의 4개의 소속함수로 나누어진다. 60°F 이하는 차가움이 되고 100°F이상은 모두 매우 뜨거운 부분으로 간주된다. 이와 유사하게, 습도 또한 매우 습함, 습함, 건조함 등의 세 개의 소속함수로 나누어진다. 40% 이하의 습도는 모두가 건조함으로 간주된다. 출력 강도 설정 또한 빠름, 중간, 늦은, 꺼짐의 4가지 소속함수로 나누어진다.

각각의 소속함수에 대해서 분명히 다른 범위를 선택할 수 있었고 다르게 범위를 나눌 수 있었으며 함수에 대해 중복되는 부분을 다르게 설정할 수 있었으며 또는 비대칭 함수들로 선택할 수 있었다. 이는 모두 설계 활동에서와 마찬가지로 시스템에 대한 요구 사항과 설계자의 경험에 기초한다. 하지만 이는 나중에 다시 살펴보게 될 것이고 시스템의 응답을 추후에 공부할 것이다. 또한 필요할 경우에는 미세조정 (adjustment) 에 대한 내용도 다룰 것이다.

2. 규칙기반의 개발: 온도에 관련된 4개의 소속합수와 습도에 관련된 3개의 소속함수가 있으므로 전체적으로 4 × 3 =12개의 규칙이 있다. 이는 도식적으로(그림 6) 그리고 기호화 (symbolic) 로 12개의 규칙을 설명할 것이다. 각각의 규칙(또는 제어법)에 있어서 모든 입력에 대한 단 하나의 소속함수가 고려된다는 것을 주시하라. 각각의 규칙에 대한 실행은 설계자의 경험이나 설계시의 필요성을 기초로 선택된다. 예를 들면 규칙 1에서는 만일 온도가 매우 뜨거움이고 습도가 매우 습함이면 경험이나 규칙의 원하는 값에 기초한 실행은 100% 출력설정과 작동이 빠름으로 설정된다. 그러나 규칙 10에서의 차가움과 매우 습함에 해당하는 실행은 느림과 꺼짐이 될 수 있다. 어느 것이 옳은가? 규칙기반의 결과가 시뮬레이션되고 분석되기까지는 어느 것이 맞는지 실제로는 알 수 없다. 만약 결과가 원하는 것과 다르다면 만족하는 값을 얻을 대까지 규칙(또는 소속함수)은 조정되어질 것이다. 몇몇의 규칙은 "그리고(and)"에 기반을 두고 있었고, 이와는 달리 다른 것들은 "또는 (or)"에 기초하고 있었다는 것을 숙지하기 바란다.

결과들이 어떻게 나타나는지 이해하기 위해서 몇 개의 숫자를 보도록 하자. 현재 온도가 78°F이고 습도가 70%라고 가정하자. 그림 5에서 보여주듯이 결과로 나온 소속값이 따뜻함에서는 0.7, 뜨거움은 0.27, 습도는 0.65가 될 것이다. 나머지 모두는 0값이 될 것이다. 이들 값들을 해당하는 규칙에 대입하며(그림 6에 도식적으로 나타나 있다)0.27의 중간과 0.65의 느림의 출력 소속값이 나온다."그리고 (and)" 의 논리(논리합)를 사용하였기 때문에 두 값 사이의 최소값이 선택되는 것을 반드시 기억해야만 한다. 그래서 예를 들면 규칙 5에서는 0.65보다 작은 0.27이 선택된다.

3. 역퍼지화: 이제는 출력 소속값을 찾았고 이를 시스템의 출력 설정에 관련된 정확한 값을 찾기 위해 역퍼지화해야 한다. 출력값을 무게중심법 (center-of gravity method) 이나 맘다니 추론법 (Mamdani's inference method) 모두에 근거하여 연산할 수 있다.

[그림 6] 예제 1의 규칙 기반의 몇 가지 도식적 규칙 표현

[그림 7] 맘다니 추론법의 적용

무게중심법으로는 출력 소속값과 해당하는 유일한 값 (singleton value) 을 곱하고 나서 소속값들의 총합으로 나누어주면 다음과 같은 결과를 얻는다.

맘다니 추론법에서는 우선 중간과 느림 함수를 0.27과 0.65에서 절사하여 하나의 영역으로 묶고 무게중심법으로써 그림 7에서 보이듯이 결과영역의 무게중심을 계산한다.

결과로 나온 영역의 무게중심은 해당 영역의 1차 모멘트를 찾아서 이를 전체 영역으로 나누면 계산이 가능하며 34%의 비율의 출력되도록 계산된다. 이는 무게중심법과는 약간 다른 방법이다.

8. 퍼지논리 제어기의 시뮬레이션

퍼지 시스템을 위해 개발된 규칙이 모든 입력값에 대해서 만족할 만한 결과를 출력하는지 검증할 필요성이 있다. 이는 보통 FIDE, FUDGE나 이전에 언급하였던 기타 프로그램과 같은 퍼지논리 프로그램을 통해 이루어진다. 이러한 프로그램에 있어서 소속함수는 입력이 되고 규칙들은 프로그램된다. 이 프로그램은 퍼지추론엔진 (fuzzy inference engine) 을 구동하며 가능한 모든 입력에 대한 출력을 계산하고(정해진 스텝 크기에 따른다) 도표화하여 퍼지제어 시스템을 시뮬레이션한다. 이 도표는 규칙과 소속함수를 검사하고 이들이 적합한지의 여부를 관찰하며 결과를 향상시키기 위한 수정할 사항이 있는지 없는지 살펴보는 데 사용 된다. 필요시에는 퍼지집합의 규칙을 원하는 출력곡선이 얻어질 때까지 계속 수정한다. 그림 8은 FIDE 프로그램을 통하여 에어컨 시스템의 출력을 3차원으로 묘사한 것을 나타내고 있다. 만족하는 시스템을 얻게 되면 퍼지 프로그램은 기계어(또는 다른 실시간 코드)로 변환되어 마이크로프로세서 제어기로 전송되고 저장된다. 마이크로프로세서는 퍼지 프로그램에 따라서 기계나 시스템을 구동할 것이다. 비록 그 과정이 길어 보일지라도 실제로는 이방식이 상대적으로 쉽고 흥미로운 지능 (intelligence) 을 기계에 부여한다.

9. 로봇 내의 퍼지논리의 응용

퍼지논리제어 시스템은 로봇제어 분야뿐만 아니라 다른 시스템으로 대체하기 어렵거나 사용하기 힘든 응용 시스템에 지능을 부여하는 분야 등등 모두에 사용된다. 예를 들어 하나의 응용방안으로써 전류 변조방식[9]에 의한 절환 자기저항 모터 (switched reluctance motor) 의 출력 토크를 제어하는 데 퍼지논리가 사용된다. 퍼지논리가 고전제어 시스템을 대신하여, 또는 함께 사용된다 하더라도 퍼지논리가 더 유용하게 사용될 만한 분야는 매우 많으며 만일 그렇지 않다면 함수를 제어하는 데 단 한가지 방법만이 존재하게 된다. 이것이 바로 여기서 퍼지논리를 다루는 이유이다. 이러한 응용을 통하여 로봇은 더 지능적이고 유용한 로봇이 된다. 예를 들면 거친 노면에서 사용이 가능하도록 설계된 이동로봇 (mobile robot) 을 고려해 보자. 퍼지논리 시스템은 로봇의 속도, 지형, 로봇의 출력 등에 따라 어떤 동작을 해야 할지를 결정하는 로봇 제어기를 보강하는 데 사용된다. 다른 예로서는, 로봇의 말단장치가 소위, 부품의 크기나 무게 등의 두 가지 입력에 대해 비례한 힘을 발생해야만 하는 로봇이라고 가정해 보자. 도 다른 예로서, 7가지 색으로 가방을 분류하는 로봇을 가정해 보자.이러한 수많은 유사한 예제에서 퍼지논리는 작업을 성공적으로 완성하기 위한 지능을 로봇에 융합하는 데 최선의 선택일 것이다. 뿐만 아니라, 다양한 장비들이 로봇에 추가되어 있고 자신의 제어기를 통하여 로봇과 함께 작업을 수행한다. 이러한 경우에는 독립된 마이크로프로세서가 로봇 제어기와는 무관한 장비들의 기능을 제어한다. 적합하기만 하다면, 퍼지논리가 마이크로프로세서 내의 함수들과 상호작용할 것이다.

거친 노면에서 움직이는 이동로봇을 제어하는 퍼지논리 시스템을 설계하라

[해답] 로봇의 입력으로는 노면의 경사와 지형으로 하고 출력으로는 로봇의 속도로 가정할 것이다. 경사의 범위를 -45°로 할 것이고 이를 큰 음방향, 음방향, 기준, 양방향, 큰 양방향으로 분류할 것이며, 노면의 지형은 매우 거침, 거침, 보통 부드러움으로 분류할 것이다. 출력속도는 시속 0마일에서 20마일의 범위로 하고 이를 매우 느림, 느림, 보통, 빠름 매우 빠름으로 분류할 것이다. 그림 9는 위에서 언급한 퍼지집합을 보여주고 있다. 20개로 구성된 규칙기반도 아래에서 보여준다. 그림 10은 퍼지추론 개발환경 (FIDE) 프로그램으로 시뮬레이션을 수행한 결과를 보여주고 있다. 여기서 규칙기반이나 퍼지집합의 한계값을 수정해야 한다고 생각하는가?

[그림 9] 예제 2에 대한 입력과 출력의 퍼지집합

[그림 10] 예제 2에 대한 FIDE 프로그램에 의해 시뮬레이션된 결과

그림 10의 표면은 제어표면 (control surface) 이다. 이는 두 입력에 대한 모든 가능한 값에 대한 규칙에 의거한 상당하는 출력값을 의미한다. 예를 들면 입력으로서 경사가 20°이고 노면이 30(부드러움과 보통의 중간 정도) 일 때 로봇의 속도는 시속 13마일임을 나타낸다. 이와 같이, 경사가 높아지거나 낮아짐에 따라서 뿐만 아니라 노면이 거칠어질수록 로봇의 속도가 감소됨을 보여준다.

[그림 11] 예제 9.3에 대한 입력과 출력의 퍼지집합

[그림 12] 예제 9.3에 대한 FIDE 소프트웨어를 사용한 시뮬레이션 결과

여기서 볼 수 있듯이, 모든 색깔과 무게의 조합에 따른 가격을 볼 수 있다. 예를 들면 크기가 65(비교적 큰 편임)이고 색깔이 56(D와 H의 중간 정도)일 때 가격을 캐럿당 33.7 또는 미화 $3370이다. 이러한 퍼지논리 시스템과 단지 12개의 규칙을 가지고, 시각 시스템은 자동적으로 다이아몬드의 합당한 가격을 산출할 수 있다.

 

10. 설계 프로젝트

만일 퍼지논리제어 시뮬레이터 분야에 관심이 있다면 이동로봇이나 특수한 작업을 수행하는 시각 시스템이나 다른 유사한 응용분야를 개발하기를 원하게될 것이다. 퍼지논리제어 프로그램은 로봇의 운동을 제어하거나 다른 목적으로 기술된다. 예를 들어, 어떤 독자는 퍼지입력에 기초하여 로봇이 임의의 경로를 추종하도록 하는 퍼지제어 학습 프로그램을 작성할지도 모른다. 뿐만 아니라, 만일 마이크로프로세서에 관심이 있다면 개발된 프로그램을 마이크로프로세서를 구동하는 제어 프로그램의 일부분으로서 마이크로프로세서에 저장이 가능하다. 더 많은 정보를 원한다면 참고문헌을 참조하도록 하자, 다음 목록에서 언급한 몇몇의 책에서는 독자가 설계한 것을 시뮬레이션할 수 있는 퍼지논리 개발 프로그램을 포함하고 있다.

11. 요 약

이 장에서는 퍼지논리제어 시스템을 어떻게 개발하고 시뮬레이션하며 검사하고 사용하는지 언급하였다. 퍼지논리는 일상적인 시스템의 부정확한 개념과 온도, 습도와 같은 정의, 고통, 뜨거움, 차가움 등의 감정, 많고 , 적은 등과 같은 형용사를 표현할 수 있는 아주 유용한 방법이다. 퍼지논리제어 시스템을 수많은 다양한 상황에 응용할 수 있으나, 우선 로봇에 어떻게 사용될 것인가를 논의하여야 한다. 로봇의 적용에는 이동로봇과 원격 로봇의 항법 시스템에서부터 전문가 시스템이나 시각 시스템 분야까지 폭넓게 적용이 가능하다. 퍼지논리 시스템이 일반적으로 시뮬레이터 프로그램에 의해 시뮬레이션되고 그 시스템이 의도한 대로 실행되는 것이 증명되면 나머지 제어 프로그램과도 연계하여 사용된다.