You are on page 1of 3

80

2001

MATLAB 3
, ,
( , 100083)
: , MATLAB ,

: ( GA) ; MATLAB
: TP301. 6 : A : 100123695 (2001) 0820080203

A Genetic Algorithm in MATLAB


LIU Guo2hua , BAO Hong , LI Wen2chao
( Beijing University of Science & Technology , Beijing 100083 , China)

Abstract : The principle of genetic algorithm has been presented and its realization in MATLAB has been discussed. A function opti2
mization problem has been given to demonstrate the global optimization functionality of the MATLAB program.
Key words : Genetic algorithm( GA) ;MATLAB

1
( Genetic Algorithm , GA)

, [1 ] :1)
, ;2)
,
, ;3)
,
, [2 ]
,
,
; , ,
,
:

,
, (
)

,
,
,


,
, ;
, ,

,

: 2000212226
: ( 59874006 ;
59872002)

[3 ] :
1) , ;
2) ,
, ;
3) ,
;
4)
, ;
5) 24 ,
:


[4 ]

, ,
, , ;
, ,
20100
,
, ; ,
0. 40. 99
, ,
; ,
0. 00010. 1
: ;
[5 ]

2 MATLAB
MATLAB Matwork ,
,
MATLAB ,

[6 ] MATLAB

: MATLAB

211

,

,
, encoding
:
function [bin2gen ,bits] = encoding(min2var ,max2var ,scale2var ,popsize)
bits = ceil (log2 ( (max2var2min2var) . / scale2var) ) ;
bin2gen = randint (popsize ,sum(bits) ) ;

,
(min2var)
( max2var) scale2var
bits ,
popsize bin2gen
scale2dec = ( max2var2min2var ) / ( 2^bits2
1) ,

212
bin2gen ,
var2gen ,

function [ var2gen ,fitness ] = decoding (funname , bin2gen , bits ,min2
var ,max2var)
num2var = length (bits) ;
popsize = size (bin2gen ,1) ;
scale2dec = (max2var2min2var) . / (2.^bits21) ;
bits = cumsum(bits) ;
bits = [ 0 bits] ;
for i = 1 :num2var
bin2var{i} = bin2gen ( : ,bits(i) + 1 :bits(i + 1) ) ;
var{i} = sum(ones (popsize ,1) 3 2.^(size (bin2var{i} ,2) 21 :2
1 :0) . 3 bin2var{i} ,2) . 3 scale2dec (i) + min2var (i) ;
end
var2gen = [ var{1 , :} ] ;
for i = 1 :popsize
fitness(i) = eval ( [funname ,(var2gen (i , :) ) ]) ;
end

D , X:
X = D scale2dec + min2var

213

, ,

:
function [ evo2gen , best2indiv ,max2fitness ] = selection ( old2gen ,fit2
ness)
popsize = length (fitness) ;
[ max2fitness ,index1 ] = max (fitness) ; [ min2fitness ,index2 ] =
min (fitness) ;
best2indiv = old2gen (index1 , :) ;
index = [ 1 :popsize ] ; index(index1) = 0 ; index(index2) = 0 ;
index = nonzeros(index) ;
evo2gen = old2gen (index , :) ;
evo2fitness = fitness(index , :) ;
evo2popsize = popsize22 ;
ps = evo2fitness/ sum(evo2fitness) ;
pscum = cumsum(ps) ;
r = rand (1 ,evo2popsize) ;
selected = sum ( pscum 3 ones (1 ,evo2popsize) < ones (evo2pop2

81

size ,1) 3 r ) + 1 ;
evo2gen = evo2gen (selected , :) ;

,
,
, best2indiv

,
evo2gen
, [4 ] ,

: ,
,

2 14
,
PC cpairs
cpoints ,
,
:
function new2gen = crossover (old2gen ,pc)
[ nouse ,mating] = sort (rand (size (old2gen ,1) ,1) ) ;
mat2gen = old2gen (mating , :) ;
pairs = size (mat2gen ,1) / 2 ;
bits = size (mat2gen ,2) ;
cpairs = rand (pairs ,1) < pc ;
cpoints = randint (pairs ,1 ,[ 1 ,bits]) ;
cpoints = cpairs. 3 cpoints ;
for i = 1 :pairs
new2gen ( [ 2 3 i21 2 3 i ] , :) = [ mat2gen ( [ 2 3 i21 2 3 i ] ,1 :
cpoints(i) ) mat 2gen ( [ 2 3 i 2 3 i21 ] ,cpoints(i) + 1 :bits) ] ;
end

2 15
,
pm mpoints ,
:
function new2gen = mutation (old2gen ,pm)
mpoints = find (rand (size (old2gen) ) < pm) ;
new2gen = old2gen ;
new2gen (mpoints) = 12old2gen (mpoints) ;

,
,
,
:y = cos (5x) 2sin (3x) + 10 ,x [1
7 ] , 1

popsize = 20 , scale2var = 0. 0001 ,


pc = 0. 6 , pm = 0. 1 2 3


82

20

2001

1. 1944 ,

, 3. 7
,
, ,
3. 7414 , 11. 9638

4
MATLAB ,
, MATLAB 5. 3 ,

:
2

, 2
3 :

[1 ] , , . ( )

[M] . : ,1997.
[ 2 ] , , . [J ] .
,1996 ,13 (6) : 6972708.
[3 ] , .

[J ] . ,1995 ,22 (2) : 47256.


[4 ] , . [ M] . :
,1999.
[ 5 ] . [J ] .
,1999 ,16 (7) : 20221.
[6 ] . MATLAB 5 [ M] . : ,
1999.

:
(19742) , , ,
; , ; , ,

( 79 )

END IF
Ids - datastore = CREATE datastore
Ids - datastore. dataobject =
d - emplist
Ids - datastore. setTransobject (SQLCA)
RetrieveData :
RetrieveDate (reference blob able - data) return Long
Long ll - rr
Ids - datastore. Retrieve ()
ll - rr = ids - datastore. GetFullState (ablb - data)
Txnsrv. Setcomplete ()
Return ll - rr

UpdateDate :
Long ll - rr
If ids - datastore. SetChanges (ablb - data) = 1 then
ll - rr = ids - datastore. Update ()
end if
if ll- rr = 1 then
txnsrv. Setcomplete ()
else
txnsrv. SetAbort ()
end if
return ll - rr


DESTROY ids - datastore
DISCONNECT USING SQLCA ;


,
, ,
,

:
[1 ] . PowerBuilder 7. 0 [ M] . :

122222531
[2 ] PowerBuilder 6. 0 [ M] . :

134425001
[3 ] 1Sybase Jaguar CTS[M] 1 :

120022451
[ 4 ] McFall C . An Object Infrastrusture for Internet Middleware
IBM on Component Broker [ J ] . IEEE Internet Computing ,
1998 ,422501
[ 5 ] Anne I. Jaguar CTS ,Jaguar CTS white paper [ M] 1 Emery ville
Sybase cop 1999.

:
(19752) , , , ,

You might also like