基于遗传算法的背包问题程序(带注释)

1、问题介绍2、遗传算法与程序1、问题介绍背包问题介绍。有N件物品和一个容量为V的背包。第i件物品的体积是c (i),价值是w (i)。求解将哪些物品放入背包可使物品的体积总和不超过背包的容量,且价值总和最大。假设物品数量为10,背包的容量为300。每件物品的体积为:[95,75,23,73, 50,22, 6,57,89,98],价值为:[89,59,19,43,100,72,44,16, 7,64]。2、遗传算法与程序遗传算法参数(1)、初始化种群数目为NP=50, 染色体基因
摘要由CSDN通过智能技术生成

1、问题介绍
2、遗传算法与程序

1、问题介绍

背包问题介绍。
N件物品和一个容量为V的背包。第i件物品的体积是c (i),价值是w (i)。求解将哪些物品放入背包可使物品的体积总和不超过背包的容量,且价值总和最大。假设物品数量为10,背包的容量为300。每件物品的体积为:
[95,75,23,73, 50,22, 6,57,89,98],
价值为:
[89,59,19,43,100,72,44,16, 7,64]。

2、遗传算法与程序

遗传算法参数
(1)、初始化种群数目为NP=50, 染色体基因维数为L=10(对应于物品数), 最大进化代数为G=100。
(2)、产生二进制初始种群,其中1表示选择该物品,0表示不选择该物品。取适应度值为选择物品的价值总和,计算个体适应度值,当物品体积总和大于背包容量时,对适应度值进行惩罚计算。
(3)、对适应度进行归一化,采用基于轮盘赌的选择操作、基于概率的交叉和变异操作,产生新的种群,并把历代的最优个体保留在新种群中,进行下一步遗传操作。
(4)、判断是否满足终止条件(即迭代次数):若满足,则结束搜索过程,输出优化值;若不满足,则继续进行迭代优化。
该问题的优化结果为[1010111001],1表示选择相应物品,0表示不选择相应物品,价值总和为388。
具体MATLAB实现程序与介绍如下

// 遗传算法程序
%初始化参数
clear all;                           %清变量
close all;                           %清图
clc;                                 %清屏
NP = 50;                             %种群规模
L = 10;                              %物品件数(因为有10件物品)
Pc = 0.8;                            %交叉率
Pm = 0.05;                           %变异率
G = 100;                             %最大遗传代数
V = 300;                             %背包容量
C = [95,75,23,73,50,22,6,57,89,98];  %物品体积
W = [89,59,19,43,100,72,44,16,7,64]; %物品价值
afa = 2;                             %惩罚函数系数(当超过总体积时进行处罚)
f = randi([0 1],NP,L);               %随机获得初始种群 矩阵50*10
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值