matlab生产调度问题及其优化算法

合集下载

如何在Matlab中进行多目标优化问题求解

如何在Matlab中进行多目标优化问题求解

如何在Matlab中进行多目标优化问题求解如何在Matlab中进行多目标优化问题求解?多目标优化问题是指存在多个目标函数,且这些目标函数之间相互矛盾或者无法完全同时满足的问题。

在实际应用中,多目标优化问题非常常见,例如在工程设计中寻求最佳平衡点、在金融投资中追求高收益低风险等。

而Matlab作为一种强大的数值计算工具,提供了丰富的优化算法和工具箱,可以帮助我们解决多目标优化问题。

一、多目标优化问题数学建模在解决多目标优化问题之前,首先需要将实际问题转化为数学模型。

假设我们需要优化一个n维的向量x,使得目标函数f(x)同时最小化或最大化。

其中,n为自变量的个数,f(x)可以表示为多个目标函数f1(x)、f2(x)、...、fm(x)的向量形式:f(x) = [f1(x), f2(x), ..., fm(x)]其中,fi(x)(i=1,2,...,m)即为待优化的目标函数。

在多目标优化问题中,一般没有单一的最优解,而是存在一个解集,称为"帕累托前沿(Pareto Frontier)"。

该解集中的每个解被称为"非支配解(Non-Dominated Solution)",即不能被其他解所优化。

因此,多目标优化问题的目标就是找到帕累托前沿中的最佳解。

二、Matlab中的多目标优化算法Matlab提供了多种多目标优化算法和工具箱,包括paretosearch、gamultiobj、NSGA-II等等。

这些算法基于不同的思想和原理,可以根据问题的特点选择合适的算法进行求解。

1. paretosearch算法paretosearch算法采用遗传算法的思想,通过迭代更新种群来寻找非支配解。

该算法适用于求解中小规模的多目标优化问题。

使用paretosearch算法求解多目标优化问题可以按照以下步骤进行:(1)定义目标函数编写目标函数fi(x)(i=1,2,...,m)的代码。

matlab调用cplex求解优化问题编程简单例子

matlab调用cplex求解优化问题编程简单例子

Matlab是一种强大的科学计算软件,它不仅可以进行数据分析和可视化,还可以进行数值计算和优化问题求解。

而Cplex是一种著名的数学优化软件包,可以用来解决线性规划、整数规划、混合整数规划等问题。

在本文中,我们将介绍如何在Matlab中调用Cplex来求解优化问题,并给出一个简单的例子,帮助读者更好地理解这个过程。

【步骤】1. 安装Matlab和Cplex我们需要在电脑上安装Matlab和Cplex软件。

Matlab全球信息湾上有学术版可以免费下载,而Cplex是商业软件,需要购买授权。

安装完成后,我们需要将Cplex的路径添加到Matlab的搜索路径中,以便Matlab可以找到Cplex的相关函数。

2. 编写Matlab脚本接下来,我们需要编写一个Matlab脚本来调用Cplex求解优化问题。

我们需要定义优化问题的目标函数、约束条件和变量范围。

我们可以使用Cplex的函数来创建优化问题,并设置相应的参数。

我们调用Cplex的求解函数来求解这个优化问题。

以下是一个简单的例子:定义优化问题f = [3; 5; 2]; 目标函数系数A = [1 -1 1; 3 2 4]; 不等式约束系数b = [20; 42]; 不等式约束右端项lb = [0; 0; 0]; 变量下界ub = []; 变量上界创建优化问题problem = cplexoptimset();problem.Display = 'on'; 显示求解过程[x, fval, exitflag, output] = cplexmilp(f, A, b, [], [], [], [], lb, ub, [], problem);显示结果disp(['最优解为:', num2str(x)]);disp(['目标函数值为:', num2str(fval)]);disp(['退出信息为:', output.cplexstatusstring]);```在这个例子中,我们定义了一个线性整数规划问题,目标函数为3x1 + 5x2 + 2x3,约束条件为x1 - x2 + x3 <= 20和3x1 + 2x2 + 4x3 <= 42。

如何优化Matlab代码效率

如何优化Matlab代码效率

如何优化Matlab代码效率一、引言Matlab是一种广泛用于科学计算和工程数据分析的编程语言和环境。

尽管Matlab具有易学易用的优势,但在处理大规模数据和复杂算法时,其执行效率可能受到限制。

本文旨在探讨如何优化Matlab代码的效率,以提高程序执行速度和资源利用率。

二、算法优化在编写Matlab代码时,合理选择和设计算法是提高效率的关键。

以下是一些常见的算法优化方法:1. 向量化操作:利用Matlab对向量和矩阵运算的优化支持,尽量避免使用循环。

通过向量化操作,可以将多个操作并行执行,减少运算次数。

2. 预分配内存空间:在循环中频繁使用动态分配内存的操作会导致效率下降。

可以通过预先分配足够的内存空间来避免频繁的内存分配和释放操作。

3. 减少不必要的计算:分析算法流程,去除不必要的计算步骤和重复计算,减少程序运行时间。

4. 选择高效的数据结构:根据实际需求选择合适的数据结构,例如使用矩阵代替多维数组,使用稀疏矩阵进行存储和计算等。

5. 并行计算:利用Matlab的并行计算工具箱,将计算任务分解为多个子任务,并利用多核或集群资源并行执行,以加速程序运行。

三、内存管理合理的内存管理是优化Matlab代码效率的重要一环。

以下是一些内存管理的技巧:1. 及时释放不再使用的变量:及时清除不再使用的变量,以释放内存空间,避免因内存不足而引起的性能下降。

2. 使用稀疏矩阵:对于大规模的稀疏数据,使用稀疏矩阵可以大幅减少内存占用和计算时间。

3. 内存预分配:通过预估计算所需内存空间,提前分配足够的内存,减少内存分配的开销。

4. 尽量避免频繁的复制操作:在Matlab中,大部分变量传递和复制都是按值传递,会占用额外的内存。

在处理大规模数据时,尽量避免频繁的变量复制操作,以减少内存开销。

四、调试和性能分析工具Matlab提供了一系列的调试和性能分析工具,可以帮助开发者发现代码中的潜在性能瓶颈。

以下是一些常用的工具:1. Profiler:通过运行Profiler,可以收集代码的性能数据,包括函数的执行时间、内存占用等信息。

基于人工免疫克隆选择算法的调度优化MATLAB源码

基于人工免疫克隆选择算法的调度优化MATLAB源码

基于人工免疫克隆选择算法的调度优化MATLAB源码人工免疫克隆选择算法是一种比较新型的智能算法,其基本算法结构与遗传算法是类似的,以下源码是为网络节点分组调度问题而设计的算法。

function[BestX,BestY,AllABfarm,LC1,LC2]=AIA2(M,N,Ns,Ncm,Nr,Pd,alpha,beta,K,Cx,Cy,r,Sx,S y)%% 网络节点分组调度的人工免疫优化算法通用Matlab程序%% 输入参数列表% M------------人工免疫优化算法迭代次数% N------------抗体群的规模% Ns-----------免疫选择算子中选中的抗体个数% Ncm----------克隆变异算子中产生的新抗体的个数% Nr-----------抑制操作中保留下来的抗体个数% Pd-----------变异程度控制参数,取值0~1,越大变异越厉害% alpha--------亲和度加权系数,用于激励度的计算% beta---------浓度加权系数,用于激励度的计算% K------------调度分组的个数% Cx-----------节点的横坐标,1×n的向量% Cy-----------节点的纵坐标,1×n的向量% r------------节点的感知半径,1×n的向量% Sx-----------质点的横坐标,1×m的向量% Sy-----------质点的纵坐标,1×m的向量%% 输出参数列表% BestX--------最优调度方案% BestY--------最优调度对应的平均覆盖率% AllABfarm----历史上所有抗体群的集合,M×1的细胞结构% LC1----------最优抗体亲和度的收敛曲线,M×1% LC2----------抗体群平均亲和度的收敛曲线,M×1%% -----------------------初始化----------------------------------n=length(Cx);LC1=zeros(M,1);LC2=zeros(M,1);AllABfarm=cell(M,1);%控制参数初始化mm=1;%迭代计数器%调用子函数,抗体群初始化ABfarm=AntiBodyInitial(N,n,K);%% -----------------------迭代过程--------------------------------- while mm<=M%设置停止条件%调用子函数,计算抗体群亲和度aff=Affinity(ABfarm,K,Cx,Cy,r,Sx,Sy);%记录收敛曲线maxaff=max(aff);meanaff=mean(aff);LC1(mm)=maxaff;LC2(mm)=meanaff;pos=find(aff==maxaff);BestPos=pos(1);BestX=ABfarm(BestPos,:);BestY=maxaff;AllABfarm{mm}=ABfarm;%调用子函数,计算抗体浓度den=Density(ABfarm);%调用子函数,计算抗体激励度sim=SumUp(aff,den,alpha,beta);%调用子函数,免疫选择算子ABfarmS=Select(ABfarm,sim,Ns);%精英抗体保护ABfarmS(1,:)=BestX;%调用子函数,克隆变异算子ABfarmCM=CloneMutation(ABfarmS,Ncm,Pd,K);%调用子函数,抑制刷新算子ABfarm=RepresRenewal(ABfarmS,ABfarmCM,Nr,N,K,Cx,Cy,r,Sx,Sy);disp(mm);mm=mm+1;end。

使用Matlab进行多目标优化和约束优化

使用Matlab进行多目标优化和约束优化

使用Matlab进行多目标优化和约束优化引言:多目标优化和约束优化是现代科学和工程领域中的重要问题。

在很多实际应用中,我们常常面对的是多个目标参数之间存在冲突的情况,同时还需要满足一定的约束条件。

这就需要我们采用适当的方法和工具进行多目标优化和约束优化。

本文将介绍如何使用Matlab进行多目标优化和约束优化。

一、多目标优化多目标优化是指在优化问题中存在多个目标函数,我们的目标是同时优化这些目标函数。

在Matlab中,可以使用多种方法进行多目标优化,其中常用的方法包括遗传算法、粒子群算法和模拟退火等。

1.1 遗传算法遗传算法是一种模拟生物进化过程的优化算法。

它模拟了遗传的过程,通过交叉、变异和选择等操作,利用群体中不断进化的个体来搜索最优解。

在多目标优化中,遗传算法常用于生成一组非支配解,即没有解能同时优于其他解的情况。

Matlab中提供了相关的工具箱,如Global Optimization Toolbox和Multiobjective Optimization Toolbox,可以方便地进行多目标优化。

1.2 粒子群算法粒子群算法是一种基于群体行为的优化算法。

它通过模拟鸟群或鱼群等群体的行为,寻找最优解。

在多目标优化中,粒子群算法也可以生成一组非支配解。

Matlab中的Particle Swarm Optimization Toolbox提供了相关函数和工具,可以实现多目标优化。

1.3 模拟退火模拟退火是一种模拟金属冶炼过程的优化算法。

它通过模拟金属在高温下退火的过程,通过温度控制来逃离局部最优解,最终达到全局最优解。

在多目标优化中,模拟退火算法可以通过调整温度参数来生成一组非支配解。

Matlab中也提供了相关的函数和工具,可以进行多目标优化。

二、约束优化约束优化是指在优化问题中存在一定的约束条件,我们的目标是在满足这些约束条件的前提下,使目标函数达到最优。

在Matlab中,也有多种方法可以进行约束优化,其中常用的方法包括罚函数法、惩罚函数法和内点法等。

用matlab求解优化问题

用matlab求解优化问题

§8.1.1 线性规划问题的MATLAB 求解方法与一般线性规划理论一样,在MATLAB 中有线性规划的标准型。

在调用MATLAB 线性规划函数linprog 时,要遵循MATLAB 中对标准性的要求。

线性规划问题的MATLAB 标准形为:⎪⎪⎩⎪⎪⎨⎧≤≤=≤=ub x lb b x A b Ax t s x c f eq eq T .. min 在上述模型中,有一个需要极小化的目标函数f ,以及需要满足的约束条件假设x 为n 维设计变量,且线性规划问题具有不等式约束1m 个,等式约束2m 个,那么:x 、、lb c 、 和ub 均为n 维列向量,b 为1m 维列向量,eq b 为m 2维列向量,A 为n m ⨯1维矩阵,eq A 为n m ⨯2维矩阵需要注意的是:MATLAB 标准型是对目标函数求极小,如果遇到是对目标函数求极大的问题,在使用MATLAB 求解时,需要在函数前面加一个负号转化为对目标函数求极小的问题;MATLAB 标准型中的不等式约束形式为""≤,如果在线性规划问题中出现""≥形式的不等式约束,则我们需要在两边乘以(-1)使其转化为MATLAB 中的""≤形式。

如果在线性规划问题中出现了“<”或者“>”的约束形式,则我们需要通过添加松弛变量使得不等式约束变为等式约束之后,我们只需要将所有的约束(包括不等式约束和等式约束)转化为矩阵形式的即可。

例如,对于如下线性规划模型:⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧≥=+=+-≥-+-≤+-+-=0,,7 32 8228 122 ..24 max 3212131321321321x x x x x x x x x x x x x t s x x x f 要转化为MATLAB 标准形,则要经过:(1)原问题是对目标函数求极大,故添加负号使目标变为:32124 m in x x x f -+-=;(2)原问题中存在“≥”的约束条件,故添加负号使其变为:8228321≤+-x x x用MATLAB 表达则为c=[-4; 2; -1]; %将目标函数转化为求极小A=[2 -1 1; 8 -2 2]; b=[12; -8]; %不等式约束系数矩阵Aeq=[-2 0 1; 1 1 0];beq=[3; 7]; %等式约束系数矩阵lb=[0; 0; 0];ub=[Inf; Inf; Inf] %对设计变量的边界约束MATLAB 优化工具箱中求解线性规划问题的命令为linprog ,其函数调用方法有多种形式如下所示:x = linprog(c,A,b)x = linprog(c,A,b,Aeq,beq)x = linprog(c,A,b,Aeq,beq,lb,ub)x = linprog(c,A,b,Aeq,beq,lb,ub,x0)x = linprog(c,A,b,Aeq,beq,lb,ub,x0,options)x = linprog(problem)[x,fval] = linprog(...)[x,fval,exitflag] = linprog(...)[x,fval,exitflag,output] = linprog(...)[x,fval,exitflag,output,lambda] = linprog(...)输入参数MATLAB工具箱中的linprog函数在求解线性规划问题时,提供的参数为:模型参数、初始解参数和算法控制参数。

如何使用Matlab进行多目标优化

如何使用Matlab进行多目标优化

如何使用Matlab进行多目标优化使用Matlab进行多目标优化概述:多目标优化是在现实问题中常见的一种优化方法,即需要优化多个目标函数,而非只有一个目标函数。

这篇文章将介绍如何使用Matlab进行多目标优化,包括问题建模、求解方法和实例分析。

1. 问题建模在进行多目标优化之前,需要将实际问题建模为数学模型。

首先,明确问题的决策变量和目标函数。

决策变量是需要优化的参数或变量,而目标函数是需要最小化或最大化的指标。

例如,我们要优化一个生产系统的成本和产量,可以将成本设为一个目标函数,产量设为另一个目标函数。

2. 目标权重设定由于多目标优化存在矛盾或折衷的情况,需要设定目标函数的权重。

权重反映了各个目标函数的重要性,较高的权重意味着对应的目标更重要。

例如,在上述生产系统的例子中,如果成本比产量更重要,可以给成本赋予较高的权重。

3. 多目标优化求解方法Matlab提供了多种多目标优化求解方法,常用的有基于进化算法的优化方法,例如遗传算法、粒子群优化算法等。

这些方法通过不断迭代搜索解空间,逐步找到最优解。

以下是使用Matlab进行多目标优化的一般步骤:a) 定义优化问题的问题函数,包括目标函数和约束条件。

b) 设定优化问题的求解选项,例如优化算法、迭代次数和收敛准则等。

c) 运行优化求解器,获得最优解或近似最优解。

d) 对求解结果进行分析和评价。

4. 多目标优化实例分析为了更好地理解如何使用Matlab进行多目标优化,我们以一个简单的例子进行分析。

假设有一个三维空间内的旅行商问题,即找到一条路径,使得旅行距离最短、花费最少以及时间最短。

我们可以将问题建模为一个三目标优化问题:目标一:最小化旅行距离。

目标二:最小化旅行花费。

目标三:最小化旅行时间。

通过定义目标函数和约束条件,我们可以使用Matlab的多目标优化求解器,如gamultiobj函数,来获得近似最优解。

在求解过程中,可以通过设置收敛准则、种群大小等选项来调节求解参数。

matlab多目标优化算法

matlab多目标优化算法

matlab多目标优化算法
Matlab多目标优化算法是一种数学优化算法,它针对函数最小化或最大化,用来优化两个或多个目标。

它很灵活,可以应用于不同的评估和优化任务。

通常,这种算法也被称为可优化性综合算法。

多目标优化算法包括三个子过程:裁剪算法、分析优化过程和对象函数的更新。

裁剪算法将两个或多个目标函数分别处理,进行优化,然后连接它们,以便将它们转换为单个函数。

它还可以将该函数转换为新函数,以充分反映其特征,而减少其复杂性。

接下来,分析优化过程使用这些函数来计算优化变量的折衷解决方案,其目的是实现对各个优化目标的贸易-off。

该过程还可以计算各个优化目标之间的关系,以便有效地找出该变量的非折衷解决方案。

最后,对象函数的更新根据分析的结果更新和优化对象函数。

这可以使优化器找到最佳折衷解决方案。

总的来说,多目标优化算法可以灵活地比较多个目标函数,并使用一致性贸易-off和可靠的模型来找到最佳解决方案。

此外,多目标优化算法还可用于可行解的综合优化。

在可行优化中,给定的目标被施加满足边界的约束,以限定可行解范围。

多目标优化算法可以在这样的约束条件下面寻求最优解。

它还可以用来优化非线性约束或混合约束系统,允许优化者比较多个解决方案,并从中找出最佳解。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

matlab生产调度问题及其优化算法 生产调度问题及其优化算法 (采用遗传算法与MATLAB编程)

信息014 孙卓明 二零零三年八月十四日 - 1 -

生产调度问题及其优化算法 背景及摘要 这是一个典型的Job-Shop动态排序问题。目前调度问题的理论研究成果主要集中在以Job-Shop问题为代表的基于最小化完工时间的调度问题上。一个复杂的制造系统不仅可能涉及到成千上万道车间调度工序,而且工序的变更又可能导致相当大的调度规模。解空间容量巨大,N个工件、M台机器的问题包含MN)!(种排列。由于问题的连环嵌套性,使得用图解方法也变得不切实际。传统

的运筹学方法,即便在单目标优化的静态调度问题中也难以有效应用。 本文给出三个模型。首先通过贪婪法手工求得本问题最优解,既而通过编解码程序随机模拟优化方案得出最优解。最后采用现代进化算法中有代表性发展优势的遗传算法。文章有针对性地选取遗传算法关键环节的适宜方法,采用MATLAB软件实现算法模拟,得出优化方案,并与计算机随机模拟结果加以比较显示出遗传算法之优化效果。 对车间调度系列问题的有效解决具有一定参考和借鉴价值。

一.问题重述 某重型机械厂产品都是单件性的,其中有一车间共有A,B,C,D四种不同设备,现接受6件产品的加工任务,每件产品接受的程序在指定的设备上加工,其工序与加工周期如下表:(S-设备号、T-周期)

序 产品

1 2 3 4 5 6 7 8 S T S T S T S T S T S T S T S T

1 C 8 A 2 B 4 C 24 D 6 2 A 4 D 5 B 3 C 4 3 C 3 D 7 A 15 B 20 A 8 4 B 7 C 6 D 21 A 1 D 16 C 3 5 D 10 B 4 C 8 D 4 A 12 C 6 D 1 6 A 1 B 4 A 7 C 3 D 5 A 2 C 5 A 8 ( 表一 ) 条件:1、每件产品必须按规定的工序加工,不得颠倒; 2、每台设备在同一时间只能担任一项任务。 (每件产品的每个工序为一个任务) - 2 -

问题:做出生产安排,希望在尽可能短的时间里,完成所接受的全部任务。 要求:给出每台设备承担任务的时间表。

注:在上面,机器 A,B,C,D 即为机器 1,2,3,4,程序中以数字1,2,3,4表示, 说明时则用A,B,C,D

二.模型假设 1.每一时刻,每台机器只能加工一个工件,且每个工件只能被一台机器所加工 ,同时加工过程为不间断; 2.所有机器均同时开工,且工件从机器I 到机器J 的转移过程时间损耗不计; 3.各工件必须按工艺路线以指定的次序在机器上加工多次; 4.操作允许等待,即前一操作未完成,则后面的操作需要等待,可用资源有限。

三.符号说明及初始数据表达分析 iJ - 第i个工件 (i=1…6)

MJ- 机器顺序阵 )(jiJM,表示i工件的第 j个操作的机

器号

jM- 第j台机器 (j=1…4)

JM- 工件排列阵 ),(jiMJ表示i机器上第j次加工的工件

号 T - 加工时间阵 ),(jiT为i工件的第 j个操作的时间周期 C - 整个任务完成时间

整理数据后得到:

MJ=[ C A B C D 0 0 0 ] T= [ 8 2 4 24 6 0 0 0 ]

[ A D B C 0 0 0 0 ] [ 4 5 3 4 0 0 0 0 ] [ C D A B A 0 0 0 ] [ 3 7 15 20 8 0 0 0 ] [ B C D A D C 0 0 ] [ 7 6 21 1 16 3 0 0 ] [ D B C D A C D 0 ] [ 10 4 8 4 12 6 1 0 ] [ A B A C D A C A ] [ 1 4 7 3 5 2 5 8 ]

上述二阵直接从题目得出,而JM则是我们要求的。

关于工件的加工时间表:(表二) 产品/工件(i): 1 2 3 4 5 6 总计 - 3 -

iJ 总净加工时间(周期) 44 16 53 54 45 35 247

iJ 加工工序总数(个) 5 4 5 6 7 8 35

关于机器的加工时间表:(表三) 机器/设备(j): A B C D 总计

jM 总净加工时间 60 42 70 75 247

jM 加工操作次数 10 6 10 9 35

分析: 由于各产品总净加工时间和各机器总净

加工时间之中最大值为 75,而总计为247,那么 总时间 C 介于[75,247]。同时各工件加工繁杂程度不一,各机器的任务量也有轻重之别。合理的调度排序是对于节省时间和资源是必要的。 希望最优化答案是75,这样达到最小值,如果答案是75,那么意味着机器D不间断工作,直至全部加工任务完成。

四.贪婪法快速求解 如果按照一定规则排序,当多个工件出现“抢占”同一机器的局面的时候,我们可以制定如下的工序安排规则:

1. 优先选择总剩余时间或总剩余操作较多的工件。(如果出现总剩余加工时间多者总剩余操作数反而较少的情况时,按照程度具体情况具体分析)。 2. 机器方面来说,尽量避免等待空闲时间,优先考虑剩余净加工时间或者剩余加工总次数较多的机器,尤其是机器 D ,即倘若能够使机器D不间断工作且其他机器完工时间均不多余75时,那么就可以得到最优解 。

首先按照最优化时间为75的设想避免D出现等待,排序后得到升以下具体排列顺序。

各机器承担任务表为(其中粗体字为对应工件产品号,括号内为对应时间周期段): 操作1 操作2 操作3 操作4 操作5 操作6 操作7 操作8 操作9 操作10 - 4 -

A 6 (1) 2 (2-5) 1 (12-13) 6 (14-20) 3 (21-35) 4 (36) 5 (43-54) 6 (55-56) 3 (57-64) 6 (66

-73) B 4 (1-7) 6 (8-11) 5 (12-15) 1 (16-19) 3 (36-55) 2 (56

-58) C 3 (1-3) 1 (4-11) 4 (12-17) 5 (18-25) 6 (26-28) 1 (29-52) 5 (55-60) 6 (61-65) 2 (66-69) 4 (70

-72) D 5 (1-10) 3 (11-17) 4 (18-38) 5 (39-42) 6 (43-47) 2 (48-52) 4 (53-68) 1 (69-74) 5 (7

5)

(表四)

10371784421646484253167524201516231666151242388101020304050607080D机器C机器B机器A机器

(图一) 上图为加工周期图(甘特图),标注数字为相应操作的周期,完工时间为第75周期。 - 5 -

五.计算机随机模拟(编程) 1.编码: 随机产生生产的工序操作优先顺序,进行编码,如:K=[ 4 3 5 6 6 2 3 1 4 1 6 3 5 4 5 3 6 6 4 1 5 5 1 3 2 6 2 2 4 4 1 5 6 6 5 ] (注:同时作为下文的染色体之用) 意思为:工件4优先被考虑进行第一次操作,然后3进行其第一步操作,然后5操作,6操作,再6操作其第二步工序,依次进行。如果前后互相不冲突,则可同时在不同机器上操作。 通过排列组合得出,总共有类似K的排列序列 22310多种! 当然,这其中只对应解 [75,247],意味着有大量排列序列对应同一加工方案,而大量加工方案又对应同一时间解。

2.解码: 即对编码进行翻译,产生具体可操作工序安排方案,这里采用活动化解码算法。例如工件2第i步操作(记为MJ(2,i),且在机器A上进行)被安排在工件3第j步操作(记为JM(3,j))后面进行,那么如果安排好MJ (3,j)后,只要MJ(2,i)在工件2已经排序好的操作之后进行,那么操 作MJ(2,i)可插入到机器A处最前可安置的时间段进行。 在这里,一个编码序列对应一个加工方案,而一个加工方案可对应一个或多个编码序列,这就是二者之关系。

3.编程: 通过一组随机编码产生一生产加工优先序列,通过解码过程产生相应加工方案及其总耗费时间C . N次模拟后即可得出解C的概率密度分布情况以及相对最优解(N个C的最小值,如80,77等,甚至出现75)。

4.计算机模拟所得数据分析 a. 进行100次模拟得出最优解情况: (共运行10次) 82,83,82,84,78,80,81,83,87,82 平均值 82.2,每回耗时约3秒 b. 进行1000次模拟得出最优解情况:(共运行10次) 80,79,78,78,79,79,76,80,77,78 平均值 78.4 , 每回耗时25秒

相关文档
最新文档