2 - پاداش | خطرات و هزینه در عبور توپ
قبل از تصمیم گیری در حال توسعه و بهینه سازی الگوریتم ، در این بخش هستیم . من به معیارهای عملکرد حاکم بر تصمیم گیری در مورد توپ توسط بازیکن فوتبال در این لیست ( پاداش | خطرات و به چه قیمتی ؟؟! ) تا جایی که ممکن است را کامل به تصویب می رسانم . ابتدا ما باید تمام نقاطی را که برای پاس دادن در کل زمین مناسب است را با محاسباتی پیدا کنیم که از گفتن این محاسبات فعلا معزورم و شما میتوانید با یه حلقه یه ماتریس چند در چند در کل زمین ایجاد کردن و این نقاط را نسبت به مبدا که توپ هست ارزشیابی کنید ( روش امتیاز دهی به هر نقطه ) و پس از انتخاب این نقاط به صورت (x , y ) باید در مورد اتنخاب یه نقطه و تصمیم گیری برای فرستادن به امن ترین نقطه که از نظر تاکتیکی کاملا مورد ارزیابی قرار گرفته اقدام کرد که هم میتونید با روش های محاسباتی قوی و یا همان روش ارزش دهی این نقطه رو پیدا کنید . پس از انتخای این نقطه دومین پارامتر سرعت پاس دادن توپ است که به نظر من می تونه هم نکته ریز و با دقت و هم کار سختی باشه البته برای محاسبه سرعت . چون تیم من بعد از مسابقات خوارزمی 88 کلا از uva کناره گرفته اما از لایه های conection و لایه ای ضروری اون استفاده میکنم ولی در حال نوشتن یه بیس جدید هستم که این سرعت برای پاس دادن یه چند هفته ای من رو مشغول کرد و تونستم با راهنمایی اساتید شهرمون یه محاسباتی رو کشف کنم . محاسبات سرعت هم باید به این صورت باشد که در هنگام شوت کردن و سفر کردن و نقطه پایانی توپ باید سرعت ارزیابی و محاسبه شود تا پاس به طور حتم موفقیت آمیز باشد و خودتون رو گول نزنین که بگین با خودتون چند تا پاس اشتباه مهم نیست . و پارامتر های دیگه هم جهت پاس دادن و نیروی پاس دادن است ( power & angle ) که در مورد جهت پاس دادن منظور این است که به هم تیمی پاس بدهیم که او هم قادر به پاس دادن به دیگری باشد که این پاس ما با یه جهتی به عنوان مثال از دفاع وسط به هافبک های میانی و از آنها به مهاجمان را دارا باشد . و در مورد power هم که زیاد توضیح نمیدم و فقط تنها نکته مهم در مورد نیروی شوت کردن استفاده بی رویه از نیرو است
که امکان دارد که در اثر نیروی زیاد و سرعت بخشیدن زیاد توپ به آن نقطه دلخواه شما نرسد و از آن نقطه رد شود چیزی که خیلی از تین ها دانش آموزی اون رو رعایت نمیکنن و پاس های نا موفقی رو میدن الیته میشه تا حدودی از freez بیس uva اشکال گرفت و حتما برای power هم یه سری محاسباتی در نظر گرفته شود تا پاس موفق تر باشد . در زیر چند مثال می زنم تا بهتر نشان داده شود :
کمی به عقب بر میگردم جایی که باید نقطه ای را برای پاس محاسبه کرد . پس از ارزش دهی به نقاطی با چند شرط رد کننده فقط تعدادی نقاط را باقی بگذارید که امتیازشان از حد معیار بالا باشند یعنی اون تابعی که نوشتین که به هر نقطه از زمین امتیاز میداد کل امتیاز های مثبت آن 2000 شده و در اینجا امتیاز معیار 1000 میشه .
حالا بعد از اتنخاب این چند نقطه باید شرایطی سخت و به زبان ساده تر یه کم از حد آکادمی بیشتر باشه که کار شما و الگوریتم شما قوی تر بشه .
این شرایط چند موردی رو در آغاز قسنت دوم مقاله بهش اشاره کردیم و حالا به معیارهایی با level بالاتر می پردازیم .
یکی از مهمترین معیارها تراکم جمعیت است که باید این نقاط رو آنالیز کنید که آیا تراکم بازیکنان حریف و خودی در آن چگونه است . فکر نکنم زیاد سخت باشه که من در موردش توضیح بدم . پارامتر دوم فاصله بازیکنان خطرناک حریف در خط توپ تا هدف است و احتمالات برای این مرحله پاس و معیارهایه دیگه وجود داره که ما تمامی این معیار ها و شرایط رو در سه دسته تقسیم کردم :
1 - پاداش
2 - خطرات و ریسک ها
3 - هزینه
1 - پاداش
پاداش دادن به معنای امتیاز دادن یه همان ( x,y ) های انتخاب شده است . که در این مرحله از امتیاز دهی به نقاط باید تمامی معیار های تاکتیک و امنیتی به معنای اینکه توپ در راه قطع نشود را در نظر گرفته شود که در مورد کد نوشتن این بحث هم از امتیاز دهی و قطع نشدن توپ بحث خواهیم کرد و تا حد ممکن باید به ابن نکته توجه کرد که شرط های کوچک هم خیلی می تونه برای جدا کردن و رد کردن نقاط و اتنخاب بهترین نقطه کمک کرد .
2 - ریسک و خطرات
ریسک و خطرات میتونه خیلی در یک پاس ماثر باشه ولی اگر با محاسبات ضعیف همراه باشه شاید تمامی الگوریتم پاس شما رو بهم بزنه . این قسمت زیاد به تیم های دانش آموزی ایران مربوط نمیشه و مباحثی در مورد احتمالات در ریاضی است که بیشتر در مورد احتمالات و پیش بینی interception به قول معروف احتمال قطع شدن توپ است . این احتمالات باید به این صورت باشد :
1 - آیا حریف زودتر به آن نقطه میرسد یا هم تیمی که این شرط باید بین نزدیکترین بازیکن حریف به توپ و بازیکن هم تیمی باشد .
2 - توپ توسط حریف می تواند در راه قطع شود یا خیر : در این قسمت میتوان از لایه های geometry و worldmodel predict استفاده کرد.
میتوان از line و توابع predict استفاده کرد که متوان در هرسیکل که توپ به آن نقطه میرسد توسط یه حلقه نزدیکترین بازیکن به آن نقطه را انتخاب کرد و هر سیکل چک کرد به توپ میرسد یا خیر ؟!!
در زیر یه مثال براتون میزنم :
در برنامه بالا ابتدا تعداد سیکل هایی که طول میکشد تا توپ به هدف برسد را محاسبه میکنیم ( pred1 ) . سپس یه for میزاریم و هر سیکل جلو میریم و نقطه توپ رو پیش بینی میکنیم ( posballpred ) و بعد هر سیکل یه line از توپ به هدف میکشیم ( L1 ) و نزذیکترین بازیکن حریف به نقطه posballpred رو میگیریم ( opp ) و فاصله opp تا توپ رو میگیریم ( dDsit ) و توسط توابع predict پیش بینی میکنید :
1 - تعداد سیکل هایی که طول میکش نوپ به نقطه fast2line برسد ( pred2 )
2- تعداد سیکل هایی که طول میکشد opp به fast2line برسد ( pred3 )
و در پایان این شرط را میزاریم که اگر pred2 < pred3 بود تابع ما false برگردونه یعنی توپ قطع نمیشه و گرنه true
.............................
3 - ریسک سوم هم خطر سریع رسیدن به توپ است که باید سرعت توپ معین باشد که بازیکن توپ را با موفقیت freez کند .
4 - ریسک هم این است که زمانی که توپ به آن نقطه می رسد حریف ها اون بازیکن رو احاطه کنند و فاصله حریف تا اون بازیکن کم باشد یا mark کرده باشند که ایجنت ما رو مجبور به clear کردن توپ بکنند .
5 - ریسک پنجم مربوط به بیرون رفتن توپ از زمین است که این خطر مربوط به زمانی است که اون نقطه در اطراف بازکن مورد پاس باسد که پیش بینی باید شود که میتواند توپ را intercept کند یا نه . در صورت این که قطع نکند توپ به خارج زمین out رود .
6 - خطر و ریسک بعدی این است که باید stamina و توان بازیکن مورد پاس را رازیابی کرد . البته زمانی این معیار باید ارزیابی شود که بازیکن مورد پاس ما احتمال دریبل و پا به توپ شدن را داشته باشد .
یعنی وقتی به بازیکنی که این شرایط فوق را داشته باشد پاس دهیم و او هم توان پا به تئپ شدن را نداشته باشد .
7 - یکی از مهمترین خطرات که شاید یه کار گروهی خوب را صورت دهد یعنی پاس به راه دور که ما بیایم و بی خیال maxdist پاس خود شویم یعنی وقتی maxdist برای پاس ما 30 متر است آن را افزایش حتی به 50 متر دهیم .
......................
3 - هزینه
پارامتر سوم ما مکمل دو پارامتر ریسک و پاداش است که بعد از این دو مرحله انجام شدخ و یه جور تمام کننده است که بهترین نقطه در این مرحله اتنخاب میشود البته با در نظر گرفتن تمامی پاداش ها و ریسک ها . با توجه به اسم این پارامتر می تونیم متوجه شیم که کار این پارامتر به این صورت اسن که یه جورایی decision پاس رو پایه گذاری میکنه که به این صورت عمل میکنه که آن چند نقطه ای که مونده و امتیاز معیارشون برای مثال از 1700 گذشته و از نظر تاکتیکی میاد و ارزیابی میکنه که ما باید به چه قیمتی به اون نقطه پاس بدهیم وبا یه سری اطلاعات در مورد آینده کار که بعد از پاس ما پیش میاد بهترین نقطه اتنخاب میشود .
// مثال : در آخر هم یه تابع ساده برای فهمیدن بیشتر از روش امتیاز دهی یه مثال یا یه تابع کوچیک با چند تا شرط براتون گذاشتم که خیلی خوب متوجه میشین و این تابع به این صورت عمل میکنه که یه ابجکت هم تیمی رو میگیره و برای پاس دادن به اون یه امتیازی بر میگردونه که در پایین میبینین :
كد:
int Player::pass_value(ObjectT objt)
{
int passValue ;
VecPosition posAgent = WM->getAgentGlobalPosition();
VecPosition posBall = WM->getBallPos();
VecPosition post = WM->getGlobalPosition(objt);
Circle Main(post,40);
int cone1 = WM->getNrInSetInCone(OBJECT_SET_OPPONENTS,1.5,posAgent,post);
int cone2 = WM->getNrInSetInCone(OBJECT_SET_OPPONENTS,2,posAgent,post);
// agar goalie bood
if(objt=WM->getOwnGoalieType()) return - 5000 ;
if(!WM->isConfidenceGood(objt)) return - 5000 ;
// agar to bein rah bazikon babood
if(cone1==0)passValue +=100 ; else passValue -=400 ;
if(cone2==0)passValue +=200 ; else passValue -=200 ;
// agar confidencesh good nabood
if(WM->isConfidenceVeryGood(objt))passValue +=200 ;
// agar dar faseleye 40 metri nabood
if(Main.isInside(post)==false) return - 5000 ;
return passValue ;
{