1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm hiểu bài toán phân công công việc và demo code

6 1,8K 46

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 98,5 KB

Nội dung

TRƯỜNG ĐẠI HỌC NÔNG NGHIỆP HÀ NỘIKHOA CÔNG NGHỆ THÔNG TIN BÀI TẬP LỚN TRÍ TUỆ NHÂN TẠO Đề tài: “Tìm hiểu bài toán phân công công việc và demo”.. Giáo viên hướng dẫn : TS.Nguyễn Thị Thủy

Trang 1

TRƯỜNG ĐẠI HỌC NÔNG NGHIỆP HÀ NỘI

KHOA CÔNG NGHỆ THÔNG TIN

BÀI TẬP LỚN TRÍ TUỆ NHÂN TẠO

Đề tài: “Tìm hiểu bài toán phân công công việc và demo”.

Giáo viên hướng dẫn : TS.Nguyễn Thị Thủy Nhóm sinh viên thực hiện: Kiều Văn Hải

Vương Minh Huế

Mùa Thị May

Hà Sơn Tùng

Hà Nội 2011

Trang 2

I, Bài toán phân công công việc

1, Nội dung bài toán

Một đề án gồm n công việc và các việc sẽ được thực hiên bởi m máy như nhau.

Giả sử biết thời gian để 1 máy thực hiện viêc thứ j là tj Yêu cầu: Tìm phương án phân công sao cho thời gian hoàn thành toàn

bộ công việc là thấp nhất.

Mẫu số liệu : n=10, m=3

tj = 4 9 5 2 7 6 10 8 7 5

2, Giải thuật: được viết dưới dạng thủ tục tương tự như thuật toán nhưng

không đòi hỏi các tiêu chuẩn như thuật toán.

- Tính đúng: chấp nhận các giải thuật đơn giản, có thể cho kết quả đúng hay gần đúng nhưng có khả năng thành công cao hơn.

- Để có thể được chấp nhận, giải thuật phải thể hiện một giải pháp hợp lý nhất

có thể trong tình huống hiện tại bằng cách:

+ Tận dụng mọi thông tin hữu ích + Sử dụng tri thức, kinh nghiệm trực giác của con người + Tự nhiên, đơn giản nhưng cho kết quả chấp nhận được

è Giải thuật Heuristic

Giải thuật cho bài toán phân công đơn giản:

Chọn việc J chưa phân công có thời gian thực hiện cao nhất phân công cho máy có thời gian làm việc thấp nhất

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

{

Chọn việc J chưa phân công có thời gian thực hiện cao nhất.

Chọn máy M có thời gian làm việc thấp nhất

Bố trí việc J cho máy M.

Trang 3

}

n=10, m=3

II, Chương trình

// Bai toan phan cong cong viec: n Viec chia cho m May // Bai tap lon

#include<iostream.h>

#include<conio.h>

#define MAX 20

typedef struct

{

int bot;//bien dem chi phan tu tiep theo cua array int sum; //tong thoi gian may da lam

int array[MAX]; //mang cac cong viec may da lam }MAY;

void NhapMang(int a[], int n)

{

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

{

cin>>a[i];

}

}

void XuatMang(int a[], int n)

{

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

{

cout<<a[i]<<"\t";

}

cout<<endl;

}

void Swap(int &a, int &b)//Hoan vi cong viec

{

int tmp;

tmp=a;

a;

b=tmp =b;

}

Trang 4

void GiamDan(int a[], int n)// Sap xep cong viec theo thu tu giam dan cua thoi gian

{

for(int i=0; i<n-1; i++)

{

for(int j=i+1; j<n; j++)

{

if(a[i]<a[j])

{

Swap(a[i], a[j]);

}

}

}

}

void GanMangBangKhong(int a[], int n)//Khoi dong cac may de lam viec

{

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

{

a[i]=0;

}

}

// Tim ra may co tg lam tong cong viec it nhat

int MinDong(MAY may[], int m)

{

int minwhere=0;

for(int i=1; i<m; i++)

{

if(may[i].sum<may[minwhere].sum)

{

minwhere=i;

}

}

return minwhere;

}

int ChiaViec(int viec[], int n, int m)

{

MAY may[MAX];

int min,max;

for(int k=0; k<m; k++)

{

GanMangBangKhong(may[k].array, MAX);

may[k].bot=0;

may[k].sum=0;

}

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

Trang 5

{

//tim ra may co tg lam viec ngan nhat, lay vi tri may do ra

min=MinDong(may, m);

//gan cong viec tiep theo vao may do

may[min].array[may[min].bot++]=viec[i];

//cong tg cua cong viec do vao tong tg lam viec (sum) cua may do may[min].sum=may[min].sum+viec[i];

}

max=may[0].sum;

for(int j=0; j<m; j++)

{

cout<<"May "<<j+1<<" :\t";

XuatMang(may[j].array, may[j].bot);

cout<<endl;

//tim ra tong tg lon nhat cua cac may

if(may[j].sum>max)

max=may[j].sum;

}

return max;

}

void main()

{

int n,m;

int arrayviec[MAX];

char ch;

cout<<"\t\t\tn Cong viec chia cho m May"<<endl

<<"\t\t\t\t\t\t\t\t Bai tap lon";

do

{

cout<<endl<<"So cong viec: ";

cin>>n;

cout<<"Thoi gian tung cong viec "<<endl;

NhapMang(arrayviec, n);

cout<<"Nhap vao so may xu ly cong viec: ";

cin>>m;

cout<<endl;

XuatMang(arrayviec, n);

GiamDan(arrayviec, n);

cout<<"Thoi gian de lam xong cac cong viec la: "<<ChiaViec(arrayvie

c, n, m)<<endl;

cout<<endl<<"Ban co muon lam tiep khong ? (y/n)";

cout.flush();

ch=getche();

}while(ch=='y' || ch=='Y');

}

III, Tài liệu tham khảo

Trang 6

1 Trí tuệ nhân tạo(Chương I: THUẬT TOÁN – THUẬT GIẢI, phần II: THUẬT GIẢI HEURISTIC)_Hoàn Kiếm

2 Nguồn Internet

Ngày đăng: 02/06/2016, 15:11

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w