39
ﺳﻴﺴﺘﻢ ﭘﻴﺸﺒﻴﻨﻲ ﻛﻨﻨﺪه ﺧﻮن ﮔﻠﻮﻛﺰ ﻣﻴﺰان از اﺳﺘﻔﺎده ﺑﺎ دﻳﺎﺑﺘﻲ ﺑﻴﻤﺎران در روشLocal Fuzzy Reconstruction ﺑﻪ ﺷﺪه اراﺋﻪ: ﻧﺼﺮآﺑﺎدي دﻛﺘﺮ آﻗﺎي ﺗﻮﺳﻂ: ﺑﻐﺪادي ﮔﻠﻨﺎز ﭘﺮوژه درس ي ﻣﺪﻟﺴﺎزي آﺑﺎن1386

سیستم پیشبینی کننده میزان گلوکز خون در بیماران دیابتی با استفاده ازتئوری فازی

Embed Size (px)

Citation preview

ميزان گلوكز خون كننده پيشبيني سيستم روشدر بيماران ديابتي با استفاده از

Local Fuzzy Reconstruction

: ارائه شده به آقاي دكتر نصرآبادي

:توسط

گلناز بغدادي

مدلسازيي درس پروژه 1386آبان

37

فهرست مطالب  38 .......................................................... اسيك هيپا بر ييروشها از استفاده با خون گلوكز زانيم ينيشبيپ

 38 ................................................................................................................................. مقدمه: 3.1

 39 ........................................................ خون گلوكز زانيم ثبت به مربوط يزمان يسر بودن آشوبگونه يبررس: 3.2

 ٣٩ .................................................................................................................................. فيط زيآنال: 3.2.1

 ٤٠ .................................................................................................................. دادگان ييجابجا كيتكن: 3.2.2

 Taken ........................................................................................ 43 يتئور از استفاده با فضا يبازساز: 3.3

 45 .............................................................................. شده يبازساز يفضا در بردار نيآخر آوردن بدست: 3.4

 45 ............................................................................................ بردار نياخر يهيمساه يبردارها افتني: 3.5

 46 .......................................................................................... هيهمسا يها بردار يندهيآ ريمقاد افتني: 3.6

 local fuzzy reconstruction ..................................... 46روش از استفاده با بردار كي يبعد مقدار ينيشبيپ: 3.7

 48 ........................................................................................................ شده يطراح ستميس يابيارز: 3.8

 50 ................................................................................................ يقبل ستميس از يفاز قسمت حذف: 3.9

 51 ....................................................................................................................... مطالب خالصه: 3.10

 52 ............................................................. يفاز ستميس كي از استفاده با گلوكز زانيم كنترل و ينيشبيپ

 52 .................................................................................................................................. مقدمه: 4.1

 52 .............................................................................. خون گلوكز كننده ينيشبيپ يفاز ستميس يطراح: 4.2

 61 ......................................................................................................................... مطالب خالصه: 4.3

 62 ......................................................................................................................................... مراجع

 D ................................................................................................................................... 63 مهيضم

 E .................................................................................................................................... 70 مهيضم

38

سومفصل

روشهايي بر پايه كياسبا استفاده از پيشبيني ميزان گلوكز خون )local fuzzy reconstruction(

مقدمه: 3.1

در اين فصل قصد داريم، يك . ي شبكه عصبي استفاده شدل قبلي براي پيشبيني ميزان گلوكز خون از مدلهايي بر پايهدر فصروش .مدل كه از تئوري هاي كياس براي پيشبيني ميزان گلوكز خون استفاده مي كند را مورد آزمايش قراردهيم

local fuzzy reconstruction عملي ترين روشهاي غير خطي پيشبيني كننده به شمار مي رود، كه در اينجا يكي ازاين روش با استفاده از يك سري زماني داده شده، . استفاده مي شود در آينده نزديك ميزان گلوكز خونازآن براي پيشبيني

باز سازي فضا با تئوري بازسازي ر را با استفاده از اين روش اين كا. قوانين حاكم بر رفتار سري زماني را تخمين مي زندTaken [4]انجام مي دهد.

مقدار . از يك بيمار كه تحت رزيم غذايي و فعاليتي سخت نيست در مدت چند ماه ثبت شده استداده هاي استفاده شده ه در فصل قبل براي شبكه عصبي اين داده ها يكي از ورودي هاي استفاده شد. گلوكز حداقل چهار بار در روز ثبت شده است

.در شكل زير سري زماني حاصل از اين اندازه گيري ها رسم شده است .است

39

)چهار بار در روز(در مدت چند ماه اندازه گيري هاي انجام شده از ميزان قند خون: 3.1شكل

:شدطراحي اين سيستم شامل مراحل زير است كه در ادامه هر كدام توضيح داده خواهند A. بررسي آشوبگونه بودن سري زماني مربوط به ثبت ميزان گلوكز خون B. بازسازي سري زماني يك بعدي در يك فضايn بعدي با استفاده از تئوريTaken C. انتخاب بردارZ(T) از جاذب كه شامل آخرين داده هاي ثبت شده است. D. ي يافتن بردارهاي همسايهx(i) گي كه در ترجكتوري هاي ديگر در همسايZ(T) قرار دارند. E. بدست آوردنx(i+s) كه برداري است كه بر روي جاذبs گام ازx(i) جلوتر است. F. تخمين ميزانZ(T+s) با استفاده از بردارهايZ(T),x(i),x(i+s) با استفاده از روش local fuzzy reconstruction

خون ررسي آشوبگونه بودن سري زماني مربوط به ثبت ميزان گلوكزب: 3.2بررسي آشوبگونه بودن . تعدادي از محققين دريافته اند كه رفتار سري هاي زماني مربوط به سطح گلوكز خون، كياتيك است

اين پارامتر ها .بزرگترين نماي لياپانوف انجام مي شودي با استفاده از آناليز طيف، تابع اتوكورليشن و محاسبهاين سري زماني -د كه معموال براي نشان دادن كياتيك بودن يك سيگنال استفاده مي شوند، كه در زير به نحوهتعدادي از فاكتورهايي هستن

.ي آنها از روي سري زماني موجود اشاره مي شودي محاسبه

آناليز طيف: 3.2.1ه تبديل بنابراين انتظار داريم ك. همانطوري كه مي دانيم، يك سيگنال كياتيك رنج وسيعي از فركانسها را شامل مي شود

FFTبراي بررسي سري زماني ميزان قند خون، . ي يك سيگنال كياتيك، شامل يك طيف گسترده از فركانسها باشدفوريهمولفه هاي فركانسي در رنج همانطوري كه مشاهده مي شود، . سري زماني موجود گرفته شده و طيف آن رسم شده است

.وسيعي هستند

40

%Spectrum Analysis yy=y-mean(y); % y is blood glucose measurement fy = fft(yy,512); Pyy = fy.* conj(fy) / 512; f = 1000*(0:256)/512; figure;plot(f,Pyy(1:257)) title('Frequency content of y') xlabel('frequency (Hz)')

محتويات فركانسي سري زماني : 3.2شكل

.بنابراين از تكنيك زير استفاده مي كنيم ي توان نتيجه گرفت كه سيگنال كياتيك است،ولي با ديدن همين يك فاكتور نم

1تكنيك جابجايي دادگان: 3.2.2. اين بحث بيشتر راجع به سيگنالهايي است كه طيفشان شبيه طيف سيگنالهاي كياتيك است ولي واقعا يك نويز رنگي اند

هر دو مثبت هستند، بعد كورليشن را كه حساب مي كنيم هر دو نزديك به زيرا نماي لياپانوف آنها را كه حساب مي كنيم .استفاده نمود "جابجايي دادگان "يك است، حال براي تشخيص اين دو از هم مي توان از اين تكنيك

اين تكنيك سه . جابجايي دادگان استيكي از روشهاي قابل اطمينان براي تشخيص سيگنال كياتيك استفاده از تكنيك :كه دراينجا براي اثبات كياتيك بودن سيگنال از الگوريتم يك آن استفاده شده است. رض را دنبال مي كندف

محاسبه از روي داده هاي در دسترس را ...) بعد كورليشن، نماي لياپانوف و يا (ابتدا يكي از پارامتر هاي كياتيك :1الگوريتم ، و دوباره عكس )بر مي زنيم( ُكنيم و بعد، فازشان را جابجا مي كنيم ي دادگان را حساب ميتبديل فوريهنموده و بعد

دوباره پارامتر كياتيك را . تبديل فوريه مي گيريم، حاال دو سيگنال داريم كه طيفشان يكي است ولي فازشان با هم فرق داردت مي توان نتيجه گرفت كه سيگنال داشاز روي سيگنال جديد بدست مي آوريم، اگر نتيجه بدست امده با قبل تفاوت

.كياتيك بوده است :پارامتر كياتيكي كه در اينجا محاسبه شده است بعد كورليشن است كه به صورت زير بدست مي آيد

RLogRCLogLimD

Rc)(

0→−=

1 surrogate data

41

:نيز از فرمول زير بدست مي آيد C(R)كه در اين رابطه

∑ ∑= ≠=

−−−

=N

i

N

ijjji xxR

NNRC

1 ,1)(

)1(1)( θ

:آوردن بعد كورليشن توسط نرم افزار مطلب به صورت زير پياده سازي شده اند روابط باال به منظور بدست

%calculating correlation dimension teta=0; S=0; CR=[]; for R=0.1:0.1:10 for i=1:length(y) for j=1:length(y) if i~=j u=R-abs(y(i)-y(j)); if u>=0 teta=teta+1; else teta=teta+0; end end end S=S+teta; teta=0; end u2=S/(length(y)*(length(y)-1)); CR=[CR;u2 R]; S=0; end z1=log10(CR(:,2)); z2=log10(CR(:,1)); plot(z1,z2,'.') p=polyfit(z1(10:60,:),z2(10:60,:),1); hold on; Dc=p(1) n1=0:0.01:0.7; n2=polyval(p,n1); plot(n1,n2,'r') xlabel('log R');ylabel('log C(R)');

به Rبه ازاي مقادير زياد . مشاهده مي شود 3.3رسم مي كنيم، كه در شكل log Rرا بر حسب log C(R)به اين ترتيب

در ناحيه . منفي مي شود ln C(R)به علت تعداد نقاط محدود Rبه ازاي مقادير كوچك . رسيم حد اشباع يا عدد يك مي. توانيم آنها را به يكديگر متصل نماييم كه با يك خط تقريباً مستقيم مي مياني اين منحني ما شاهد يك سري از نقاط هستيم

Dc=0.81 ر اينجا اين شيب برابر باد .نمايد بعد همبستگي را مشخص مي شيب اين خط براي ما بعد كورليشن يا همان .بدست آمد

42

به منظور بدست آوردن بعد كورليشن log Rبر حسب log C(R)ترسيم : 3.3شكل

.اعداد زير بدست آمده است ،Dcليد داده هاي ساروگيت توسط الگوريتم بيان شده و محاسبه دوباره بار تو سهبا Dc=0.8424 ،Dc=0.0137 ،Dc=0.7328 دارد و مي توان نتيجه گرفت كه سيگنال كياتيك كه با نتيجه قبلي تفاوت

.ه نمودبنابراين مي توان از تئوري هاي كياتيكي در ادامه بحث استفاد. است

%Surrogate F=fft(y); abs1=abs(F); angle1=angle(F); k=randperm(length(y)); angle2=[]; for i=1:length(y) angle2=[angle2;angle1(k(i))]; end i=sqrt(-1); F2=abs1.*exp(i*angle2); y2=ifft(F2); y2=real(y2);

43

ال الگورتيم يك تكنيك جابجايي دادگان محاسبه بعد كورليشن بعد از اعم: 3.4شكل

 Takenبازسازي فضا با استفاده از تئوري :3.3

اين كار معموال با .در طراحي سيستم باز سازي فضا و بردن سيگنال يك بعدي به يك فضاي چند بعدي مي باشد گام بعدي . انجام مي شود Takenاستفاده از تئوري :زير خالصه نمود را مي توان به صورت Takensتئوري :به صورت زير مي سازيم y(t)ي ي مشاهده شدهرا از يك سري داده x(t)بردار

)))1((),...,2(),(),(()( τττ −−−−= ntytytytytx بعدي باز سازي شده nي يك نقطه در فضاي حالت اين بردار نمايش دهنده. نمايشگر تاخير زماني است τكه دراين رابطه

.ترجكتوري را در فضاي بازسازي شده رسم كنيم مي توانيم tبه اين ترتيب با تغيير . استنگاشت پيوسته از C1با فرض اينكه سيستم مورد نظر يك سيستم ديناميكي معين است، و سري زماني مشاهده شده، با

ي كافي بزرگ باشد، به اندازه n، انگاه اگر باشد، بدست آمده Rفضاي حالت سيستم ديناميكي، به فضاي اقليدسي يك بعدي به معناي ديگر اگر جاذبي در سيستم ديناميكي اصلي . رجكتوري ساخته شده يك بازسازي از ترجكتوري اصلي خواهد بودت

معموال n.ظاهر شود، يك جاذب ديگر كه داراي ساختار فاز همان جاذب اول است، در فضاي باز سازي شده ظاهر مي شود :ق كند، باز سازي به درستي انجام مي شوددر شرايط زير صد nاگر . بعد بازسازي ناميده مي شود

12 +≥ mn البته اين يك شرط كافي است ولي الزم . ي بعد فضاي حالت سيستم ديناميكي اصلي استنمايش دهنده mدر اين رابطه

n>2dبه عالوه اگر . دهم انجام شو 2m+1تواند حتي در مقادير كمتر از نيست، زيرا با توجه به داده ها گاهي باز سازي ميجاذب، در فضاي سيستم ديناميكي اصلي است، انگاه ثابت شده است كه عمليات بازسازي box-countingبعد dباشد، كه

.[5,6]يك تصوير سازي يك به يك خواهد بود

44

6آن در مرجع ب و نحوه انتخا، كه علت اهميت است τي مهم ديگر در بازسازي سيگنال انتخاب ميزان تاخير زماني مسئله .[7]مقدار اوليه اش مي رسد تعريف مي كنند e/1-1زماني كه تابع اتوكورليشن به همچنين گاهي آن را .آورده شده است

وقتي اين بازسازي برروي تعدادي از داده هاي مشاهده شده تكرار شود، يك مانيفولد هموار كه از يك سري بردار در فضاي n ترجكتوري جاذب بدست امده از باز سازي سري زماني در يك فضاي 3.3شكل . ت مي ايدبعدي تشكيل شده است، بدس .بعدي را نشان مي دهد 3

نمايي از بازسازي داده هاي يك بعدي در يك فضاي سه بعدي: 3.3شكل

ري زماني يك كه در زير برنامه نوشته شده براي بازسازي س. در نظر گرفته شده است τ=4و n=3در طراحي اين مدل، .ترجكتوري حاصل از باز سازي فضا ديده مي شود 3.4همچنين در شكل . بعدي در يك فضاي سه بعدي مشاهده مي شود

بعضي از محققين بر اين باورند كه تفاوت بين شكلهاي ديده شده در فضاي باز سازي شده ، تفاوت در كنترل قند خون را .نشان مي دهد

%Takens embedding %dimension of embeding=3, the time delay=4 X=[]; w=4; %the time delay for i=1:(308-2*w) X=[X;y(i) y(i+w) y(i+2*w)]; end figure;plot3(X(:,1),X(:,2),X(:,3)); title('reconstructed state space');xlabel('x');ylabel('y');zlabel('z');

45

شده ترجكتوري بازسازي: 3.4شكل

ين بردار در فضاي بازسازي شدهآخر بدست آوردن :3.4بعد از بازسازي فضا كاري كه بايد انجام دهيم، پيدا كردن آخرين مقادير در سري زماني است كه قصد داريم مقدار بعدي آن

براي مثال در . ناميممي Z(T)را پيشبيني كنيم، ما در فضاي بازسازي شده اين بردار را كه شامل مقادير اشاره شده است، را مي توان به صورت Z(T)، (n=3,τ=4)سمپل بود، بنابراين با مقادير بازسازي 308شامل ، y(n)اينجا سري زماني ما،

Z(T)=[y(300) y(304) y(308)]. زير نوشتي اين بردار را آينده را در نظر بگيريم، زيرا مقدار واقعي Z(T)نمي توانستيم اين ولي در اين جا براي ارزيابي سيستم

در نظر گرفتيم و با دانستن مقدار بعدي Z(T)هر بار يكي از بردار هاي فضاي باز سازي شده را به عنوان بنابراين . نداشتيم . اين بردار، عملكرد سيستم را مورد ارزيابي قرار داديم

اخرين برداري يافتن بردارهاي همسايه: 3.5در آن خاصيت سببي زماني باشد كه sرا پيشبيني كنيم، اگر Z(T+s)داريم، و مي خواهيم را Z(T)فرض كنيد كه بردار

ديناميك هاي حفظ مي شود، آنگاه مي توان فرض كرد كه وابستگي شديد كياس به شرايط اوليه، با توجه به 1دترمينستيك Z(T)ي بردارهاي همسايه x(i)است، كه x(i+s)به x(i)تقريبا برابر با ديناميك هاي انتقال Z(T+s)به Z(T)انتقال

. بنابراين در اين مرحله نياز به پيدا كردن اين بردار هاي همسايه داريم .هستند كه بر روي ترجكتوري هاي ديگر قرار دارندو با در نظر گرفته شده و ديگر بردار ها انجام شده است Z(T)اندازه گيري فاصله اقليدسي بين اين كار با استفاده از بايد توجه داشت كه .انتخاب شده اند cو bو aبه نام هاي Z(T)تا از نزديك ترين بردارها به بردار 3مقايسه اين فواصل ،

1 deterministic causality

46

ي اجراي برنامه. با بردارهاي همسايه مي تواند برروي درستي مقدار پيشبيني شده تاثير بگذارد Z(T)ي بين بردار فاصله .ه شده استآورد Dاين قسمت، در ضميمه

ي بردار هاي همسايهيافتن مقادير آينده: 3.6آنقدر زياد نباشد كه خاصيت سببي دترمينستيك ، از بين برود، sهمانطوري كه در قسمت قبل نيز بيان شد، اگر مقدار

x(i+s)به x(i)تقريبا برابر با ديناميك هاي انتقال Z(T+s)به Z(T)ديناميك هاي انتقال آنگاه مي توان فرض نمود كه nبعد بازسازي اين بردار ها با . ها باشيم x(i+s)بايد به دنبال x(i)ي در نتيجه بعد از پيدا كردن بردار هاي همسايه. است

:به صورت زير تعريف مي شوند،

)))1((),...,2(),(),(()()),)1((),...,2(),(),(()(

ττττττ

−−+−+−++=+−−−−=

nsiysiysiysiysixniyiyiyiyix

local fuzzy reconstructionپيشبيني مقدار بعدي يك بردار با استفاده از روش: 3.7با فرض . هستيم Z(T+s)به دنبال پيدا كردن بردار x(i+s)و x(i)و Z(T)، و پيدا كردن مقادير بعد از باز سازي فضاكه تقريبا برابر Z(T+s)مي توان مقدار Z(T)به جاي x(i)ي با جايگذاري مقدار همسايه گفتيم كه sبزرگ نبودن مقدار

:فازي زير بيان نمودتابع ها را مي توان توسط اين گفته . است را پيدا نمود x(i+s)با )()()()( sixissTZTHENixisTZIF ++

:اين فرمول را در حالت كلي تر مي توان به صورت زير نوشت)()()()( sixissTZTHENixisTZIF jjjj ++

.خواهد بود Z(T+s) امين مولفه از بردار jتقريبا برابر با x(i+s)امين مولفه از بردار jكه با توجه به اين رابطه :داريم Z(T)و سه همسايه از بردار τ=4و زمان تاخير n=3در نظر گرفتن بعد باز سازي با

))8(3),4(2),(1()())8(3),4(2),(1()())8(3),4(2),(1()(

))8(3),4(2),(1()(ˆ))8(3),4(2),(1()())8(3),4(2),(1()())8(3),4(2),(1()(

))8(3),4(2),(1()(

scyscyscyscxsbysbysbysbxsaysaysaysaxsTysTysTysTZ

cycycycxbybybybxayayayaxTyTyTyTZ

+++++=++++++=++++++=++++++=+

++=++=++=++=

بردار هاي x(c+s)و x(a+s) ،x(b+s)هستند و Z(T)ي بردار هاي همسايه x(c)و x(a) ،x(b)، كه در اين روابطبا اين فرضها آخرين قانون فازي بيان شده را .هستند x(c)و x(a) ،x(b)گام جلوتر از بردار هاي sهستند كه به ترتيب

:مي توان به صورت توابع فازي زيربيان نمود :محور اول در فضاي حالت باز سازي شده با توجه به

⎪⎩

⎪⎨

++++++

)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1

)1(scyissTythencyisTyifsbyissTythenbyisTyifsayissTythenayisTyif

47

:با توجه به محوردوم در فضاي حالت باز سازي شده

⎪⎩

⎪⎨

++++++

)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2)(2

)2(scyissTythencyisTyifsbyissTythenbyisTyifsayissTythenayisTyif

:محور سوم در فضاي حالت باز سازي شده با توجه به

⎪⎩

⎪⎨

++++++

)(3)(3)(3)(3)(3)(3)(3)(3)(3)(3)(3)(3

)3(scyissTythencyisTyifsbyissTythenbyisTyifsayissTythenayisTyif

ان سيستم فازي شامل سه ورودي . براي پياده سازي اين قسمت از يك سيستم فازي ممدني با قوانين باال استفاده شده است

كه هر كدام يكي از داده شده را مي گيرد و سه خروجي Z(T)يكي از مولفه هاي بردار از لحاظ عددي است كه هر كدام توابع عضويت مربوط به هر كدام از ورودي ها و خروجي ها در شكل هاي زير نمايش .را مي دهد Z(T+s)مولفه هاي بردار بنابراين . به اين ترتيب كه براي هر كدام از اين قوانين يك تابع عضويت مثلثي شكل در نظر گرفته شده است. داده شده است

بعد از يافتن سه بردار . را مي گيرد، شامل سه تابع عضويت مثلثي است Z(T)ي اول بردار مولفهورودي يك كه مقدار يكي از بردار هاي همسايه هر تابع عضويت را بر روي ) احتمال برابر با يك(، در مورد هر محور، نوك مثلثي Z(T)ي همسايه

xj(i) ،هر تابع عضويت را بر روي ) احتمال برابر با يك(مثلثي نوك قرار مي دهيم، در مورد خروجي ها نيز به همين صورتآورده شده در مطالب بيان شده در مورد تابع عضويت ها در شكلهاي . [5]قرار مي دهيم xj(i+s)يكي از بردار هاي همسايه

امه ان در اين سيستم در محيط مطلب از طريق خط فرمان طراحي شده است كه برن .زير بهتر نشان داده شده اند Dضيمه .در شكل زير يك شماي كلي گرافيكي از اين سيستم فازي آورده شده است. آورده شده است Dضميمه

شماي گرافيكي سيستم فازي طراحي شده: 3.5شكل

و عملگر هاي فازي برروي انها به منظور توضيح بيشتر مي توان گفت كه ورودي ها توسط اين توابع عضويت فازي شده

ي دفازي كردن خروجي ها مي باشد كه در و بعد از اجتماع تمام خروجي ها استفاده شده و سپس مرحله شود،اعمال مي .اينجا براي دفازي كردن از محاسبه مركز ثقل استفاده شده است

48

.آورده شده است 3.6نيز نشان داد كه در شكل قوانين فازي را مي توان به صورت گرافيكي

ن فازي به صورت گرافيكينمايش قواني: 3.6شكل

:مشخصات سيستم فازي طراحي شده نيز به طور كامل تر در زير اورده شده است

name: 'Glucose Predictor' type: 'mamdani' andMethod: 'min' orMethod: 'max' defuzzMethod: 'centroid' impMethod: 'min' aggMethod: 'max' input: [1x3 struct] output: [1x3 struct] rule: [1x9 struct]

ارزيابي سيستم طراحي شده: 3.8در Z(T)به منظور ارزيابي سيستم طراحي شده به ترتيب هر كدام از بردار هاي فضاي باز سازي شده را به عنوان

در نظر 2ا برابر با ر sدر اينجا . محاسبه مي شود Z(T+s)، مقدار نظر مي گيريم و با استفاده از روشي كه در باال اشاره شدچون مقدار واقعي آينده بردار . و اين كار براي تمامي بردار هاي فضاي باز سازي شده غير از بردار آخر تكرار مي شود .گرفتيم

صحت نتايج بدست سپس با علم به مقادير آينده هر كدام از اين بردار ها . آخر را نداريم و در ارزيابي سيستم به كار نمي آيد .از سيستم را بررسي مي كنيمآمده

نه صلي ما پيشبيني مقادير بعدي در سري زماني يك بعدي است اشته باشيد كه در اين پروژه هدف اتوجه د : مي دانيم كه . پيشبيني مقادير بعدي بردارهاي باز سازي شده

49

)]8()4()([)()]8()4()([)(

sTysTysTysTZTyTyTyTZ

+++++=+++=

مي تواند مقدار آينده گلوكز خون y(T+8+s)اني ما باشد، آخرين عدد در سري زم y(T+8)بنابراين مي توان گفت كه اگر Z(T)مولفه سوم بردار با توجه به مطالب بيان شده در اين پروژه هنگام ارزيابي سيستم از .گام جلوتر را نشان بدهد sدر

.استفاده شده استe=mean(abs(Y(:,3)-Y2(:,3))) e = 2.8235 figure;plot(Y(:,3),'-*b');hold on;plot(Y2(:,3),'-+r')

بدست آمد كه mmol/dl 2.8235ميزان خطاي بدست آمده توسط اين مدل پيشگويي كننده ميزان گلوكز خون برابر با

ي موجود بدست آمده است و ممكن است با تغيير داده ها از داده هاي اندازه گيري شدهباز هم تاكيد مي شود اين نتيجه رديف اول جدول از همان ( .در جدول زير نتيجه سيستم براي داده هاي ديگر نيز آورده شده است. نتيجه بهتر و يا بدتر شودي گلوكز خوني استفاده كرده است كه در فصل قبلي به عنوان يكي از ورودي هاي شبكه عصبي به مقادير اندازه گيري شده

.)كار رفت لفنتيجه بدست آمده از سيستم براي داده هاي مخت: 3.1جدول

variancemean 2.0015 2.8235data00 2.6205 3.7281data01 2.7378 3.89 data02 2.3456 3.6421data03 2.9144 4.1275data04 2.9777 4.1193data05 2.2878 3.4103data06 2.4812 3.1918data07 2.3745 3.6101data10 3.2009 5.8371data11 3.7879 5.9683data123.9563 5.3066data13 3.3835 5.2012data14 3.757 5.2492data15 3.718 5.7467data16

2.5896 4.2182data17 3.1909 4.235 data18 3.3023 4.292 data19 3.6066 4.9283data20

.ر هم نشان داده شده استدر شكل زير داده هاي اندازه گيري شده واقعي و ميزان تخيمن زده شده توسط مدل در كنا

50

و مقايسه با داده هاي واقعي و مورد انتظار پيشگو گرفته شده از مدل نتيجه: 3.7شكل

حذف قسمت فازي از سيستم قبلي: 3.9در اين قسمت سعي مي كنيم كه از روابط فازي استفاده نكرده و بعد از پيدا نمودن همسايگي نقطه مورد نظر، عينا آينده

رديف ( .ظر نسبت دهيم، نتايج بدست آمده از اجراي اين سيستم به صورت زير استيه را به آينده نقطه مورد ننقطه همساي گلوكز خوني استفاده كرده است كه در فصل قبلي به عنوان يكي از ورودي اول جدول از همان مقادير اندازه گيري شده

.)هاي شبكه عصبي به كار رفت

ده از سيستم صرفا كياتيكنتايج بدست آم: 3.2جدول variance mean 2.4388 3.4081 data00 3.3986 4.3319 data01 3.5641 4.8333 data02 3.1469 4.2385 data03 3.1832 4.6049 data04 3.2103 5.0848 data05 3.015 3.6455 data06 2.654 3.7745 data07 3.1005 4.2429 data10 4.7324 6.6775 data11 4.7201 6.837 data12 4.9712 5.9901 data13 4.2011 5.5961 data14 4.811 5.0146 data15 4.914 5.9933 data16 3.5736 4.364 data17 3.6304 4.7708 data18 3.6687 5.2386 data19 4.1976 5.5521 data20

51

براي اين مي شود كه كاربرد قوانين فازي در اين سيستم مورد مقايسه قرار دهيم، مشاهده 3.1اگر اين جدول را با جدول

، هر دو Dتاكيد برروي داده ها به اين دليل است كه در انتهاي ضميمه .باعث بهبود نتايج شده است داده هابرروي داده هاي گرفته شده از نگاشت لجستيك اعمال شده است و نتيجه گرفته ) كياتيك و صرفا كياتيك-فازي(سيستم

.از سيستم صرفا كياتيك براي اين داده ها بهتر شده استشده

خالصه مطالب: 3.10در اين فصل براي پيشبيني ميزان گلوكز خون از يك مدل كه با روشهايي كه بر پايه تئوري هاي كياتيكي كارمي كنند

در كل اين روش با نام . ستتئوري هاي كياس از منطق فازي نيز استفاده شده ادر اين مدل عالوه بر . استفاده شده است local fuzzy reconstructionاين سيستم در مقايسه . شناخته مي شود كه يك ابزار عملي در مسائل پيشبيني است

ي بهتري نداشته است ولي نسبت نتيجهكه در فصل قبل اجراشد، RBFو MLPبا مدل طراحي شده با شبكه هاي عصبي : استبه آنها داراي مزاياي زير

.از نظر اجرايي داراي سرعت باالتري است • .تعداد ورودي هايي كه از بيماردريافت مي كند كمتر است • .روشنتر استاين باكس نحوه عملكرد داخلي ،به عنوان يك باكس در نظر بگيريم اگر كل مدل را •

52

4فصل

پيشبيني و كنترل ميزان گلوكز با استفاده از يك سيستم فازي

مقدمه :4.1در اينجا سعي مي كنيم كه . در فصل قبلي پيشبيني ميزان گلوكز خون توسط يك سيستم تركيبي فازي كياتيك انجام شد

نتايج بدست آمده را با سيستمهاي برپايه شبكه عصبي، ميزان گلوكز خون را با استفاده از يك سيستم فازي پيشبيني كرده و كه در بخشهاي قبلي مورد امتحان قرار گرفت، مقايسه كرده و بهترين سيستم را روشهاي كياتيك و تركيب فازي و كياتيك

.براي پيشبيني ميزان گلوكز خون انتخاب كنيم

بلوك دياگرام سيستم كنترلي گلوكز خون: 4.1شكل

پيشبيني كننده گلوكز خونفازي سيستم طراحي : 4.2قوانين فازي موجود در اين سيستم همان قوانين به ظاهر ساده و بديهي اين سيستم براساس قوانين فازي كار مي كند و

است كه افراد مبتال به ديابت از آن اطالع داشته و معموال بر اساس همين قوانين فرد و يا پزشك ميزان كربو هيدرات و يا :اين قوانين به بيان ساده در زير آورده شده است .انسولين مصرفي خود را تنظيم مي كند

.ميزان قند خون افت خواهد كرد n+1زياد باشد، در زمان nاگر ميزان فعاليت بدني در زمان • .قند خون افزايش خواهد يافت n+1زياد باشد، در زمان nاگر ميزان كربوهيدرات مصرفي در زمان • .قند خون افت خواهد كرد n+1زياد باشد، در زمان nاگر ميزان انسولين مصرفي در زمان •

، براي مثال اگر ميزان كربوهيدرات بايد توجه داشت كه اثر هركدام از اين عوامل در كنار عامل ديگر مي تواند تغيير كند امازياد باشد و فعاليت بدني هم در اين زمان زياد باشد، مي توانند اثر يكديگر را تقريبا خنثي نمايند و تغيير nمصرفي در زمان

بنابراين سعي مي كنيم، اين عوامل را با يكديگر تركيب كرده و براي طراحي . اد نكنندچنداني در سطح گلوكز خون ايجالبته همانطوري كه ديده مي شود و خواهيم ديد، در قوانين فازي از كلمات كم، .سيستم فازي قوانين جديدي ايجاد نمائيم

ي سيستم مشخص شود كه از چه حدي به پايين زياد و يا نرمال استفاده مي شود، در نتيجه ابتدا بايد در مورد هر ورود

سيستم فازي پيشبيني كننده

گلوكز خون

ميزان كربوهيدرات مصرفي

ميزان فعاليت بدني

ميزان تزريق انسولين

nميزان قند خون در زمان

n+1ميزان قند خون در زمان

53

با ديتاي اين سطوح براي چهار ورودي سيستم .سطح ورودي كم و يا از چه حدي به باال سطح ورودي زياد فرض مي شوداين سطوح در مورد افراد مختلف مي تواند قابل ذكر است كه اين سطوح ( ،در اشكال زير نشان داده شده استموجود

، و فقط براي طراحي سيستم در كامال فرضي است و از نظر علم پزشكي معتبر نمي باشدو در اينجا اين سطوح متفاوت باشد ).نظر گرفته شده اند

54

)اين سطوح كامال فرضي است(سطوح مختلف براي ورودي هاي سيستم پيشبيني كننده و كنترلي گلوكز خون: 4.2 شكل

:ر ورودي مي توان نوشت در جدول زير آورده شده استمي قوانيني كه با اين چهاتما

n+1در زمان nدر زمان

قند خون قند خونانسولين كربوهيدرات فعاليت بدني

زيادآنگاه زياد زياد زياد زياداگر 1

زيادآنگاه زياد زياد نرمال زياداگر 2

زيادآنگاه زياد كم زياد زياداگر 3

زيادآنگاه زياد مك نرمال زياداگر 4

زيادآنگاه زياد نرمال زياد زياداگر 5

زيادآنگاه زياد نرمال نرمال زياداگر 6

زيادآنگاه كم زياد زياد زياداگر 7

زيادآنگاه كم زياد نرمال زياداگر 8

55

n+1در زمان nدر زمان

قند خون قند خونانسولين كربوهيدرات فعاليت بدني

زيادآنگاه كم كم زياد زياداگر 9

زيادآنگاه كم نرمال زياد زياداگر 10

زيادآنگاه نرمال نرمال نرمال زياداگر 11

كمآنگاه نرمال زياد زياد زياداگر 12

زيادآنگاه نرمال كم زياد زياداگر 13

نرمالآنگاه نرمال نرمال زياد زياداگر 14

كمآنگاه نرمال زياد نرمال زياداگر 15

كمآنگاه كم نرمال نرمال زياداگر 16

زيادهآنگا زياد زياد زياد نرمالاگر 17

زيادآنگاه زياد زياد كم زياداگر 18

كمآنگاه زياد زياد كم نرمالاگر 19

كمآنگاه زياد زياد نرمال نرمالاگر 20

كمآنگاه زياد كم زياد نرمالاگر 21

كمآنگاه زياد كم كم زياداگر 22

كمآنگاه زياد كم نرمال نرمالاگر 23

كمنگاهآ زياد نرمال زياد نرمالاگر 24

كمآنگاه زياد نرمال كم زياداگر 25

كمآنگاه زياد نرمال كم نرمالاگر 26

كمآنگاه زياد نرمال نرمال نرمالاگر 27

كمآنگاه كم زياد زياد نرمالاگر 28

كمآنگاه كم زياد كم زياداگر 29

كمآنگاه كم زياد كم نرمالاگر 30

كمهآنگا كم زياد نرمال نرمالاگر 31

كمآنگاه كم كم زيادزياداگر 32

كمآنگاه كم كم كم زياداگر 33

كمآنگاه كم كم نرمال زياداگر 34

كمآنگاه كم كم نرمال نرمالاگر 35

كمآنگاه كم نرمال زياد نرمالاگر 36

كمآنگاه كم نرمال كم زياداگر 37

كمآنگاه كم نرمال كم نرمالاگر 38

كمآنگاه كم نرمال نرمال لنرمااگر 39

56

n+1در زمان nدر زمان

قند خون قند خونانسولين كربوهيدرات فعاليت بدني

كمآنگاه نرمال زياد زياد نرمالاگر 40

كمآنگاه نرمال زياد كم زياداگر 41

كمآنگاه نرمال زياد كم نرمالاگر 42

كمآنگاه نرمال زياد نرمال نرمالاگر 43

كمآنگاه نرمال كم زياد نرمالاگر 44

كمآنگاه نرمال كم كم زياداگر 45

كمآنگاه نرمال كم نرمال زياداگر 46

كمآنگاه نرمال كم نرمال نرمالاگر 47

كمآنگاه نرمال نرمال زياد نرمالاگر 48

كمآنگاه نرمال نرمال كم زياداگر 49

كمآنگاه نرمال نرمال كم نرمالاگر 50

كمآنگاه نرمال نرمال نرمال نرمالاگر 51

كمآنگاه زياد زياد زياد كماگر 52

كمآنگاه زياد زياد كم كماگر 53

كمآنگاه زياد زياد نرمال كماگر 54

كمآنگاه زياد كم زياد كماگر 55

نرمالآنگاه زياد كم كم كماگر 56

نرمالآنگاه زياد كم كم نرمالاگر 57

نرمالآنگاه زياد كم نرمال كماگر 58

نرمالآنگاه زياد نرمال زياد كماگر 59

نرمالآنگاه زياد نرمال كم كماگر 60

نرمالآنگاه زياد نرمال نرمال كماگر 61

نرمالآنگاه كم زياد زياد كماگر 62

نرمالآنگاه كم زياد كم كماگر 63

نرمالآنگاه كم زياد نرمال كماگر 64

نرمالآنگاه كم كم زياد كماگر 65

نرمالآنگاه كم كم كم كماگر 66

نرمالآنگاه كم كم كم مالنراگر 67

نرمالآنگاه كم كم نرمال كماگر 68

نرمالآنگاه كم نرمال زياد كماگر 69

نرمالآنگاه كم نرمال كم كماگر 70

57

n+1در زمان nدر زمان

قند خون قند خونانسولين كربوهيدرات فعاليت بدني

نرمالآنگاه كم نرمال نرمال كماگر 71

نرمالآنگاه نرمال زياد زياد كماگر 72

نرمالآنگاه نرمال زياد كم كماگر 73

نرمالآنگاه نرمال زياد نرمال كماگر 74

نرمالآنگاه نرمال كم زياد كماگر 75

نرمالآنگاه نرمال كم كم كماگر 76

نرمالآنگاه نرمال كم كم نرمالاگر 77

نرمالآنگاه نرمال كم نرمال كماگر 78

نرمالآنگاه نرمال نرمال زياد كماگر 79

نرمالآنگاه نرمال نرمال كم كماگر 80

نرمالآنگاه نرمال نرمال نرمال كماگر 81

باز هم تاكيد مي شود كه در اين قوانين نظر نويسنده دخالت دارد و ممكن است بعضي از آنها از نظر علمي واقعا معتبر نباشد

ا در نظر اين قوانين تمامي قوانين ممكني است كه مي توان با اين ورودي ه .و يا حداقل براي تمامي افراد درست نباشدولي باال بودن تعداد قوانين فازي هميشه باعث بهبود نتيجه سيستم نمي شود و حتي باعث باال رفتن محاسبات گرفت،

يكساني دارند را با هم يكي بنابراين سعي مي كنيم تا حد ممكن قوانيني كه نتيجه .سيستم و پائين آمدن سرعت مي شودقانون 81قوانين را كاهش داد و به قوانين زير رسيد، اگر دقت شود اين قوانين تمامي با انجام اين كار مي توان تعداد. كنيم

:باال را شامل مي شود n+1در زمان nدر زمان

قند خون قند خون انسولين كربوهيدرات فعاليت بدني

زيادآنگاه نرمال نباشد زياد زياداگر 1

زيادآنگاه زياد زياد كم زياداگر 2

زيادآنگاه زياد زياد زياد نرمالاگر 3

زيادآنگاه زياد نرمال زياداگر 4

زيادآنگاه زياد نباشد كم نباشد نرمال زياداگر 5

كمآنگاه زياد نباشد نرمال زياداگر 6

كمآنگاه زياد نباشد كم زياداگر 7

كمآنگاه زياد نباشد زياد كم زياداگر 8

كمآنگاه زياد نباشد نباشدكم نرمالاگر 9

كمآنگاه زياد نرمال نرمالاگر 10

كمآنگاه زياد نباشد زياد زياد نرمالاگر 11

كمآنگاه كم نباشد كم نرمالاگر 12

58

نرمالآنگاه كم كم نرمالاگر 13

نرمالآنگاه زياد نباشد كماگر 14

نرمالآنگاه زياد نرمال كماگر 15

نرمالآنگاه زياد نرمال زياد نباشد كماگر 16

كمآنگاه زياد كم زياد كماگر 17

كمآنگاه زياد زياد كماگر 18

كمآنگاه نرمال زياد زياد زياداگر 19

زيادآنگاه نرمال كم زياد زياداگر 20

نرمالآنگاه نرمال نرمال زياد زياداگر 21

قوانين فازي به كار . ا بايد قوانين فازي را تعريف و بعد توابع عضويت را مشخص نمائيمدتطراحي اين قسمت ابشروع براي

در مورد توابع عضويت، هر دو شكل مثلثي و . قانوني است كه در بخش قبلي تعريف شد 21گرفته شده در اين قسمت همان براي هر ورودي و خروجي سه تابع .آمد گوسين مورد استفاده قرار گرفت كه نتايج تقريبا يكساني از هر دو مورد بدست

محل اين سه تابع عضويت با . مي باشند "كم، نرمال و باال"قع تعريف كننده محدوده هاي اعضويت در نظر گرفته شد كه در و Eبرنامه مدل سازي اين سيستم در ضميمه .نشان داده شد، تنظيم شده است 4.2توجه به آستانه هاي فرضي كه در شكل

در زير نتايج بدست آمده از اعمال همان داده هايي كه .اه نمايش گرافيكي سيستم فازي طراحي شده آورده شده استبه همر .در فصل دوم از آنها استفاده شد برروي سيستم طراحي شده آورده شده است

:استفاده از تابع مثلثي در توابع عضويتنتايج 2.1016: انحراف از استاندارد 2.8167: ميانگين خطا

ترسيم هاي آبي رنگ مقدار واقعي و مورد انتظار است و قرمز مقدار پيشبيني شده (نمايش مقدار پيشبيني شده توسط سيستم فازي: 4.3شكل

)توسط سيستم طراحي شده

59

:در توابع عضويت گوسيناستفاده از تابع نتايج 2.1328: انحراف از استاندارد 2.7432: ميانگين خطا

ترسيم هاي آبي رنگ مقدار واقعي و مورد انتظار است و قرمز مقدار پيشبيني شده (نمايش مقدار پيشبيني شده توسط سيستم فازي: 4.3شكل

)توسط سيستم طراحي شده

. از آنها استفاده شد 3و 2ستم قبلي كه در فصل نتايج ديده مي شود، اين سيستم نسبت به دو سي همانطوري كه ازممكن است خطاي جواب هاي . جواب قابل قبولي نمي دهد و مقادير پيشبيني شده با مقدار واقعي فاصله قابل قبولي ندارند

. بدست آمده ناشي از نادرست بودن پارامتر هاي توابع عضويت باشدمطلب، با استفاده از يك مجموعه از اطالعات ) نتاج تطبيقي فازي عصبيسيستم است( anfisتابع جعبه ابزار منطق فازي

خروجي، يك سيستم استنتاج فازي مشابه با سيستم فازي كه ما با استفاده از دستورات خطوط فرمان ايجاد كرديم، /وروديي توانيم به كمك داده هاي به اين ترتيب م. مي سازد و پارامتر هاي تابع عضويت آن را به روش پيش انتشار تعديل مي كند

با . مطلب استفاده شده است anfiseditبراي ايجاد يك سيستم نرو فازي از دستور .موجود به آموزش سيستم بپردازيم 308كال (بعد از بار كردن داده هاي آموزش، تست و بررسي . باز مي شود anfisاجراي اين دستور واسط گرافيكي ويرايشگر

داده را براي 107و ) بررسي زمان اتمام آموزش(داده را براي بررسي 50داده را براي آموزش 150. يمداده در اختيار دارخروجي 1ورودي و 4، تعداد و نوع توابع عضويت ورودي و خروجي را تعيين نموده اين سيستم از .) تست استفاده نموديم

مي دهيم تا از نظر تعداد توابع عضويت ورودي با سيستم قرار 3تعداد توابع عضويت ورودي ها را روي . تشكيل شده است 3فازي قبلي مشابهت داشته باشد، قوانين فازي، توابع عضويت خروجي به تعداد تمامي حاالتي است كه اين چهار ورودي با

تعريف شده Linearشكل توابع عضويت گوسي و تابع عضويت خروجي ). 81=3*3*3*3(تابع عضويت مي سازند يعني چون براي آموزش از داده هاي بررسي هم . بعد تعداد اپك هاي اموزش را مشخص كرده و سيستم را آموزش مي دهيم. است

. استفاده كرده ايم شكل زير برروي صفحه ظاهر مي شود

60

)خطاي آموزش*** خطاي بررسي، (ي آموزش دوره120خطاي دادهاي آموزش و بررسي در : 4.4شكل

Anfis. اين نقطه فرا انتطباق مدل است. تا يك مرحله از آموزش كاهش يافته و سپس افزايش مي يابدخطاي بررسي

نمايش گرافيكي اين سيستم نروفازي در .پارامتر هاي مدل را با توجه به كمترين مقدار خطاي بررسي انتخاب مي كند .نتايج حاصله نيز در شكل زير ديده مي شود .آورده شده است Eضميمه

3.2703: اي تستطخمتوسط 2.4519 :خطاي آموزشمتوسط

دايره هاي آبي (داده هاي تست ) خروجي به ازاي داده هاي آموزش، ب) الف. نتايج بدست آمده از سيستم نروفازي آموزش داده شده : 4.5شكل

).رنگ خروجي مورد انتظار و ستاره هاي قرمز رنگ حروجي سيستم آموزش داده شده

61

تمامي قوانين ممكن و آموزش سيستم باز هم جواب قابل قبولي حتي با در نظر گرفتن انطوري كه مشاهده مي شودهم

ممكن است اين نتيجه به دليل نوع داده ها باشد و يا كال اين سيستم فازي طراحي شده براي اين منظور .بدست نيامده است .مناسب نباشد

خالصه مطالب: 4.3همانطوري كه قبال هم گفته شد، پانكراس مصنوعي . ام اين پروژه طراحي يك پانكراس مصنوعي استهدف نهايي از انج

بلوك اول مربوط به سيستم پيشبيني .داراي چندين قسمت است كه بلوك دياگرام كلي آن در شكل زير آورده شده استبل ذكر اق. پمپ انسولين را تنظيم مي كند كننده گلوكز خون و بلوك دوم سيستم كنترلي گلوكز خون است كه ميزان تزريق

است كه طراحي كامل چنين سيستم حلقه بسته اي منوط به داشتن داده هاي اندازه گيري شده پيوسته از ميزان قند خون از بلوك پيشبيني ميزان گلوكز خون تا اينجا براي طراحي است و چون در حال حاضر چنين داده هايي در دسترس نيست،

nدر اين صورت فاصله زماني .داشتند استفاده كرديم) بار در روز 4(ه هايي كه اندازه گيري ناپيوسته از قند خون همان دادهمچنين قسمت دوم سيستم يعني كنترل ميزان گلوكز خون كه در واقع . ساعت است 3الي 2در حقيقت حدود n+1تا

ولي اگر هدف طراحي يك پمپ . م اول طراحي مي شودنقش پمپ انسولين را دارد به وسيله داده هاي خروجي سيستچون در سيستم واقعي مرتبا ميزان قند خون اندازه . انسولين ايده ال باشد بايد داده هاي ورودي از نظر زماني پيوسته باشند

ي توانيم در اين جا نم. گيري مي شود و پانكراس در مقابل مقدار اندازه گرفته شده لحظه به لحظه در حال واكنش استبا . زيرا خروجي سيستم كنترل قند خون كه همان ميزان انسولين است. فيدبك را ببنديم و عملكرد سيستم را امتحان كنيم

سيستم طراحي شده ميزان تزريق را براساس يك فرمول با . مقادير انسوليني كه ما در داده هاي موجود داريم متفاوت استتنظيم مي كند ولي مقادير انسوليني كه ما در داده ها داريم بر اساس اين فرمول نيست توجه به مقادير گذشته گلوكز خون

.و بر اساس تجويزي است كه پزشك بر اساس تجربه به يك بيمار ديابتي داده است

بلوك دياگرام سيستم كنترلي گلوكز خون: 4.1شكل

پيشبيني سيستم

كننده گلوكز خون

مجموعه ورودي هاي ديگر

سيستم كنترل گلوكز خون

ميزان گلوكز خون n+1در زمان

Z-1

G (n+1)

G (n)

Z-2G (n-1)

G (n)

I (n)

تزريق ميزان انسولين

62

 مراجع

[4] T. Iokibe, M. Yoneda, K. Kakita, “Chaos Based Blood Glucose Prediction and Insulin

Adjustment for Diabetes Mellitus”, IEEE, 2003. [5] S.Arita, M.Yoneda, T.Iokibe, “System And Method for Predicting Blood Glucose Level”, U.S Pat, 1999. [6] R.C.Hilborn, “Chaos and Nonlinrear Cynamics”, OXFORD university press,2000. [7] Y.C.Lia,N.Ye, “Recent Development In Chaotic Time Series Analysis”,

63

Dضميمه

local fuzzy reconstructionپيشبيني ميزان گلوكز خون با استفاده از : 3فصل

برنامه اجراي اين سيستم در محيط مطلبclear all;close all;clc load k; y=k(:,2); %blood glucose measurment % y=y*(200/11.1); figure;plot(y) title('Blood Glucose Mesurment');xlabel('-> Day');ylabel('Blood Glucose concentration'); % %Spectrum Analysis yy=y-mean(y); fy = fft(yy,512); Pyy = fy.* conj(fy) / 512; f = 1000*(0:256)/512; figure;plot(f,Pyy(1:257)) title('Frequency content of y') xlabel('frequency (Hz)') % % Autocorrelation function ACy=xcorr(fy); figure;plot(ACy.*conj(ACy)) title('Autocorrelation of fft(y)') %Takens embedding %dimension of embeding=3, the time delay=4 X=[]; w=4; %the time delay for i=1:(308-2*w) X=[X;y(i) y(i+w) y(i+2*w)]; end figure;plot3(X(:,1),X(:,2),X(:,3)); title('reconstructed state space');xlabel('x');ylabel('y');zlabel('z'); Y2=[]; s=3; %near future for k=1:(308-2*w-s) Z=X(k,:); %finding 3 nearest neibors to Z d=[]; for i=1:(308-2*w-s) d=[d;sum((Z-X(i,:)).^2).^0.5 i]; %finding the Euclidean distance end ds=sortrows(d); a=X(ds(2,2),:); %first neibor of Z b=X(ds(3,2),:); %second neibor of Z c=X(ds(4,2),:); %third neibor of Z as=X(ds(2,2)+s,:); %s step ahead of a bs=X(ds(3,2)+s,:); %s step ahead of b

64

cs=X(ds(4,2)+s,:); %s step ahead of c %Now we want to find s step ahead of Z by fuzzy rules %---------------------fuzzy rules-------------------% % If Z(1) is a(1) THEN Zs(1) is as(1) % If Z(1) is b(1) THEN Zs(1) is bs(1) % If Z(1) is c(1) THEN Zs(1) is cs(1) % If Z(2) is a(2) THEN Zs(2) is as(2) % If Z(2) is b(2) THEN Zs(2) is bs(2) % If Z(2) is c(2) THEN Zs(2) is cs(2) % If Z(3) is a(3) THEN Zs(3) is as(3) % If Z(3) is b(3) THEN Zs(3) is bs(3) % If Z(3) is c(3) THEN Zs(3) is cs(3) %----------------------------------------------------% % fuzzy inference system Q=newfis('Glucose Predictor'); % Q=addvar(Q,'input','Z1(T)',[0 Z(1)+max([a(1),b(1),c(1)])]); Q=addmf(Q,'input',1,'a1(p)','trimf',[0 a(1) Z(1)+max([a(1),b(1),c(1)])]); Q=addmf(Q,'input',1,'b1(m)','trimf',[0 b(1) Z(1)+max([a(1),b(1),c(1)])]); Q=addmf(Q,'input',1,'c1(h)','trimf',[0 c(1) Z(1)+max([a(1),b(1),c(1)])]); % Q=addvar(Q,'input','Z2(T)',[0 Z(2)+max([a(2),b(2),c(2)])]); Q=addmf(Q,'input',2,'a2(p)','trimf',[0 a(2) Z(2)+max([a(2),b(2),c(2)])]); Q=addmf(Q,'input',2,'b2(m)','trimf',[0 b(2) Z(2)+max([a(2),b(2),c(2)])]); Q=addmf(Q,'input',2,'c2(h)','trimf',[0 c(2) Z(2)+max([a(2),b(2),c(2)])]); % Q=addvar(Q,'input','Z3(T)',[0 Z(3)+max([a(3),b(3),c(3)])]); Q=addmf(Q,'input',3,'a3(p)','trimf',[0 a(3) Z(3)+max([a(3),b(3),c(3)])]); Q=addmf(Q,'input',3,'b3(m)','trimf',[0 b(3) Z(3)+max([a(3),b(3),c(3)])]); Q=addmf(Q,'input',3,'c3(h)','trimf',[0 c(3) Z(3)+max([a(3),b(3),c(3)])]); % Q=addvar(Q,'output','Z1(T+s)',[0 Z(1)+max([as(1),bs(1),cs(1)])]); Q=addmf(Q,'output',1,'a1(p+s)','trimf',[0 as(1) Z(1)+max([as(1),bs(1),cs(1)])]); Q=addmf(Q,'output',1,'b1(m+s)','trimf',[0 bs(1) Z(1)+max([as(1),bs(1),cs(1)])]); Q=addmf(Q,'output',1,'c1(h+s)','trimf',[0 cs(1) Z(1)+max([as(1),bs(1),cs(1)])]); % Q=addvar(Q,'output','Z2(T+s)',[0 Z(2)+max([as(2),bs(2),cs(2)])]); Q=addmf(Q,'output',2,'a2(p+s)','trimf',[0 as(2) Z(2)+max([as(2),bs(2),cs(2)])]); Q=addmf(Q,'output',2,'b2(m+s)','trimf',[0 bs(2) Z(2)+max([as(2),bs(2),cs(2)])]); Q=addmf(Q,'output',2,'c2(h+s)','trimf',[0 cs(2) Z(2)+max([as(2),bs(2),cs(2)])]); % Q=addvar(Q,'output','Z3(T+s)',[0 Z(3)+max([as(3),bs(3),cs(3)])]); Q=addmf(Q,'output',3,'a3(p+s)','trimf',[0 as(3) Z(3)+max([as(3),bs(3),cs(3)])]); Q=addmf(Q,'output',3,'b3(m+s)','trimf',[0 bs(3) Z(3)+max([as(3),bs(3),cs(3)])]); Q=addmf(Q,'output',3,'c3(h+s)','trimf',[0 cs(3) Z(3)+max([as(3),bs(3),cs(3)])]); % rulelist=[... 1 0 0 1 0 0 1 1 2 0 0 2 0 0 1 1 3 0 0 3 0 0 1 1 0 1 0 0 1 0 1 1 0 2 0 0 2 0 1 1 0 3 0 0 3 0 1 1 0 0 1 0 0 1 1 1 0 0 2 0 0 2 1 1

65

0 0 3 0 0 3 1 1]; Q=addrule(Q,rulelist); in=Z; out=evalfis(in,Q); Y2=[Y2;out]; end writefis(Q,'Glucose Predictor') % saving the fis in the disk %---evaluating the system Y=X((1+s):(308-2*w),:); e=mean(abs(Y(:,3)-Y2(:,3))) figure;plot(Y(:,3),'-*b');hold on;plot(Y2(:,3),'-+r') title('prediction result');ylabel('blood glucose mmol/dl');xlabel('interval of days') legend('actual data','estimated data') % % showing the FIS graficaly fuzzy

توابع عضويت مربوط به ورودي ها و خروجي هاي سيستم فازي

)ورودي اول(

)ورودي دوم(

66

)ورودي سوم(

)خروجي اول(

)خروجي دوم(

67

)خروجي سوم(

لوكز خون با حذف قسمت فازي از سيستم قبليپيشبيني ميزان گ: 3.9بخش

برنامه اجراي اين سيستم در محيط مطلب

load ('D:\Nazi2\archive1\Artificial pancreas\Data\mat file\data20.mat'); y=data20; % % y=y*(11.1/200); % %Takens embedding %dimension of embeding=3, the time delay=4 X=[]; w=4; %the time delay for i=1:(length(y)-2*w) X=[X;y(i) y(i+w) y(i+2*w)]; end Y2=[]; s=3; %near future for k=1:(length(y)-2*w-s) Z=X(k,:); %finding 3 nearest neibors to Z d=[]; for i=1:(length(y)-2*w-s) d=[d;sum((Z-X(i,:)).^2).^0.5 i]; %finding the Euclidean distance end ds=sortrows(d); a=X(ds(2,2),:); %first neibor of Z as=X(ds(2,2)+s,:); %s step ahead of a Y2=[Y2;as]; end %---evaluating the system Y=X((1+s):(length(y)-2*w),:); e=mean(abs(Y(:,3)-Y2(:,3))) sd=std(abs(Y(:,3)-Y2(:,3)))

68

نگاشت لجستيكبرروي داده هاي گرفته شده از 3اعمال سيستم فصل

برروي داده هاي گرفته شده )كياتيك(و ) كياتيك - فازي( فصل سومارائه شده در سيستم هر دو در اين قسمت نتيجه اعمال ت به منظور بررسي عملكرد سيستم در پيشبيني مقادير آينده يك دنباله اين قسم. آورده شده است 1از نگاشت لجستيك

ميزان خطاي سيستم در مورد اين داده ها خيلي كمتر از داده هاي حاصل از اندازه گيري گلوكز است، به . آورده شده استراحي سيستم نيست، همين دليل مي توان نتيجه گيري كرد كه خطاي باالي بدست آمده از اين سيستم صرفا ناشي از ط

.بلكه به احتمال زياد به نوع داده ها برمي گردد )كياتيك-فازي(سيستم

0.1186 :ميزان خطاي پيشبيني 0.0696: واريانس خطا

1 Logistic Map

69

)كياتيك(سيستم 0.0318 :ميزان خطاي پيشبيني

0.0440: واريانس خطا

70

Eضميمه

اده از يك سيستم فازيپيشبيني مقدار گلوكز خون با استف: 4فصل

clear all;close all; load k; in=[k(:,6) k(:,5) k(:,3) k(:,2)]; %blood glucose measurment out1=[]; for i=1:length(k(:,1))-1 out1=[out1;k(i+1,2)]; end % %initial condition a1s=0.5;b1s=0.5;c1s=0.5; a2s=10;b2s=10;c2s=10; a3s=1;b3s=1;c3s=1; a4s=4;b4s=3;c4s=7; ao1s=4;bo1s=3;co1s=7; % x1=1.5;x2=3.5; %normal region of Activity y1=30;y2=80; %normal region of Carbohydrate z1=2.5;z2=8; %normal region of Insulin t1=6;t2=12; %normal region of blood glucose u1=mean(in(:,1)); u2=mean(in(:,2)); u3=mean(in(:,3)); u4=mean(in(:,4)); % a=0.05; ei=1; %accepted error e2=5; b=0; % %fuzzy inference system Q=newfis('Fuzzy Glucose Predictor'); % Q=addvar(Q,'input','Activity(n)',[1 5]); Q=addmf(Q,'input',1,'a1','trimf',[min(in(:,1))-u1 min(in(:,1)) u1]); Q=addmf(Q,'input',1,'b1','trimf',[min(in(:,1)) u1 u1+min(in(:,1))]); Q=addmf(Q,'input',1,'c1','trimf',[u1 max(in(:,1)) u1+max(in(:,1))]); % Q=addvar(Q,'input','Carbohydrate(n)',[min(in(:,2)) max(in(:,2))]); Q=addmf(Q,'input',2,'a2','trimf',[min(in(:,2))-u2 min(in(:,2)) u2]); Q=addmf(Q,'input',2,'b2','trimf',[min(in(:,2)) u2 u2+min(in(:,2))]); Q=addmf(Q,'input',2,'c2','trimf',[u2 max(in(:,2)) u2+max(in(:,2))]); % Q=addvar(Q,'input','Insulin(n)',[min(in(:,3)) max(in(:,3))]); Q=addmf(Q,'input',3,'a3','trimf',[min(in(:,3))-u3 min(in(:,3)) u3]); Q=addmf(Q,'input',3,'b3','trimf',[min(in(:,3)) u3 u3+min(in(:,3))]); Q=addmf(Q,'input',3,'c3','trimf',[u3 max(in(:,3)) u3+max(in(:,3))]); % Q=addvar(Q,'input','Glucose(n)',[min(in(:,4)) max(in(:,4))]); Q=addmf(Q,'input',4,'a4','trimf',[min(in(:,4))-u4 min(in(:,4)) u4]);

.خطوط آبي رنگ با اين خطوط بايد جابجا شود ،براي استفاده از تابع گوسي به جاي تابع مثلثيa1s=0.5;b1s=0.5;c1s=0.5; a2s=10;b2s=10;c2s=10; a3s=1;b3s=1;c3s=1; a4s=4;b4s=3;c4s=7; ao1s=4;bo1s=3;co1s=7; u1=mean(in(:,1)); u2=mean(in(:,2)); u3=mean(in(:,3)); u4=mean(in(:,4)); % %fuzzy inference system Q=newfis('Fuzzy Glucose Predictor'); % Q=addvar(Q,'input','Activity(n)',[min(in(:,1)) max(in(:,1))]); Q=addmf(Q,'input',1,'a1','gaussmf',[a1s min(in(:,1))]); Q=addmf(Q,'input',1,'b1','gaussmf',[b1s u1]); Q=addmf(Q,'input',1,'c1','gaussmf',[c1s max(in(:,1))]); % Q=addvar(Q,'input','Carbohydrate(n)',[min(in(:,2)) max(in(:,2))]); Q=addmf(Q,'input',2,'a2','gaussmf',[a2s min(in(:,2))]); Q=addmf(Q,'input',2,'b2','gaussmf',[b2s u2]); Q=addmf(Q,'input',2,'c2','gaussmf',[c2s max(in(:,2))]); % Q=addvar(Q,'input','Insulin(n)',[min(in(:,3)) max(in(:,3))]); Q=addmf(Q,'input',3,'a3','gaussmf',[a3s min(in(:,3))]); Q=addmf(Q,'input',3,'b3','gaussmf',[b3s u3]); Q=addmf(Q,'input',3,'c3','gaussmf',[c3s max(in(:,3))]); % Q=addvar(Q,'input','Glucose(n)',[min(in(:,4)) max(in(:,4))]); Q=addmf(Q,'input',4,'a4','gaussmf',[a4s min(in(:,4))]); Q=addmf(Q,'input',4,'b4','gaussmf',[b4s u4]); Q=addmf(Q,'input',4,'c4','gaussmf',[c4s max(in(:,4))]); % Q=addvar(Q,'output','Glucose(n+1)',[min(in(:,4)) max(in(:,4))]); Q=addmf(Q,'output',1,'ao1','gaussmf',[ao1s min(in(:,4))]); Q=addmf(Q,'output',1,'bo1','gaussmf',[bo1s u4]); Q=addmf(Q,'output',1,'co1','gaussmf',[co1s max(in(:,4))]); Q=setfis(Q,'DefuzzMethod','bisector');

71

Q=addmf(Q,'input',4,'b4','trimf',[min(in(:,4)) u4 u4+min(in(:,4))]); Q=addmf(Q,'input',4,'c4','trimf',[u4 max(in(:,4)) u4+max(in(:,4))]); % Q=addvar(Q,'output','Glucose(n+1)',[min(in(:,4)) max(in(:,4))]); Q=addmf(Q,'output',1,'ao1','trimf',[min(in(:,4))-u4 min(in(:,4)) u4]); Q=addmf(Q,'output',1,'bo1','trimf',[min(in(:,4)) u4 u4+min(in(:,4))]); Q=addmf(Q,'output',1,'co1','trimf',[u4 max(in(:,4)) u4+max(in(:,4))]); Q=setfis(Q,'DefuzzMethod','bisector'); % rulelist=[... 3 3 0 -2 3 1 1 3 1 3 3 3 1 1 2 3 3 3 3 1 1 3 2 0 3 3 1 1 3 2 -1 -3 3 1 1 3 2 0 -3 1 1 1 3 1 -3 0 1 1 1 3 1 3 -3 1 1 1 2 -1 -3 0 1 1 1 2 2 3 0 1 1 1 2 3 3 -3 1 1 1 2 1 -1 0 1 1 1 2 1 1 0 2 1 1 1 0 0 -3 2 1 1 1 0 2 3 2 1 1 1 -3 2 3 2 1 1 1 3 1 3 1 1 1 1 0 3 3 1 1 1 3 3 3 2 1 1 1 3 3 1 2 3 1 1 3 3 2 2 2 1 1]; Q=addrule(Q,rulelist); out2=[]; for i=1:length(k(:,1))-1 Z=in(i,:); Y=evalfis(Z,Q); out2=[Y;out2]; end writefis(Q,'Fuzzy Glucose Predictor'); % saving the fis in the disk %-- evaluating the system e=mean(abs(out2-out1)) sd=std(abs(out2-out1)); % figure;plot(out1,'-*b');hold on;plot(out2,'-+r') title('prediction result');ylabel('blood glucose mmol/dl');xlabel('interval of days') legend('actual data','estimated data') %

72

بلوك سيستم فازي طراحي شده

فازينرو پيشبيني مقدار گلوكز خون با استفاده از يك سيستم : 4فصل توليد دادهاي آموزش، تست و بررسي

Load k; intrain=[k(1:150,6) k(1:150,5) k(1:150,3) k(1:150,2) k(2:151,2)]; incheck=[k(151:200,6) k(151:200,5) k(151:200,3) k(151:200,2) k(152:201,2)]; intest=[k(201:307,6) k(201:307,5) k(201:307,3) k(201:307,2) k(202:308,2)];

.آخر خروجي مي باشددر اين داده ها چهار ستون اول مربوط به ورودي ها و ستون

انتخاب تعداد و نوع توابع عضويت

73

ساختار مدل ايجاد شده

ميزان (، ورودي دو)ميزان فعاليت بدني(ورودي يك. در چهار شكل زير توابع عضويت بعد از آموزش سيستم ديده مي شود

)nز خون در زمان ميزان گلوك(و ورودي چهار ) ميزان انسولين تزريقي(، ورودي سه) كربوهيدرات مصرفي

74