初始化種群
public
list
<
popunit
>
initpop()
);popunit unit
=new
popunit(d, val);
pool.add(unit);
}return
pool;}
選擇操作
public
list
<
popunit
>
select(list
<
popunit
>
data)
inttmpcount
=data.count
-newpool.count;
for(
inti
=dropoutcount; i
<=
dropoutcount
+tmpcount -1
; i++
)return
newpool;}
交叉操作:
public
void
crossover(
double
a,double
b,out
double
a1,out
double
b1)doubler =
0.1;
double
a2 =
m_random.nextdouble() *r;
double
b2 =
m_random.nextdouble() *r;
a1 =(1
-a2) *a
+b2 *b;
b1 =(1
-b2) *b
+a2 *a;
if(a1
<
m_parameters.l)
a1 =
m_parameters.l;
if(b1
<
m_parameters.l)
b1 =
m_parameters.l;
if(a1
>
m_parameters.r)
a1 =
m_parameters.r;
if(b1
>
m_parameters.r)
b1 =
m_parameters.r;
"crossover a1=,b1= -> a2=,b2=", a, b, a1, b1); }
變異操作:
public
double
mutation(
double
c)doublek =
0.2;
//k = (m_parameters.maxgenerations-t)/ (m_parameters.maxgenerations + 2d) * 0.4d;
double
res;
if(m_random.next(2)
==1)else
"mutation: -> ", c, res);
return
res;}
種群大小=100,交叉概率=0.7,變異概率=0.1
浮點數的編碼
1 浮點數 小數點位置可移動的資料稱為浮點數,可用下式表示 n m re 其中,m 尾數,r 階的基數 也就是指數部分的底 r 一般取2 8或16,為約定的常數,大多數機器 r 取定為2。e 階的階碼。當基數約定後,對浮點數的編碼就只需對尾數和階碼部分進行編碼。浮點數在機器中的形式如下 尾數m用定點...
浮點數的編碼
1 浮點數 小數點位置可移動的資料稱為浮點數,可用下式表示 n m re 其中,m 尾數,r 階的基數 也就是指數部分的底 r 一般取2 8或16,為約定的常數,大多數機器 r 取定為2。e 階的階碼。當基數約定後,對浮點數的編碼就只需對尾數和階碼部分進行編碼。浮點數在機器中的形式如下 尾數m用定點...
python的浮點數演算法
本菜基本完結了pos機的第二個頁面,但是還是遇到了不少問題,本次總結其中之一,浮點數的計算。統計商品數量時,本來是直接加一就可以,但是本菜覺得應該照顧一下論斤買的商品,於是直接把 1 改為了 0.5,於是網頁乾乾脆脆的報錯不顯示了,本菜通過強化過的報錯函式,發現錯誤在於資料型別不正確,報的錯誤是 t...