0
Tải bản đầy đủ (.pdf) (121 trang)

Hàm thớch nghi (fitness)

Một phần của tài liệu ỨNG DỤNG THUẬT GIẢI DI TRUYỀN CÁC BÀI TOÁN HÀM MỤC TIÊU NHIỀU BIẾN (Trang 68 -68 )

2.2.6.1. Ánh xạ giỏ trị hàm mục tiờu sang giỏ trị thớch nghi

Vỡ hàm thớch nghi phải nhận giỏ trị khụng õm, do đú cần phải xõy dựng ỏnh xạ hàm mục tiờu đang xột trong bài toỏn sang hàm thớch nghi thụng qua một hoặc nhiều lần ỏnh xạ. Nếu bài toỏn tối ưu là cực tiểu một hàm đỏnh giỏ g(x), việc chuyển từ hàm đỏnh giỏ sang hàm thớch nghi để sử dụng với GA như sau:

Cmax – g(x) khi g(x) < C max

f(x) = (4.3)

0 trong cỏc trường hợp khỏc

Ở đõy, Cmax là một tham số đầu vào. Vớ dụ, cú thể lấy Cmax là giỏ trị g lớn nhất trong quần thể hiện tại, hoặc lớn nhất sau k vũng lặp. Núi chung Cmax khỏc nhau tuỳ thuộc vào giỏ trị cỏc biến của quần thể.

Khi hàm mục tiờu gốc tăng hoặc đang xột bài toỏn cực đại hoỏ một hàm hữu dụng u(x), chỳng ta cú thể chuyển sang hàm thớch nghi như sau:

u(x) + Cmin khi u(x) + Cmin > 0

f(x) = (4.4)

0 trong cỏc trường hợp khỏc

Ở đõy Cmin là tham số đầu vào, cú thể là trị tuyệt đối của u bộ nhất trong quần thể hiện tại hoặc trong k vũng lặp cuối cựng hoặc là một hàm của biến quần thể (Hàm Scalepop).

2.2.6.2. Điều chỉnh độ thớch nghi

Một vấn đề quan trọng là điều chỉnh số con chỏu. Điều này đặc biệt quan trọng cho một vài vũng lặp đầu tiờn, khi một vài cỏ thể “siờu” cú tiềm năng chiếm lĩnh phần lớn quần thể và làm cho hội tụ sớm. Điều chỉnh độ thớch nghi cú thể giỳp giải quyết vấn đề này.

Một kiểu điều chỉnh hay gặp là điều chỉnh tuyến tớnh. Chỳng ta định nghĩa độ thớch nghi gốc là f và độ thớch nghi đó biến đổi là f‟. Điều chỉnh tuyến tớnh xỏc định quan hệ giữa f và f‟ như sau:

Ở đõy, cỏc hệ số a và b được chọn sao cho:

f‟avg = f avg (4.6) và

f‟max = Cmult * favg (4.7)

Ở đõy Cmult là số cỏc bản sao cần thiết đối với một thành viờn tốt nhất. Với lượng biến tương đối nhỏ (n = 50 đến 100), Cmult thường được chọn từ 1.2 đến 2 và tỏ ra khỏ hiệu quả. Biểu thức (4.6) bảo đảm rằng mỗi thành viờn với độ thớch nghi trung bỡnh sẽ cho một con hay một chỏu đối với lần phỏt sinh tiếp theo. Biểu thức (4.7) kiểm soỏt số con chỏu được nạp vào làm thành viờn với độ thớch nghi gốc cực đại. Lưu ý rằng điều chỉnh tuyến tớnh trong biểu thức từ (4.5) – (4.7) cú thể làm cho giỏ trị thớch nghi trở thành õm. Điều này khụng cho phộp vỡ phải luụn đảm bảo tớnh khụng õm của nú. Một giải phỏp thay thế điều kiện trong biểu thức (4.7) là sử dụng điều kiện fmin = 0.

(Hàm scalepop chỉ rừ cỏch tớnh toỏn độ thớch nghi, ỏp dụng điều chỉnh tuyến tớnh) (cụng thức 4.4)

2.2.7. Bài toỏn cực tiểu hàm f với n biến liờn tục

Với cỏch biểu diễn nờu trờn, để tỡm lời giải tối ưu của bài toỏn cực tiểu hàm với n biến cú thể thuật giải như sau:

Tiếp tục cho đến khi đạt được điều kiện định trước (Thường sau một số vũng lặp xỏc định khi khụng tỡm được cải tiến tốt hơn dựa vào tốc độ mỏy tớnh và độ chớnh xỏc yờu cầu)

Hỡnh 7. Cỏc bước của Thuật giải di truyền cho bài toỏn tối ưu hàm

2.2.7.2. Phõn tớch cỏc hàm, thủ tục

1.Hàm khởi tạo giỏ trị ngẫu nhiờn trong miền [0; 1]

float random01() float s;

s=random (30000)/30000.0; return s;

Hỡnh 8. Hàm khởi tạo giỏ trị ngẫu nhiờn

Vớ dụ 4.3

Với random(30000)=10000 -> s=1/3=0.3333 ta cú random01()=0.3333

2.Hàm tạo giỏ trị ngẫu nhiờn (0 hoặc 1) theo xỏc suất (flip)

Hàm này cho vào một xỏc suất nào đú cú thể là xỏc suất đột biến (Pmu), xỏc suất lai ghộp (Pcoss), hoặc xỏc suất để khởi tạo quần thể ban đầu (0.5). Trả lại giỏ trị ngẫu nhiờn 0 hoặc 1 tuỳ thuộc vào hàm random01().

Bước 1: Khởi tạo quần thể cỏc nhiễm sắc thể nhằm thiết lập số lượng

nhiễm sắc thể ngẫu nhiờn ban đầu dưới dạng nhị phõn vơớ kớch cỡ quần thể bằng pop_size (xỏc định trước)

Bước 2: Xỏc định giỏ trị thớch nghi (fitness value) của từng nhiễm sắc thể

Bước 3: Sao chộp lại cỏc nhiễm sắc thể dựa vào giỏ trị thớch nghi của

chỳng và tạo ra những nhiễm sắc thể mới bằng việc kết hợp cỏc nhiễm sắc thể hiện tại (dựng cỏc toỏn tử lai ghộp, đột biến, tỏi kết hợp)

Bước 4: Loại bỏ những thành viờn khụng thớch nghi trong quần thể

Bước 5: Chốn những nhiễm sắc thể mới vào quần thể để hỡnh thành một

int flip (float p)

if (random01()<p) return 1; else return 0;

Hỡnh 9. Hàm khởi tạo giỏ trị ngẫu nhiờn (0 hoặc 1) theo xỏc suất

Vớ dụ 4.4

Với p=0.5; random01()=0.3333 Ta cú flip (p)= flip(0.5)=1

Kết quả của hàm số này cú thể làm giỏ trị cho tập khởi tạo quần thể ngẫu nhiờn ban đầu, hoặc để xỏc định vị trớ đột biến và lai ghộp của cỏc phần tử trong quần thể.

3.Xỏc định giỏ trị thớch nghi (fitness), tổng thớch nghi (total fitness)

Bao gồm cỏc thao tỏc: ỏp dụng phương phỏp ỏnh xạ giỏ trị hàm mục tiờu sang giỏ trị thớch nghi và điều chỉnh độ thớch nghi (mục trờn), xõy dựng hàm thanh quần thể (scalepop) tớnh giỏ trị thớch nghi theo điều chỉnh ứng với từng cỏ thể trong quần thể (fitness), rồi tớnh tổng của chỳng (total fitness).

Dữ liệu vào: giỏ trị hàm mục tiờu ứng với từng thành viờn, cựng với kớch cỡ của quần thể.

Dữ liệu ra: giỏ trị thớch nghi ứng với từng thành viờn và tổng giỏ trị thớch nghi của quần thể

Nội dung xem hàm (4.4)

Vớ dụ 4.5

Ứng với hàm mục tiờu:

Fmin = (x1- 6)* (x1- 6)+ (x2- 4)* (x2- 4);

Với quần thể pop_ size= 3; cú cỏc giỏ trị hàm mục tiờu: obj[0]=0,0236;

obj[1]=0,0168; obj[2]=0,0207; Kết quả của hàm scalepop:

Fit[0]=0,0032

Fit[1]=8* 0,0068 + 0,0032= 0,0576 Fit[2]=8* 0,0029+ 0,0032= 0,0269 sum = 0,0872.

Cỏc kết quả của hàm này sẽ là đầu vào cho thủ tục chọn lựa những cỏ thể tốt nhất cho quần thể mới.


float scalepop (float *obj, float * fit, int pop_size) float a, b, min, ave, max, sum, ob[100]; int i;

/* Xỏc định giỏ trị thớch nghi (raw fitness), theo hàm mục tiờu và trung bỡnh của chỳng*/

sum = max = -1.0e37; min=1.0e37;

for (i=1;i<=pop_size;i++) if (sum<obj[i]) sum=obj[i];

for(ave=0,i=0; i<pop_size;i++)

ob[i]=sum-obj[i];/*Ánh xạ giỏ trị hàm mục tiờu

đến gỏi trị thớch nghi*/ if(max<ob[i]) max=ob[i]; if(min>ob[i]) min=ob[i]; ave+=ob[i]; ave/=pop_size;

/*Xỏc định tham số a và b trong điều chỉnh độ thớch nghi*/ if(min>(2*ave-max)) a=ave/(max-ave); b=a*(max-2*ave); else a=ave/(ave-min); b=min*a;

/* Tớnh giỏ trị thớch nghi theo điều chỉnh (scaled fitness), tổng của chỳng*/

for(sum=0,i=0;i<pop_size;i++)

fit[i]=a*ob[i]+b; /* Giỏ trị thớch nghi điều chỉnh của từng cỏ thể (scaled fitness)*/ sum+=fit[i];

return sum;

Hỡnh 10. Hàm tớnh trị số thớch nghi

4.Hàm chọn cỏ thể (Select)

Mụ phỏng quỏ trỡnh chọn lựa cỏ thể với mục đớch tỡm ra cỏ thể tốt nhất trong quần thể (ỏp dụng thuật toỏn chọn lựa ở mục trờn).

Với đầu vào:

+ Giỏ trị thớch nghi ứng với từng thành viờn trong quần thể; + Tổng giỏ trị thớch nghi của quần thể;

+ Kớch cỡ của quần thể.

Kết quả ra là vị trớ của cỏ thể tốt nhất trong quần thể.

Int select(float *fit, float, sum, int popsize) float partsum, rand;

int j, i=popsize- 1; rand= random01()*sum; for(partsum=0,j<0; j<popsize;j++) partsum+= fit[i]; if(partsum>= rand) i=j; break; return i; Hỡnh 11. Hàm chọn cỏ thể (select) Vớ dụ 4.6 Với pop_size= 3 Fit[0]= 0,0032 Fit[1]= 0,0576 Fit[2]= 0,0264 sum= 0,0872. Giả sử: random01()= 0,5 rand= 0,5*0,0872= 0,436 j=0;partsum=fit[0]=0,0032 j=1;partsum=0,0032+fit[1]=0,0608 partsum>rand ->i=j=1; select()=1;

Do vậy cỏ thể thứ hai được chọn (theo trực giỏc nhận thấy cỏ thể này cú giỏ trị thớch nghi cao nhất).

5.Hàm đột biến (mutation) và hàm lai ghộp (cross over)

Mụ phỏng hai toỏn tử đột biến và lai ghộp.

/* Hàm đột biến*/

/* kiểm tra từng ký tự trong chuỗi với xỏc suất đột biến Pmu,nếu thoả món thực hiện đột biến, sai bỏ qua*/ char mutation(char c, float pmu)

char s; if(flip(pmu)) if(c) s=0; else s=1; else s=c; return s;

Hỡnh 12. Hàm mụ phỏng toỏn tử đột biến (mutation)

/* Hàm lai ghộp;

Đầu vào: Hai chuỗi biểu diễn cha mẹ, chiều dài nhiễm sắc thể, xỏc suất và tổng số biến n:

Đưa ra kết quả: chuỗi biểu diễn cỏc con child1, child2.*/

void crossover(char *parent1, char *parent2, char *child1, char *child2,int lchrom, float pcross, float pmu, int n)

int j, jcross,i; for(i=0;i<=n;i++) if(flip(pcross)) jcross=random(lchrom); else jcross=lchrom; for(j=0;j<jcross;j++) child1[i*lchrom+j]=mutation (parent1[i*lchrom+j],pmu); child2[i*lchrom+j]=mutation (parent2[i*lchrom+j],pmu ; for(i=j=jcross;j<lchrom;j++) child1[i*lchrom+j]=mutation (parent2[i*lchrom+j],pmu; child2[i*lchrom+j]=mutation (parent1[i*lchrom+j],pmu ;

Hỡnh 13. Hàm mụ phỏng toỏn tử lai ghộp (cross over)

6.Hàm khởi tạo quần thể

(Mỗi hàm nhiễm sắc thể biểu diễn tập biến vào (x1, x2, …, xn) dưới dạng nhị phõn).

Đầu vào: Kớch cỡ quần thể pop_size Chiều dài nhiễm sắc thể lchrom.

Kết quả là: Giỏ trị của cỏc phần tử trong quần thể.

Void initpop(char pop[100][250], int popsize, int lchrom) int i,j; for(i=0; i<=popsize;i++) for(j=0;j<=lchrom;j++) pop[i][j]=flip(0.5;)

Hỡnh 14. Hàm khởi tạo quần thể.

Vớ dụ 4.7

Biểu diễn pop[i][j]

j 0 1 2 3 … lchrom-1 i 0 0 1 0 1… 1 1 …….. 2 . . . popsize-1

7. Hàm tạo sinh (generate)

Hàm này đúng vai trũ quan trọng nhất trong Thuật giải di truyền. Dựa vào giỏ trị thớch nghi của từng cỏ thể (fitness) trong quần thể, tổng giỏ trị thớch nghi (total

fitness) của quần thể, ỏp dụng cỏc toỏn tử di truyền (chọn lựa cỏ thể (select), đột biến, lai ghộp) lờn quần thể cỏc chuỗi biểu diễn cỏc biến oldpop, từ đú sản sinh ra quần thể chuỗi biểu diễn mới newpop.

Đầu vào:

+ Tập hợp nhiễm sắc thể hiện tại(oldpop); + Kớch cỡ nhiễm sắc thể (popsize);

+ Chiều dài nhiễm sắc thể biểu diễn một biến; + Tổng số biến nhập trong hàm mục tiờun; + Xỏc suất lai ghộp, xỏc suất đột biến.

+ Giỏ trị thớch nghi (fitness) và tổng giỏ trị thớch nghi (sum).

Đầu ra: Tập hợp nhiễm sắc thể mới sau khi đó ứng dụng cỏc toỏn tử.

Void generate(char oldpop[100][250], char newpop[100][250], int popsize, int lchrom, float *fit, float sum, float pcross, float pmu, int n)

int j, mate1, mate2; j=0;

while(1)

mate1=select(fit,sum,popsize); mate2=select(fit,sum,popsize);

crossover(oldpop[mate1],oldpop[mate2],

newpop[j], newpop[j+1], lchrom, pcross, pmu, n) j+=2; if(j>=popsize) break; Hỡnh 15. Hàm tạo sinh Vớ dụ 4.8

Giả sử, ta xột bài toỏn cực tiểu hàm mục tiờu f=x1*x1+x2*x2 với x1,x2 [-10,10]

Ban đầu: popsize=3; n=2; Pcross=0,85; Pmu=0,05; oldpop=100101, 110011, 001010;

Với cỏ thể thứ nhất: 100101, ta cú x1 = 1,43; x2 = 4,29; và f(1)=20,449 Với cỏ thể thứ hai: 110011, ta cú x1 = 7,14; x2 = -1,43; và f(2)=53,025 Với cỏ thể thứ ba: 100101, ta cú x1 = -7.14; x2 = -4,29; và f(3)=69,38

Thực hiện hàm scalepop với cỏc giỏ trị hàm mục tiờu trờn: obj[0]=20,449, ta cú ob[0] =48,931 obj[1]=53,025, ta cú ob[1]=16,355 obj[2]=69,38 ta cú ob[2]=0 max=48,931, ave=21,762. Vậy a=21,762/(48,931-21,762)=0,8 min=0 b=0,8*(48,931-2*21,762)=4,3256 Do đú: fit[0]=0,8*48,931+4,3256=4 fit[1]=0,8*16,355+4,3256=17,4096 fit[2]=4,3256 sum=65,2056

Với cỏc tham số đó xỏc định ở trờn, ta cú thể thức hiện hàm generate j=0; Bắt đầu vũng lặp:

Chọn hai cỏ thể tốt trong quần thể: Giả sử:

Lần 1: Tớnh hàm select ứng với random01()=0,5 rand=0,5*sum=0,5*65,2=32,6

partsum=43,4704>32,6

i=0; do đú select(fit, sum, popsize)=0 Cuối cựng, mate1=0;

Lần 2: Tớnh hàm select ứng với random01()=0,7 rand=0,7*sum=0,7*65,2=45,64

partsum=43,4704<45,64

partsum=43,4704+17,4096>45,64 Do đú i=1; ->select(fit,sum,popsize)=1 Cuối cựng, mate2=1;

Ứng dụng cỏc toỏn tử lai ghộp, đột biến cho hai thành viờn trờn: crossover(oldpop[0], oldpop[1], newpop[0], newpop[1],3,0.85,0.5,0)

Với: oldpop[0]=‟110011‟ Oldpop[1]=‟110011‟ Cho ra:

newpop[1]=‟100100‟ cú hai đột biến. j=2<popsize;

Lặp lại

Với random01()=0,3 lần 1 và 0,4 lần 2, khụng xảy ra đột biến. Kết quả cuối cựng cho ra:

100011 Newpop = 100100 100101

Quần thể cuối mới này ổn định hơn quần thể trước.

8.Hàm nạp lại quần thể

Sau khi một quần thể mới ra đời, nú được nạp vào quần thể hiện tại, và vũng lặp mới được thực hiện để sinh sản ra những quần thể khỏc.

Hàm Reproduction đảm nhiệm cụng việc này.

Void reproduction(char oldpop[100][250], char newpop[100][250], int popsize, int lchrom)

int i,j; for(i=0;i<popsize;i++) for(j=0;j<lchrom;j++) oldpop[i][j]=newpop[i][j]

Hỡnh 16. Hàm tỏi tạo quần thể(rreproduction)

9.Hàm giải mó

Chuyển đổi từ xõu ký tự biểu diễn biến sang cỏc số thực dấu phẩy động, hỡnh 3.11.

Void decode(char *indi, int lchrom, float *up, double rate, float *k, int n) char fr[30]; for(j=0;j<n;j++) for(i=0;i<lchron;i++) fr[i]=indi[j*lchrom+i]; power=1; for(cum=0,i=0;i<lchrom;i++) if(fr[i]) cum+=power; power*=2;

power=cum/rate; k[j]=down[j]+(up[j]-down[j])*power; Hỡnh 17. Hàm giải mó Vớ dụ 4.9 Chuỗi nhị phõn:

100011111 biểu diễn ba biến trong miền [-10; 10] Sau khi chạy thủ tục giải mó sẽ được:

k[0]=-10*20+4/7=1,42857 k[1]=-10*20+3/7=-1,42857 k[0]=-10*20+7/7=10

10.Hàm di truyền (là thủ tục chớnh của chương trỡnh)

Float GEN(float *X,float *up, float down, int gen, float ss(float *),

float pross, float pmu, int n, int popsize)

char oldpop[100][250], newpop[100][250]; float obj[100], fit[100], sum,ty;

int lchrom, i, j, l, N; float k[10], x[10]; double rate;

/* Xỏc định chiều dài chuỗi biến biểu diễn*/ lchrom=250/n;

if(lchrom>25) lchrom=25;/*Giới hạn <=25*/ /*Xỏc định tổng chiều dài của cỏc nhiễm sắc thể*/ N=lchrom*n;

/*Xỏc định giỏ trị thập phõn lớn nhất mà chuỗi nhị phõn cú thể biểu diễn*/

(2l-1), cơ sở của hàm giải mó decode*/ sum=1;

for(rate=1,i=0;i<lchrom;i++) rate+=sum; sum*=2;

randommize(); ty=1.0e37; /* Khởi tạo quần thể*/

initpop(oldpop,popsize,N); /* Bắt đầu vũng lặp*/

for(j=0;j<gen;j++)

/* Giải mã các biến*/ decode(oldpop[i],lchrom,up,down,rate,k,n); /* Đỏnh giỏ hàm mục tiờu*/ obj[i]=ss(k); if(ty>obj[i]) for(l=0;l<n;l++) X[l]=k[l]; ty=obj[i];

/*Xỏc định giỏ trị thớch nghi của từng cỏ thể, tổng thớch nghi của quần thể*/

sum=scalepop(obj,fit,popsize);

/*Nảy sinh quần thể mới (ỏp dụng cỏc toỏn tử di truyền*/ generate(oldpop,newpop,popsize,lchron,fit,sum,pcross,pmu,n);

/*nạp lại giỏ trị để chuẩn bị cho vũng lặp tiếp theo*/ reproduction(oldpop,newpop,popsize,N);

return ty;

Hỡnh 18. Hàm thể hiện cỏc bước của Thuật giải di truyền

Đầu vào: Miền giỏ trị của cỏc biến x[up; down], số vũng lặp (số lần tạo sinh), xỏc suất lai ghộp, xỏc suất đột biến, tổng số biến x, kớch cỡ quần thể, cụng thức hàm cần tối ưu.

Đầu ra: Cho giỏ trị x dưới dạng số thực tương ứng với kết quả tối ưu của hàm.

3.7.3. Thử nghiệm và đỏnh giỏ 3.7.3.1. Chạy thử chương trỡnh

Chỳng ta giả sử rằng kớch cỡ quần thể popsize=40; xỏc suất của toỏn tử di truyền Pcross=0,85 và Pmu=0,05; số vũng lặp gen=50.

Trường hợp 1. Ứng dụng thuật toỏn để cực tiểu hoỏ một hàm 2 biến

f_min=(x1-6)*(x1-6)+(x2-4)*(x2-4); biết x1,x2 thuộc [-10, 10]. Chạy lần 1: f_min=0,0236; x1=6,14; x2=3,95 Chạy lần 2: f_min=0,0168; x1=5,99; x2=4,13 Chạy lần 3: f_min=0,0207;

x1=5,9; x2=4,1

Trường hợp 2. Ứng dụng thuật toỏn để cực tiểu hoỏ một hàm 3 biến

f_min=(x1-6)*(x1-6)+(x2-4)*(x2-4)+(x3-2)*(x3-2); biết x1,x2,x3 thuộc [-10, 10]. Chạy lần 1: f_min=0,0700 x1=6,19 ; x2=3,99 ; x3=2,18 Chạy lần 2: f_min=0,1006 x1=6,05 ; x2=3,69 ; x3=2,03 Chạy lần 3: f_min=0,0606 x1=6,11 ; x2=4,18 ; x3=1,86

Trường hợp 3. Ứng dụng thuật toỏn để cực tiểu hoỏ một hàm 4 biến

f_min=(x1-6)*(x1-6)+(x2-4)*(x2-4)+(x3-2)*(x3-2)+(x4)*(x4) biết x1, x2, x3, x4 thuộc [-10, 10]. Chạy lần 1: f_min=0,2429 x1=6,18 ; x2=3,67 ; x3=2,11 ; x4=-0,30 Chạy lần 2: f_min=0,4327 x1=6,35 ; x2=3,53 ; x3=1,86 ; x4=-0,26; Chạy lần 3: f_min=0,8697 x1=6,04 ; x2=4,35 ; x3=2,24 ; x4=0,83

NHẬN XẫT: Như vậy, cỏc kết quả trờn tương đối ổn định thuật giải cú thể chấp nhận được khi ỏp dụng vào bài toỏn cực tiểu hàm 4 biến

3.7.3.2. Đỏnh giỏ, kết luận

Thuật giải di truyền trờn cú thể giải quyết bài toỏn tối ưu bất kỳ (cực tiểu hoỏ hàm mục tiờu) với n biến vào. Tuy nhiờn, với số lượng biến vào khỏ nhiều, cỏc giỏ trị hàm mục tiờu đạt được thường khụng gần với kết quả tối ưu thực sự. Để khắc phục vấn đề này, cú thể tăng số lượng vũng lặp, hy vọng lần sinh sản muộn mằn sẽ hỡnh

thành những con chỏu với độ thớch nghi cao ứng với cỏc giỏ trị hàm mục tiờu gần kết quả tối ưu thực sự nhất

THUẬT GIẢI DI TRUYỀN VỚI BÀI TOÁN Mễ PHỎNG QUÁ TRèNH CHIẾT DUNG MễI [2]

TểM TẮT

Ứng dụng thuật giải di truyền cho bài toỏn mụ phỏng quỏ trinh chiết dung mụi trong hoỏ học.

Từ hàm phi tuyến hoỏ học:

(Y = A1*CA2exp(-A3*CA4*H)) (5.1)

Với cỏc biến gồm:

C là nồng độ ion kim loại cho vào ban đầu trước khi cõn bằng; H là nồng độ axit ban đầu;

Cần ước lượng cỏc tham số (A1, A2, A3, A4) để cưc tiểu hoỏ hàm sai số theo phương phỏp bỡnh phương tối thiểu tương đối:

 

2 1 ( )/

N i Yi Ylithuyet Yi S (5.2) trong đú N là số lần thớ nghiệm.

Bài toỏn này được quy về bài toỏn cực tiểu hàm phi tuyến bốn biến vào. Để giải nú, ta cú thể thực hiện qua hai bước:

Bước 1: Tiền xử lớ: Sử dụng kỹ thuật hồi quy xỏc định miền ràng buộc ban đầu [A10- , A10+ ]; [A20- , A20+ ]; [A30- , A30+ ]; [A40- , A40+ ]; ((A10,A20, A30, A40 ) là bộ nghiệm được ước lượng từ phương phỏp bỡnh phương tối thiểu), Giỏ trị là hệ số biến thiờn được chọn tương ứng.

Bước 2: Trờn cơ sở miền ràng buộc ban đầu đó được xỏc định, ứng dụng Thuật giải di truyền để tỡm đến kết quả tốt hơn của bài toỏn. Chi tiết về bài toỏn được trỡnh bày dưới đõy:

Đặt vấn đề:

Nghiờn cứu thớ nghiệm sau:

Một thiết bị thớ nghiệm hoỏ học gồm hai pha: Pha trờn chứa dung mụi (chất hữu cơ)

Pha dưới chứa nước.

Một phần của tài liệu ỨNG DỤNG THUẬT GIẢI DI TRUYỀN CÁC BÀI TOÁN HÀM MỤC TIÊU NHIỀU BIẾN (Trang 68 -68 )

×