已知w=[0,1,1,1,1,1,1,1],h=[0,1.083,0.875,0.875,0.83,1.25,0.875,1.125],d=[520,370,551,5300,1000,2400,1300],tmin=[0,1.5,3.1,4.3,19,22.5,29,33],tmax=[0,2.5,4.5,6,23,25,30,34],V=[17,14,17,14,12,16,15],β=[72,40,75,42,38,60,50],vmin=[8.67,9.8,7.6,8.1,7.3,6.9, 6.5],vmax=[18,19.2,18.7,25.2,23.4,23.7,22],A=480,B=720,C=2.7,D=125000.1(x1,x2,x3,x4,x5,x6,x7)=A*∑((β(i)*d(i)*x(i))/(24*V(i)^3)+(D/720)*∑(d(i)/x(i))+B*T(x1,x2,x3,x4,x5,x6,x7)*C,求出它的最大值f1max和最小值f1min,
时间: 2023-07-27 11:15:41 浏览: 204
根据题意,可以列出如下的优化问题:
max A*∑((β(i)*d(i)*x(i))/(24*V(i)^3)+(D/720)*∑(d(i)/x(i)) - B*T(x1,x2,x3,x4,x5,x6,x7)*C
其中,T(x1,x2,x3,x4,x5,x6,x7)表示时间函数,满足以下条件:
tmin(i) <= T(x1,x2,x3,x4,x5,x6,x7) <= tmax(i)
vmin(i) <= d(i)/T(x1,x2,x3,x4,x5,x6,x7) <= vmax(i)
令f1(x1,x2,x3,x4,x5,x6,x7) = A*∑((β(i)*d(i)*x(i))/(24*V(i)^3)+(D/720)*∑(d(i)/x(i)) - B*T(x1,x2,x3,x4,x5,x6,x7)*C,则有:
f1(x1,x2,x3,x4,x5,x6,x7) = A*∑((β(i)*d(i)*x(i))/(24*V(i)^3)+(D/720)*∑(d(i)/x(i)) - B*T(x1,x2,x3,x4,x5,x6,x7)*C
f2(x1,x2,x3,x4,x5,x6,x7) = T(x1,x2,x3,x4,x5,x6,x7)
根据题意,有如下的约束条件:
x(i) >= w(i)*h(i),i=1,2,...,7
∑(w(i)*h(i)*x(i)) <= A
x(i) <= d(i),i=1,2,...,7
现在我们采用遗传算法来求解这个优化问题。
遗传算法的伪代码如下:
1.初始化种群
2.计算适应度
3.选择
4.交叉
5.变异
6.重复2-5步,直到满足终止条件
7.返回最优解
具体来说,我们采用如下的参数:
种群大小:100
交叉概率:0.8
变异概率:0.05
终止条件:连续10代最优解没有变化
接下来,我们依次对每个步骤进行详细说明。
1. 初始化种群
我们采用随机初始化的方法来生成初始种群。对于每个个体,我们随机生成x1,x2,x3,x4,x5,x6,x7的值,并对其进行限制。具体来说,对于每个x(i),我们生成一个随机数r(i),然后令x(i) = max(w(i)*h(i),r(i))和x(i) = min(d(i),x(i))。
2. 计算适应度
对于每个个体,我们计算其适应度值。具体来说,我们将其代入f1(x1,x2,x3,x4,x5,x6,x7)中,得到一个数值,作为该个体的适应度值。
3. 选择
我们采用轮盘赌选择的方法来选择个体。即,我们首先计算所有个体的适应度之和F,然后对于每个个体,计算其被选中的概率p(i) = f(i)/F。然后,我们采用如下的方法来选择n个个体:
重复n次,每次:
生成一个随机数r,满足0 <= r <= 1
从种群中选择第一个使得∑p(i) >= r的个体
4. 交叉
我们采用单点交叉的方法来进行交叉。具体来说,我们选取两个父个体,然后随机选取一个位置k,将两个父个体在位置k处切分,然后交换它们的后半部分,得到两个子个体。然后,我们将这两个子个体加入种群中。
5. 变异
我们采用基因突变的方法来进行变异。具体来说,对于每个个体,我们以一定概率(变异概率)对其某个基因进行突变,即在其取值范围内随机生成一个新的值,并替换原来的值。
6. 终止条件
我们设定一个终止条件,即连续10代最优解没有变化。具体来说,我们记录当前最优解的值f_best和代数generation_now,如果在后续的10代中,没有出现更好的解,则终止算法,返回最优解。
7. 返回最优解
当算法满足终止条件时,我们返回当前的最优解。
阅读全文