装配生产线任务平衡问题的遗传算法MATLAB源代码

装配生产线任务平衡问题的遗传算法MATLAB源代码
装配生产线任务平衡问题的遗传算法MATLAB源代码

装配生产线任务平衡问题的遗传算法MATLAB源代码

下面的源码实现了装配生产线任务平衡优化问题(ALB问题)的遗传算法,算法主要参考下面这篇文献,并对其进行了改进。陈永卿,潘刚,李平.基于混合遗传算法的装配线平衡[J].机电工程,2008,25(4):60-62.。

function

[BestX,BestY,BestZ,AllFarm,LC1,LC2,LC3,LC4,LC5]=GSAALB(M,N,Pm,Pd,K,t0,alpha,Tas kP,TaskT,TaskV,RT,RV)

% GreenSim团队——专业级算法设计&代写程序

% 欢迎访问GreenSim团队主页→https://www.360docs.net/doc/528580981.html,/greensim

%% 装配生产线任务平衡问题的遗传算法

%% 输入参数列表

% M------------遗传算法进化代数

% N------------种群规模,取偶数

% Pm-----------变异概率调节参数

% Pd-----------变异程度调节参数,0

% K------------同一温度下状态跳转次数

% T0-----------初始温度

% Alpha--------降温系数

% Beta---------浓度均衡系数

% TaskP--------任务优先矩阵,n×n矩阵,Pij=1表示任务i需在j之前完成,Pij=0时任务i和j没有优先关系

% TaskT--------任务时间属性,n×1向量

% TaskV--------任务体积属性,n×1向量

% RT-----------时间节拍约束

% RV-----------工位体积约束

%% 输出参数列表

% BestX--------最好个体的编码

% BestY--------最好个体对应的装配方案

% BestZ--------最好个体的目标函数值

% LC1----------最优个体适应值的收敛曲线,M×1

% LC2----------种群平均适应值的收敛曲线,M×1

% LC3----------工位个数收敛曲线,M×1

% LC4----------时间利用率及平衡度综合度量参数收敛曲线,M×1

% LC5----------空间利用率及平衡度综合度量参数收敛曲线,M×1

% AllFarm------各代种群的集合,M×1的细胞结构

%% -----------------------初始化----------------------------------

n=size(TaskP,1);

[AA,BB]=QJHJ(TaskP);%调用子函数,建立每一个任务的前任务集和后任务集

farm=Initialization(N,TaskP,AA,BB);%调用子函数,种群初始化

%输出参数初始化

BestX=zeros(1,n);

BestY=zeros(1,n);

BestZ=0;

LC1=zeros(M,1);

LC2=zeros(M,1);

LC3=zeros(M,1);

LC4=zeros(M,1);

LC5=zeros(M,1);

AllFarm=cell(M,1);

%控制参数初始化

m=1;%迭代计数器

t=t0;%温度指示器

BestPos=1;%初始时任意指定被保护个体

%% -----------------------迭代过程---------------------------------

while m<=M%设置停止条件

%% ----------------------变异退火算子------------------------------

for i=1:N

if rand>Pm&&i~=BestPos

%如果随机数大于变异概率门限值,并且不属于保护个体,就对其实施变异 I=farm(i,:);%取出该个体

k=1;

while k<=K%每一个温度下的状态转移次数

%调用变异子函数

J=Mutation(I,Pd,AA,BB);

%调用计算适应值子函数

[YI,ZI,FI,TGWI,VGWI,f1I,f2I]=Fitness(I,TaskT,TaskV,RT,RV);

[YJ,ZJ,FJ,TGWJ,VGWJ,f1J,f2J]=Fitness(J,TaskT,TaskV,RT,RV);

if FJ>FI

farm(i,:)=J;

elseif rand

farm(i,:)=J;

else

farm(i,:)=I;

end

k=k+1;

end

end

end

%% -----------------------交叉算子---------------------------------

newfarm=zeros(size(farm));

Ser=randperm(N);%用这个函数保证随机配对

for i=1:2:(N-1)

FA=farm(Ser(i),:);

FB=farm(Ser(i+1),:);

[SA,SB]=CrossOver(FA,FB);

newfarm(i,:)=SA;

newfarm(i+1,:)=SB;

end

%新旧种群合并

FARM=[farm;newfarm];

%% -----------------------选择复制--------------------------------- FIT_Y=zeros(2*N,n);

FIT_Z=zeros(2*N,1);

FIT_F=zeros(2*N,1);

FIT_f1=zeros(2*N,1);

FIT_f2=zeros(2*N,1);

fit_Y=zeros(N,n);

fit_Z=zeros(N,1);

fit_F=zeros(N,1);

fit_f1=zeros(N,1);

fit_f2=zeros(N,1);

for i=1:(2*N)

XX=FARM(i,:);

[Y,Z,F,TGW,VGW,f1,f2]=Fitness(XX,TaskT,TaskV,RT,RV);

FIT_Y(i,:)=Y;

FIT_Z(i)=Z;

FIT_F(i)=F;

FIT_f1(i)=f1;

FIT_f2(i)=f2;

end

Ser=randperm(2*N);

for i=1:N

ff1=FIT_F(Ser(2*i-1));

ff2=FIT_F(Ser(2*i));

if ff1>=ff2

farm(i,:)=FARM(Ser(2*i-1),:);

fit_Y(i,:)=FIT_Y(Ser(2*i-1),:);

fit_Z(i)=FIT_Z(Ser(2*i-1));

fit_F(i)=FIT_F(Ser(2*i-1));

fit_f1(i)=FIT_f1(Ser(2*i-1));

fit_f2(i)=FIT_f2(Ser(2*i-1));

else

farm(i,:)=FARM(Ser(2*i),:);

fit_Y(i,:)=FIT_Y(Ser(2*i),:);

fit_Z(i)=FIT_Z(Ser(2*i));

fit_F(i)=FIT_F(Ser(2*i));

fit_f1(i)=FIT_f1(Ser(2*i));

fit_f2(i)=FIT_f2(Ser(2*i));

end

end

%% -----------------------记录与更新-------------------------------

maxF=max(fit_F);

meanF=mean(fit_F);

LC1(m)=maxF;

LC2(m)=meanF;

pos=find(fit_F==maxF);

BestPos=pos(1);

BestX=farm(BestPos,:);

BestY=fit_Y(BestPos,:);

BestZ=fit_Z(BestPos);

LC3(m)=fit_Z(BestPos);

LC4(m)=fit_f1(BestPos);

LC5(m)=fit_f2(BestPos);

AllFarm{m}=farm;

disp(m);

m=m+1;

t=t*alpha;

end

源代码运行结果展示

(本资料素材和资料部分来自网络,仅供参考。请预览后才下载,期待您的好评与关注!)

最新21装配生产线任务平衡问题的遗传算法MATLAB源代码汇总

21装配生产线任务平衡问题的遗传算法 M A T L A B源代码

装配生产线任务平衡问题的遗传算法MATLAB源代码下面的源码实现了装配生产线任务平衡优化问题(ALB问题)的遗传算法,算法主要参考下面这篇文献,并对其进行了改进。陈永卿,潘刚,李平.基于混合遗传算法的装配线平衡[J].机电工程,2008,25(4):60-62.。 function [BestX,BestY,BestZ,AllFarm,LC1,LC2,LC3,LC4,LC5]=GSAALB(M,N,Pm,Pd,K,t0, alpha,TaskP,TaskT,TaskV,RT,RV) % GreenSim团队——专业级算法设计&代写程序 % 欢迎访问GreenSim团队主页→https://www.360docs.net/doc/528580981.html,/greensim %% 装配生产线任务平衡问题的遗传算法 %% 输入参数列表 % M------------遗传算法进化代数 % N------------种群规模,取偶数 % Pm-----------变异概率调节参数 % Pd-----------变异程度调节参数,0

遗传算法经典MATLAB代码

遗传算法实例: 也是自己找来的,原代码有少许错误,本人都已更正了,调试运行都通过了的。 对于初学者,尤其是还没有编程经验的非常有用的一个文件 遗传算法实例 % 下面举例说明遗传算法% % 求下列函数的最大值% % f(x)=10*sin(5x)+7*cos(4x) x∈[0,10]% % 将x 的值用一个10位的二值形式表示为二值问题,一个10位的二值数提供的分辨率是每为(10-0)/(2^10-1)≈。% % 将变量域[0,10] 离散化为二值域[0,1023], x=0+10*b/1023, 其 中 b 是[0,1023] 中的一个二值数。% % % %--------------------------------------------------------------------------------------------------------------% %--------------------------------------------------------------------------------------------------------------% % 编程

%----------------------------------------------- % 初始化(编码) % 函数的功能是实现群体的初始化,popsize表示群体的大小,chromlength 表示染色体的长度(二值数的长度), % 长度大小取决于变量的二进制编码的长度(在本例中取10位)。 %遗传算法子程序 %Name: %初始化 function pop=initpop(popsize,chromlength) pop=round(rand(popsize,chromlength)); % rand随机产生每个单元 为{0,1} 行数为popsize,列数为chromlength的矩阵, % roud对矩阵的每个单元进行圆整。这样产生的初始种群。 % 计算目标函数值 % 将二进制数转化为十进制数(1) %遗传算法子程序 %Name: %产生[2^n 2^(n-1) ... 1] 的行向量,然后求和,将二进制转化为十进制

遗传算法MATLAB完整代码(不用工具箱)

遗传算法解决简单问题 %主程序:用遗传算法求解y=200*exp(-0.05*x).*sin(x)在区间[-2,2]上的最大值clc; clear all; close all; global BitLength global boundsbegin global boundsend bounds=[-2,2]; precision=0.0001; boundsbegin=bounds(:,1); boundsend=bounds(:,2); %计算如果满足求解精度至少需要多长的染色体 BitLength=ceil(log2((boundsend-boundsbegin)'./precision)); popsize=50; %初始种群大小 Generationmax=12; %最大代数 pcrossover=0.90; %交配概率 pmutation=0.09; %变异概率 %产生初始种群 population=round(rand(popsize,BitLength)); %计算适应度,返回适应度Fitvalue和累计概率cumsump [Fitvalue,cumsump]=fitnessfun(population); Generation=1; while Generation

MATLAB课程遗传算法实验报告及源代码

硕士生考查课程考试试卷 考试科目: 考生姓名:考生学号: 学院:专业: 考生成绩: 任课老师(签名) 考试日期:年月日午时至时

《MATLAB 教程》试题: A 、利用MATLA B 设计遗传算法程序,寻找下图11个端点最短路径,其中没有连接端点表示没有路径。要求设计遗传算法对该问题求解。 a e h k B 、设计遗传算法求解f (x)极小值,具体表达式如下: 321231(,,)5.12 5.12,1,2,3i i i f x x x x x i =?=???-≤≤=? ∑ 要求必须使用m 函数方式设计程序。 C 、利用MATLAB 编程实现:三名商人各带一个随从乘船渡河,一只小船只能容纳二人,由他们自己划行,随从们密约,在河的任一岸,一旦随从的人数比商人多,就杀人越货,但是如何乘船渡河的大权掌握在商人手中,商人们怎样才能安全渡河? D 、结合自己的研究方向选择合适的问题,利用MATLAB 进行实验。 以上四题任选一题进行实验,并写出实验报告。

选择题目: B 、设计遗传算法求解f (x)极小值,具体表达式如下: 321231(,,)5.12 5.12,1,2,3i i i f x x x x x i =?=???-≤≤=? ∑ 要求必须使用m 函数方式设计程序。 一、问题分析(10分) 这是一个简单的三元函数求最小值的函数优化问题,可以利用遗传算法来指导性搜索最小值。实验要求必须以matlab 为工具,利用遗传算法对问题进行求解。 在本实验中,要求我们用M 函数自行设计遗传算法,通过遗传算法基本原理,选择、交叉、变异等操作进行指导性邻域搜索,得到最优解。 二、实验原理与数学模型(20分) (1)试验原理: 用遗传算法求解函数优化问题,遗传算法是模拟生物在自然环境下的遗传和进化过程而形成的一种自适应全局优化概率搜索方法。其采纳了自然进化模型,从代表问题可能潜在解集的一个种群开始,种群由经过基因编码的一定数目的个体组成。每个个体实际上是染色体带有特征的实体;初始种群产生后,按照适者生存和优胜劣汰的原理,逐代演化产生出越来越好的解:在每一代,概据问题域中个体的适应度大小挑选个体;并借助遗传算子进行组合交叉和主客观变异,产生出代表新的解集的种群。这一过程循环执行,直到满足优化准则为止。最后,末代个体经解码,生成近似最优解。基于种群进化机制的遗传算法如同自然界进化一样,后生代种群比前生代更加适应于环境,通过逐代进化,逼近最优解。 遗传算法是一种现代智能算法,实际上它的功能十分强大,能够用于求解一些难以用常规数学手段进行求解的问题,尤其适用于求解多目标、多约束,且目标函数形式非常复杂的优化问题。但是遗传算法也有一些缺点,最为关键的一点,即没有任何理论能够证明遗传算法一定能够找到最优解,算法主要是根据概率论的思想来寻找最优解。因此,遗传算法所得到的解只是一个近似解,而不一定是最优解。 (2)数学模型 对于求解该问题遗传算法的构造过程: (1)确定决策变量和约束条件;

装配线平衡模型

精心整理§7综合举例 例7.1求解非线性方程组 其LINGO代码如下: model: x^2+y^2=2; 2*x^2+x+y^2+y=4; end 计算的部分结果为 Feasiblesolutionfoundatiteration:0 VariableValue !工作站集合; STATION/1..4/; TXS(TASK,STATION):X; !X是派生集合TXS的一个属性。如果X(I,K)=1,则表示第I个任务 指派给第K个工作站完成; ENDSETS DATA: !任务ABCDEFGHIJK的完成时间估计如下; T=4511950151212121289; ENDDATA !当任务超过15个时,模型的求解将变得很慢; !每一个作业必须指派到一个工作站,即满足约束①; @FOR(TASK(I):@SUM(STATION(K):X(I,K))=1);

!对于每一个存在优先关系的作业对来说,前者对应的工作站I必须小于后者对应的工作站J,即满足约束②; @FOR(PRED(I,J):@SUM(STATION(K):K*X(J,K)-K*X(I,K))>=0); !对于每一个工作站来说,其花费时间必须不大于装配线周期; @FOR(STATION(K): @SUM(TXS(I,K):T(I)*X(I,K))<=CYCTIME); !目标函数是最小化转配线周期; MIN=CYCTIME; !指定X(I,J)为0/1变量; @FOR(TXS:@BIN(X)); END 计算的部分结果为 Globaloptimalsolutionfoundatiteration:1255 X(G,3)0.00000012.00000 X(G,4)1.0000000.000000 X(H,1)0.0000000.000000 X(H,2)0.0000000.000000 X(H,3)1.00000012.00000 X(H,4)0.0000000.000000 X(I,1)0.0000000.000000 X(I,2)0.0000000.000000 X(I,3)1.00000012.00000 X(I,4)0.0000000.000000 X(J,1)0.0000000.000000 X(J,2)0.0000000.000000 X(J,3)0.0000008.000000 X(J,4)1.0000000.000000

遗传算法Matlab程序

% f(x)=11*sin(6x)+7*cos(5x),0<=x<=2*pi; %%初始化参数 L=16;%编码为16位二进制数 N=32;%初始种群规模 M=48;%M个中间体,运用算子选择出M/2对母体,进行交叉;对M个中间体进行变异 T=100;%进化代数 Pc=0.8;%交叉概率 Pm=0.03;%%变异概率 %%将十进制编码成16位的二进制,再将16位的二进制转成格雷码 for i=1:1:N x1(1,i)= rand()*2*pi; x2(1,i)= uint16(x1(1,i)/(2*pi)*65535); grayCode(i,:)=num2gray(x2(1,i),L); end %% 开始遗传算子操作 for t=1:1:T y1=11*sin(6*x1)+7*cos(5*x1); for i=1:1:M/2 [a,b]=min(y1);%找到y1中的最小值a,及其对应的编号b grayCodeNew(i,:)=grayCode(b,:);%将找到的最小数放到grayCodeNew中grayCodeNew(i+M/2,:)=grayCode(b,:);%与上面相同就可以有M/2对格雷码可以作为母体y1(1,b)=inf;%用来排除已找到的最小值 end for i=1:1:M/2 p=unidrnd(L);%生成一个大于零小于L的数,用于下面进行交叉的位置if rand()

遗传算法经典MATLAB代码资料讲解

遗传算法经典学习Matlab代码 遗传算法实例: 也是自己找来的,原代码有少许错误,本人都已更正了,调试运行都通过了的。 对于初学者,尤其是还没有编程经验的非常有用的一个文件 遗传算法实例 % 下面举例说明遗传算法% % 求下列函数的最大值% % f(x)=10*sin(5x)+7*cos(4x) x∈[0,10]% % 将x 的值用一个10位的二值形式表示为二值问题,一个10位的二值数提供的分辨率是每为(10-0)/(2^10-1)≈0.01。% % 将变量域[0,10] 离散化为二值域[0,1023], x=0+10*b/1023, 其 中 b 是[0,1023] 中的一个二值数。% % % %--------------------------------------------------------------------------------------------------------------% %--------------------------------------------------------------------------------------------------------------% % 编程 %----------------------------------------------- % 2.1初始化(编码) % initpop.m函数的功能是实现群体的初始化,popsize表示群体的大小,chromlength表示染色体的长度(二值数的长度),

% 长度大小取决于变量的二进制编码的长度(在本例中取10位)。 %遗传算法子程序 %Name: initpop.m %初始化 function pop=initpop(popsize,chromlength) pop=round(rand(popsize,chromlength)); % rand随机产生每个单元 为{0,1} 行数为popsize,列数为chromlength的矩阵, % roud对矩阵的每个单元进行圆整。这样产生的初始种群。 % 2.2 计算目标函数值 % 2.2.1 将二进制数转化为十进制数(1) %遗传算法子程序 %Name: decodebinary.m %产生[2^n 2^(n-1) ... 1] 的行向量,然后求和,将二进制转化为十进制 function pop2=decodebinary(pop) [px,py]=size(pop); %求pop行和列数 for i=1:py pop1(:,i)=2.^(py-i).*pop(:,i); end pop2=sum(pop1,2); %求pop1的每行之和 % 2.2.2 将二进制编码转化为十进制数(2) % decodechrom.m函数的功能是将染色体(或二进制编码)转换为十进制,参数spoint表示待解码的二进制串的起始位置

基于遗传算法的matlab源代码

function youhuafun D=code; N=50;%Tunable maxgen=50;%Tunable crossrate=0.5;%Tunable muterate=0.08;%Tunable generation=1; num=length(D); fatherrand=randint(num,N,3); score=zeros(maxgen,N); while generation<=maxgen ind=randperm(N-2)+2;%随机配对交叉 A=fatherrand(:,ind(1:(N-2)/2)); B=fatherrand(:,ind((N-2)/2+1:end)); %多点交叉 rnd=rand(num,(N-2)/2); ind=rnd tmp=A(ind); A(ind)=B(ind); B(ind)=tmp; %%两点交叉 %for kk=1:(N-2)/2 %rndtmp=randint(1,1,num)+1; %tmp=A(1:rndtmp,kk); %A(1:rndtmp,kk)=B(1:rndtmp,kk); %B(1:rndtmp,kk)=tmp; %end fatherrand=[fatherrand(:,1:2),A,B]; %变异 rnd=rand(num,N); ind=rnd[m,n]=size(ind); tmp=randint(m,n,2)+1; tmp(:,1:2)=0; fatherrand=tmp+fatherrand; fatherrand=mod(fatherrand,3); %fatherrand(ind)=tmp; %评价、选择 scoreN=scorefun(fatherrand,D);%求得N个个体的评价函数 score(generation,:)=scoreN; [scoreSort,scoreind]=sort(scoreN); sumscore=cumsum(scoreSort); sumscore=sumscore./sumscore(end); childind(1:2)=scoreind(end-1:end); for k=3:N tmprnd=rand; tmpind=tmprnd difind=[0,diff(t mpind)]; if~any(difind) difind(1)=1; end childind(k)=scoreind(logical(difind)); end fatherrand=fatherrand(:,childind); generation=generation+1; end %score maxV=max(score,[],2); minV=11*300-maxV; plot(minV,'*');title('各代的目标函数值'); F4=D(:,4); FF4=F4-fatherrand(:,1); FF4=max(FF4,1); D(:,5)=FF4; save DData D function D=code load youhua.mat %properties F2and F3 F1=A(:,1); F2=A(:,2); F3=A(:,3); if(max(F2)>1450)||(min(F2)<=900) error('DATA property F2exceed it''s range (900,1450]') end %get group property F1of data,according to F2value F4=zeros(size(F1)); for ite=11:-1:1 index=find(F2<=900+ite*50); F4(index)=ite; end D=[F1,F2,F3,F4]; function ScoreN=scorefun(fatherrand,D) F3=D(:,3); F4=D(:,4); N=size(fatherrand,2); FF4=F4*ones(1,N); FF4rnd=FF4-fatherrand; FF4rnd=max(FF4rnd,1); ScoreN=ones(1,N)*300*11; %这里有待优化

遗传算法的MATLAB程序实例

遗传算法的程序实例 如求下列函数的最大值 f(x)=10*sin(5x)+7*cos(4x) x∈[0,10] 一、初始化(编码) initpop.m函数的功能是实现群体的初始化,popsize表示群体的大小,chromlength表示染色体的长度(二值数的长度), 长度大小取决于变量的二进制编码的长度(在本例中取10位)。 代码: %Name: initpop.m %初始化 function pop=initpop(popsize,chromlength) pop=round(rand(popsize,chromlength)); % rand随机产生每个单元为 {0,1} 行数为popsize,列数为chromlength的矩阵, % roud对矩阵的每个单元进行圆整。这样产生的初始种群。 二、计算目标函数值 1、将二进制数转化为十进制数(1) 代码: %Name: decodebinary.m %产生 [2^n 2^(n-1) ... 1] 的行向量,然后求和,将二进制转化为十进制 function pop2=decodebinary(pop) [px,py]=size(pop); %求pop行和例数 for i=1:py pop1(:,i)=2.^(py-1).*pop(:,i); py=py-1; end pop2=sum(pop1,2); %求pop1的每行之和 2、将二进制编码转化为十进制数(2) decodechrom.m函数的功能是将染色体(或二进制编码)转换为十进制,参数spoint表示待解码的二进制串的起始位置。(对于多个变量而言,如有两个变量,采用20为表示,每个变量10为,则第一个变量从1开始,另一个变量从11开始。本例为1),参数1ength表示所截取的长度(本例为10)。 代码: %Name: decodechrom.m %将二进制编码转换成十进制 function pop2=decodechrom(pop,spoint,length) pop1=pop(:,spoint:spoint+length-1); pop2=decodebinary(pop1); 3、计算目标函数值 calobjvalue.m函数的功能是实现目标函数的计算,其公式采用本文示例仿真,可根据不同优化问题予以修改。

基于遗传算法的BP神经网络MATLAB代码

用遗传算法优化BP神经网络的Matlab编程实例(转) 由于BP网络的权值优化是一个无约束优化问题,而且权值要采用实数编码,所以直接利用Matlab遗传算法工具箱。以下贴出的代码是为一个19输入变量,1个输出变量情况下的非线性回归而设计的,如果要应用于其它情况,只需改动编解码函数即可。 程序一:GA训练BP权值的主函数 function net=GABPNET(XX,YY) %-------------------------------------------------------------------------- % GABPNET.m % 使用遗传算法对BP网络权值阈值进行优化,再用BP算法训练网络 %-------------------------------------------------------------------------- %数据归一化预处理 nntwarn off XX=[1:19;2:20;3:21;4:22]'; YY=[1:4]; XX=premnmx(XX); YY=premnmx(YY); YY %创建网络 net=newff(minmax(XX),[19,25,1],{'tansig','tansig','purelin'},'tra inlm'); %下面使用遗传算法对网络进行优化 P=XX; T=YY; R=size(P,1); S2=size(T,1); S1=25;%隐含层节点数 S=R*S1+S1*S2+S1+S2;%遗传算法编码长度 aa=ones(S,1)*[-1,1]; popu=50;%种群规模 save data2 XX YY % 是将 xx,yy 二个变数的数值存入 data2 这个MAT-file,initPpp=initializega(popu,aa,'gabpEval');%初始化种群 gen=100;%遗传代数

画装配工序先后顺序图 及装配线平衡

画装配工序先后顺序图 装配线的平衡 N :装配线的工位数 C : 节拍 : 第i 项任务的作业 时间 4)装配线平衡的步骤: a .确定装配线的节拍 节拍c = 计划起有效工作时间/计划期产量 注意:有效工作时间除去必要的停歇;产量包含不合格品。 b . 计算装配线需要的最少工位数 N = [产品装配总作业时间/节拍] = [ ] c . 组织工位 向每一个工位分配任务时必须满足下列条件: 保证人物之间的顺序关系; 每个工位分配的任务作业之和不能大于节拍; 各工位的单件作业时间应尽量相等或接近节拍; 使工位数尽量少 后续任务数多的工作优先安排;加工时间长的工作优先安排。 d .计算装配线的负荷系数 ηη-=?=∑ 1BD C N t i

B D为装配线平衡损失系数 一装配线计划每小时装配200件,每小时工作时间为50分钟,下表是各个工序及关系。求 (1)画出装配工序顺序图 (2)计算装配线的节拍 (3)计算每小时装配200件的最小工序数 (4)进行装配线平衡,使时间损失率最小 装配线工序及作业时间 工序作业时间紧前工序 a0.2- b0.05- c0.15- d0.06- e0.03a,b f0.08c,d g0.12e,f h0.05- i0.05- j0.12h,i k0.15j L0.08k 解答:

(1)画图略 (2)节拍 C=50/200=0.25(分钟/件) (3)最小工作地数 N=[工序作业时间之和/节拍]= [(0.2+0.05+0.15+0.06+0.03+0.08+0.12+0.05+0.05+0.12+0.15+0. 08)/0.25]=5 (4)平衡结果:(a,b),(c,d,e),(f,g),(h,i),(j),(k,L). 效率=83%

三个遗传算法matlab程序实例

遗传算法程序(一): 说明: fga.m 为遗传算法的主程序; 采用二进制Gray编码,采用基于轮盘赌法的非线性排名选择, 均匀交叉,变异操作,而且还引入了倒位操作! function [BestPop,Trace]=fga(FUN,LB,UB,eranum,popsize,pCross,pMutation,pInversion,options) % [BestPop,Trace]=fmaxga(FUN,LB,UB,eranum,popsize,pcross,pmutation) % Finds a maximum of a function of several variables. % fmaxga solves problems of the form: % max F(X) subject to: LB <= X <= UB % BestPop - 最优的群体即为最优的染色体群 % Trace - 最佳染色体所对应的目标函数值 % FUN - 目标函数 % LB - 自变量下限 % UB - 自变量上限 % eranum - 种群的代数,取100--1000(默认200) % popsize - 每一代种群的规模;此可取50--200(默认100) % pcross - 交叉概率,一般取0.5--0.85之间较好(默认0.8) % pmutation - 初始变异概率,一般取0.05-0.2之间较好(默认0.1) % pInversion - 倒位概率,一般取0.05-0.3之间较好(默认0.2) % options - 1*2矩阵,options(1)=0二进制编码(默认0),option(1)~=0十进制编 %码,option(2)设定求解精度(默认1e-4) % % ------------------------------------------------------------------------ T1=clock; if nargin<3, error('FMAXGA requires at least three input arguments'); end if nargin==3, eranum=200;popsize=100;pCross=0.8;pMutation=0.1;pInversion=0.15;options=[0 1e-4];end if nargin==4, popsize=100;pCross=0.8;pMutation=0.1;pInversion=0.15;options=[0 1e-4];end if nargin==5, pCross=0.8;pMutation=0.1;pInversion=0.15;options=[0 1e-4];end if nargin==6, pMutation=0.1;pInversion=0.15;options=[0 1e-4];end if nargin==7, pInversion=0.15;options=[0 1e-4];end if find((LB-UB)>0) error('数据输入错误,请重新输入(LB

遗传算法求函数极大值(matlab实现)

遗传算法求函数最大值(matlab实现) 一、题目: 寻找f(x)=x2,,当x在0~31区间的最大值。 二、源程序: %遗传算法求解函数最大值 %本程序用到了英国谢菲尔德大学(Sheffield)开发的工具箱GATBX,该工具箱比matlab自带的GATOOL使用更加灵活,但在编写程序方面稍微复杂一些 Close all; Clear all; figure(1); fplot('variable*variable',[0,31]); %画出函数曲线 %以下定义遗传算法参数 GTSM=40; %定义个体数目 ZDYCDS=20; %定义最大遗传代数 EJZWS=5; %定义变量的二进制位数 DG=0.9; %定义代沟 trace=zeros(2, ZDYCDS); %最优结果的初始值

FieldD=[5;-1;2;1;0;1;1]; %定义区域描述器的各个参数%以下为遗传算法基本操作部分,包括创建初始种群、复制、交叉和变异 Chrom=crtbp(GTSM, EJZWS); %创建初始种群,即生成给定 规模的二进制种群和结构gen=0; %定义代数计数器初始值variable=bs2rv(Chrom, FieldD); %对生成的初始种群进行十进制转换 ObjV=variable*variable; %计算目标函数值f(x)=x2 while gen

生产组装线平衡实例

生產組裝線平衡實例 清華大學工業工程與工程管理學系 許棟樑教授 研究生: 陳俊元

Project List for a major NB maker Project 1: ?系統組裝線分析診斷 ?系統組裝線Line Balance Project 2:物流與倉儲佈置分析改善 Project 3: ?電路板組裝線分析診斷 電路板組裝線Line Balance

Use in-depth optimization techniques to balance the line by properly assigning tasks to work stations in order to: ?Maximize the outputs with given input resources (Output oriented) ?Minimize the input resources with given output requirements. (Input oriented) ?Or, somewhere in between the above two –looking for more outputs with less inputs so that the efficiency is maximized.

Methodology Briefing ?建立一數學模型來使得各工作站在考慮組裝前後次序下能以較佳的時間分配其動作(task)項目, 並以ILOG CPLEX軟體迅速求解。利用此模式系統組裝線進行工作站數及作業內容的最佳化分配,以提昇平衡率並減少工作站數。 ?最佳化之目標導向可分為兩類: 1.Input-Oriented:在固定產出率下,最佳化(極小化)資源投入量。

matlab遗传算法程序

matlab遗传算法程序共13个.m文件。 1、B2F.m function [B,len,v]=B2F(sol,bounds) %[B,len]=B2F(x,bounds) 二进制编码函数 %x 编码向量如x=[6 8 9]; %bounds 边界约束ru如bounds=[4 8 ;3 11;6 12;]; %B 二进制编码串 %编码长度L由bounds(2)-bounds(1)决定 %以上为例: % 编码长度向量L=[4 8 6]编成二进制L=[11 1000 110],则len=[2 4 3] % 计算B=x-bound(1)=[2 5 3]编成二进制B=[10 0101 011] n=length(sol); len=[];B=[];v=[]; L=bounds(:,2)-bounds(:,1); L=de2bi(L); for i=1:n len(i)=length(L(i,:)); end v=sol-bounds(:,1)'; for i=1:n B=[B de2bi(v(i),len(i))]; end

2、changes.m function [pops]=changes(cpop,bounds,len,p) %基因突变函数 %function [pops]=changes(pop,bounds,len,p) %pop 种群数目 %bounds 边界约束 %len 每个变量的编码长度 % 如len为[4 3 3];表示有三个变量,第一个变量的二进制编码长度为4,依次类推%p 突变概率 %pops 返回突变后的基因 %p1 基因突变数目 if isempty(p) p=0.01; end [n,m]=size(cpop); pop=cpop; p1=round(sum(len)*n*p); k=0;q=[];v=[]; while(k

装配线平衡实例

某玩具小车装配线是一混合流水线,主要生产A和B两种类型的玩具车,这两类玩具小车的装配步骤及其定额时间分别如表3-1和表3-2所示,现计划A 型小车每天生产100辆,B型小车每天生产400辆,每天的生产时间为420分钟。求使工作站数量最少的生产线平衡方式。 表3-1 A型小车的装配步骤及时间 作业时间(秒)描述必须提前的作业 A 45 安装后轴支架,拧紧4个螺母— B 11 插入后轴 A C 9 拧紧后轴支架螺栓 B D 50 安装前轴,用手拧紧4个螺母— E 15 拧紧前轴螺栓 D F 12 安装1#后车轮,拧紧轮轴盖 C G 12 安装2#后车轮,拧紧轮轴盖 C H 12 安装1#前车轮,拧紧轮轴盖 E I 12 安装2#前车轮,拧紧轮轴盖 E J 8 安装前轴上的车把手,拧紧螺栓和螺 钉 F,G,H,I L 9 上紧全部螺栓和螺钉 合计195 表3-2 B型小车的装配步骤及时间 作业时间(秒)描述必须提前的作业 A 45 安装后轴支架,拧紧4个螺母— B 11 插入后轴 A C 9 拧紧后轴支架螺栓 B D 50 安装前轴,用手拧紧4个螺母— E 15 拧紧前轴螺栓 D F 12 安装1#后车轮,拧紧轮轴盖 C G 12 安装2#后车轮,拧紧轮轴盖 C H 12 安装1#前车轮,拧紧轮轴盖 E I 12 安装2#前车轮,拧紧轮轴盖 E J 8 安装前轴上的车把手,拧紧螺栓和螺 钉 F,G,H,I K 10 安装备用轮胎J M 9 上紧全部螺栓和螺钉K 合计205

图1 A 型产品的工艺顺序图 图2 B 型产品的工艺顺序图 A B D E I C F G H J K 45 50 12 12 12 12 11 9 15 8 10 9 A B D E I C F G H J L 45 50 12 12 12 12 11 9 15 8 9 M

遗传算法的原理及MATLAB程序实现

1 遗传算法的原理 1.1 遗传算法的基本思想 遗传算法(genetic algorithms,GA)是一种基于自然选择和基因遗传学原理,借鉴了生物进化优胜劣汰的自然选择机理和生物界繁衍进化的基因重组、突变的遗传机制的全局自适应概率搜索算法。 遗传算法是从一组随机产生的初始解(种群)开始,这个种群由经过基因编码的一定数量的个体组成,每个个体实际上是染色体带有特征的实体。染色体作为遗传物质的主要载体,其内部表现(即基因型)是某种基因组合,它决定了个体的外部表现。因此,从一开始就需要实现从表现型到基因型的映射,即编码工作。初始种群产生后,按照优胜劣汰的原理,逐代演化产生出越来越好的近似解。在每一代,根据问题域中个体的适应度大小选择个体,并借助于自然遗传学的遗传算子进行组合交叉和变异,产生出代表新的解集的种群。这个过程将导致种群像自然进化一样,后代种群比前代更加适应环境,末代种群中的最优个体经过解码,可以作为问题近似最优解。 计算开始时,将实际问题的变量进行编码形成染色体,随机产生一定数目的个体,即种群,并计算每个个体的适应度值,然后通过终止条件判断该初始解是否是最优解,若是则停止计算输出结果,若不是则通过遗传算子操作产生新的一代种群,回到计算群体中每个个体的适应度值的部分,然后转到终止条件判断。这一过程循环执行,直到满足优化准则,最终产生问题的最优解。图1-1给出了遗传算法的基本过程。 1.2 遗传算法的特点 1.2.1 遗传算法的优点 遗传算法具有十分强的鲁棒性,比起传统优化方法,遗传算法有如下优点: 1. 遗传算法以控制变量的编码作为运算对象。传统的优化算法往往直接利用控制变量的实际值的本身来进行优化运算,但遗传算法不是直接以控制变量的值,而是以控制变量的特定形式的编码为运算对象。这种对控制变量的编码处理方式,可以模仿自然界中生物的遗传和进化等机理,也使得我们可以方便地处理各种变量和应用遗传操作算子。 2. 遗传算法具有内在的本质并行性。它的并行性表现在两个方面,一是遗传

相关文档
最新文档