varianceSpeed = 0.0;
}else{
for (PointInfo pointInfo : pointList) {
varianceSpeed += Math.pow((pointInfo.getSpeed()-meanSpeed),2)/max {
-
- جزء ورودی دیگر مسافت طی شده می باشد و به دو صورت محاسبه می شود، اول اینکه سیستم با دریافت مکان اول کاربر از اطلاعات ماهواره آن ها را بعنوان مبدا در نظر گرفته و سپس بعد از ۲۰ ثانیه با دریافت اطلاعات دوباره از ماهواره آن ها را بعنوان مقصد در نظر می گیرد و سپس با کم کردن این مبدا و مقصد از یکدیکر مقدار مسافت طی شده محاسبه می شود. این روش دارای خطا می باشد به این صورت که اگر کاربر مسیر رفته را بر گردد سیستم نمی تواند این مسیر طی شده را محاسبه کند.
static double getDistance(GeoPoint point1, GeoPoint point2) {
double dLat = radian(point2.getLat() - point1.getLat());
double dLng = radian(point2.getLng() - point1.getLng());
double a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
Math.cos(radian(point1.getLat())) * Math.cos(radian(point2.getLat())) *
Math.sin(dLng / 2) * Math.sin(dLng / 2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
اما روش دوم که این مشکل را ندارد و آن استفاده از قوانین فیزیک است. رابطه (۳-۴)، بیانگر این رویداد می باشد.
(۳-۴)،
در این برنامه دو مولفه زمان و سرعت موجود می باشد پس کافی است که این دو مولفه را در هم ضرب کرده و مسافت طی شده را بدون خطایی بدست آورد. از این پس اگر کاربر به هر طرفی قدم بردارد و حرکت کند مسافتی را که طی می کند می تواند به طور دقیق مشاهده کند. این مسافت طی شده بر حسب متر بیان می شود. این رابطه در برنامه بصورت زیر تعریف شده. بدلیل استفاده از زمان در حالت میلی ثانیه مقدار کل رابطه بر ۱۰۰۰۰ تقسیم شده تا مقدار مسافت طی شده صحیح را بر گرداند.
totalDistance = totalSpeed * ((pointList.get(pointList.size()-1).getTimeByMilis()- pointList.get(0).getTimeByMilis()) / 10000);
برای استفاده درست از این سیستم باید قوانینی اتخاذ شود. برای بدست آوردن این قوانین نیازمندیم که نمودارهای توابع تعلق برای مجموعه های مختلف را رسم کنیم. با بهره گرفتن از برنامه متلب تمامی نمودارهای توابع تعلق برای سرعت متوسط، مسافت طی شده و واریانس با توجه به رابطه(۳-۵)، رسم شده و در ادامه هر یک بصورت جداگانه توضیح داده شده اند.
(۳-۵)،
-
- نمودار توابع تعلق اول مربوط به واریانس ورودی می باشد که توضیحات بدست آوردن این عدد به طور کامل داده شد. اما نموداری که ما برای این مولفه در نظر گرفتیم بصورت شکل (۳-۵) می باشد. این نمودار دارای ۵ تابع تعلق مختلف از واریانس ها می باشد که تمامی حالت های ممکن از دنیای واقعی می باشند. درجه تعلق هر کدام از ورودی ها به قانون، هر بخش نیز دارای یک و یک σ است.
درجه تایع تعلق
واریانس
شکل(۳-۵)- توابع تعلق واریانس در متلب
x1=0:0.01:6; x2=2.5:0.01:12; x3=8.7:0.01:18; x4=16:0.1:24; x5=23:0.1:28.5; |
a=exp(-(((x1-0)/2.3).^2(( b=exp(-(((x2-7.25)/1.9).^2(( c=exp(-(((x3-13.35)/1.8).^2(( d=exp(-(((x4-20)/1.6).^2(( e=exp(-(((x5-28.5)/2.2).^2(( |
در این فرمول فازی هر برابر است با جایی از نمودار که به آخرین سطح خود یعنی ۱ رسیده و هر σ برابر است با میزان دامنه ای که هر تابع تعلق باز شده است. با توجه به شکل(۳-۵) در تابع تعلق اول که مربوط به تعلق خیلی کم است مقدار برابر با صفر و مقدار σ برابر با ۲٫۳ می باشد. همینطور برای سایر قسمت ها، که در جدول(۳-۱) مشخص شده است.
جدول(۳-۱)-مقادیر توابع تعلق واریانس