دانلود پروژه معمای 8 با الگوریتم ژنتیک در سی شارپ

معمای 8 یا 8-puzzle
عزیزانی که در رشته های کامپیوتر و هوش مصنوعی تحصیل می کنند حتما با بازی معمای 8 آشنایی دارند. این بازی تقریبا پای ثابت اکثر معماها در آموزش ابتدایی هوش مصنوعی است.
این معما از یک جدول 3 در 3 تشکیل شده است که می شود 9 خانه.
حالا در این جدول اعداد یک تا هشت قرار می گیرند و همچنین یکی از خانه ها خالی است.این معما شامل حالت اولیه و حالت نهایی است که باید به آن برسیم.
حالت اولیه :
در این حالت اعداد می توانند به هر ترتیبی در جدول قرار گیرند.
حالت نهایی :
حالتی است که از ما می خواهند به آن برسیم و این کار با حرکت خانه خالی میسر می شود. و باید از طریق قوانین زیر به آن رسید:
1- اگر سمت چپ خانه خالي ، عدد باشد حرکت خانه خالي به سمت چپ
2- اگر سمت راست خانه خالي ، عدد باشد حرکت خانه خالي به سمت راست
3- اگر سمت بالا خانه خالي ، عدد باشد حرکت خانه خالي به سمت بالا
4- اگر سمت پايين خانه خالي ، عدد باشد حرکت خانه خالي به سمت پايين
الگوریتم های متعددی برای این کار وجود دارد که یکی از آنها الگوریتم ژنتیک است.که در واقع این برنامه توسط این الگوریتم هوش مصنوعی و زبان برنامه نویسی سی شارپ پیاده سازی شده است.
فایل این پروژه را در پایین صفحه پس از پرداخت اینترنتی دانلود کنید
حجم فایل :68 KB
اینم بخشی از سورس کد برنامه که در محیط ویژوال استودیو می توانید از آن بهره بگیرید:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
namespace _8
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int[,] first = new int[3, 3];
int[,] final = new int[3, 3];
int[, ,] temp = new int[3, 3, 10000];
string[] tempstaus = new string[10000];
int[,] realtemp = new int[3, 3];
int[,] qu = new int[3, 10000];
private void showtemp(int qun)
{
string s = "";
listBox2.Items.Clear();
for (int i = 0; i <= qun; i++)
{
for (int j = 0; j < 3; j++)
{
for (int k = 0; k < 3; k++)
{
s += temp[j, k, i].ToString() + " ";
}
listBox2.Items.Add(s);
s = "";
}
listBox2.Items.Add(tempstaus[i]);
listBox2.Items.Add("=====================");
}
}
private void insertff()
{
first[0, 0] = Convert.ToInt32(textBox1.Text);
first[0, 1] = Convert.ToInt32(textBox2.Text);
first[0, 2] = Convert.ToInt32(textBox3.Text);
first[1, 0] = Convert.ToInt32(textBox4.Text);
first[1, 1] = Convert.ToInt32(textBox5.Text);
first[1, 2] = Convert.ToInt32(textBox6.Text);
first[2, 0] = Convert.ToInt32(textBox7.Text);
first[2, 1] = Convert.ToInt32(textBox8.Text);
first[2, 2] = Convert.ToInt32(textBox9.Text);
final[0, 0] = Convert.ToInt32(textBox18.Text);
final[0, 1] = Convert.ToInt32(textBox17.Text);
final[0, 2] = Convert.ToInt32(textBox16.Text);
final[1, 0] = Convert.ToInt32(textBox15.Text);
final[1, 1] = Convert.ToInt32(textBox14.Text);
final[1, 2] = Convert.ToInt32(textBox13.Text);
final[2, 0] = Convert.ToInt32(textBox12.Text);
final[2, 1] = Convert.ToInt32(textBox11.Text);
final[2, 2] = Convert.ToInt32(textBox10.Text);
}
private int h1(int n)
{
int h = 0;
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
if (temp[i, j, n] != final[i, j])
{
if(temp[i, j, n] !=0)
h++;
}
int x=0;
foreach(char s in tempstaus[n])
if (s == '/')
x++;
return h+x ;
}
private void run()
{
#region first node
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
temp[i, j, 0] = first[i, j];
tempstaus[0] = "0";
int qun = 0;
qu[0, qun] = qun ;
qu[1, qun] = h1(qun);
qu[2, qun] = 0;
listBox1.Items.Add(qu[0, qun].ToString() + " h1= " + qu[1, qun].ToString() + " " + tempstaus[qun]);
Application.DoEvents();
#endregion
while (true)
{
int min=0;
int minmain = 0;
for (int i = 0; i <= qun ; i++)// peyda kardane avvalin onsore peymude nashode
{
if(qu[2,i]==0)
{
min = qu[1, i];
minmain = i;
break;
}
}
for (int i = 0; i <= qun; i++)// peyda kardane kuchiktarin onsor
{
if (qu[1, i] < min && qu[2, i]==0)
{
min = qu[1, i];
minmain = i;
}
}
// MessageBox.Show("min= " + min.ToString() + " minmain = " + minmain.ToString() + " qun=" + qun.ToString());
int r=0, c=0;
for (int i = 0; i < 3; i++)//peyda kardane khune khali
for (int j = 0; j < 3; j++)
if (temp[i, j, minmain] == 0)
{
r = i;
c = j;
break;
}
for (int i = 0; i < 3; i++) // enteghal tempe morede nazar be tempreal
for (int j = 0; j < 3; j++)
realtemp[i, j] = temp[i, j, minmain];
// MessageBox.Show(minmain.ToString());
qu[2, minmain] = 1;
/////////////////////////////////////////////tolide farzandan////////////////////////////////////////////////
showtemp(qun);
int x = 0;
foreach (char s in tempstaus[minmain ])
if (s == '/')
x++;
if (h1(minmain)-x == 0)
{
MessageBox.Show("found !!! masir = "+tempstaus[minmain].ToString());
break;
}
#region tolide farzand
//===================================check resltemp != jadd===================================
//-----------------r
if (c < 2)
{
for (int i = 0; i < 3; i++) // enteghal tempe morede nazar be tempreal
for (int j = 0; j < 3; j++)
realtemp[i, j] = temp[i, j, minmain];
qun++;
realtemp[r, c] = realtemp[r, c+1];
realtemp[r, c+ 1] = 0;
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
temp[i, j, qun] = realtemp[i, j];
tempstaus[qun] = tempstaus[minmain] + "/right";
qu[0, qun] = qun;
qu[1, qun] = h1(qun);
qu[2, qun] = 0;
listBox1.Items.Add(qu[0, qun].ToString() + " h1= " + qu[1, qun].ToString() + " " + tempstaus[qun]);
Application.DoEvents();
}
//-----------------down
if (r < 2)
{
for (int i = 0; i < 3; i++) // enteghal tempe morede nazar be tempreal
for (int j = 0; j < 3; j++)
realtemp[i, j] = temp[i, j, minmain];
qun++;
realtemp[r, c] = realtemp[r + 1, c];
realtemp[r + 1, c] = 0;
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
temp[i, j, qun] = realtemp[i, j];
tempstaus[qun] = tempstaus[minmain] + "/down";
qu[0, qun] = qun;
qu[1, qun] = h1(qun);
qu[2, qun] = 0;
listBox1.Items.Add(qu[0, qun].ToString() + " h1= " + qu[1, qun].ToString() + " " + tempstaus[qun]);
Application.DoEvents();
}
#endregion
}
}
private void button1_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
listBox2.Items.Clear();
insertff();
run();
}
private void button2_Click(object sender, EventArgs e)
{
System.Diagnostics.Process.Start("http://www.sourcecodes.ir");
}
}
}
خرید محصول
قیمت این محصول: 10000 تومانخرید محصول از طریق پرداخت اینترنتی
- ← پرداخت از طریق درگاه شاپرک با همه کارت های بانکی انجام خواهد شد .
- ← پس از پرداخت مبلغ به این صفحه ارجاع داده می شوید و میتوانید فایل مورد نظر را با لینک مستقیم دانلود کنید.
- ← لطفا در صورتی که مرورگر شما بروز نیست برای خرید ، آن را بروز کنید.
- ← عدم به روز بودن مرورگر باعث می شود، بجای صفحه درگاه بانک، خطای عدم تایید SSL را مشاهده نمایید.
- ← در صورت بروز مشکل ، در قسمت تماس با ما از تیم پشتیبانی کمک بگیرید.
خیلی عالی بود مرسی
میخواستم بدونم کپه کد برنامه هست؟ چون میخوام اولش اسمم رو اضافه کنم و بعد فایل ویژوالش رو برا استادم بفرستم که برنامه اش رو بخونه نمره بده. الان پول رو واریز کنم کد برنامه هم هست که اسمم رو بهش اضافه کنم اول برنامه بیاد؟
سلام ببخشید این کد فایل ورد یا تو ویژوال استودیو باید اجرا بشه ؟؟سرکاری که نیست یه وقت !! :|
دوستان کدی که در بالا قرار داده شده بخشی از کد اصلی برنامه است . سورس کد برنامه و فایل اجرایی برنامه را میتوانید پس از خرید دانلود کنید ، با تشکر
سلام و خسته نباشید امکانش هست در صورت خرید خط به خط کدها رو هم توضیح بدید ممنون میشم جواب بدید؟
با عرض سلام ، کدها به صورت واضح نوشته شده ، همچنین توضیحات کلی هم توی خود پست داده شده ، موفق باشید.
سلام من پروژه معمای 8باروش عمیق کننده تکراری رو میخوام خواهش میکنم اگ میتونین کمکم کنین
ایا سورس برنامه الگوریتم A*و جستجوی حریصانه همراه توضیح خط به خط توضیح کدها موجد هست؟
سلام ، خیر متاسفانه