离散灰狼优化算法求解有界背包问题

合集下载

背包问题的算法设计策略

背包问题的算法设计策略

背包问题是一种常见的优化问题,它涉及到给定一组物品,每个物品都有各自的重量和价值,背包的总容量有限。

目标是选择一些物品,使得背包中物品的总价值最大,同时不超过背包的总容量。

算法设计策略:1.问题建模:首先,需要建立一个数学模型以描述背包问题。

通常,这可以通过一个二元决策图来实现。

决策图中的每个节点代表一个物品,每个边代表一个决策,即是否选择该物品。

2.状态空间树:在背包问题中,状态空间树是一个非常有用的工具。

它可以帮助我们系统地搜索所有可能的物品组合,从而找到最优解。

状态空间树以背包的当前容量为根节点,然后每个子节点代表一个可能的物品选择。

3.剪枝函数:在回溯法中,剪枝函数是一个关键的工具,它可以用来避免对不可能产生最优解的子节点进行搜索。

例如,如果当前选择的物品已经超过背包的容量,那么我们可以立即剪去该子树,因为它不可能产生最优解。

4.动态规划:动态规划是一种可以用来解决背包问题的算法。

它的思想是将问题分解为更小的子问题,并将这些子问题的解存储起来,以便在解决更大的问题时可以重复使用。

在背包问题中,动态规划可以帮助我们避免重复计算相同的子问题。

5.启发式搜索:虽然动态规划可以保证找到最优解,但它需要大量的存储空间。

如果物品的数量很大,那么动态规划可能不实用。

在这种情况下,可以使用启发式搜索方法,如遗传算法或模拟退火算法,来找到一个好的解决方案。

总的来说,背包问题的算法设计策略涉及到多个步骤,包括建立数学模型,使用状态空间树进行系统搜索,使用剪枝函数避免无效搜索,使用动态规划避免重复计算,以及使用启发式搜索方法在大型问题中寻找近似解。

PSO算法解决背包问题

PSO算法解决背包问题

用粒子群算法解决0/1背包问题1.问题描述背包问题( Knapsack Problem)是著名的NP 问题,也是一个典型的组合优化问题。

这里要解决的背包问题的描述如下:ai :第i 个物品的体积;ci :第i 个物品的价值;b :背包的重量限制;背包问题就是在总的体积有限的条件下,追求总价值最大的有效资源分配问题。

有界的整数背包问题可转化成等价的0-1背包问题,定义变量()⎩⎨⎧==n i i i x i ,,2,110 个物品不携带第个物品携带第{}⎪⎩⎪⎨⎧∈≤⎭⎬⎫⎩⎨⎧∑∑==1,0..max 11i n i i i n i i i x b x a t s x c 约束条件:目标函数转化为:2.算法解析粒子群算法速度和位置的迭代公式为:()()()[]()[]()()()11()()121++=+-⨯⨯+-⨯⨯+⨯=+t V t X t X t X P rand c t X P rand c t V w t V i i i i j i i i i[]为种群最优位置为粒子的最优位置;表示某一次迭代;为惯性因子;之间的随机数;为子;为正常数,称为加速因,其中,j i P P t w rand c c 1,0()21 背包问题中的X 是一个0-1序列,每一个粒子的位置可以用向量X 来表示,粒子的位置就表示一个可行解,粒子的适应值函数就可以表示为()和)(背包内物品的价值总,1∑==ni i i x v X f 粒子群算法的寻优可以表示为求取使得f (X)值最大的X粒子群中的速度定义为物品选择的变换集,即为两次位置的距离,用V 表示,则|V|表示速度所含的交换的数目,从而该速度可定义为{}(){}⎩⎨⎧≠===∈=-=i i i i i i i x x x x v n i v v X X V 212121:1:0,,,2,1,1,0|其中以此作为用粒子群算法解决背包问题的切入点,待解决的背包问题如下所示:0-1背包问题:对于n 个体积为aj 、价值分别为cj 的物品,如何将它们装入总体积为b 的背包中,使得所选物品的总价值最大。

求解0-1背包问题的二进制狼群算法

求解0-1背包问题的二进制狼群算法

求解0-1背包问题的二进制狼群算法吴虎胜;张凤鸣;战仁军;汪送;张超【期刊名称】《系统工程与电子技术》【年(卷),期】2014(000)008【摘要】狼群算法(wolf pack algorithm,WPA)源于狼群在捕食及其猎物分配中所体现的群体智能,已被成功应用于复杂函数求解。

在此基础上,通过定义运动算子,对人工狼位置、步长和智能行为重新进行二进制编码设计,提出了一种解决离散空间组合优化问题的二进制狼群算法(binary wolf pack algorithm,BWPA)。

该算法保留了狼群算法基于职责分工的协作式搜索特性,选取离散空间的经典问题---0-1背包问题进行仿真实验,具体通过10组经典的背包问题算例和BWPA 算法与经典的二进制粒子群算法、贪婪遗传算法、量子遗传算法在求解3组高维背包问题时的对比计算,例证了算法具有相对更好的稳定性和全局寻优能力。

%The wolf pack algorithm (WPA),inspired by swarm intelligence of wolf pack in their prey hun-ting behaviors and distribution mode,has been proposed and successfully applied in complex function optimiza-tion problems.Based on the designing of the move operator,the artificial wolves’position,step-length and in-telligent behaviors are redesigned by binary coding,and a binary wolf pack algorithm (BWPA)is proposed to solve combinatorial optimization problems in discrete spaces.BWPA preserves the feature of cooperative search-ing based on job distribution of the wolf pack and is applied to 10 classic 0-1 knapsackproblems.Moreover,the 3 high-dimensional 0-1 knapsack problems aretested.All results show that BWPA has better global convergence and computational robustness and outperforms the binary particle swarm optimization algorithm,the greedy genetic al-gorithm and the quantum genetic algorithm,especially for high-dimensional knapsack problems.【总页数】8页(P1660-1667)【作者】吴虎胜;张凤鸣;战仁军;汪送;张超【作者单位】空军工程大学装备管理与安全工程学院,陕西西安 710051; 武警工程大学装备工程学院,陕西西安710086;空军工程大学装备管理与安全工程学院,陕西西安 710051;武警工程大学装备工程学院,陕西西安 710086;武警工程大学装备工程学院,陕西西安 710086;空军工程大学装备管理与安全工程学院,陕西西安 710051【正文语种】中文【中图分类】TP18;TP301.6【相关文献】1.利用改进的二进制狼群算法求解多维背包问题 [J], 吴虎胜;张凤鸣;战仁军;李浩;梁晓龙2.基于离散二进制粒子群-模拟退火算法求解0-1背包问题 [J], 汤飞;何永义3.基于二进制象群优化算法求解0-1背包问题 [J], 张潼;朱晓斌4.基于二进制象群优化算法求解0-1背包问题 [J], 张潼;朱晓斌5.求解0-1背包问题的量子狼群算法 [J], 严雅榕;项华春;聂飞;李京峰因版权原因,仅展示原文概要,查看原文内容请购买。

【背包问题】基于matlab粒子群算法求解背包问题【含Matlab源码1343期】

【背包问题】基于matlab粒子群算法求解背包问题【含Matlab源码1343期】

【背包问题】基于matlab粒⼦群算法求解背包问题【含Matlab源码1343期】⼀、获取代码⽅式获取代码⽅式1:完整代码已上传我的资源:⼆、背包问题简介1【背包问题】背包问题(Knapsack problem)是⼀种组合优化的NP完全问题。

问题描述为:给定⼀组物品,每种物品都有⾃⼰的重量weight和价格value,在限定的总重量内,我们如何选择,才能使得物品的总价格最⾼。

2【0-1背包问题】ai:第i个物品的体积;ci:第i个物品的价值;b:背包的重量限制;背包问题就是在总的体积有限的条件下,追求总价值最⼤的有效资源分配问题。

有界的整数背包问题可转化成等价的0-1背包问题,定义变量三、粒⼦群算法简介1 引⾔⾃然界中的鸟群和鱼群的群体⾏为⼀直是科学家的研究兴趣所在。

⽣物学家Craig Reynolds在1987年提出了⼀个⾮常有影响的鸟群聚集模型,在他的仿真中,每⼀个个体都遵循:避免与邻域个体相撞:匹配邻域个体的速度;飞向鸟群中⼼,且整个群体飞向⽬标。

仿真中仅利⽤上⾯三条简单的规则,就可以⾮常接近地模拟出鸟群飞⾏的现象。

1990年, ⽣物学家Frank Heppner也提出了鸟类模型, 它的不同之处在于:鸟类被吸引飞到栖息地。

在仿真中,⼀开始每⼀只鸟都没有特定的飞⾏⽬标,只是使⽤简单的规则确定⾃⼰的飞⾏⽅向和飞⾏速度,当有⼀只鸟飞到栖息地时,它周围的鸟也会跟着飞向栖息地,最终整个鸟群都会落在栖息地。

1995年, 美国社会⼼理学家James Kennedy和电⽓⼯程师RussellEberhart共同提出了粒⼦群算法(ParticleS warm Optimization,PSO) , 该算法的提出是受对鸟类群体⾏为进⾏建模与仿真的研究结果的启发。

他们的模型和仿真算法主要对Frank Heppner的模型进⾏了修正,以使粒⼦飞向解空间并在最优解处降落。

粒⼦群算法⼀经提出,由于其算法简单,容易实现,⽴刻引起了进化计算领域学者们的⼴泛关注, 形成⼀个研究热点。

典型优化问题的模型与算法例题

典型优化问题的模型与算法例题

提交内容:
实验报告的电子文档 源代码及其全部工程文件、数据文件(ZIP形式) 发送到:liushuan@
典型优化问题的模型与算法
2
6 7
5
典型优化问题的模型与算法
1
实验
内容:
以某一典型优化问题为例,构造“具体”模型,采用 遗传算法进行求解。
基本要求:
列出具体模型;
设计染色体编码、交叉算子、变异算子、适值函数、 选择策略、种群初始化方法等;
给出程序设计说明(类,函数,流程图等); 给出多种条件下的仿真结果对比分析。 采用VB、VC、C#、JAVA等任一种软件开发语言实
3. 对如图所示的运输问题,描述如下 Prüfer 数编码的解码过程及所 对应的运输树。
P(T) = [ 3 7 1 7 3]
P1 1 2 3 4 5 6 7
a1=7 1
4 b1=11 P2 3 2 5 1 7 4 6
a2=15 2 a3=17 3
5 b2= 3 6 b3=9 7 b4=16431 Nhomakorabea2
典型优化问题的模型与算法—作业题
1. 有界背包是指有多种物品且每种物品都有多个的背包问题。试建 立数学模型、说明问题的特点,并设计一种求解此问题的完整的 遗传算法。
2. 针对 TSP 问题的换位表达方式,试设计一种嵌入“最近插入法” 的启发式交叉算子,假设有7个城市,分布及双亲如右图。随机选 择开始城市为4,详细描述交叉过程。

数学中的离散优化离散问题的最优化方法与算法

数学中的离散优化离散问题的最优化方法与算法

数学中的离散优化离散问题的最优化方法与算法数学中的离散优化:离散问题的最优化方法与算法离散优化是数学中的一个重要分支,涉及到在给定的约束条件下,寻找离散决策变量的最优值。

离散问题的最优化方法与算法在现实生活中有着广泛的应用,例如在经济学、工程学、计算机科学等领域。

本文将介绍几种常见的离散优化方法与算法,并给出相应的实例说明。

1. 背包问题背包问题是一类经典的离散优化问题,其目标是在给定的背包容量下,选择一些物品放入背包中,使得物品的总价值最大化。

常见的背包问题包括0-1背包问题、分数背包问题等。

0-1背包问题要求每个物品要么完整地放入背包,要么完全不放入;而分数背包问题允许物品被切割后放入背包。

这类问题通常可以用动态规划算法来解决。

2. 蚁群算法蚁群算法是一种基于模拟蚂蚁觅食行为的启发式优化算法,在求解离散优化问题中具有很好的效果。

蚁群算法模拟了蚂蚁在搜索食物时的行为,通过信息素的引导和信息素挥发的调控,使蚂蚁集体找到最优解。

蚁群算法在TSP(旅行商问题)等多个领域取得了较好的实验结果。

3. 遗传算法遗传算法是一种模拟自然进化过程的优化算法,适用于求解离散或连续优化问题。

遗传算法通过模拟遗传、变异和选择等基本过程,生成新的解并逐代改进,最终得到一个或多个最优解。

遗传算法通过种群的进化,使解空间中的解逐渐趋向最优解,具有全局搜索能力。

遗传算法在图着色、子集选择等问题中有广泛应用。

4. 线性规划算法线性规划是研究线性约束条件下的最优解的数学方法。

虽然线性规划常被用于求解连续问题,但在离散优化问题中也有相应的应用。

例如,当变量的取值只能是整数时,可将线性规划问题转化为整数线性规划问题,再利用分支定界等方法求解。

5. 图论算法图论是数学中探讨图的性质和关系的重要分支,也是解决离散优化问题的有效工具。

图论中的最短路径算法(如Dijkstra算法、Bellman-Ford算法)、最小生成树算法(如Prim算法、Kruskal算法)等,都可以应用于离散优化中,如网络规划、通信路由等问题。

灰狼优化算法(GWO)原理

灰狼优化算法(GWO)原理

灰狼优化算法(GWO)原理GWO(灰狼优化)算法以优化SVM算法的参数c和g为例,对GWO算法MATLAB源码进行了逐行中文注解。

————————————————tic % 计时器%% 清空环境变量close allformat compact%% 数据提取% 载入测试数据wine,其中包含的数据为classnumber = 3,wine:178*13的矩阵,wine_labes:178*1的列向量load wine.mat% 选定训练集和测试集% 将第一类的1-30,第二类的60-95,第三类的131-153做为训练集train_wine = [wine(1:30,:);wine(60:95,:);wine(131:153,:)];% 相应的训练集的标签也要分离出来train_wine_labels = [wine_labels(1:30);wine_labels(60:95);wine_labels(131:153)] ;% 将第一类的31-59,第二类的96-130,第三类的154-178做为测试集test_wine = [wine(31:59,:);wine(96:130,:);wine(154:178,:)];% 相应的测试集的标签也要分离出来test_wine_labels = [wine_labels(31:59);wine_labels(96:130);wine_labels(154:178 )];%% 数据预处理% 数据预处理,将训练集和测试集归一化到[0,1]区间[mtrain,ntrain] = size(train_wine);[mtest,ntest] = size(test_wine);dataset = [train_wine;test_wine];% mapminmax为MATLAB自带的归一化函数[dataset_scale,ps] = mapminmax(dataset',0,1);dataset_scale = dataset_scale';train_wine = dataset_scale(1:mtrain,:);test_wine = dataset_scale( (mtrain+1):(mtrain+mtest),: );%% 利用灰狼算法选择最佳的SVM参数c和gSearchAgents_no=10; % 狼群数量,Number of search agents Max_iteration=10; % 最大迭代次数,Maximum numbef of iterationsdim=2; % 此例需要优化两个参数c和g,number of your variableslb=[0.01,0.01]; % 参数取值下界ub=[100,100]; % 参数取值上界% v = 5; % SVM Cross Validation参数,默认为5% initialize alpha, beta, and delta_posAlpha_pos=zeros(1,dim); % 初始化Alpha狼的位置Alpha_score=inf; % 初始化Alpha狼的目标函数值,change this to -inf for maximization problemsBeta_pos=zeros(1,dim); % 初始化Beta狼的位置Beta_score=inf; % 初始化Beta狼的目标函数值,change this to -inf for maximization problemsDelta_pos=zeros(1,dim); % 初始化Delta狼的位置Delta_score=inf; % 初始化Delta狼的目标函数值,change this to -inf for maximization problems%Initialize the positions of search agentsPositions=initialization(SearchAgents_no,dim,ub,lb);Convergence_curve=zeros(1,Max_iteration);l=0; % Loop counter循环计数器% Main loop主循环while lMax_iteration % 对迭代次数循环for i=1:size(Positions,1) % 遍历每个狼% Return back the search agents that go beyond the boundaries of the search space% 若搜索位置超过了搜索空间,需要重新回到搜索空间Flag4ub=Positions(i,:)ub;Flag4lb=Positions(i,:)lb;% 若狼的位置在最大值和最小值之间,则位置不需要调整,若超出最大值,最回到最大值边界;% 若超出最小值,最回答最小值边界Positions(i,:)=(Positions(i,:).*(~(Flag4ub+Flag4lb)))+ub.*F lag4ub+lb.*Flag4lb; % ~表示取反% 计算适应度函数值cmd = [' -c ',num2str(Positions(i,1)),' -g ',num2str(Positions(i,2))];model=svmtrain(train_wine_labels,train_wine,cmd); % SVM 模型训练[~,fitness]=svmpredict(test_wine_labels,test_wine,model); % SVM模型预测及其精度fitness=100-fitness(1); % 以错误率最小化为目标% Update Alpha, Beta, and Deltaif fitnessAlpha_score % 如果目标函数值小于Alpha狼的目标函数值Alpha_score=fitness; % 则将Alpha狼的目标函数值更新为最优目标函数值,Update alphaAlpha_pos=Positions(i,:); % 同时将Alpha狼的位置更新为最优位置if fitnessAlpha_score fitnessBeta_score % 如果目标函数值介于于Alpha狼和Beta狼的目标函数值之间Beta_score=fitness; % 则将Beta狼的目标函数值更新为最优目标函数值,Update betaBeta_pos=Positions(i,:); % 同时更新Beta狼的位置if fitnessAlpha_score fitnessBeta_score fitnessDelta_score % 如果目标函数值介于于Beta狼和Delta狼的目标函数值之间Delta_score=fitness; % 则将Delta狼的目标函数值更新为最优目标函数值,Update deltaDelta_pos=Positions(i,:); % 同时更新Delta狼的位置a=2-l*((2)-Max_iteration); % 对每一次迭代,计算相应的a 值,a decreases linearly fron 2 to 0% Update the Position of search agents including omegas for i=1:size(Positions,1) % 遍历每个狼for j=1:size(Positions,2) % 遍历每个维度% 包围猎物,位置更新r1=rand(); % r1 is a random number in [0,1]r2=rand(); % r2 is a random number in [0,1]A1=2*a*r1-a; % 计算系数A,Equation (3.3)C1=2*r2; % 计算系数C,Equation (3.4)% Alpha狼位置更新D_alpha=abs(C1*Alpha_pos(j)-Positions(i,j)); % Equation (3.5)-part 1X1=Alpha_pos(j)-A1*D_alpha; % Equation (3.6)-part 1r1=rand();r2=rand();A2=2*a*r1-a; % 计算系数A,Equation (3.3)C2=2*r2; % 计算系数C,Equation (3.4)% Beta狼位置更新D_beta=abs(C2*Beta_pos(j)-Positions(i,j)); % Equation (3.5)-part 2X2=Beta_pos(j)-A2*D_beta; % Equation (3.6)-part 2r1=rand();r2=rand();A3=2*a*r1-a; % 计算系数A,Equation (3.3)C3=2*r2; % 计算系数C,Equation (3.4)% Delta狼位置更新D_delta=abs(C3*Delta_pos(j)-Positions(i,j)); % Equation(3.5)-part 3X3=Delta_pos(j)-A3*D_delta; % Equation (3.5)-part 3% 位置更新Positions(i,j)=(X1+X2+X3)-3;% Equation (3.7)Convergence_curve(l)=Alpha_score;bestc=Alpha_pos(1,1);bestg=Alpha_pos(1,2);bestGWOaccuarcy=Alpha_score;%% 打印参数选择结果disp('打印选择结果');str=sprintf('Best Cross Validation Accuracy = %g%%,Best c = %g,Best g = %g',bestGWOaccuarcy*100,bestc,bestg);disp(str)%% 利用最佳的参数进行SVM网络训练cmd_gwosvm = ['-c ',num2str(bestc),' -g ',num2str(bestg)];model_gwosvm = svmtrain(train_wine_labels,train_wine,cmd_gwosvm);%% SVM网络预测[predict_label,accuracy] = svmpredict(test_wine_labels,test_wine,model_gwosvm);% 打印测试集分类准确率total = length(test_wine_labels);right = sum(predict_label == test_wine_labels);disp('打印测试集分类准确率');str = sprintf( 'Accuracy = %g%% (%d-%d)',accuracy(1),right,total);disp(str);%% 结果分析% 测试集的实际分类和预测分类图plot(test_wine_labels,'o');plot(predict_label,'r*');xlabel('测试集样本','FontSize',12);ylabel('类别标签','FontSize',12);legend('实际测试集分类','预测测试集分类');title('测试集的实际分类和预测分类图','FontSize',12);%% 显示程序运行时间% This function initialize the first population of search agents functionPositions=initialization(SearchAgents_no,dim,ub,lb) Boundary_no= size(ub,2); % numnber of boundaries% If the boundaries of all variables are equal and user enter a signle% number for both ub and lbif Boundary_no==1Positions=rand(SearchAgents_no,dim).*(ub-lb)+lb;% If each variable has a different lb and ubif Boundary_no1for i=1:dimub_i=ub(i);lb_i=lb(i);Positions(:,i)=rand(SearchAgents_no,1).*(ub_i-lb_i)+lb_i;代码修改及说明:安装libsvm下载libsvm将下载的libsvm直接放在matlab安装路径toolbox下点击matlab “主页-设置路径” 选择libsvm包中的windows文件夹将libsvm windows文件夹下的 svmtrain 及svmpredict函数修改为 svmtrain2 和 svmpredict2等形式,目的是防止与matlab下冲突(注:2017及以下版本可以使用svmtrain,高版本不再支持)源码修改将所有svmtrain()及svmpredict() 函数改为svmtrain2()及svmpredict2() ;将代码[~,fitness]=svmpredict(test_wine_labels,test_wine,model); % SVM模型预测及其精度改为[~,~,fitness]=svmpredict(test_wine_labels,test_wine,model); % SVM 模型预测及其精度或者[fitness,~,~]=svmpredict(test_wine_labels,test_wine,model); % SVM模型预测及其精度(至于为什么还未清楚?目前我还没有看代码,原理也还没有看,仅改了下代码)将代码[output_test_pre,acc]=svmpredict2(output_test',input_test', model_gwo_svr); % SVM模型预测及其精度改为[output_test_pre,acc,~]=svmpredict2(output_test',input_test ',model_gwo_svr); % SVM模型预测及其精度(同上,仅是为了解决维度的问题)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%人们总是能从大自然中得到许多启迪,从生物界的各种自然现象或过程中获得各种灵感,由此提出了许多能够解决复杂函数优化的启发式算法,主要分为演化算法和群体智能算法。

灰 狼 优 化 算 法 ( G W O ) 原 理

灰 狼 优 化 算 法 ( G W O ) 原 理

智能优化算法人们总是能从大自然中得到许多启迪,从生物界的各种自然现象或过程中获得各种灵感,由此提出了许多能够解决复杂函数优化的启发式算法,主要分为演化算法和群体智能算法。

演化算法是一种模拟生物进化的随机计算模型,通过反复迭代,那些适应能力强的个体被存活下来,比如遗传算法,进化规划,进化策略等。

群体智能算法是通过观察社会生物群体的各种行为得到启发而提出的一种新型的生物启发式计算方法,比如蚁群、鸟群、狼群、鱼群、萤火虫群等。

2、演化算法遗传算法(Genetic Algorithm,GA):是基于Darwin进化论和Mendel的遗传学说的随机化自适应搜索算法,最先由美国Michigan 大学的Holland教授于1975年提出。

由于采用了类似物种进化过程中基因的选择、交叉和编译等操作手段,使得遗传算法在本质上成为一类非确定性算法,具有全局搜索能力,特别适用于多峰值函数的优化问题。

遗传算法思想是从代表问题可能潜在解集的一个种群开始,一个种群由经过基因编码的一定数目的个体组成,初始种群生产之后,按照适者生存和优胜略汰的原理,逐代演化生产出越来越好的近似解。

每一代,根据问题域中个体的适应度挑选个体,并借助自然遗传学的遗传算子进行交叉和变异,产生出代表新的解集的种群。

这过程将导致种群像自然进化一样,后代种群比前代更加适应环境,末代种群中的最优个体经过编码可以作为问题的近似解。

在人工智能研究中,人们认为遗传算法、自适应系统、细胞自动机、混沌理论与人工智能一样,都是对今后的计算技术有重大影响的关键技术。

差异演化算法(Differential Evolution, DE):是一种基于群体差异的演化算法,该算法是RainerStorn和KennedyPrice在1996年为求解切比雪夫多项式而提出,随后在各个领域得到了广泛应用。

差异演化是基于实数编码的进化演化算法,它的群体结构类似于遗传算法,与遗传算法的主要区别在变异操作上,差异演化的变异操作是基于染色体的差异向量进行,其余操作和遗传算法类似。

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

Discrete grey wolf optimizer for bounded knapsack problem
HE Yi-chao,LI Ze-wen,LI Huan-zhe,GUO Xiao-hu,LI Ya
(College of Information Engineering,Hebei GEO University,Shijiazhuang 050031,China)
收 稿 日 期 :2018-10-10; 修 订 日 期 :2018-11-16 基金项目:河北省高等学校科学研究计划基金项目 (ZD2016005);河北省自然科学基金项目 (F2016403055) 作 者简介:贺毅朝 (1969-),男,河北石家庄人,硕士,教授,CCF 高级 会 员, 研 究 方 向 为 进 化 算 法 理 论 与 应 用 、 算 法 设 计 与 分 析、 计 算 复杂性和群测试理论;李泽文 (1994-),男,河北石家庄人,硕士研究生,研究方向 为 演 化 计 算;李 焕 哲 (1975-),男,河 北 唐 山 人,博士, 副教授,研究方向为演化计算与机器学习;郭晓虎 (1994-),男,河北石家庄人,硕士研究 生,研 究 方 向 为 演 化 计 算;李 亚 (1995-),女,河 北 石 家 庄 人 , 硕 士 研 究 生 , 研 究 方 向 为 演 化 计 算 。E-mail:heyichao119@hgu.edu.cn
பைடு நூலகம்
划法,但是精确算法具有伪多项式时间复杂度,对于大规 模的 BKP 不适用,因 此 利 用 EAs求 解 BKP 不 失 为 一 种 明 智的 选 择。 除 了 经 典 的 遗 传 算 法 (genetic algorithm, GA)[5]、粒 子 群 算 法[6]、 差 分 演 化[7]等 EAs以 外 , 近 年 来 一系列新的 EAs被提 出, 如 正 弦 余 弦 算 法[8]、 鲸 鱼 优 化 算 法[9]、灰 狼 优 化 算 法 (grey wolf optimizer,GWO)[10]等 , 已被用于求解 许 多 领 域 的 优 化 问 题 。 本 文 基 于 GWO 求 解 BKP,一种容易想到的方法是 首 先 将 BKP 其 转 换 成 等 价 的 0-1背包 问 题 (0-1knapsack problem,0-1KP), 然 后 再 利
Abstract:To solve the bounded knapsack problem using the grey wolf optimizer,a discrete grey wolf optimizer(DGWO)based on encoding transformation was proposed.A crossover strategy of genetic algorithm was introduced to enhance the local search ability,and the infeasible solutions were processed using the repair and optimization method based on the greedy strategy,which not only ensured the effectiveness,but also speeded up the convergence.Experiment using three kinds of large-scale instances of the bounded knapsack problem was carried out to verify the validity and stability of DGWO.By comparing and analyzing the re- sults with other well-established algorithms,the computational results show that the convergence speed of DGWO is higher than that of other algorithms,the solutions of these instances of bounded knapsack problem are all well obtained with approximation ratio close to 1. Key words:bounded knapsack problem;grey wolf optimizer;genetic algorithm;encoding transformation method;repair and op- timization method
0 引 言
背 包 问 题 (knapsack problem,KP)[1]是 一 类 著 名 的 NP 完全问题和组合优化问题,在实际生活中有 着 广 泛 的 应 用,如货物装载、资源分配、投资决 策 等[2]。KP 存 在 许 多 扩展形式[3],如有界背包问题 (bounded knapsack problem, BKP)、无界背包问题、多维 背 包 问 题、 二 次 背 包 问 题、 折 扣 {0-1} 背包问题等。目前,求解 BKP 的主要精确算法是 David Pisinger[4]提出的 一 种 极 小 算 法, 该 算 法 基 于 动 态 规
2019 年 4 月 第 40 卷 第 4 期
计算机工程与设计
COMPUTER ENGINEERING AND DESIGN
Apr.2019 Vol.40 No.4
离散灰狼优化算法求解有界背包问题
贺毅朝,李泽文,李焕哲,郭晓虎,李 亚
(河北地质大学 信息工程学院,河北 石家庄 050031)
摘 要:为利用灰狼优化算法求解有界背包问题,基 于 编 码 转 换 法 提 出 一 种 离 散 灰 狼 优 化 算 法 (discrete grey wolf optimi- zer,DGWO)。引入遗传算法的交叉策略增强局部搜索能力,使 用 基 于 贪 心 策 略 的 修 复 与 优 化 法 处 理 不 可 行 解 , 保 证 算 法 的求解效果,加快算法的收敛速度。对于3类大规模有界背包问题实例,通过与已有算法的计算结果比较与分析,验证了 DGWO 的有效性和稳定性。实验结果表明,DGWO 的收 敛 速 度 比 其 它 算 法 快, 对 于 所 有 的 有 界 背 包 问 题 实 例 均 能 获 得 一 个近似比接近1的近似解。 关键词:有界背包问题;灰狼优化算法;遗传算法;编码转换法;修复与优化法 中图法分类号:TP301.6 文献标识号:A 文章编号:1000-7024 (2019)04-1008-08 doi:10.16208/j.issn1000-7024.2019.04.018
相关文档
最新文档