افکار گسترش

ساخت وبلاگ

این یک الگوی ساده از چگونگی گسترش یک عقیده در یک جامعه است. هر فرد به عنوان لیستی از اعداد صحیح نظرات زیادی دارد. آنها می توانند با تغییر اعداد موجود در لیست ، نظر خود را تغییر دهند.

نمایندگان می توانند نظر خود را در هر مرحله تغییر دهند. آنها یکی از همسایگان خود را به طور تصادفی انتخاب می کنند و یکی از عقاید همسایه را اتخاذ می کنند. اگر نظرات بیشتری با یکدیگر به اشتراک بگذارند ، آنها به احتمال زیاد نظر همسایه خود را اتخاذ می کنند.

توجه کنید که دقیقاً مانند Forest Fire و Game of Life نمونه های زندگی این مدل یک اتوماتیک سلولی است: یک عامل در هر موقعیت وجود دارد و عوامل هرگز حرکت نمی کنند ، یا پس از ایجاد مدل کشته می شوند. این بدان معنی است که یک نسخه بسیار اجرا کننده تر می تواند بدون هیچ عامل انجام شود ، اما فقط ماتریس هایی که ویژگی های مکانی را دقیقاً مانند بازی زندگی Conway نشان می دهند. با این حال ، برخی از کاربران ممکن است بیشتر این فرمول مبتنی بر عامل را بصری تر بدانند و از این رو این مثال از این رویکرد پیروی می کند.

استفاده از عوامل با استفاده از عوامل توطئه کننده # # تعامل # با استفاده از Cairomakie # برای توطئه استاتیک با استفاده از تصادفی با استفاده از Statsbase

ایجاد مدل

mutable struct Citizen stabilized::Bool opinion::Array prev_opinion::Array end function create_model(; dims = (10, 10), nopinions = 3, levels_per_opinion = 4, seed = 648) space = GridSpace(dims) properties = Dict(:nopinions =>nopinions) مدل = AgentBasedModel (شهروند ، فضا ، برنامه ریز = برنامه ریز. g ، 1: suble_per_opinion ، nopinions ، جایگزینی = false) ، sample (model. g ، 1: suble_per_opinion ، nopinions ، reption = false)) پایان مدل بازگشت
Create_model (عملکرد عمومی با 1 روش)

توابع پله

تابع Agent_Step! (عامل ، مدل) به روز رسانی_PREV_OPINION! (عامل ، مدل) Adopt! (عامل ، مدل) تثبیت! (عامل) پایان عملکرد به روز رسانی_PREV_OPINION! (عامل ، مدل) برای I در 1: (model. nopinions) Agent. prev_opinion [i] = Agent. Opinion [i] عملکرد پایان پایان اتخاذ! (عامل ، مدل) همسایه = نمونه (model. g ، جمع آوری (در نزدیکی_) (عامل ، مدل))) # به طور تصادفی یک همسایه را انتخاب کنید. همسایه_پینیون = مدل [همسایه] . OPINION # نظرات همسایه را جستجو کنید. Agent_opinions = Agent. Opinion # نظرات نماینده را جستجو کنید. nmatches = طول (تقاطع (همسایه_پین ها ، Agent_opinions)) # تعداد نظر همسایه و نماینده مشترک را حساب کنید. اگر nmatches<model.nopinions &&="" rand(model.g)="" <nmatches="" model.nopinions="" neighbor_opinion="sample(model.g," setdiff(neighbor_opinions,="" agent_opinions))="" #="" find="" which="" opinions="" the="" neighbor="" has="" that="" agent="" doesn't="" and="" randomly="" pick="" one="" for="" to="" adopt.="" agent_opinion="sample(model.g," setdiff(agent_opinions,="" neighbor_opinions))="" neighbour="" change.="" replace!(agent.opinion,="">همسایه_پینیون) # نظر نماینده را با نظر همسایه جایگزین کنید. عملکرد پایان پایان تثبیت! (عامل) اگر Agent. prev_opinion == Agent. Opinion Agent. Stabilized = واقعی عامل دیگر.
تثبیت کردن!(عملکرد عمومی با 1 روش)

اجرای مدل

ابتدا یک شرایط توقف ایجاد می کنیم ، که مدل را تا زمانی که همه عوامل تثبیت شوند ، اجرا می کند.

rununtil(model, s) = count(a >A. Stiledized ، Allagents (مدل)) == طول (موقعیت ها (مدل))
Rununtil (عملکرد عمومی با 1 روش)

سپس مدل خود را ایجاد می کنیم ، آن را اجرا می کنیم و اطلاعاتی را جمع می کنیم

مدل = CREATE_MODEL (nopinions = 3 ، shows_per_opinion = 4) AgentData ، _ = run! (مدل ، Agent_step! ، dummystep ، runUntil ، adata = [(: تثبیت شده ، شمارش)])
(157 × 2 DataFrame Row │ مرحله COUNT_STABILISED │ INT64 int64 ° 64 ° ° 0 0 2 │ 1 │ 0 2 │ 1 │ 0 2 │ 1 │ 0 2 │ 1 │ 0 2 │ 0 2 │ 0 2 │ 0 2 │ 0 2 │ 0│ 155 99 157 │ 156 100 142 ردیف حذف شده ، 0 × 0 dataframe)

توطئه

این طرح تعداد عوامل پایدار را نشان می دهد ، یعنی تعداد نمایندگانی که نظرات آنها از یک مرحله به مرحله دیگر تغییر نمی کند. توجه داشته باشید که تعداد عوامل پایدار می تواند قبل از همگرایی نهایی نوسان داشته باشد.

f = شکل (وضوح = (600 ، 400)) ax = f [1 ، 1] = محور (f ، xlabel = "generation" ، ylabel = "# از عوامل تثبیت شده" ، عنوان = "ثبات جمعیت" ،) خطوط!.

در اینجا یک انیمیشن وجود دارد که نشان دهنده تثبیت نظرات نماینده در طول زمان است.

AC (عامل) = Agent. Stibilized == true؟: بنفش :: مدل سبز = CREATE_MODEL (nopinions = 3 ، shows_per_opinion = 4) abmvideo ("tinion. mp4" ، model ، Agent_step! ؛ ac = ac ، am = '■' ، as = 20 ، framerate = 20 ، frames =60 ، عنوان = "گسترش نظر" ،)

این سند با نسخه Documenter. jl 0. 27. 23 روز شنبه 15 اکتبر 2022 تولید شد. با استفاده از نسخه جولیا 1. 8. 2.

اخبار رمز ارزها...
ما را در سایت اخبار رمز ارزها دنبال می کنید

برچسب : نویسنده : علی‌محمد افغانی بازدید : 28 تاريخ : پنجشنبه 19 مرداد 1402 ساعت: 21:41