سرفصل های دوره هوش مصنوعی عمران سطح مقدماتی (ویژه کلیه گرایش ها)

سرفصل های دوره هوش مصنوعی عمران
کلیه گرایش ها
◆ بخش اول: آشنایی با پایتون، نصب و راه اندازی مقدمات
· مقدمه و کاربرد پایتون در مهندسی عمران
- چرا پایتون برای مهندسان عمران؟ (خودکارسازی وظایف تکراری، محاسبات پیچیده، ارتباط با نرمافزارهای تخصصی)
- آشنایی با کاربرد هوش مصنوعی و یادگیری ماشین در پیشبینی رفتار سازه ها و مدیریت پروژه
- بررسی تعامل پایتون با نرم افزارهای مهندسی عمران نظیر SAP2000، ETABS، AutoCAD، Revit و OpenSees از طریق API و اسکریپت نویسی
· نصب، راه اندازی و محیطهای برنامه نویسی (IDE)
- آشنایی با پکیج علمی Anaconda و مدیریت محیط ها با Conda
- (Anaconda PowerShell Prompt) اختصاصی فرمان خط با کار آموزش
- آشنایی با محیط های توسعه و ویرایشگرها: Code VS ، Spyder و PyCharm
- کاربرد و تفاوت های ابزارهای تعاملی تحت وب Notebook Jupyter و JupyterLab
- مفهوم دایرکتوری کاری فعلی (CWD)، مدیریت مسیرهای نسبی و مطلق در پروژه
- مدیریت محیط های مجازی Environments) (Virtual با دستورات ایجاد، فعالسازی و حذف محیط
◆ بخش دوم: اصول پایه کدنویسی، انواع داده ها و عملگرها
· آشنایی با سینتکس پایتون و قواعد نگارش
- مفهوم زبان سطح بالا و تفسیری در مقایسه با زبانهای کامپایلی ++C و Fortran و نرمافزار MATLAB
- اهمیت حیاتی تورفتگی ها (Indentation) در ساختار کدهای پایتون
- بررسی ۶ خطای رایج و پرتکرار مبتدیان و نحوه رفع آنها:KeyError و SyntaxError، IndexError، TypeError، IndentationError، NameError
· انواع داده های پایه و ساختارهای ذخیره سازی Types Data & Structures
- اعداد صحیح (int)، اعداد اعشاری (float) و اعداد مختلط در مهندسی (complex)
- رشته های متنی (str) و داده های بولی (bool) به همراه مفهوم مقادیر Truthy و Falsy
- داده های باینری و توالی بایت ها (bytes)
- تغییر نوع داده ها یا کستینگ صریح و ضمنی Explicit & Casting Implicit
- مفهوم شیءگرایی پویا Typing) (Dynamic و تشخیص نوع شیء با type و isinstance
· ساختارهای داده ای مجموع های با تمرکز بر مدیریت لیست ها و دیکشنری ها
- لیستها :(list) ویژگی ها (مرتب، قابل تغییر، افزودن، حذف، ویرایش و مرتب سازی صعودی/نزولی آیتم ها)
- تاپل ها :(tuple) توالی های مرتب و غیرقابل تغییر
- دیکشنری ها :(dict) ساختار جفت کلید-مقدار (Key-Value)، نگاشت داده ها و دسترسی سریع
- مجموعه ها :(set) اعضای منحصربه فرد، عدم ترتیب و حذف داده های تکراری از لیست ها
· تکنیک های پیشرفته کار با داده ها
- فرمت دهی و قالب بندی رشته ها روشهای قدیمی، متد format و روش مدرن f-string
- قوانین مشخصکننده های خروجی Specifiers Format برای کنترل تعداد اعشار و نمایش علمی اعداد
- تکنیک جابه جایی مقادیر متغیرها (Swap) به روش پایتونی
- برش دادن توالی ها (Slicing)، استفاده از گام های مثبت و منفی معکوس کردن داده و متد slice
- مفهوم کپی سطحی Copy Shallow در توالی های پیش فرض و مقایسه آن با کتابخانه ها
- دریافت داده از کاربر با input و تبدیل و تفکیک چند ورودی در یک خط با متدهای split و map
· انواع عملگرها در پایتون (Operators)
- عملگرهای حسابی (جمع، تفریق، ضرب، تقسیم اعشاری، تقسیم صحیح به سمت پایین، باقیمانده و توان)
- عملگرهای مقایسه ای (خروجیهای بولی و بررسی حساسیت به حروف بزرگ و کوچک در متون)
- عملگرهای منطقی( and ،or ،not، ) اولویت اجرای آنها و رفتار اتصال کوتاه (Short-Circuit)
- عملگرهای انتساب ترکیبی و عملگرهای بیتی
- عملگرهای عضویت in / in not در لیست، رشته و دیکشنری
- عملگرهای هویتی is / not is و تفاوت بنیادی بررسی هویت آدرس حافظه با برابری مقدار (==)
- عملگر سه تایی Operator Ternary برای شرط های تک خطی
◆ بخش سوم: ساختارهای کنترلی، تصمیم گیری و حلقه ها
(Conditional Statements) تصمیم گیری و شرطی دستورات
- کنترل جریان برنامه با کلمات کلیدی if ،elif و else
- قوانین نگارش بلاک های شرطی و پیاده سازی شرط های تو در تو if Nested
· ساختارهای تکرار و حلقه ها (Loops)
- حلقه :for پیمایش روی انواع توالی ها (لیست، رشته، تاپل)
- کاربرد دقیق تابع توصیف کننده عدد range پارامترهای شروع، پایان، گام و مدیریت بهینه حافظه
- تنظیم پارامتر end در تابع print برای مصورسازی تعاملی خروجی حلقه ها
- حلقه :while تکرار بر اساس برقراری شرط، ایجاد حلقه های بی نهایت تعاملی با True while
- کنترل پیشرفته حلقه ها با دستورات break توقف کامل و continue رد شدن از تکرار جاری
- تکنیک های اضطراری متوقف کردن حلقه های بی نهایت در ترمینال و محیط Notebook Jupyter
◆ بخش چهار: توابع، مستندسازی و ساختار ماژولار کد
· توابع در پایتون (Functions)
- مفاهیم جلوگیری از تکرار کد و سازماندهی برنامه ها با کلمه کلیدی def
- sum و type، print، len نظیر (Built-in Functions) داخلی آماده توابع با آشنایی
- طراحی توابع سفارشی کاربر :(User-Defined) بدون پارامتر، با پارامتر، و با پارامترهای پیشفرض (Default)
- تفاوت کلیدی، کاربردی و عملکردی بین دستور return و دستور print داخل توابع
· اصول حرف های نگارش تابع و مستندسازی
- استاندارد نام گذاری واضح Case Snake
- پیاده سازی قابلیت Hinting Type(اشاره به نوع ورودی ها و خروجی تابع در خط اول با علامت (>- برای مدیریت پروژه های بزرگ
- مستندسازی رسمی با Docstrings (نوشتن توضیحات، آرگومان ها و خروجی ها بر اساس استانداردهای (PEP 257 و Google Style
- تفاوت کامنت با Docstring و نحوه فراخوانی مستندات با متد doc و تابع help
· ماژول ها و سازماندهی پروژه ها (Modules)
- مفهوم فایل های py. به عنوان ماژول، مزایای استفاده از آنها و تعریف فضاهای نام (Namespaces)
- روشهای مختلف بارگذاری ماژولها import کامل، جزئی، با نام مستعار as
- مکانیسم و اولویت مسیرهای جستجوی پایتون برای یافتن ماژول ها (sys.path)
- آشنایی با ماژول های داخلی مهم سیستم نظیر sys (مدیریت مفسر، اطلاعات نسخه، پلتفرم، کنترل حافظه با maxsize و کانالهای ورودی/خروجی استاندارد)
- مفهوم شرط بنیادی main " == name if : برای تفکیک کدهای اجرایی مستقیم از ماژول های وارد شده
◆ بخش پنجم: برنامه نویسی شیءگرایی (OOP) و کاربردهای مهندسی
· مفاهیم برنامه نویسی شیءگرایی
- تعریف کلاس (Class) به عنوان نقشه اولیه و الگو، و شیء (Object/Instance) به عنوان نمونه واقعی
- آشنایی با ۴ اصل کلیدی شیءگرایی: کلاس، شیء، ارث بری (Inheritance) و چندریختی (Polymorphism)
- مزایای شیءگرایی در پروژه های مهندسی (قابلیت استفاده مجدد، پیمانه ای کردن کد و مدیریت پروژه های بزرگ)
· پیاده سازی کلاس ها در پایتون
- نقش متد جادویی سازنده init (Constructor) در مقداردهی اولیه خواص اشیاء
- مفهوم پارامتر self به عنوان اشاره گر به شیء جاری
- تعریف ویژگی ها (Attributes) و متدها (Methods) در کلاس ها
· کلاس ها و متدهای کاربردی در مهندسی عمران و تحلیل داده
- طراحی کلاس PointLoadBeam و UDLBeam برای محاسبه خودکار بیشترین لنگر خمشی تیرها تحت بارهای نقطه ای و گسترده یکنواخت \frac{PL}$) = $}۴{M و \frac{wL^2}$ = ($}8{M
- طراحی کلاس Column جهت محاسبه تنش فشاری ستونها \frac{P}{A}\$) = ($sigma
- فرمت دهی و رند کردن خروجی متدهای مهندسی با متد round و f-stringها خارج از بدنه کلاس
- طراحی کلاس ConcreteBeamWeight برای محاسبه حجم و وزن نهایی تیرهای بتنی بر اساس چگالی مصالح
- طراحی کلاس جامع Data جهت نرمال سازی داده ها با تکنیک Comprehension List برای الگوریتم های هوش مصنوعی
◆ بخش ششم: کار با کتابخانه های علمی و داده محور Science Data
· مفهوم پکیج ها و کتابخانه ها (Libraries)
- تفاوت های ساختاری بین ماژول، پکیج و کتابخانه
- آشنایی با توزیع پکیج ها در PyPI، مدیریت وابستگی ها و بهینه سازی محاسبات سنگین با هسته های محاسباتی نوشته شده با زبان های ++C/C و افزونه های Native
· کتابخانه NumPy محاسبات عددی و ماتریسی
- آشنایی با ساختار آرایه های چندبعدی (ndarray)، انواع داده حافظه (dtype) و فشرده سازی در حافظه
- انجام عملیات های برداری Operations Vectorized با سرعت بالا بدون نیاز به حلقه ها
- اندیس گذاری پیشرفته، اعمال ماسک های بولی Masks) (Boolean و توابع ریاضی سریع (UFuncs)
- محاسبات مهندسی با توابع مثلثاتی (تبدیل درجه به رادیان با (deg2rad و توابع آماری mean ،std ،sum روی محورهای افقی و عمودی
- عملیات های ماتریسی و جبر خطی: ضرب ماتریسی (dot)، دترمینان، معکوس ماتریس و حل دستگاه معادلات خطی چند مجهولی پیچیده سازه با زیرماژول np.linalg.solve
- روش های ساخت آرایه (ماتریسهای صفر، یک، مقادیر ثابت، اعداد تصادفی توزیع نرمال و یکنواخت)
- مفاهیم قدرتمند همراستاسازی خودکار ابعاد (Broadcasting)، تغییر شکل ماتریس (reshape)، اتصال آرایه ها و Save/Load داده ها
· کتابخانه Pandas پاکسازی، مدیریت و تحلیل جداول داده
- آشنایی با دو ساختار دادهای اصلی: ستون ها (Series) و جداول (DataFrame)
- بارگذاری و ذخیره سازی داده ها از/به فایل های Excel ،CSV و JSON به همراه تنظیم شاخص ها
- تفاوت های کلیدی و کاربردی بین متدهای loc بر اساس برچسب و نام و iloc بر اساس موقعیت عددی واقعی در دسترسی به سطرها و ستون ها
- فیلتر کردن پیشرفته جداول با ترکیب چند شرط منطقی و اعمال توابع آماری روی داده های آزمایشگاهی با describe متد
- پاکسازی داده ها Cleaning Data
- ردیابی مقادیر خالی، حذف ردیف های آسیب دیده (NaN) و جایگزینی مقادیر خالی با میانگین متغیرها
- مرتب سازی داده ها، استفاده از ستون های جدید مبتنی بر توابع لامبدا (lambda)
- تحلیل های پیشرفته آماری گروه ها با ابزار فوق العاده groupby و متد ادغام جداول مهندسی (Merge/Join) مشابه با دستورات SQL
◆ بخش هفتم: بصری سازی داده ها و رسم نمودارهای مهندسی با Matplotlib
· اصول بصری سازی علمی داده ها Visualization Data
- آشنایی با زیرماژول pyplot و ساختار اصلی تعریف Figure در پایتون
- تنظیم فونت های استاندارد بین المللی مقالات علمی مانند Roman New Times با ابزار rcParams
- شخصی سازی کامل خطوط تغییر رنگ ها با کدهای هگز یا سیستم RGB، تغییر ضخامت خطوط با linewidth
- برچسب گذاری دقیق محورهای افقی و عمودی، افزودن شبکه های راهنما (grid)، راهنمای نمودار (legend) و عناوین اصلی نمودارها
· رسم انواع نمودارهای کاربردی در عمران
- نمودار خطی Plot Line : رسم چند خط مجزا در یک شکل برای مقایسه خروجی ها
- نمودار پراکندگی Plot Scatter : نمایش نقاط داده آزمایشگاهی
- نمودار میله ای Chart Bar : کنترل دقیق فاصلهها بین دستهها با آرایههای NumPy و تنظیمات پهنا
- نمودار دایره ای Chart Pie : کنترل مقادیر و نمایش خودکار درصدها با فرمت های اعشاری دقیق (autopct)
- نمودار هیستوگرام :(Histogram) تحلیل توزیع فراوانی داده های تصادفی، تنظیمات باکس ها (bins)، رسم همزمان چند توزیع و کنترل شفافیت با پارامتر alpha
· بصری سازی پیشرفته و نمودارهای سه بعدی
- ایجاد و مدیریت چندین رسم مجزا در یک صفحه (Subplots) به صورت ۱×۲ یا ۲×۲
- کاربرد پارامتر markevery برای مدیریت تراکم مارکرها روی خطوط توابع طولانی
- جلوگیری از تداخل و به هم ریختگی برچسب ها و عناوین Subplotها با ابزار خودکار ()plt.tight_layout
- محدود کردن دامنه ها با ylim برای کنترل رفتارهایی مثل انفجار توابع تانژانتی
- رسم نمودارهای سه بعدی Plots3D : فراخوانی ابزارهای سه بعدی با add_subplot و پارامتر "projection="3d برای تحلیل های فضایی سازه ها
هوش مصنوعی در مهندسی عمران
جلسه ۱: آشنایی با هوش مصنوعی در مهندسی عمران
مدت: ۳ ساعتسرفصلها
- تعریف هوش مصنوعی
- تفاوت هوش مصنوعی، یادگیری ماشین و یادگیری عمیق
- تفاوت مدلهای فیزیکی و مدلهای دادهمحور
- نقش داده در مدلهای هوش مصنوعی
- کاربردهای عمومی هوش مصنوعی در مهندسی عمران
- محدودیتها و خطاهای رایج در استفاده از هوش مصنوعی
جلسه ۲: داده در مهندسی عمران
مدت: ۳ ساعتسرفصلها
- مفهوم داده در مسائل مهندسی عمران
- انواع دادههای عمرانی
- دادههای عددی، تصویری، متنی و سری زمانی
- منابع داده در عمران
- دادههای آزمایشگاهی، میدانی، اقلیمی، خاک، مصالح و پروژههای ساختمانی
- مفهوم ورودی و خروجی در یک مسئله هوش مصنوعی
- اهمیت کیفیت داده
جلسه ۳: آمادهسازی داده برای مدلسازی
مدت: ۳ ساعتسرفصلها
- چرا داده خام برای مدلسازی مناسب نیست؟
- دادههای گمشده
- دادههای پرت
- نویز در دادههای مهندسی
- نرمالسازی و استانداردسازی
- تقسیم داده به آموزش و آزمون
- خطر نشت داده در مدلسازی
جلسه ۴: مبانی یادگیری ماشین
مدت: ۳ ساعتسرفصلها
- یادگیری ماشین چیست؟
- یادگیری نظارتشده
- یادگیری بدون نظارت در حد معرفی
- رگرسیون
- طبقهبندی
- ویژگی و برچسب
- آموزش مدل
- آزمون مدل
- بیشبرازش و کمبرازش در حد مفهومی
جلسه ۵: رگرسیون در مسائل عمرانی
مدت: ۳ ساعتسرفصلها
- مفهوم رگرسیون
- کاربرد رگرسیون در مهندسی عمران
- رگرسیون خطی در حد مقدماتی
- رابطه بین متغیرهای ورودی و خروجی
- مفهوم خطای پیشبینی
- تفسیر خروجی مدل رگرسیونی
جلسه ۶: ارزیابی مدلهای رگرسیونی
مدت: ۳ ساعتسرفصلها
- چرا ارزیابی مدل مهم است؟
- مفهوم خطا در پیشبینی مهندسی
- معیار MAE
- معیار RMSE
- معیار R²
- تفسیر مهندسی خطا
- تفاوت مدل خوب، متوسط و ضعیف
جلسه ۷: مدلهای پایه یادگیری ماشین
مدت: ۳ ساعتسرفصلها
- چرا همیشه رگرسیون خطی کافی نیست؟
- درخت تصمیم در حد مقدماتی
- جنگل تصادفی در حد مقدماتی
- نزدیکترین همسایهها در حد معرفی
- مقایسه ساده مدلها
- انتخاب مدل مناسب برای مسئله عمرانی
جلسه ۸: طبقهبندی در مسائل عمرانی
مدت: ۳ ساعتسرفصلها
- طبقهبندی چیست؟
- تفاوت طبقهبندی و رگرسیون
- مفهوم کلاس یا برچسب
- دقت مدل
- ماتریس درهمریختگی
- Precision، Recall و f1_score
- تفسیر نتایج طبقهبندی در مسائل مهندسی
جلسه ۹: آشنایی مقدماتی با شبکه عصبی و یادگیری عمیق
مدت: ۳ ساعت- ایده کلی شبکه عصبی مصنوعی
- مفهوم نورون مصنوعی در حد مقدماتی
- مفهوم وزن، بایاس و لایههای شبکه
- تفاوت شبکه عصبی با مدلهای کلاسیک یادگیری ماشین
- کاربرد شبکه عصبی در مسائل ساده عمرانی
- آشنایی بسیار مقدماتی با یادگیری عمیق
- معرفی شبکههای کانولوشنی فقط در حد مفهوم
- چند نمونه کاربرد تصویری هوش مصنوعی در مهندسی عمران
جلسه ۱۰: پروژه کوچک نهایی و جمعبندی
مدت: ۳ ساعتسرفصلها
- مرور مسیر کامل یک پروژه هوش مصنوعی
- تعریف مسئله
- انتخاب داده
- آمادهسازی داده
- انتخاب مدل
- آموزش مدل
- ارزیابی مدل
- تفسیر نتیجه
- گزارشنویسی پروژه
دوره جامع بهینهسازی در مهندسی عمران
جلسه ۱: مقدمات و فرمولبندی مسائل مهندسی
- تعریف بهینهسازی و اهمیت آن در اقتصاد مهندسی.
- شناسایی اجزای مسأله: متغیرهای طراحی (Design Variables)، تابع هدف (Objective Function) و قیود (Constraints).
- نحوه تبدیل یک مسأله فیزیکی (مثلاً طراحی تیر یا خرپا) به یک مدل ریاضی.
- دستهبندی مسائل: خطی (LP)، غیرخطی (NLP)، پیوسته و گسسته.
جلسه ۲: روشهای بهینهسازی کلاسیک (ریاضی-محور)
- مفاهیم بهینهسازی تکمتغیره و چندمتغیره.
- روشهای مبتنی بر گرادیان (Gradient-based) مانند Descent و Newton.
- مفهوم بهینگی (شرایط KKT).
- محدودیتهای روشهای کلاسیک در مسائل پیچیده مهندسی عمران.
جلسه ۳: الگوریتمهای فراابتکاری (Meta-heuristics) - بخش اول: الگوریتم ژنتیک (GA)
- فلسفه الگوریتمهای تکاملی.
- ساختار کدگذاری (Encoding): کروموزومهای باینری و حقیقی.
- مکانیزمهای انتخاب (Selection)، تقاطع (Crossover) و جهش (Mutation).
- مفهوم تابع برازش (Fitness Function).
جلسه ۴: کارگاه عملی ۱ - پیادهسازی GA در نرمافزار
- آموزش جعبهابزار بهینهسازی (Optimization Toolbox).
- کدنویسی مرحله به مرحله برای بهینهسازی ابعاد یک مقطع بتنی یا فولادی تحت بارگذاری.
- تحلیل حساسیت پارامترهای الگوریتم.
جلسه ۵: هوش جمعی - الگوریتم توده ذرات (PSO)
- فلسفه حرکت جمعی پرندگان و ماهیها.
- فرمولبندی سرعت و موقعیت ذرات.
- مزایای PSO نسبت به GA در مسائل مهندسی عمران.
- نحوه کنترل همگرایی و فرار از بهینههای محلی.
جلسه ۶: مدیریت قیود در مسائل مهندسی (Penalty Functions)
- چالش اصلی در عمران: مسائل به شدت مقید (Constrained Problems).
- آموزش روشهای تابع جریمه (Static & Dynamic Penalty).
- نحوه اعمال ضوابط آییننامهای (تنش، تغییرمکان، لرزهای) در کدنویسی بهینهسازی.
جلسه ۷: کاربرد تخصصی در طراحی سازه و زلزله
- بهینهسازی توپولوژی و ابعاد در خرپاها و قابهای ساختمانی.
- بهینهسازی وزن در مقابل سختی سازه.
- معرفی بهینهسازی بر اساس عملکرد (Performance-based Optimization).
- مثال: طراحی بهینه یک میراگر یا مهاربند برای کاهش پاسخ لرزهای.
جلسه ۸: کاربرد تخصصی در مدیریت ساخت و منابع آب
- بهینهسازی زمان-هزینه (Time-Cost Trade-off) در پروژههای عمرانی.
- تخصیص بهینه منابع و ماشینآلات.
- بهینهسازی شبکههای انتقال آب و مدیریت مخازن سدها.
جلسه ۹: بهینهسازی چندهدفه (Multi-Objective Optimization)
- مفهوم تضاد اهداف (مثلاً کاهش وزن همزمان با کاهش تغییرمکان).
- آشنایی با جبهه پارتو (Pareto Front).
- معرفی و پیادهسازی الگوریتم محبوب NSGA-II.
- نحوه انتخاب گزینه نهایی از بین پاسخهای بهینه.
جلسه ۱۰: مباحث نوین و جمعبندی پروژه
- ترکیب بهینهسازی با یادگیری ماشین (Surrogate Modeling).
- آشنایی با الگوریتمهای نوین (مثل GWO یا ICA).
- ارائه پروژههای عملی توسط دانشجویان.
- مرور منابع معتبر و مسیر ادامه یادگیری.