Artificial Intelligence - هوش مصنوعی  
انجمن را در گوگل محبوب کنيد :

بازگشت   Artificial Intelligence - هوش مصنوعی > مقدمات هوش مصنوعی > حل مسائل معروف هوش مصنوعي


 
تبليغات سايت
Iranian Association for the Advancement of Artificial Intelligence
ارسال تاپيک جديد  پاسخ
 
LinkBack ابزارهاي تاپيک نحوه نمايش
قديمي ۰۱-۱۸-۱۳۸۹, ۰۱:۳۳ بعد از ظهر   #1 (لینک دائم)
Administrator
 
آواتار Astaraki
 
تاريخ عضويت: خرداد ۱۳۸۷
محل سكونت: تهران-کرج!
پست ها: 3,465
تشكرها: 754
16,337 تشكر در 3,127 پست
My Mood: Mehrabon
ارسال پيغام Yahoo به Astaraki
Wink

Solving n-Queen problem using global parallel genetic algorithm
فايل ضميمه
نوع فايل: pdf eurocon2003.pdf (44.6 كيلو بايت, 1188 نمايش)
Astaraki آفلاين است   پاسخ با نقل قول
از Astaraki تشكر كرده اند:
ehsan_teimouri (۰۲-۲۶-۱۳۹۲), gharli (۱۲-۱۰-۱۳۸۹), persiandata (۰۱-۱۸-۱۳۸۹), saeed hg (۰۳-۳-۱۳۹۰), secondwarrior (۰۳-۳۱-۱۳۹۰)

  #ADS
نشان دهنده تبلیغات
تبليغگر
 
 
 
تاريخ عضويت: -
محل سكونت: -
سن: 2010
پست ها: -
 

نشان دهنده تبلیغات is online  
قديمي ۰۱-۱۸-۱۳۸۹, ۰۸:۰۹ بعد از ظهر   #2 (لینک دائم)
عضو جدید
 
آواتار bagheri
 
تاريخ عضويت: اسفند ۱۳۸۸
پست ها: 3
تشكرها: 0
1 تشكر در 1 پست
پيش فرض کد مساله هشت وزیر یا هشت پازل بوسیله الگوریتم زنتیک

با سلام
من به کد این مساله با روش زنتیک لازم دارم
یعنی حتما باید با استفاده از توابع ترکیب وجهش در الگوریتم ژنتیک این مساله را حل کنیم
لطفا اگر کسی کدشو داره بذاره ممنون میشم
bagheri آفلاين است   پاسخ با نقل قول
از bagheri تشكر كرده است:
saeed hg (۰۳-۳-۱۳۹۰)
قديمي ۰۱-۱۸-۱۳۸۹, ۰۸:۳۴ بعد از ظهر   #3 (لینک دائم)
Administrator
 
آواتار Astaraki
 
تاريخ عضويت: خرداد ۱۳۸۷
محل سكونت: تهران-کرج!
پست ها: 3,465
تشكرها: 754
16,337 تشكر در 3,127 پست
My Mood: Mehrabon
ارسال پيغام Yahoo به Astaraki
Wink

در اين تاپيک که کد هم قرار داره!
queens_ga

Eight Queens Puzzle:
A genetic algorithm implementation using Java
فايل ضميمه
نوع فايل: rar EightQueenGA.rar (3.1 كيلو بايت, 832 نمايش)
Astaraki آفلاين است   پاسخ با نقل قول
از Astaraki تشكر كرده اند:
arefbhrn (۰۳-۲۵-۱۳۹۵), elenorgt500 (۰۹-۳۰-۱۳۹۱), saeed hg (۰۳-۳-۱۳۹۰), secondwarrior (۰۳-۳۱-۱۳۹۰)
قديمي ۰۳-۹-۱۳۸۹, ۰۶:۱۱ بعد از ظهر   #4 (لینک دائم)
Administrator
 
آواتار Astaraki
 
تاريخ عضويت: خرداد ۱۳۸۷
محل سكونت: تهران-کرج!
پست ها: 3,465
تشكرها: 754
16,337 تشكر در 3,127 پست
My Mood: Mehrabon
ارسال پيغام Yahoo به Astaraki
Wink

اینم 8 وزیر با الگوریتم ژنتیک که با ++c نوشته شده

با تشکر از مدير گرامي alijy
فايل ضميمه
نوع فايل: zip 8queen_scr.zip (2.3 كيلو بايت, 1175 نمايش)
Astaraki آفلاين است   پاسخ با نقل قول
از Astaraki تشكر كرده اند:
arefbhrn (۰۳-۲۵-۱۳۹۵), djmorteza (۰۲-۲۹-۱۳۹۲), mari-nafas (۰۹-۲۹-۱۳۹۳), nana72 (۰۳-۱۸-۱۳۹۴), programset (۰۱-۲۹-۱۳۹۱), saeed hg (۰۳-۳-۱۳۹۰), tohidsabunchi (۰۸-۱۰-۱۳۸۹)
قديمي ۰۴-۲۵-۱۳۸۹, ۰۳:۰۳ بعد از ظهر   #5 (لینک دائم)
عضو جدید
 
آواتار sarakh
 
تاريخ عضويت: تير ۱۳۸۹
پست ها: 1
تشكرها: 0
0 تشكر در 0 پست
پيش فرض

سلام.دوستان عزیز بهتر نبود به جای اینکه این قدر کد برنامه رو بزارین, توضیح در مورد الگوریتم می دادین؟؟؟؟
من که از کدهای نوشته شده چیزی نفهمیدم.توضیح بازگشت به عقب رو هم خوندم ولی اینو خودمم می دونستم.اگر بیشتر در مورد الگوریتم بازگشت به عقب برای حل این مسئله راهنماییم کنین ممنون می شم.اینکه برای حل مسئله چه کارایی باید انجام بدم.
ممنون.
sarakh آفلاين است   پاسخ با نقل قول
قديمي ۰۹-۱۹-۱۳۸۹, ۰۱:۴۶ قبل از ظهر   #6 (لینک دائم)
عضو جدید
 
آواتار asmagan
 
تاريخ عضويت: آذر ۱۳۸۹
پست ها: 2
تشكرها: 0
0 تشكر در 0 پست
Cool

واي كاش يكي پيدا ميشد و 8 وزير را با زبان جاوا يا سي شارپ با الگوريتم هاي blind و hurrstic search رو به من مي داد
asmagan آفلاين است   پاسخ با نقل قول
قديمي ۰۹-۱۹-۱۳۸۹, ۰۴:۲۱ بعد از ظهر   #7 (لینک دائم)
Administrator
 
آواتار Astaraki
 
تاريخ عضويت: خرداد ۱۳۸۷
محل سكونت: تهران-کرج!
پست ها: 3,465
تشكرها: 754
16,337 تشكر در 3,127 پست
My Mood: Mehrabon
ارسال پيغام Yahoo به Astaraki
Wink

سورس 8 وزیر

كد:
 
#include <iostream.h>
#include<conio.h>

int test( int i , int j );
int board[8][8] = { 0 };
int main()
{
 for ( int a = 0 ; a < 8 ; a++ )
  if(test( 0 , a ))
   for ( int b = 0 ; b < 8 ; b++ )
    if(test( 1 , b ))
     for ( int c = 0 ; c < 8 ; c++ )
      if(test( 2 , c ))
       for ( int d = 0 ; d < 8 ; d++ )
        if(test( 3 , d ))
         for ( int e = 0 ; e < 8 ; e++ )
          if(test( 4 , e ))
           for ( int f = 0 ; f < 8 ; f++ )
            if(test( 5 , f ))
             for ( int g = 0 ; g < 8 ; g++ )
              if(test( 6 , g ))
               for ( int h = 0 ; h < 8 ; h++ )
                if(test( 7 , h )) {
                 for ( int m = 0 ; m < 8 ; m++ ) {
                  for ( int n = 0 ; n < 8 ; n++ )
                   cout << board[m][n] << " ";
                  cout << endl;
                 }
                 cout << endl; 
                 getch();
                }
 cout << endl;
 return 0;
}
int test( int i , int j )
{
 for ( int a = 0 ; a < 8 ; a++ )
  board[i][a] = 0;
 for ( int b = 1 ; b < 8 ; b++ )
  if ( i - b >= 0 ) {
   if ( board[i - b][j] != 0 )
    return 0;
   if ( j - b >= 0 )
    if ( board[i - b][j - b] != 0 )
     return 0;
   if ( j + b <= 7 )
    if ( board[i - b][j + b] != 0 )
     return 0;
  }
 board[i][j] = 1;
 return 1;
}
Astaraki آفلاين است   پاسخ با نقل قول
از Astaraki تشكر كرده اند:
hamidialison (۰۸-۲۹-۱۳۹۲), Musketeer (۰۹-۲۴-۱۳۹۰)
قديمي ۰۹-۱۹-۱۳۸۹, ۰۴:۲۴ بعد از ظهر   #8 (لینک دائم)
Administrator
 
آواتار Astaraki
 
تاريخ عضويت: خرداد ۱۳۸۷
محل سكونت: تهران-کرج!
پست ها: 3,465
تشكرها: 754
16,337 تشكر در 3,127 پست
My Mood: Mehrabon
ارسال پيغام Yahoo به Astaraki
Smile

برنامه ی زیر که به صورت بازگشتی و با روش BackTrack نوشته شده رو میشه به N وزیر به راحتی تعمیم داد:

كد:
 
#include <iostream>
#include <stdlib.h>
#include<conio.h>
using namespace std;
#define N 8
bool mark[N];
int a[N];
void bt (int n)
{
if (n == N)
{
 for (int i = 0; i < N; i++, cout << endl)
  for (int j = 0; j < N; j++)
   if (a[i] == j)
    cout << "1 ";
   else
    cout << "0 ";
 cout << endl;
 getch ();
}
else
{
 for (int i = 0; i < N; i++)
  if (!mark[i])
  {
   bool b = true;
   for (int j = 0; j < n; j++)
    if (n - j == abs(i - a[j]))
     b = false;
   if (b)
   {
    mark[i] = true;
    a[n] = i;
    bt(n + 1);
    mark[i] = false;
   }
  }
}
}
int main ()
{
bt(0);
}
Astaraki آفلاين است   پاسخ با نقل قول
قديمي ۰۹-۱۹-۱۳۸۹, ۰۴:۲۷ بعد از ظهر   #9 (لینک دائم)
Administrator
 
آواتار Astaraki
 
تاريخ عضويت: خرداد ۱۳۸۷
محل سكونت: تهران-کرج!
پست ها: 3,465
تشكرها: 754
16,337 تشكر در 3,127 پست
My Mood: Mehrabon
ارسال پيغام Yahoo به Astaraki
Red face

غیر بازگشتی:

كد:
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
namespace reversi
{
classeightQueen {
privateBoolean [,] board;
privateBoolean[, ,] memory;
privatestaticInt32 BoardNO = 0;
 
publicBoolean[, ,] calculate()
{
board = newBoolean [8,8];
memory = newBoolean[8, 8, 92];
 
for ( int a = 0 ; a < 8 ; a++ )
if(test( 0 , a ))
for ( int b = 0 ; b < 8 ; b++ )
if(test( 1 , b ))
for ( int c = 0 ; c < 8 ; c++ )
if(test( 2 , c ))
for ( int d = 0 ; d < 8 ; d++ )
if(test( 3 , d ))
for ( int e = 0 ; e < 8 ; e++ )
if(test( 4 , e ))
for ( int f = 0 ; f < 8 ; f++ )
if(test( 5 , f ))
for ( int g = 0 ; g < 8 ; g++ )
if(test( 6 , g ))
for ( int h = 0 ; h < 8 ; h++ )
if (test(7, h))
{
 
for ( int m = 0 ; m < 8 ; m++ ) {
for (int n = 0; n < 8; n++)
memory[m, n, BoardNO] = board[m,n];
}
BoardNO++;
}
return memory;
}
Boolean test( int i , int j )
{
for ( int a = 0 ; a < 8 ; a++ )
board[i, a] = false;
for ( int b = 1 ; b < 8 ; b++ )
if ( i - b >= 0 ) {
if ( board[i - b,j] != false )
returnfalse;
if ( j - b >= 0 )
if (board[i - b, j - b] != false)
returnfalse;
if ( j + b <= 7 )
if (board[i - b, j + b] != false)
returnfalse ;
}
board[i,j]= true ;
returntrue ;
}
}
}

بازگشتی: ( که در اين لينک هم قرار داده شده)

كد:
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
//calculate
namespace reversi
{
classeightQueen{
privateint [] board;
privateBoolean[,,] memory;
privateint number=0;
 
/**
* Each element of the board[] represents a row and the value of each element
* specifies the column number where the queen is placed on that particular row.
* This method is used to retrieve the board array.
*
* @return
*/
publicBoolean [,,] getBoard() {
return memory;
}
public eightQueen()
{
 
board = newint[8];
memory = newBoolean[8, 8, 93];
this.place(0);
}
/**
* Place a queen in a row and check its validity. If valid then place it in the
* next row else backtrack.
*
* @param row
*/
publicvoid place(int row) {
if (row == 8) {
 
for (int r = 0; r< 8; r++)
{
for (int c = 0; c < 8; c++)
{
if (board[r] == c){
memory[r, c, number] = true;
// MessageBox.Show(r.ToString()+"/"+c.ToString()+"/"+number.ToString());
}else
memory[r, c, number] = false;
}
}
this.number++;
return;
} else {
for (int i = 0; i < 8; i++) {
board[row] = i;
if (valid(row)) place(row + 1);
}
}
}
/**
* Checks the validity of a position. If valid returns true else returns false.
*
* @param row
* @return
*/
publicBoolean valid(int row) {
for (int i = 0; i < row; i++) {
if ((board[i] == board[row]) || Math.Abs(board[row] - board[i]) == (row - i)) {
returnfalse;
}
}
returntrue;
}
}}


کد طراحی هر دوی آن به یک صورت است:

كد:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
 
namespace reversi
{
publicpartialclassReversi : Form
{
private System.Windows.Forms.Panel squaresPanel;
private System.Windows.Forms.Panel boardPanel;
private System.Windows.Forms.Label cornerLabel;
privateLabel[] colLabels, rowLabels;
privateSquareControl[,] squareControls;
// For converting column numbers to letters and vice versa.
privatestaticString alpha = "ABCDEFGH";
// The game board.
privateBoard board;
 
privateeightQueen queen;
privateBoolean[, ,] memory;
privateInt32 moveNumber;
// Used to track which player made the last move.
// Defines a thread for running the computer move look ahead.
 
public Reversi()
{
InitializeComponent();
// Create the game board.
this.board = newBoard();
 
#region bord designer
// Create the controls for each square, add them to the squares
// panel and set up event handling.
this.squareControls = newSquareControl[8, 8];
int i, j;
for (i = 0; i < 8; i++)
for (j = 0; j < 8; j++)
{
// Create it.
this.squareControls[i, j] = newSquareControl(i, j);
// Position it.
this.squareControls[i, j].Left = j * this.squareControls[i, j].Width;
this.squareControls[i, j].Top = i * this.squareControls[i, j].Height;
// Add it.
this.squaresPanel.Controls.Add(this.squareControls[i, j]);
// Set up event handling for it.
this.squareControls[i, j].Click += newEventHandler(this.SquareControl_Click);
 
}
// Create the column and row labels.
this.colLabels = newLabel[8];
for (i = 0; i < 8; i++)
{
// Create a column label.
this.colLabels[i] = newLabel();
// Set its display properties.
this.colLabels[i].Text = Reversi.alpha.Substring(i, 1);
this.colLabels[i].BackColor = this.cornerLabel.BackColor;
this.colLabels[i].ForeColor = this.cornerLabel.ForeColor;
this.colLabels[i].TextAlign = ContentAlignment.MiddleCenter;
// Set its size and position.
this.colLabels[i].Width = this.squareControls[0, 0].Width;
this.colLabels[i].Height = this.cornerLabel.Height;
this.colLabels[i].Left = this.cornerLabel.Width + i * this.colLabels[0].Width;
this.colLabels[i].Top = 0;
// Add it.
this.boardPanel.Controls.Add(this.colLabels[i]);
}
this.rowLabels = newLabel[8];
for (i = 0; i < 8; i++)
{
// Create a row label.
this.rowLabels[i] = newLabel();
// Set its display properties.
this.rowLabels[i].Text = (i + 1).ToString();
this.rowLabels[i].BackColor = this.cornerLabel.BackColor;
this.rowLabels[i].ForeColor = this.cornerLabel.ForeColor;
this.rowLabels[i].TextAlign = ContentAlignment.MiddleCenter;
// Set its size and position.
this.rowLabels[i].Width = this.cornerLabel.Height;
this.rowLabels[i].Height = this.squareControls[0, 0].Height;
this.rowLabels[i].Left = 0;
this.rowLabels[i].Top = this.cornerLabel.Height + i * this.rowLabels[0].Width * 2;
 
// Add it.
this.boardPanel.Controls.Add(this.rowLabels[i]);
}
#endregion
// Initialize the game state.
 
queen = neweightQueen();
memory = queen.getBoard();
}
privatevoid UpdateBoardDisplay()
{
if (moveNumber < 93&&moveNumber>-1)
{
this.moveNumber++;
// Map the current game board to the square controls.
SquareControl squareControl;
for (int row = 0; row < 8; row++)
{
for (int col = 0; col < 8; col++)
{
squareControl = (SquareControl)this.squaresPanel.Controls[row * 8 + col];
if (memory[row, col, this.moveNumber] == true)
{
 
squareControl.Contents = 1;
}
else squareControl.Contents = 0;
}
}
// Redraw the board.
this.squaresPanel.Refresh();
}
}
privatevoid SquareControl_Click(object sender, System.EventArgs e)
{
 
this.UpdateBoardDisplay();
}
}
}

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

دیگر الگوریتم های ممکن را می توانید در همین فارم پیدا کنید.
فايل ضميمه
نوع فايل: zip non_Recessive_eight_queen.zip (63.9 كيلو بايت, 374 نمايش)
نوع فايل: zip Recessive_eight_queen.zip (59.6 كيلو بايت, 18 نمايش)

ويرايش شده توسط Astaraki; ۰۹-۱۹-۱۳۸۹ در ساعت ۰۴:۲۹ بعد از ظهر
Astaraki آفلاين است   پاسخ با نقل قول
قديمي ۰۹-۱۹-۱۳۸۹, ۰۴:۳۸ بعد از ظهر   #10 (لینک دائم)
Administrator
 
آواتار Astaraki
 
تاريخ عضويت: خرداد ۱۳۸۷
محل سكونت: تهران-کرج!
پست ها: 3,465
تشكرها: 754
16,337 تشكر در 3,127 پست
My Mood: Mehrabon
ارسال پيغام Yahoo به Astaraki
Wink جاوا

Solving the N-Queens Problem
فايل ضميمه
نوع فايل: zip NQueens.java.zip (2.8 كيلو بايت, 254 نمايش)
Astaraki آفلاين است   پاسخ با نقل قول
از Astaraki تشكر كرده است:
MO3LEM (۰۳-۱۵-۱۳۹۰)
پاسخ



كاربران در حال ديدن تاپيک: 1 (0 عضو و 1 مهمان)
 

قوانين ارسال
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is فعال
شکلکها فعال است
كد [IMG] فعال است
كدهاي HTML غير فعال است
Trackbacks are فعال
Pingbacks are فعال
Refbacks are فعال




زمان محلي شما با تنظيم GMT +3.5 هم اکنون ۱۱:۴۱ بعد از ظهر ميباشد.


Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.

Teach and Learn at Hexib | Sponsored by www.Syavash.com and Product In Review

استفاده از مطالب انجمن در سایر سایت ها، تنها با ذکر انجمن هوش مصنوعي به عنوان منبع و لینک مستقیم به خود مطلب مجاز است

Inactive Reminders By Icora Web Design