Yandex.Taxi کاروں کو کیسے تلاش کرتا ہے جب کوئی نہ ہو۔

Yandex.Taxi کاروں کو کیسے تلاش کرتا ہے جب کوئی نہ ہو۔

ایک اچھی ٹیکسی سروس محفوظ، قابل اعتماد اور تیز ہونی چاہیے۔ صارف تفصیلات میں نہیں جائے گا: اس کے لیے یہ ضروری ہے کہ وہ "آرڈر" بٹن پر کلک کرے اور جتنی جلدی ممکن ہو ایک کار وصول کرے جو اسے پوائنٹ A سے پوائنٹ B تک لے جائے۔ اگر قریب میں کوئی کاریں نہیں ہیں، تو سروس فوری طور پر اس کے بارے میں مطلع کریں تاکہ کلائنٹ کو غلط توقعات نہ ہوں۔ لیکن اگر "کاریں نہیں" کا نشان اکثر ظاہر ہوتا ہے، تو یہ منطقی ہے کہ کوئی شخص اس سروس کا استعمال بند کر دے گا اور کسی مدمقابل کے پاس جائے گا۔

اس مضمون میں میں اس بارے میں بات کرنا چاہتا ہوں کہ کس طرح، مشین لرننگ کا استعمال کرتے ہوئے، ہم نے کم کثافت والے علاقوں میں کاروں کی تلاش کا مسئلہ حل کیا (دوسرے الفاظ میں، جہاں، پہلی نظر میں، کوئی کاریں نہیں ہیں)۔ اور اس سے کیا نکلا۔

پس منظر

ٹیکسی کال کرنے کے لیے صارف چند آسان اقدامات کرتا ہے، لیکن سروس کے اندر کیا ہوتا ہے؟

صارف اسٹیج بیک اینڈ Yandex.Taxi
نقطہ آغاز کا انتخاب کرتا ہے۔ پن ہم امیدواروں کے لیے ایک آسان تلاش شروع کر رہے ہیں - پن سرچ۔ پائے جانے والے ڈرائیوروں کی بنیاد پر، آمد کے وقت کی پیشین گوئی کی جاتی ہے - پن میں ETA۔ دیئے گئے نقطہ پر بڑھتے ہوئے گتانک کا حساب لگایا جاتا ہے۔
منزل، کرایہ، ضروریات کا انتخاب کرتا ہے۔ پیشکش ہم بڑھتے ہوئے گتانک کو مدنظر رکھتے ہوئے ایک راستہ بناتے ہیں اور تمام ٹیرف کے لیے قیمتوں کا حساب لگاتے ہیں۔
"ٹیکسی کو کال کریں" کے بٹن کو دبائیں۔ آرڈر ہم کار کی مکمل تلاش شروع کرتے ہیں۔ ہم سب سے موزوں ڈرائیور کا انتخاب کرتے ہیں اور اسے آرڈر دیتے ہیں۔

کے بارے میں پن میں ETA, قیمت کا حساب и سب سے موزوں ڈرائیور کا انتخاب ہم نے پہلے ہی لکھا ہے. اور یہ ڈرائیوروں کی تلاش کے بارے میں ایک کہانی ہے۔ جب کوئی آرڈر بنتا ہے، تو تلاش دو بار ہوتی ہے: پن پر اور آرڈر پر۔ آرڈر کی تلاش دو مراحل میں ہوتی ہے: امیدواروں کی بھرتی اور درجہ بندی۔ سب سے پہلے، دستیاب امیدوار ڈرائیورز پائے جاتے ہیں جو سڑک کے گراف کے ساتھ قریب ترین ہوتے ہیں۔ پھر بونس اور فلٹرنگ کا اطلاق ہوتا ہے۔ باقی امیدواروں کی درجہ بندی کی جاتی ہے اور جیتنے والے کو آرڈر کی پیشکش موصول ہوتی ہے۔ اگر وہ راضی ہوتا ہے تو اسے آرڈر پر تفویض کیا جاتا ہے اور ڈیلیوری پوائنٹ پر جاتا ہے۔ اگر وہ انکار کر دے تو اگلے والے کو آفر آتی ہے۔ اگر مزید امیدوار نہ ہوں تو تلاش دوبارہ شروع ہو جاتی ہے۔ یہ تین منٹ سے زیادہ نہیں رہتا ہے، جس کے بعد آرڈر منسوخ اور جلا دیا جاتا ہے۔

پن پر تلاش کرنا آرڈر پر تلاش کرنے کے مترادف ہے، صرف آرڈر نہیں بنتا اور تلاش صرف ایک بار کی جاتی ہے۔ امیدواروں کی تعداد اور تلاش کے رداس کے لیے آسان ترتیبات بھی استعمال کی جاتی ہیں۔ اس طرح کی آسانیاں ضروری ہیں کیونکہ آرڈرز سے زیادہ پنوں کی شدت کا آرڈر ہوتا ہے، اور تلاش کرنا ایک مشکل کام ہے۔ ہماری کہانی کا اہم نکتہ: اگر ابتدائی تلاش کے دوران پن پر کوئی موزوں امیدوار نہیں ملا، تو ہم آپ کو آرڈر دینے کی اجازت نہیں دیتے۔ کم از کم ایسا ہی ہوا کرتا تھا۔

یہ وہی ہے جو صارف نے درخواست میں دیکھا:

Yandex.Taxi کاروں کو کیسے تلاش کرتا ہے جب کوئی نہ ہو۔

کاروں کے بغیر کاریں تلاش کریں۔

ایک دن ہم ایک مفروضہ لے کر آئے: شاید کچھ معاملات میں آرڈر اب بھی مکمل ہو سکتا ہے، چاہے پن پر کوئی کار نہ ہو۔ سب کے بعد، پن اور آرڈر کے درمیان کچھ وقت گزر جاتا ہے، اور آرڈر کی تلاش زیادہ مکمل ہوتی ہے اور بعض اوقات کئی بار دہرائی جاتی ہے: اس وقت کے دوران، دستیاب ڈرائیور ظاہر ہو سکتے ہیں۔ ہم اس کے برعکس بھی جانتے تھے: اگر ڈرائیور پن پر پائے جاتے ہیں، تو یہ حقیقت نہیں تھی کہ آرڈر دیتے وقت وہ مل جائیں گے۔ کبھی وہ غائب ہو جاتے ہیں یا سب حکم سے انکار کر دیتے ہیں۔

اس مفروضے کو جانچنے کے لیے، ہم نے ایک تجربہ شروع کیا: ہم نے استعمال کنندگان کے ٹیسٹ گروپ کے لیے پن پر تلاش کے دوران کاروں کی موجودگی کو چیک کرنا بند کر دیا، یعنی انہیں "کاروں کے بغیر آرڈر" کرنے کا موقع ملا۔ نتیجہ کافی غیر متوقع تھا: اگر کار پن پر نہیں تھی، تو 29% کیسز میں یہ بعد میں مل گئی - آرڈر پر تلاش کرتے وقت! مزید برآں، گاڑیوں کے بغیر آرڈر منسوخی کی شرحوں، درجہ بندیوں اور دیگر معیار کے اشاریوں کے لحاظ سے باقاعدہ آرڈرز سے نمایاں طور پر مختلف نہیں تھے۔ کاروں کے بغیر بکنگ تمام بکنگ کا 5% ہے، لیکن تمام کامیاب دوروں میں سے صرف 1% سے زیادہ۔

یہ سمجھنے کے لیے کہ ان احکامات پر عمل درآمد کرنے والے کہاں سے آتے ہیں، آئیے ایک پن پر تلاش کے دوران ان کے اسٹیٹس کو دیکھتے ہیں:

Yandex.Taxi کاروں کو کیسے تلاش کرتا ہے جب کوئی نہ ہو۔

  • دستیاب: دستیاب تھا، لیکن کسی وجہ سے امیدواروں میں شامل نہیں کیا گیا، مثال کے طور پر، وہ بہت دور تھا۔
  • حکم پر: مصروف تھا، لیکن خود کو آزاد کرنے یا اس کے لیے دستیاب ہونے میں کامیاب ہو گیا۔ سلسلہ ترتیب;
  • مصروف: آرڈرز کو قبول کرنے کی صلاحیت ناکارہ تھی، لیکن پھر ڈرائیور لائن پر واپس آگیا۔
  • دستیاب نہیں ہے: ڈرائیور آن لائن نہیں تھا، لیکن وہ نمودار ہوا۔

آئیے وشوسنییتا شامل کریں۔

اضافی آرڈرز بہت اچھے ہیں، لیکن 29% کامیاب تلاشوں کا مطلب ہے کہ 71% وقت صارف نے طویل انتظار کیا اور کہیں نہیں جانا۔ اگرچہ سسٹم کی کارکردگی کے نقطہ نظر سے یہ کوئی بری چیز نہیں ہے، لیکن یہ دراصل صارف کو جھوٹی امید دلاتی ہے اور وقت ضائع کرتی ہے، جس کے بعد وہ پریشان ہو جاتے ہیں اور (ممکنہ طور پر) سروس کا استعمال بند کر دیتے ہیں۔ اس مسئلے کو حل کرنے کے لیے، ہم نے اس امکان کا اندازہ لگانا سیکھا کہ آرڈر پر کار مل جائے گی۔

اسکیم اس طرح ہے:

  • صارف ایک پن رکھتا ہے۔
  • پن پر تلاشی لی جاتی ہے۔
  • اگر کوئی کاریں نہیں ہیں، تو ہم پیش گوئی کرتے ہیں: شاید وہ ظاہر ہوں گی۔
  • اور امکان پر منحصر ہے، ہم آپ کو آرڈر دینے کی اجازت دیتے ہیں یا نہیں دیتے، لیکن ہم آپ کو خبردار کرتے ہیں کہ اس وقت اس علاقے میں کاروں کی کثافت کم ہے۔

درخواست میں یہ اس طرح نظر آیا:

Yandex.Taxi کاروں کو کیسے تلاش کرتا ہے جب کوئی نہ ہو۔

ماڈل کا استعمال آپ کو زیادہ درست طریقے سے نئے آرڈرز بنانے اور لوگوں کو بیکار میں یقین دلانے کی اجازت دیتا ہے۔ یعنی، درستگی-ریکال ماڈل کا استعمال کرتے ہوئے مشینوں کے بغیر وشوسنییتا کے تناسب اور آرڈرز کی تعداد کو منظم کرنا۔ سروس کی وشوسنییتا پروڈکٹ کا استعمال جاری رکھنے کی خواہش کو متاثر کرتی ہے، یعنی آخر میں یہ سب ٹرپس کی تعداد پر آتا ہے۔

صحت سے متعلق یاد کرنے کے بارے میں تھوڑا سامشین لرننگ میں بنیادی کاموں میں سے ایک درجہ بندی کا کام ہے: دو کلاسوں میں سے کسی ایک کو کسی چیز کو تفویض کرنا۔ اس صورت میں، مشین لرننگ الگورتھم کا نتیجہ اکثر کلاسوں میں سے کسی ایک میں رکنیت کا عددی اندازہ بن جاتا ہے، مثال کے طور پر، امکانی تشخیص۔ تاہم، جو اعمال کیے جاتے ہیں وہ عام طور پر بائنری ہوتے ہیں: اگر کار دستیاب ہے، تو ہم آپ کو اس کا آرڈر دینے دیں گے، اور اگر نہیں، تو ہم نہیں کریں گے۔ مخصوص ہونے کے لیے، آئیے ایک الگورتھم کو کال کریں جو ایک عددی تخمینہ ایک ماڈل تیار کرتا ہے، اور ایک درجہ بندی کرنے والا ایک اصول جو اسے دو کلاسوں (1 یا -1) میں سے کسی ایک کو تفویض کرتا ہے۔ ماڈل کی تشخیص کی بنیاد پر درجہ بندی کرنے کے لیے، آپ کو تشخیص کی حد منتخب کرنے کی ضرورت ہے۔ کس طرح بالکل کام پر بہت انحصار کرتا ہے.

فرض کریں کہ ہم کسی نایاب اور خطرناک بیماری کا ٹیسٹ (کلاسیفائر) کر رہے ہیں۔ ٹیسٹ کے نتائج کی بنیاد پر، ہم یا تو مریض کو مزید تفصیلی معائنے کے لیے بھیجتے ہیں، یا کہتے ہیں: "اچھا، گھر جاؤ۔" ہمارے لیے بیمار شخص کو گھر بھیجنا کسی صحت مند شخص کا بلاوجہ معائنہ کرنے سے کہیں زیادہ برا ہے۔ یعنی، ہم چاہتے ہیں کہ ٹیسٹ زیادہ سے زیادہ بیمار لوگوں کے لیے کام کرے۔ اس قدر کو recall = کہا جاتا ہے۔Yandex.Taxi کاروں کو کیسے تلاش کرتا ہے جب کوئی نہ ہو۔. ایک مثالی درجہ بندی کرنے والے کی واپسی 100% ہوتی ہے۔ تنزلی کی صورت حال یہ ہے کہ سب کو امتحان کے لیے بھیجیں، پھر واپسی بھی سو فیصد ہو گی۔

یہ دوسری طرف بھی ہوتا ہے۔ مثال کے طور پر، ہم طلباء کے لیے ایک ٹیسٹنگ سسٹم بنا رہے ہیں، اور اس میں دھوکہ دہی کا پتہ لگانے والا ہے۔ اگر اچانک چیک دھوکہ دہی کے کچھ معاملات میں کام نہیں کرتا ہے، تو یہ ناخوشگوار ہے، لیکن اہم نہیں ہے۔ دوسری طرف، طلباء پر غیر منصفانہ الزام لگانا انتہائی برا ہے جو انہوں نے نہیں کیا۔ یعنی، یہ ہمارے لیے اہم ہے کہ درجہ بندی کرنے والے کے مثبت جوابات میں سے زیادہ سے زیادہ درست جوابات ہیں، شاید ان کی تعداد کو نقصان پہنچانے کے لیے۔ اس کا مطلب ہے کہ آپ کو زیادہ سے زیادہ درستگی = Yandex.Taxi کاروں کو کیسے تلاش کرتا ہے جب کوئی نہ ہو۔. اگر ٹرگرنگ تمام اشیاء پر ہوتی ہے، تو درستگی نمونے میں متعین کلاس کی فریکوئنسی کے برابر ہوگی۔

اگر الگورتھم ایک عددی امکانی قدر پیدا کرتا ہے، تو مختلف حدیں منتخب کر کے، آپ مختلف درستگی-ریکال اقدار حاصل کر سکتے ہیں۔

ہمارے مسئلے میں صورت حال کچھ یوں ہے۔ یاد کرنا ان آرڈرز کی تعداد ہے جو ہم پیش کر سکتے ہیں، درستگی ان آرڈرز کی وشوسنییتا ہے۔ ہمارے ماڈل کی صحت سے متعلق یاد کرنے کا وکر ایسا لگتا ہے:
Yandex.Taxi کاروں کو کیسے تلاش کرتا ہے جب کوئی نہ ہو۔
دو انتہائی صورتیں ہیں: کسی کو حکم دینے کی اجازت نہ دیں اور سب کو حکم دینے کی اجازت دیں۔ اگر آپ کسی کو اجازت نہیں دیتے ہیں، تو ریکول 0 ہوگا: ہم آرڈر نہیں بناتے ہیں، لیکن ان میں سے کوئی بھی ناکام نہیں ہوگا۔ اگر ہم سب کو اجازت دیتے ہیں، تو واپسی 100% ہوگی (ہمیں تمام ممکنہ آرڈرز موصول ہوں گے)، اور درستگی 29% ہوگی، یعنی 71% آرڈرز خراب ہوں گے۔

ہم نے نقطہ آغاز کے مختلف پیرامیٹرز کو بطور علامات استعمال کیا:

  • وقت/جگہ۔
  • سسٹم کی حالت (قریب میں تمام ٹیرفز اور پنوں کی مقبوضہ مشینوں کی تعداد)۔
  • تلاش کے پیرامیٹرز (رداس، امیدواروں کی تعداد، پابندیاں)۔

علامات کے بارے میں مزید

تصوراتی طور پر، ہم دو حالات کے درمیان فرق کرنا چاہتے ہیں:

  • "گہرا جنگل" - اس وقت یہاں کوئی کاریں نہیں ہیں۔
  • "بدقسمتی" - کاریں ہیں، لیکن تلاش کرتے وقت کوئی مناسب نہیں تھا۔

"بدقسمتی" کی ایک مثال یہ ہے کہ اگر جمعہ کی شام مرکز میں بہت زیادہ مانگ ہو۔ بہت سارے آرڈرز ہیں، بہت سارے لوگ تیار ہیں، اور ہر ایک کے لیے کافی ڈرائیور نہیں ہیں۔ یہ اس طرح نکل سکتا ہے: پن میں کوئی مناسب ڈرائیور نہیں ہیں۔ لیکن لفظی طور پر وہ سیکنڈوں میں ظاہر ہوتے ہیں، کیونکہ اس وقت اس جگہ پر بہت سارے ڈرائیور ہیں اور ان کی حیثیت مسلسل بدل رہی ہے۔

لہذا، پوائنٹ A کے آس پاس کے نظام کے مختلف اشارے اچھی خصوصیات میں سے نکلے:

  • کاروں کی کل تعداد۔
  • آرڈر پر کاروں کی تعداد۔
  • "مصروف" کی حالت میں آرڈر کرنے کے لیے کاروں کی تعداد دستیاب نہیں ہے۔
  • صارفین کی تعداد۔

بہر حال، جتنی زیادہ کاریں ہیں، اتنا ہی زیادہ امکان ہے کہ ان میں سے ایک دستیاب ہو جائے گی۔
درحقیقت ہمارے لیے یہ ضروری ہے کہ نہ صرف کاریں واقع ہوں بلکہ کامیاب سفر بھی کیے جائیں۔ اس لیے کامیاب سفر کے امکان کا اندازہ لگانا ممکن تھا۔ لیکن ہم نے ایسا نہ کرنے کا فیصلہ کیا، کیونکہ اس قدر کا انحصار صارف اور ڈرائیور پر ہے۔

ماڈل ٹریننگ الگورتھم تھا۔ کیٹ بوسٹ. تجربے سے حاصل کردہ ڈیٹا کو تربیت کے لیے استعمال کیا گیا۔ نفاذ کے بعد، تربیتی ڈیٹا اکٹھا کرنا پڑا، بعض اوقات صارفین کی ایک چھوٹی تعداد کو ماڈل کے فیصلے کے خلاف آرڈر دینے کی اجازت دیتا ہے۔

کے نتائج

تجربے کے نتائج توقع کے مطابق تھے: ماڈل کا استعمال آپ کو بغیر کاروں کے آرڈرز کی وجہ سے کامیاب دوروں کی تعداد میں نمایاں اضافہ کرنے کی اجازت دیتا ہے، لیکن قابل اعتمادی پر سمجھوتہ کیے بغیر۔

اس وقت یہ طریقہ کار تمام شہروں اور ممالک میں شروع کیا گیا ہے اور اس کی مدد سے تقریباً 1% کامیاب سفر ہوتے ہیں۔ اس کے علاوہ، کاروں کی کم کثافت کے ساتھ کچھ شہروں میں، اس طرح کے دوروں کا حصہ 15٪ تک پہنچ جاتا ہے.

ٹیکسی ٹیکنالوجی کے بارے میں دیگر پوسٹس

ماخذ: www.habr.com

نیا تبصرہ شامل کریں