سلام دوستان من یک عضو تازه وارد هستم و شدیدا دنبال یک موضوع بهینه سازی محاسباتم در برنامم دوستانی که مایل هستند میتونیم روی این قضیه باهم کار کنیم و حتی میتونیم یه مقاله هم بدیم از روش.
حالا من چی کار میکنم
تیم ما یه بازو ۴درجه ازادی ساختیم که قابلیت های خوبی روش پیاده کردیم(زیاد وارد جزییات نمیشم) اگر اطلاع داشته باشین از معادلات سینماتیک مستقیم و معکوس(اگرم ندارین ایرادی نداره٬ بگین بهتون میگم که کمکی کرده باشم)توی بازوهای رباتیکی خیلی مهم هستند.که حل معادلات مستقیم کار نسبتا راحتیه ولی حل معادلات معکوس اصلا راحت نیست(در واقع هنوز روش مشخصی براش نیست و نخواهد بود)
خلاااصه
ما برای بدست اوردن معادلات معکوس از یک سری ترفند استفاده کردیم (که اگر علاقه داشتین براتون شرح میدم) اما یه مشکلی داریم و اون هم اینکه این معادلات به جواب میرسند اما بایه cpu corei3 حدودا ۷ ثانیه طول میکشه به جواب برسه.
حالا همه اینارو بیخیال زیاد گیج نشین ساده تر میگم فرض کنید ۳ تا حلقه تو در توی for داریم که هرکودوم به اندازه ۲۵۰ واحد با گام ۱ هستند در داخلی ترین حلقه یک سری محاسبات انجام میشن(که در حالت عادی با مقادیر ثابت حلش خیلی سریع هست) ولی زمانی که این مقادیر توی این حلقه ها تغییر میکنه تا پایان شمارش تمامیه حلقه ها ۶ ثانیه طول میکشه .
For(int i=0;i<250;i++) { For(int j=0;j<250;j++) { For(int k=0;k<250;k++) { X=Fn(i,j,k); } } }
من تحقیق کردم میتونیم از مولتی تریدینگ استفاده کنیم حالا اینکه چطور دوستان اگه میتونین کمک کنید!!!
شاید موضوع یکم نامفهوم به نظر برسه
یه چیزو یادم رفت بگم ما در واقع توی این محاسبات داریم یه مقدار خطایی رو اندازه میگیریم که زمانی که به صفر میرسه اون مقدار خطا ما جوابا رو پیدا کردیم
حالا من در نظرمه مثلا ۱۰۰ تا thread ساخته بشه هرکدوم این حلقه هارو به تنهایی بخشی شو انجام بدن(مثلا این حلقه ها به ۱۰۰ قسمت تقسیم بشن هرکدوم جداگونه به یه کقدار خطایی برسن اونی که خطاش صفره جوابا اونجاست)
حالا اینکه ۱۰۰ thread چطور ساخته بشه یا اصلا این کار عملی هست یا نه رو نمیدونم!!!
سلام....خوب بود مطلب و مفید
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)