X
تبلیغات
Aria Programming
قالب وبلاگ
Aria Programming
Artificial Intelligence 

مریم جان:

Abstract


Swarm intelligence is a research branch that models the population of interacting agents or swarms that are able to self-organize. An ant colony, a flock of birds or an immune system is a typical example of a swarm system. Bees’ swarming around their hive is another example of swarm intelligence. Artificial Bee Colony (ABC) Algorithm is an optimization algorithm based on the intelligent behaviour of honey bee swarm. In this work, ABC algorithm is used for optimizing multivariable functions and the results produced by ABC, Genetic Algorithm (GA), Particle Swarm Algorithm (PSO) and Particle Swarm Inspired Evolutionary Algorithm (PS-EA) have been compared. The results showed that ABC outperforms the other algorithms.

Keywords  Swarm intelligence - Artificial bee colony - Particle swarm optimization - Genetic algorithm - Particle swarm inspired evolutionary algorithm - Numerical function optimization

Fulltext Preview

Image of the first page of the fulltext document


برچسب‌ها: Swarm intelligence
[ پنجشنبه بیستم بهمن 1390 ] [ 20:18 ] [ kamal dogohar ]

مرجع دانش - سیویلیکا - بانک تخصصی مقالات کنفرانس ها

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

سیویلیکا، در سال ۱۳۸۴ آغاز به فعالیت نموده و در حال حاضر و مقالات کلیه رشته های علمی در چهار طبقه بندی اصلی «علوم فیزیکی و مهندسی»، «علوم سلامت»، «علوم زیستی» و «علوم اجتماعی» را ارایه می نماید.

سیویلیکا، در کتابخانه ملی جمهوری اسلامی ایران به شماره ISSN 5540 - 1735 ثبت شده و یکی از سایتهای زیر مجموعه شرکت توسعه فناوری ساختمان بوم سازه است.

واژه CIVIL از ریشه لاتین civilis می باشد که به «سکونت در شهرهای متمدن» در مقابل «زندگی روستایی» اشاره دارد. واژه CIVILIZATION به معنای تمدن نیز از همین ریشه مشتق می شود. نام CIVILICA با الهام از کلمه Britannica، بزرگترين دايره المعارف جهان، انتخاب شده و به صورت رسمی در اداره مالکیت صنعتی کشور ایران جهت استفاده انحصاری توسط شرکت توسعه فناوری ساختمان (مجری سایت) ثبت شده است.

جهت عضویت در سایت به صفحه عضویت مراجعه نمایید. در ضمن جهت آشنایی با نحوه ارائه خدمات سایت نسخه PDF راهنماي سايت را مطالعه و یا به صفحه راهنمای استفاده از سایت مراجعه نمایید.

با استفاده از گزينه "جستجو در مقالات" ميتوانيد به جستجوی مقاله مورد نظر بپردازید. نهايت تلاش ما بر اين بوده تا بتوانيم جستجوي قابل اعتمادي را داخل فيلدهاي مختلف مانند ‹عنوان مقاله›، ‹نويسندگان› ، ‹چكيده› ، ‹كلمات كليدي› و ‹سرفصل› هريك از مقالات در اختيار محققان و دانشجويان گرامي قرار دهيم و تمام مشکلات جستجوگرهای خارجی که با واژگان فارسی دارند را مرتفع نماییم.

www.civilica.com

[ پنجشنبه سیزدهم بهمن 1390 ] [ 23:11 ] [ kamal dogohar ]
ساناز جان

تو help مطلب بخوبي توضيح داده شده
اول اينکه دو تا RBF در مطلب هست
newrb و newrbe هر دو اصولش يکيه
ولي در newrbe به تعداد ورودي نرون مي سازه که قابليت تعميم کمي داره و اگه نمونه هاي آموزشتون زياد باشه از گزينه خارجه دومي newrb هست که به تعدادي نرون مي سازه که به خطاي دلخواه برسي
دستورشم اينه:
[net,tr] = newrb(P,T,goal,spread,MN,DF)
که
P
R x Q matrix of Q input vectors
T
S x Q matrix of Q target class vectors
goal
Mean squared error goal (default = 0.0)
spread
Spread of radial basis functions (default = 1.0)
MN
Maximum number of neurons (default is Q)
DF
Number of neurons to add between displays (default = 25)
توجه کن که تعداد نمونه هات Q است
اين هم يک مثال ساده از مطلب:

Here you design a radial basis network, given inputs P and targets T.

*

P = [1 2 3];
T = [2.0 4.1 5.9];
net = newrb(P,T);

The network is simulated for a new input.

*

P = 1.5;
Y = sim(net,P)
و اما راجع به Spread بايد طوري انتخاب شه که از فاصله ي بين نمونه هات بيشتر باشه و از کل بازه ات کمتر باشه.
مثلا اگر داري رو تصوير با مقادير greylevel بين 0 تا 255 کار مي کني از اونجا که فاصله نمونه ها 1 است بايد spread بزرگتر از 1 باشه
و از اونجا که کل بازه برابر با 255-0=255 است بايد حداکثر اون 255 باشه
متاسفانه تو مطلب مقدار همه Spread ها يکسانه پس بايد يه حلقه درست کني مقدار SPREAD رو بين 1 تا 255 تغيير بدي و هر بار خطا تو ذخيره کني
و بهترين Spread که کمترين خطا رو ايجاد مي کنه save کني
ايشالا که توضيحات مفيد بوده باشه چون خسته شدم :job:

[ پنجشنبه سیزدهم بهمن 1390 ] [ 22:51 ] [ kamal dogohar ]

یکی از ابزارهای پر استفاده و مهم هر زبان برنامه‌نویسی حلقه‌های تکرار هستند. وجود چنین ابزاری به برنامه‌نویس این امکان را می‌دهد که ساختارهای نیازمند به تکرار مجموعه دستورات (مانند جستجو، گزارش‌گیری، محاسبات، دریافت اطلاعات از کاربر یا فایل) را پیاده‌سازی کند.

هر زبانی عموما شامل چندین نوع حلقه تکرار است، که هر کدام به نحوی به برنامه‌نویس در نوشتن کدهای مختصر و با مفهوم کمک می‌کنند. در این فرصت با انواع حلقه‌های تکرار در زبان برنامه‌نویسی ++C آشنا می‌شویم.

حلقه تکرار while

این نوع حلقه، ساده‌ترین نوع حلقه تکرار در این زبان برنامه‌نویسی است. فرم کلی حلقه while به این صورت است:

while( شرط اجرای حلقه )

{

دستورات داخل حلقه

}

عبارت‌های داخل حلقه تا زمانی که شرط اجرای حلقه صحیح باشد اجرا خواهند شد. به عنوان مثال:

int n = 1;

while( n <= 10 )

{

cout << n << endl;

n++;

}

در این قطعه کد، ابتدا متغیر n با عدد یک مقداردهی می‌شود. سپس شرط n ≤ 10 بررسی می‌شود، که صحیح است. پس اجرای قطعه کد با دستورات داخل حلقه ادامه پیدا می‌کند. در این حلقه مقدار n چاپ شده و یک واحد به آن اضافه می‌شود. سپس کنترل برنامه به ابتدای حلقه باز می‌گردد. اگر شرط حلقه همچنان صحیح باشد، عبارت‌های داخل آن مجددا اجرا خواهند شد. در نتیجه قطعه کد فوق اعداد یک تا ده را به ترتیب در سطرهای جداگانه خروجی چاپ خواهد کرد.

تذکر: شرط اجرای حلقه قبل از ورود به آن نیز بررسی می‌شود. اگر این شرط از همان ابتدا نادرست باشد، دستورات داخل حلقه هیچ‌گاه اجرا نخواهند شد.

int n = 11;

while( n <= 10 )

{

cout << n << endl;

n++;

}

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

حلقه تکرار do-while

فرم کلی این حلقه به صورت زیر است:

do

{

دستورات داخل حلقه

}while( شرط اجرای حلقه );

تنها تفاوت این حلقه با حلقه while در این است که شرط اجرای حلقه do-while در انتهای آن بررسی می‌شود. به عنوان مثال:

int n = 1;

do

{

cout << n << endl;

n++;

}while( n <= 10 );

در این قطعه کد نیز همانند قطعه کد قبلی اعداد یک تا ده در خروجی چاپ می‌شوند.

تفاوت این دو حلقه در قطعه کد زیر - که برای حلقه while هم نوشته شده بود - آشکار می‌شود:

int n = 11;

do

{

cout << n << endl;

n++;

}while( n <= 10 );

همانگونه که عنوان شد، در حلقه while شرط اجرای دستورات داخل حلقه در ابتدای آن بررسی می‌شود. اما در حلقه do-while این شرط در انتهای آن قرار دارد. در نتیجه دستورات داخل حلقه قبل از رسیدن به شرط حلقه یک بار اجرا می‌شوند. یعنی قطعه کد فوق عدد 11 را چاپ کرده، و سپس با توجه به اینکه شرط n ≤ 10 نادرست است، کنترل برنامه به داخل حلقه باز نمی‌گردد.

به طور خلاصه می‌توان گفت: تفاوت حلقه do-while با حلقه while در این است که دستورات داخل حلقه do-while حداقل یک بار اجرا می‌شوند. بیشتر کاربردهای چنین حلقه‌ای هم به خاطر همین خاصیت آن است.

حلقه for

ساده‌ترین نوع تعریف حلقه for به شرح زیر است:

for( نمو ; شرط اجرای حلقه ; مقداردهی اولیه )

{

دستورات داخل حلقه

}

به مثال زیر توجه کنید:

int n;

for( n = 1 ; n <= 10 ; n++ )

{

cout << n << endl;

}

این حلقه نیز اعداد یک تا ده را در خروجی چاپ می‌کند. اما چگونه؟

با اجرای خط اول، متغیر n تعریف می‌شود. سپس بخش "مقداردهی اولیه" اجرا شده و مقدار n برابر عدد یک می‌شود. پس از آن "شرط اجرای حلقه" بررسی می‌شود. این شرط همانند شروط حلقه‌های قبلی عمل کرده و در صورت نادرست بودن کنترل برنامه از حلقه خارج می‌شود. اما اگر شرط صحیح باشد کنترل برنامه وارد حلقه شده و دستورات داخل آن اجرا می‌شوند. در اجرای بعدی بخش "مقداردهی اولیه" اجرا نمی‌شود. اما قبل از بررسی "شرط اجرای حلقه"، عملیات بخش "نمو" اجرا می‌شوند. همانگونه که شرح داده شد، این عملیات در اجرای اول و زمان ورود به حلقه اجرا نمی‌شوند. پس از نمو، شرط اجرای حلقه بررسی شده و به همین ترتیب اجرای برنامه ادامه پیدا می‌کند.

توجه داشته باشید که لزومی ندارد نمو همواره افزایش یک واحدی باشد:

for( n = 1 ; n <= 10; n += 1 )

for( n = 1 ; n <= 10; n += 2 )

for( n = 10 ; n >= 1; n -= 1 )

for( n = 10 ; n >= 1; n-- )

for( n = 1 ; n <= 100; n *= 2 )

for( n = 100 ; n >= 1; n /= 10 )

تمامی این عبارت‌ها صحیح هستند.

چنین ساختاری در اکثر زبان‌های برنامه‌نویسی- مانند پاسکال و بیسیک - وجود دارد. بزرگترین ویژگی این روش، کنترل شمارشی حلقه‌ها است. اکثر کاربردهای این حلقه به حالتی باز می‌گردد که قرار است مجموعه دستوراتی به تعداد معینی انجام شوند. به عنوان مثال تابع زیر مجموع عناصر یک آرایه از اعداد صحیح را محاسبه می‌کند:

int sum( int arr[ ], int size)

{

int i, sum = 0;

for( i = 0 ; i < size ; i++ )

{

sum += arr[ i ];

}

return sum;

}

همانطور که می‌دانید، اندیس آرایه‌ها در زبان ++C از صفر شروع می‌شوند. پس اگر تعداد عناصر آن size باشد، اندیس‌ها از صفر تا size - 1 خواهند بود. حلقه for فوق نیز با شروع از عدد صفر و افزایش یک واحد در هر اجرا، مجموع عناصر اندیس‌های صفر تا size - 1 را محاسبه می‌کند.

نکته: تعریف ارائه شده برای حلقه for می‌تواند با استفاده از حلقه while به صورت زیر شبیه‌سازی شود:

مقداردهی اولیه

while( شرط اجرای حلقه )

{

دستورات داخل حلقه

نمو

}

این شبیه‌سازی دو حسن دارد. اول اینکه عملکرد حلقه for و ترتیب اجرای بخش‌های سه‌گانه آن بهتر مشخص می‌شود. و دوم، ما را متوجه نکته مهمی می‌کند: لزومی ندارد بخش‌های سه‌گانه حلقه for از عبارت‌های محاسباتی تشکیل شده باشند. هر کدام از بخش‌های مقداردهی اولیه و نمو می‌توانند شامل هر دستور متعارفی از این زبان باشند. شرط اجرای حلقه هم می‌تواند هرگونه شرطی (نه لزوما محاسباتی) باشد. در ضمن توجه داشته باشید که وارد کردن اطلاعات هر کدام از این بخش‌ها اختیاری است. به مثال ساده زیر توجه کنید:

int n = 0;

for( ; n < 0 || n > 20 ; )

{

cout << "Enter a number between 0 and 20: ";

cin >> n;

}

چنین حلقه‌ای بدون مقداردهی اولیه و نمو می‌باشد. در صورتی که کاربر عددی بیرون از بازه صفر و بیست وارد کند، شرط ادامه حلقه صحیح بوده و برنامه مجددا با چاپ پیامی منتظر ورود اطلاعات خواهد ماند. البته حلقه‌هایی نظیر این حلقه بیشتر با while یا do-while پیاده‌سازی می‌شوند.

دستور break

این دستور برای خروج از داخل حلقه استفاده می‌شود. به عبارت دیگر، زمانی که کنترل برنامه در داخل حلقه به این دستور برسد، از آن حلقه خارج شده و به اولین خط بعد از دستورات حلقه منتقل می‌شود. مثال ساده‌ای از کاربرد این دستور را می‌توان در عملیات جستجوی خطی یافت.

تابع زیر در آرایه n عنصری arr (با عناصر متمایز) به دنبال خانه‌ای با محتوای x می‌گردد، و شماره اندیس این خانه را به عنوان نتیجه باز می‌گرداند:

int search( int[ ] arr, int n, int x )

{

int i, result = -1;

for( i = 0 ; i < n ; i++ )

{

if( arr[ i ] == x )

{

result = i;

}

}

return result;

}

روش کار تابع ساده است: با استفاده از حلقه تکرار for اندیس‌های صفر تا n - 1 برای یافتن عنصر مورد نظر پیمایش می‌شوند. اگر چنین عنصری یافت شود شماره اندیس خانه مربوطه در result قرار می‌گیرد. اگر یافت نشود، مقدار result همان منفی یک باقی می‌ماند که در تعریف آن مقداردهی شده است. چنین عددی هرگز نمی‌تواند شماره اندیس یک خانه آرایه در زبان ++C باشد. بنابراین روش خوبی برای نشان دادن عدم موفقیت عملیات جستجو است.

این تابع جستجو از لحاظ الگوریتمی ایرادی ندارد. اما می‌توان در پیاده‌سازی آن کمی دقیق‌تر بود. فرض کنید n برابر صد هزار بوده و عدد x در خانه دوم آرایه قرار داشته باشد. پس در تکرار دوم حلقه، عنصر مورد نظر یافت می‌شود. اما کنترل برنامه تا پایان یافتن بررسی تمامی صد هزار عنصر در داخل حلقه خواهد ماند. این بررسی کاملا بیهوده بوده و موجب اتلاف وقت خواهد شد. این مشکل را می‌توان با دستور break حل کرد:

int search( int[ ] arr, int n, int x )

{

int i, result = -1;

for( i = 0 ; i < n ; i++ )

{

if( arr[ i ] == x )

{

result = i;

break;

}

}

return result;

}

تفاوت این تابع با تابع قبلی تنها در دستور break است. با استفاده از این دستور، هرگاه شرط arr[ i ] == x صحیح باشد، پس از تخصیص مقدار i به result، دستور break اجرا می‌شود. اجرای این دستور موجب می‌شود که کنترل برنامه از حلقه خارج شده و به اولین خط بعد از آن منتقل شود. بنابراین اگر عنصر مورد نظر ما در خانه شماره دو قرار داشته باشد، دستورات داخل حلقه تنها سه بار (شماره‌ها از صفر شروع می‌شوند) تکرار می‌شوند.

دستور continue

این دستور برای ادامه کار حلقه از تکرار بعدی آن استفاده می‌شود. به عبارت دیگر، زمانی که کنترل برنامه در داخل حلقه به دستور continue می‌رسد، از تمامی دستورات بعدی حلقه تا انتهای آن صرف نظر شده و به شروع تکرار بعدی حلقه می‌رسد. اگر حلقه‌ مورد نظر، حلقه while یا do-while باشد، شرط ادامه حلقه بررسی می‌شود؛ اما اگر حلقه for باشد، ابتدا بخش نمو اجرا شده و سپس شرط حلقه بررسی می‌شود. به مثال ساده زیر توجه کنید:

int i, s = 0, p = 1;

for( i = 1 ; i <= 10 ; i++ )

{

if( i % 2 == 0 )

{

continue;

}

s += i;

p *= i;

}

در این حلقه اگر i عدد زوجی باشد، دستور continue اجرا شده و کنترل اجرای برنامه به ابتدای تکرار بعدی می‌رود. در نتیجه به مقدار i یک واحد افزوده شده و سپس شرط ادامه حلقه بررسی می‌شود.

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

حلقه‌هایی با شرط همواره صحیح

تمام حلقه‌های تکرار برای ادامه کار خود شرطی را بررسی می‌کنند. این شرط می‌تواند یک عبارت مقایسه‌ای ساده، ترکیب عبارات محاسباتی یا هر ساختار دیگری باشد. اگر این شرط به گونه‌ای باشد که همیشه صحیح باشد، حلقه‌هایی با شرط همواره صحیح به وجود می‌آیند. در این حلقه‌ها شرط ادامه حلقه همواره صحیح است. پس در حالت عادی حلقه هرگز خاتمه پیدا نمی‌کند! چنین حلقه‌هایی اگر به درستی کنترل نشوند به یک حلقه بدون توقف تبدیل می‌شوند که در اصطلاح به آنها حلقه بی‌نهایت گفته می‌شود. حلقه‌های بی‌نهایت گاهی در اثر اشتباهات منطقی در پیاده‌سازی الگوریتم بروز می‌دهند و باعث شکست اجرای صحیج برنامه می‌شوند. اما اگر در داخل حلقه و در جای مناسب از دستور break استفاده شود، چنین حلقه‌هایی نیز پایان‌پذیر خواهند بود:

int n;

while( 1 )

{

cout << "Enter a positive number:";

cin >> n;

if( n > 0 )

{

break;

}

}

شرط اجرای این حلقه عدد یک است. در زبان ++C هر عدد غیر صفر (صحیح یا اعشاری) معنی درست، و عدد صفر معنی نادرست می‌دهد. پس حلقه فوق یک حلقه با شرط صحیح است. در داخل حلقه از کاربر عدد مثبتی درخواست می‌شود. اگر کاربر صفر یا یک عدد منفی وارد کند شرط n > 0 صحیح نبوده و کنترل برنامه مجددا به ابتدای حلقه منتقل خواهد شد، تا عدد دیگری از کاربر دریافت کند. اما اگر شرط n > 0 صحیح باشد، دستور break اجرا شده و کنترل برنامه از حلقه خارج خواهد شد. یعنی تکرار حلقه تا زمانی ادامه پیدا می‌کند که کاربر عدد مثبتی وارد نکرده است. به محض اینکه اولین عدد مثبت وارد شد، کنترل برنامه نیز از حلقه خارج می‌شود. البته در این مثال خاص می‌توان حلقه فوق را به صورت زیر نیز پیاده‌سازی کرد:

int n;

do

{

cout << "Enter a positive number:";

cin >> n;

}while( n <= 0 );

اگر برای حلقه for شرطی را قائل نشویم، به مفهوم شرط همواره درست است:

int n;

for ( ; ; )

{

cout << "Enter a positive number:";

cin >> n;

if( n > 0 )

{

break;

}

}

توجه: علامت‌های سمیکالن (;) همیشه باید نوشته شوند.

حلقه‌های تو در تو

در زبان برنامه‌نویسی ++C امکان استفاده از حلقه‌های تکرار تو در تو نیز وجود دارد. قطعه کد زیر جدول ضرب اعداد 4 تا 9 را در خروجی چاپ می‌کند:

int i, j;

for( i = 4 ; i < 10 ; i++ )

{

for( j = 4 ; j < 10 ; j++ )

{

cout << i * j << " ";

}

cout << endl;

}

حلقه داخلی وظیفه چاپ اعداد هر سطر را دارد. پس از اتمام این حلقه، دستوری اجرا می‌شود که مکان‌نما را به ابتدای سطر بعدی می‌برد. پس در هر سطر یک ردیف از جدول ضرب چاپ می‌شود.

در پایان به دو نکته توجه داشته باشید:

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

2- عبارت‌های دستوری break ،while ،do ،for و continue جزو کلمات کلیدی زبان برنامه‌نویسی ++C هستند

[ شنبه هشتم بهمن 1390 ] [ 21:49 ] [ kamal dogohar ]

» محاسبه دترمینان ماتریس

دترمینان ماتریس مربعی - که به صورت | A | یا ( det( A نمایش داده می‌شود - یکی از مفاهیم مشهور جبر خطی است که کاربردهای بسیاری در علوم مختلف دارد. امکان محاسبه سریع دترمینان یک ماتریس با ابعاد بزرگ، بحث مهمی است، که در ادامه سه روش محاسباتی رایج و پیچیدگی زمانی آنها مرور خواهند شد.

طبق تعریف دترمینان، اگر اندازه ابعاد ماتریس مربعی یک باشد (n = 1)، دترمینان همان مقدار تک‌عضو آن است. یعنی:

محاسبه دترمینان ماتریس

اما اگر مرتبه ماتریس بزرگتر از یک باشد (n > 1)، دترمینان را به یکی از روش‌های زیر می‌توان محاسبه کرد.

ماتریس

بسط لاپلاس دترمینان

بسط لاپلاس (یا بسط همسازه‌ای) برای محاسبه دترمینان ماتریس مرتبه n، به فرم زیر است:

بسط لاپلاس دترمینان

یا

بسط لاپلاس دترمینان

که در حالت اول، بسط بر اساس سطر دلخواه i، و در حالت دوم بر اساس ستون دلخواه j صورت گرفته است. منظور از Aij (ماتریس کهاد)، ماتریسی است که از حذف سطر iام و ستون jام ماتریس اصلی به دست آمده است.

به عنوان مثال، اگر ماتریس مربعی A به صورت زیر تعریف شده باشد:

ماتریس

دترمینان آن، با بسط روی سطر اول، به این ترتیب محاسبه می‌شود:

بسط لاپلاس دترمینان

و با بسط روی ستون دوم:

بسط لاپلاس دترمینان

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

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

بسط لاپلاس دترمینان

پیچیدگی زمانی بسط لاپلاس

همانطور که از تعریف مشخص است، در روش بسط لاپلاس، محاسبه دترمینان یک ماتریس مرتبه n، به محاسبه دترمینان n ماتریس کهاد از مرتبه n - 1 شکسته می‌شود. اگر عمل اصلی محاسبات را اعمال ضرب و جمع در نظر گرفته، و ( T1( n تعداد این اعمال را برای محاسبه دترمینان ماتریس مرتبه n به روش بسط لاپلاس نشان دهد، می‌توان نوشت:

T1( n ) = n T1( n - 1 ) + n + n + n - 1 = n T1( n - 1 ) + 3n - 1 , T1( 1 ) = 0

( n T1( n - 1: تعداد اعمال لازم برای محاسبه زیر مسائل

n: تعداد ضرب‌های بین aij و توان‌های زوج یا فرد منفی یک

n: تعداد ضرب‌های بین aij و ( det( Aij

n - 1: تعداد جمع‌های لازم برای محاسبه نهایی

حل این رابطه بازگشتی نشان می‌دهد که ( T1( n از مرتبه ( !O( n است، که برای nهای بزرگ کارایی ندارد.


برچسب‌ها: » محاسبه دترمینان ماتریس
[ شنبه هشتم بهمن 1390 ] [ 21:46 ] [ kamal dogohar ]

 

حتما این اتفاق برایتان افتاده که وسط راه یادتان بیفتد که ای دل غافل، فراموش کرده اید از حساب کاربری جیمیل Sign Out شوید. خب! نگران نباشید. از راه دور هم می شود از جیمیل Sign Out شد.

 

از کامپیوتر دیگری وارد حساب جیمیل شوید. پایین صفحه گزینه هایی مانند تصویر زیر می بینید:

 

روی گزینه Details کلیک کنید. صفحه ای مانند زیر برایتان باز می شود. در این صفحه جزییات ورود و خروج به جیمیل و آی پی هایی که با آن به جیمیل وارد شدید مشخص می شود. روی گزینه Sign out all other sessions کلیک کنید. تا از تمام آی پی هایی که با آن به جیمیل وارد شده بودید Sign Out شوید.

gmail

درست است که از جیمیل Sign Out شدید ولی حواستان را بیشتر جمع کنید. ممکن است کسی در همین فاصله وارد حساب کابری تان بشود و ای میل هایتان را زیر و رو کند! ( مقاله "جیمیل توصیه می کند، گوش کنید" را مطالعه کنید.)

 

[ یکشنبه دوم بهمن 1390 ] [ 12:4 ] [ kamal dogohar ]

در مصاحبه ای که نشریه ویرد آمده است سوالاتی از وی شده که به طور خلاصه به پاسخ آن می پردازیم اما پیش از آن بد نبست به زندگی شخصی این فرد که جزء 10 نفری است که دنیای اینترنت را متحول کردند نگاهی داشته باشیم.

جیمی ویلز در آگوست 1966 در آلابامای امریکا به دنیا آمد، او هم اکنون 45 سال سن دارد پدرش در یک خواربارفروشی کار می‌کرد و مادرش به همراه مادربزرگش یک مدرسه کوچک شخصی را اداره می‌کردند که ویلز و در آن مدرسه تحصیلات ابتدایی خود را پشت سر گذاشت.

او از جمله افراد  تیزهوش و پر تلاش بود و موفق شد تحصیلات پیش از دانشگاه خود را تا سن شانزده سالگی به پایان رساند.

به گفته خود جیمی، هزینه تحصیل برای او و خانواده‌اش سنگین بود. اما همواره در خانواده او تعصب خاصی برای تحصیل وجود داشت و این باور که تحصیل، پایه یک زندگی خوب است سبب گشت تا خوانواده اصرار برای ادامه تحصیل وی داشته باشند.

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

اما پایان‌نامه دکترای را ننوشت و این مقطع را به پایان نرساند علت این امر را خستگی عنوان نموده است.  ویلز دو بار ازدواج کرد و از همسر دوم خود که از او جدا شده است، یک فرزند دختر دارد.

در سال 1996 نخستین پورتال وب وی با مشارکت با دو دوست راه‌اندازی شد و در سال 2000 مقدمات مالی آغاز پروژه‌ای تحت‌عنوان نوپدیا (Nupedia) را فراهم کرد که پایه‌ای برای ویکی‌پدیای فعلی شد. یک فلسفه‌دان به نام لری سنگر (Larry Sanger) نیز به‌عنوان سردبیر انتخب شد و در سال 2001 ویکی‌پدیای امروز متولد شد. چندی بعد در سال 2003 مؤسسه خیریه ویکی‌مدیا راه‌اندازی شد که توسعه و نگهداری ویکی‌پدیا هدف عمده آن به شمار می رفت. در سال 2006 نیز برای نخستین بار مجله تایمز، نام او را به‌دلیل پدیدآوردن بزرگ‌ترین دانش‌نامه جهان به‌عنوان یکی از تأثیرگذارترین افراد مطرح کرد. برخلاف ویکی‌پدیا، نوپدیا یک ویکی نبود و اطلاعات آن توسط کاربران تصحیح و تکمیل نمی‌شد و به دلایلی تا سال 2003 بیشتر دوام نیاورد و جای خود را به‌طور کل به ویکی‌پدیایی داد که امروز به نحوی محبوب همه کاربران جویای دانش در اینترنت است.

در مصاحبه هفته گذشته وی جیمی ولز بزرگترین چالش خود را در 10 سال گذشته مدیریت کردن توسعه و ساخت سازمانی عنوان نموده که پایه اصلی ویکی پدیا به حساب می آید که خود نیز به قدرتمندی ویکی پدیا است. بزرگ ترین شگفتی در این دوره 10 ساله را در کار خود مسافرت های خود می داند و می گوید:" هرگز فکر نمی کردم برای رسیدن به هدفم به این همه مسافرت و ملاقات با مردم مختلف نیاز داشته باشم." از آنجایی که ویکی پدیا منتقدان زیادی دارد و از صحت و سقم اطلاعات  خود باید شدیدا دفاع کند انتظار می رفت که جیمی ویلز تا حدودی از دفاع خسته شده باشد اما وی عنوان کرد:"من باور دارم مسئولیت ما برای بهتر شدن ویکی پدیا، در این خلاصه می شود که با شدیدترین انتقادات قانونی مواجه شده و به راهی برای بهبود دادن خود بیاندیشیم. در رابطه با مواجه شدن با انتقادات هم باید بگویم که امروزه بیشتر مردم دریافته اند ویکی پدیا بسیار خوب است اما بی عیب نیست و به مرور زمان در حال بهبود یافتن است. ثابت قدم ماندن انجمن ما برای بالاتر بردن کیفیت ویکی پدیا بسیار مهم است."

وی بر این باور است که این دانش نامه نسبت به دیگر مراجع در فضای دانشگاهی پذیرفته تر است

وی تمرکز خود را بر روی توسعه ویکی پدیا در جهانهای در حال توسعه تمرکز کرده ام، وی اضافه نمود:" قرار است اولین دفتر ویکی پدیا در خارج از ایالات متحده در سال جاری و در کشور هندوستان افتتاح شود و من برای این رویداد بسیار هیجان زده ام." وی ویکی پدیا را با تنوع زبانهای بیشتر، اطلاعات بیشتر و کیفیت بالاتر در 10 سال آینده تصور می کند.

 

منبع:

 http://www.gizmag.com/happy-10th-birthday-to-wikipedia-17567/17567/?utm_source=Gizmag+Subscribers&utm_campaign=afa2eeaa88-UA-2235360-4&utm_medium=email

 

تهیه و تنظیم: فائزه سیدخاموشی

بخش دانش و زندگی تبیان

[ یکشنبه دوم بهمن 1390 ] [ 11:55 ] [ kamal dogohar ]

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

زبان‌های هوشمند!

 هر چند زبان رایانه برای استفاده محاسبات و بررسی ریاضی روی اعداد طراحی شده بود، اما مهندسان این حوزه دریافتند که با رشته‌ای از بیت‌ها می‌توان اشیای دلخواه را نیز نمایش دهند. عملیات  روی این نمادها و سمبل ها می تواند به عنوان قوانینی در جهت ساخت یا ارتباط بین آنها به کار رود. این محاسبات منطقی به عنوان الگوریتم‌هایی که هر گونه اطلاعات را پردازش می‌کند، می‌تواند برای شبیه سازی هوش انسان به کار برود.

زبان‌های هوشمند!

در زمینه هوش مصنوعی با توجه به این که در بسیاری از زمینه‌های خاص گرایش وجود دارد، لذا روش‌های ذهنی نیز باید به وسیله تولید و آزمون (Generate and test) توسعه یابد. در برنامه نویسی Articial Intelligence ) AI) پیاده سازی در واقع جزئی از پردازش مشخصات مسأله است.

با توجه به مشخصات محاسبات رایانه‌ای و برنامه نویسی هوشمند 2 روش جدید برنامه نویسی به وجود می‌آید، روش برنامه نویسی تابعی و روش برنامه نویسی منطقی که هر دو بر مبنای ریاضیات و نظریه توابع بازگشتی طرح ریزی شده است.

اولین زبان برنامه نویسی AI که هنوز به طور  گسترده استفاده می‌شود، زبان برنامه نویسی LISP است که نظریه توابع ریاضی در اواخر دهه 1950 توسط جان مک کارتی به وجود آمد. اوایل دهه 1970 یک الگوی برنامه نویسی جدید به نام برنامه نویسی منطقی بر اساس محاسبات گزاره‌ای رایج شد. اولین و مهم‌ترین زبان برنامه نویسی منطقی  prologاست که توسط  آلن کولمرائور و فیلیپ راسل توسعه یافت. مسائل در prolog به صورت حقایق و قوانین منطقی برای استدلال و استنتاج بیان می شود.

 

برنامه نویسی تابعی

یک تابع ریاضی نگاشتی از یکی مجموعه (دامنه) به مجموعه دیگر (برد) است. تعریف یک تابع توصیفی این نگاشت است که یا به صراحت به وسیله شمارش یا به طور ضمنی به وسیله یک عبارت است.
زبان‌های هوشمند!

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

بنابراین، نتیجه ارزیابی یک عبارت تنها مقدار آن است و درواقع در مفهوم زبان های دستوری متغیر وجود ندارد و روش‌های اصلی کنترل توابع تکرار (بازگشتی) و به عبارتی شرطی است. برنامه نویسی تابعی خصوصیات توابع مرتبه بالا را پشتیبانی می‌کند. توابع مرتبه بالا تعریف تابعی است که اجازه‌ می دهد آرگومان ها یا مقدار بازگشتی توابع، مقدار خروجی خود تابع باشد.

LISP  اولین زبان برنامه نویسی تابعی است که با استفاده از لیست‌های پیوندی (Linked List) به عنوان ساختار مرکزی داده‌ها ابداع شد.

زبان‌های هوشمند!

اولین نگارش محیط برنامه نویسی LISP سال 1960 آماده شد که شامل یک مفسر، یک کامپایلر و مکانیزم تخصیص حافظه و برگشت حافظه پویا بود. یک سال بعد اولین زبان استاندارد با نام LISPY.S معرفی شد، پس از آن تعدادی از نسخه ها و محیط‌های برنامه نویسی LISP توسعه یافتند، مانند: InterLISP، MacLISP، FranzLISP و... . هرچند در بعضی از جزئیات خاص متفاوتند، ولی هسته اصلی ساختار جملات (Syntax) و ارتباط بین آنها (Semantic) اساساً یکسان است. پراستفاده‌ترین نسخه‌های LISP Common ، LISP و Schema هستند. در کنار LISP  تعدادی از زبان‌های برنامه نویسی تابعی دیگر نیز توسعه یافتند، برای مثال ML که برگرفته از  Language Meta است، یک زبان برنامه نویسی تابعی با دامنه ایستا (Static) است و تفاوت اصلی آن با زبان LISP در Syntaxk (گرامر) آن است. بیشتر شبیه زبان برنامه نویسی پاسکال است.

زبان‌های هوشمند!

 Haskell نیز دارای خاصیت گرامری مشابه با ML با دامنه ایستاست و تفاوت آن زبان ML در آن است که شامل هیچ گونه ویژگی دستوری نیست. لیست‌ها رایج‌ترین ساختار داده در Haskell هستند.

 

برنامه نویسی منطقی

دهه 1970 یک الگوی دیگر برای محاسبات در برنامه نویسی AI ارائه شد. Prolog یا همان   برنامه نویسی منطقی (Programming Logic) اولین زبان برنامه نویسی بر مبنای منطق است. اساس Prolog شامل یک روش برای مشخص کردن گزاره های محاسبات گزاره‌ای و تصمیمات محدود است. برنامه نویسی در Prolog شامل مشخصات حقیقی در مورد اشیا و ارتباط بین آنها و قوانینی است که این رتباطات را مشخص می‌کند. Prolog با برنامه نویسی تابعی در نحوه محاسبه نتیجه کاملا متفاوت است، زیرا نحوه محاسبه نتیجه را مشخص نمی‌کند، بلکه تنها ساختاری منطقی نتیجه را ارائه‌ می دهد.
زبان‌های هوشمند!

با استفاده از Prolog برنامه نویسی می‌تواند در یک سطح خیلی خلاصه و کاملا نزدیک به مشخصات یک مساله انجام گیرد. Prolog هنوز هم تهیه زبان و برنامه نویسی منطقی است.

Prolog در بیشتر زمینه‌های AI مانند سیستم‌های خبره، پردازش زبان طبیعی به طور موفقیت آمیزی

استفاده شده که امتحان خود را در زمینه های دیگری مانند سیستم های مدیریت پایگاه داده نیز پس داده جملات برنامه‌های Prolog شامل مجموعه ای از جملات به نام بند (Clause) هستند که برای نمایش  داده‌ها و برنامه ها استفاده می‌شوند.

زبان‌های هوشمند!

 یک واژه می‌تواند یک ثابت (نام های نمادین یا حروف بزرگ)، یک قیفر (نمادهایی که با حروف کوچک شروع می‌شوند مانند  (xیا یک تابع باشد. فرآیند استنتاج Prolog شامل 2 مولفه اصلی است:

 روش جستجو Search : برای جستجو میان  حقایق و قوانین در پایگاه دانش به کار می رود.

یکسان کننده Unier: برای تطبیق الگو و باز  گرداندن اتصالاتی که یک عبارت صحیح می سازد، کاربرد دارد. یکسان سازی در Prolog بسیار مهم و دارای  پیچیدگی‌های خاص خود است و معمولا روی 2 واژه به کار می رود و سعی می کند با ترکیب آن دو یک واژه جدید تشکیل بدهد. Prolog از یک روش جستجوی عمقی (Depth first search) استفاده می کند. که  عمقی این روش برای پیمایش فضای جستجو به کار می رود.


برچسب‌ها: زبان‌های هوش مصنوعی
[ یکشنبه دوم بهمن 1390 ] [ 11:25 ] [ kamal dogohar ]


سرعت اتصال به اینترنت شما از چیزی که باید باشد پایین‌تر است؟ فکر می کنید نرم افزار مشکوکی در حال تبادل اطلاعات شماست؟

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

روشی ساده اما کاربردی وجود دارد!

شما می‌توانید از دستور netstat در پنجره‌ی فرمان ویندوز7، ویستا و XP (حداقل سرویس پک 2) قابل استفاده کنید. این دستور لیستی از هرچیزی را که در آن لحظه به اینترنت متصل است به شما می‌دهد. ابتدا منوی استارت را باز کنید و در جعبه جستجو “cmd.exe”‌ را وارد کنید و اینتر بزنید. روی cmd.exe راست کلیک کرده و Run as administrator را انتخاب کنید.

سایتهایی که مخفیانه به آنها متصل می شوید

اگر باکس محاوره‌ای کنترل حساب کاربری نمایش داده شد روی Yes کلیک کنید. (توجه: بسته به تنظیمات حساب کاربری شما ممکن است این پیغام ظاهر نشود).

سایتهایی که مخفیانه به آنها متصل می شوید

در خط فرمان دستور زیر را وارد کرده و اینتر بزنید.

netstat -abf 5 > activity.txt

a: همه ی پورت کانکشن ها را نشان می دهد.

b: نشان می دهد چه برنامه ای به اینترنت متصل است.

f: نام کامل DNS برای هر گزینه اتصال را نشان می دهد و اینکه اتصال کجا ساخته شده است.

می توانید از 5 برای نمایش آدرس آی پی استفاده کنید. گزینه 5 هر پنج ثانیه برای ردیابی آسان تر، از تمام اتصالات نمونه برداری می کند و نتایج در یک فایل متنی ثبت می شوند.

 حدود دو دقیقه صبر کنید سپس برای توقف ثبت دیتا دکمه‌های Ctrl + C را فشار دهید.

سایتهایی که مخفیانه به آنها متصل می شوید

هنگامی که ثبت دیتا را به پایان رساندید می‌توانید به راحتی فایل متنی را در ویرایشگر دلخواه خود باز کرده و نتایج را ببینید یا اینکه دستور activity.txt  را در خط فرمان تایپ کرده تا نتایج در Notepad باز و نمایش داده شود.

نتایجی که خواهید دید لیستی از تمام پروسه‌های انجام شده در کامپیوتر شماست (مرورگرها، IM، برنامه های ایمیل و …) که در دو دقیقه آخر (تا وقتی که Ctrl + C را نزده اید) متصل بوده‌اند.

در این لیست همچنین می‌توانید پروسه‌های هر وب‌سایت را ببینید. اگر نام پروسه یا آدرس وب سایتی را دیدید و برایتان نا آشنا بود می‌توانید با تایپ ”‌ (نام پروسه مشکوک) چیست”‌ در گوگل در مورد آن اطلاعاتی کسب کنید. شاید آن یک تابع سیستمی باشد که نمی‌شناسید یا تابعی از برنامه‌های در حال اجرای خودتان باشد. به هر حال اگر شبیه به یک سایت بد و مشکوک بود می‌توانید برای خلاص شدن از آن دوباره از گوگل کمک بگیرید.

سایتهایی که مخفیانه به آنها متصل می شوید

 

این احتمال وجود دارد که کامپیوترتان آلوده به نرم افزارهای مخرب، جاسوس افزارها و… بوده و هنگامی که به اینترنت متصل می‌شوید به صورت مخفیانه کار خود را آغاز می‌کنند

منبع : www.tebyan.net



برچسب‌ها: فکر می کنید نرم افزار مشکوکی در حال تبادل اطلاعات
[ یکشنبه دوم بهمن 1390 ] [ 11:13 ] [ kamal dogohar ]

شبکه‌های عصبی مصنوعی (Artificial Neural Network - ANN) یا به زبان ساده‌تر شبکه‌های عصبی سیستم‌ها و روش‌های محاسباتی نوینی هستند برای یادگیری ماشینی، نمایش دانش، و در انتها اعمال دانش به دست آمده در جهت بیش‌بینی پاسخ‌های خروجی از سامانه‌های پیچیده. ایدهٔ اصلی این گونه شبکه‌ها (تا حدودی) الهام‌گرفته از شیوهٔ کارکرد سیستم عصبی زیستی، برای پردازش داده‌ها، و اطلاعات به منظور یادگیری و ایجاد دانش قرار دارد. عنصر کلیدی این ایده، ایجاد ساختارهایی جدید برای سامانهٔ پردازش اطلاعات است. این سیستم از شمار زیادی عناصر پردازشی فوق العاده بهم‌پیوسته با نام نورون تشکیل شده که برای حل یک مسأله با هم هماهنگ عمل می‌کنند و توسط سیناپس‎ها(ارتباطات الکترومغناطیسی) اطلاعات را منتقل می‎کنند. در این شبکه‌ها اگر یک سلول آسیب ببیند بقیه سلول‎ها می‌توانند نبود آنرا جبران کرده، و نیز در بازسازی آن سهیم باشند. این شبکه‌ها قادر به یادگیری‎اند. مثلا با اعمال سوزش به سلول‎های عصبی لامسه، سلول‎ها یاد می‌گیرند که به طرف جسم داغ نروند و با این الگوریتم سیستم می‌آموزد که خطای خود را اصلاح کند. یادگیری در این سیستم‎ها به صورت تطبیقی صورت می‌گیرد، یعنی با استفاده ازمثال‎ها وزن سیناپس‎ها به گونه‌ای تغییر می‌کند که در صورت دادن ورودی‎های جدید، سیستم پاسخ درستی تولید کند.

توافق دقیقی بر تعریف شبکه عصبی در میان محققان وجود ندارد؛ اما اغلب آنها موافقند که شبکه عصبی شامل شبکه‎ای از عناصر پردازش ساده (نورونها) است، که می‌تواند رفتار پیچیده کلی تعیین شده‎ای از ارتباط بین عناصر پردازش و پارامترهای عنصر را نمایش دهد. منبع اصلی و الهام بخش برای این تکنیک، از آزمایش سیستم مرکزی عصبی و نورونها (آکسون‎ها، شاخه‌های متعدد سلولهای عصبی و محلهای تماس دو عصب)نشأت گرفته‌است، که یکی از قابل توجه‎ترین عناصر پردازش اطلاعات سیستم عصبی را تشکیل می‎دهد. در یک مدل شبکه عصبی، گره‎های ساده (بطور گسترده «نورون»، «نئورونها»، "PE«ها (»عناصر پردازش«) یا»واحدها«) برای تشکیل شبکه‎ای از گره‎ها، به هم متصل شده اند—به همین دلیل به آن، اصطلاح»شبکه‎های عصبی" اطلاق می‎شود. در حالی که یک شبکه عصبی نباید به خودی خود سازگارپذیر باشد، استفاده عملی از آن بواسطه الگوریتمهایی امکان پذیر است، که جهت تغییر وزن ارتباطات در شبکه (به منظور تولید سیگنال موردنظر) طراحی شده باشد.

با استفاده از دانش برنامه‌نویسی رایانه می‌توان ساختار داده‌ای طراحی کرد که همانند یک نرون عمل نماید. سپس با ایجاد شبکه‌ای از این نورون‌های مصنوعی به هم پیوسته، ایجاد یک الگوریتم آموزشی برای شبکه و اعمال این الگوریتم به شبکه آن را آموزش داد.

این شبکه‌ها برای تخمین (Estimation) و تقریب (Approximation)کارایی بسیار بالایی از خود نشان داده‌اند. گستره کاربرد این مدل‌های ریاضی بر گرفته از عملکرد مغز انسان، بسیار وسیع می‌باشد که به عنوان چند نمونه کوچک می‌توان استفاده از این ابزار ریاضی در پردازش سیگنال‌های بیولوییکی، مخابراتی و الکترونیکی تا کمک در نجوم و فضا نوردی را نام برد.


اگر یک شبکه را هم‌ارز با یک گراف بدانیم، فرآیند آموزش شبکه تعیین نمودن وزن هر یال و bias اولیهٔ خواهد بود.

[ یکشنبه دوم بهمن 1390 ] [ 2:42 ] [ kamal dogohar ]
دستاوردهای جدید هوش مصنوعی به روایت تصویر
با پیروزی ابر‌رایانه واتسون ساخته آی‌بی‌ام بر رقبای انسانی خود در مسابقه جئوپاردی، هوش مصنوعی آخرین پیشرفت‌های خود را به رخ بشریت کشید! البته واتسون فقط بخش فوقانی لوب قدامی مغز مجازی به شمار می‌رود!
دانشمندان در حال آموزش روبات‌ها برای کشف سیارات ماورای زمین، درست کردن چای و قهوه برای شما هستند و خودروها سعی دارند یاد بگیرند که خودشان خود را برانند، رایانه‌ها تلاش می‌کنند برای تشخیص بیماری به پزشکان کمک کنند و سربازان بازی‌های ویدئویی برای شرکت در صحنه‌های مجازی جنگ تعلیم می‌بینند.
[ یکشنبه دوم بهمن 1390 ] [ 2:35 ] [ kamal dogohar ]

 

۱) آموزش متلب از سطح مبتدی تا پیشرفته

2) آموزش الگوریتم ژنتیک - تضمینی

3) آموزش شبکه های عصبی چند لایه MLP  - تضمینی

4) آموزش شبکه های عصبی RBF  - تضمینی

5) آموزش الگوریتم مورچه ها  - تضمینی

6) آموزش الگوریتم PSO یا الگوریتم پرندگان  - تضمینی

7) آموزش سیستم های ایمنی مصنوعی  - تضمینی

8) آموزش سیستم ها، منطق و کنترل فازی  - تضمینی

پس از گذراندن هر کدام از این دوره های آموزشی، شما مهارت و دانش کافی را برای انجام پروژه های هوش مصنوعی در متلب کسب خواهید کرد

[ یکشنبه دوم بهمن 1390 ] [ 2:18 ] [ kamal dogohar ]

عملکرد اولیه برنامه نویسی هوش مصنوعی ایجاد ساختار کنترلی مورد لزوم برای محاسبه سمبولیک است زبانهای برنامه نویسی LISP,PROLOG علاوه بر اینکه از مهمترین زبانهای مورد استفاده در هوش مصنوعی هستند خصوصیات نحوی ومعنایی انها باعث شده که انها شیوه‌ها و راه حل‌های قوی برای حل مسئله ارایه کنند. تاثیر قابل توجه این زبانها بر روی توسعه AI از جمله توانایی‌های انها بعنوان «ابزارهای فکرکردن» است. در حقیقت همانطور که هوش مصنوعی مراحل رشد خود را طی می‌کند زبانهای LISP ,PROLOG بیشتر مطرح می‌شوند این زبانها کار خود را در محدوده توسعه سیستم‌های AIدر صنعت ودانشگاه‌ها دنبال می‌کنند و طبیعتاً اطلاعات در مورد این زبانها بعنوان بخشی از مهارت هر برنامه نویس AIاست.

  • PROLOG: یک زبان برنامه نویسی منطقی است. یک برنامه منطقی دارای یک سری ویژگیهای قانون ومنطق است. در حقیقت خود این نام از برنامه نویسی PROدر LOGIC می‌آید. در این زبان یک مفسر برنامه را بر اساس یک منطق می‌نویسد.ایده استفاده توصیفی محاسبهٔ اولیه برای بیان خصوصیات حل مسئله یکی از محوریتهای مشارکت PROLOG است که برای علم کامپیوتر بطور کلی و بطور اخص برای زبان برنامه نویسی هوشمند مورد استفاده قرار می‌گیرند.
  • LISP: اصولاً LISP یک زبان کامل است که دارای عملکردها و لیست‌های لازمه برای توصیف عملکردهای جدید، تشخیص تناسب و ارزیابی معانی است. LISP به برنامه نویس قدرت کامل برای اتصال به ساختارهای اطلاعاتی را می‌دهد گر چه LISP یکی از قدیمی‌ترین ترین زبانهای محاسباتی است که هنوز فعال است ولی دقت کافی در برنامه نویسی وطراحی توسعه باعث شده که این یک زبان برنامه نویسی فعال باقی بماند.

در حقیقت این مدل برنامه نویسی طوری موثر بوده‌است که تعدادی از دیگر زبانها براساس عملکرد برنامه نویسی آن بنا شده‌اند: مثل FP ،ML ،SCHEME

یکی از مهمترین برنامه‌های مرتبط با LISP برنامه SCHEME است که یک تفکر دوباره در باره زبان در آن وجود دارد که بوسیله توسعه AI وبرای آموزش واصول علم کامپیوتر مورد استفاده قرار می‌گیرد.


برچسب‌ها: تکنیک‌ها وزبان‌های برنامه نویسی هوش مصنوعی
[ یکشنبه دوم بهمن 1390 ] [ 2:0 ] [ kamal dogohar ]

هوش مصنوعی یا هوش ماشینی را باید عرصهٔ پهناور تلاقی و ملاقات بسیاری از دانش‌ها، علوم، و فنون قدیم و جدید دانست. ریشه‌ها و ایده‌های اصلی آن را باید در فلسفه، زبان‌شناسی، ریاضیات، روان‌شناسی، نورولوژی، و فیزیولوژی نشان گرفت و شاخه‌ها، فروع، و کاربردهای گوناگون و فراوان آن را در علوم رایانه، علوم مهندسی، علوم زیست‌شناسی و پزشکی، علوم ارتباطات و زمینه‌های بسیار دیگر.

هوش مصنوعی به هوشی که یک ماشین از خود نشان می‌دهد و یا به دانشی در کامپیوتر که سعی در ایجاد آن دارد گفته می‌شود. بیشتر نوشته‌ها و مقاله‌های مربوط به هوش مصنوعی آن را «دانش شناخت و طراحی عامل‌های هوشمند»[۱] تعریف کرده‌اند. یک عامل هوشمند سیستمی است که با شناخت محیط اطراف خود، شانس موفقیت خود را بالا می‌برد.[۲] جان مکارتی که واژه هوش مصنوعی را در سال ۱۹۵۶ استفاده نمود، آن را «دانش و مهندسی ساخت ماشین‌های هوشمند» تعریف کرده‌است. تحقیقات و جستجوهایی انجام شده برای رسیدن به ساخت چنین ماشین‌هایی مرتبط با بسیاری از رشته‌های علمی دیگر است، مانند علوم رایانه، روان‌شناسی، فلسفه، عصب شناسی، علوم ادراکی، تئوری کنترل، احتمالات، بهینه سازی و منطق.


برچسب‌ها: تعریفی از هوش مصنوعی
[ یکشنبه دوم بهمن 1390 ] [ 1:54 ] [ kamal dogohar ]
هر سوالی در رابطه با کنکور ارشد کامپیوتر دارید میتوانید بپرسید ( رتبه های قبولی و ... )

[ یکشنبه دوم بهمن 1390 ] [ 0:8 ] [ kamal dogohar ]
سلام به همه ی افرادی که از وبلاگ بنده دیدن میکنید.

امیدوارم با راه اندازی این وبلاگ بتوانم به شما کمک کنم

وبلاگ در مورد رشته ی هوش مصنوعی است (از قبیل برنامه نویسی های مریوط به این رشته و کنکور ارشد هوش مصنوعی و تمامیه سوالهای مربوط به رشته ی کامپیوتر)

[ شنبه یکم بهمن 1390 ] [ 23:50 ] [ kamal dogohar ]
.: Weblog Themes By Pichak :.

درباره وبلاگ

امکانات وب

  • دانلود فیلم
  • قالب وبلاگ