粒子群算法总结+背包问题
【粒子群算法】(Particle Swarm Opitimization, PSO)在1995年由Dr.Eberhart和Dr.Kennedy提出,源于对鸟群捕食行为的研究。
好比说,一群鸟在一个区域内寻找食物,这个区域只有一条虫子(最优解),所有的鸟都不知道食物在哪。假设,他们知道自己的当前位置距离食物有多远,也知道自己距离食物最近的鸟的位置。
鸟A:哈哈哈原来虫子离我最近!
鸟B,C,D:我得赶紧往 A 那里过去看看!
同时各只鸟(粒子)飞行时,位置不停变化,距离食物的距离也不断变化,所以一定有过离食物最近的位置,这也是它们的一个参考(粒子飞行的历史)。
鸟某某:我刚刚的位置好像靠近了食物,我得往那里靠近!
综上,影响鸟的运动状态变化有下面两个因素:
- 离食物最近的鸟的位置(全局最优)
- 自己之前达到过的离食物最近的位置(个体最优)
- 自身惯性
我们假定所有物品的重量和价格都是非负的。背包所能承受的最大重量为W。
如果限定每种物品只能选择0个或1个,则问题称为0-1背包问题。
可以用公式表示为:
最大化
受限于
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>#define C 17 //背包容量
#define N 5 //物品个数int W[] = {3,4,7,8,9};
int V[] = {4,5,10,11,13};int Value[N+1][C+1];
int X[N+1];using namespace std;int KnapSack(int n,int c,int w[],int v[],int x[])
{
//int i,j;
for (int i=0;i<=n;i++)
Value[i][0]=0;
for (int j=0;j<=c;j++)
Value[0][j]=0;for (int i=1;i<=n;i++)
{
for (int j=1;j<=c;j++)
{
if (j < w[i])
Value[i][j]=Value[i-1][j];else
Value[i][j]=max(Value[i-1][j],v[i]+Value[i-1][j-w[i]]);cout<<Value[i][j]<<" ";
}
cout<<endl;
}int j=C;
for (int i=n;i>0;i--)
{
if (Value[i][j]>Value[i-1][j])
{
x[i] = 1;
j=j-w[i];
}
else
x[i]=0;
}
return Value[n][C];
}int _tmain(int argc, _TCHAR* argv[])
{cout<<KnapSack(N,C,W,V,X)<<endl;for (int i=1;i<=N;i++)
{
cout<<X[i]<<" ";
}
system("pause");
return 0;
}
粒子群算法总结+背包问题相关推荐
- matlab中fic算法,粒子群算法在函数优化问题中的应用最终版(全文完整版)
<粒子群算法在函数优化问题中的应用.doc>由会员分享,可免费在线阅读全文,更多与<粒子群算法在函数优化问题中的应用(最终版)>相关文档资源请在帮帮文库(www.woc88.c ...
- 粒子群算法理解+求解01背包问题
最近在学群体优化算法,做个学习笔记吧,本人蒟蒻,有不对的地方还情多多包涵. 1.粒子群算法的理解. 粒子群算法是一种智能优化算法,模拟的是鸟内捕食行为.假设有一群鸟,在一个区域内觅食,这个区域内只有一 ...
- 求解“背包问题”的“粒子群算法”
今天给大家介绍一个经典的算法,粒子群算法. 然后,我们用粒子群算法解决一个经典的问题---背包问题. 先说一下背包问题: 一:背包问题: 一个小偷,背着一个空背包进入了一家珠宝店.他的背包能承受的最大 ...
- 粒子群算法之01背包问题(C语言实现)
参数说明 Vi(t+1)=ωVi(t)+c1r1(pbesti−Xi(t))+c2r2(gbest−Xi(t)) 根据粒子群算法速度迭代公式: w:惯性因子 c1,c2:学习率 r1,r2:[0,1] ...
- 粒子群算法组卷_粒子群(PSO)算法概念及代码实现
粒子群算法的由来及思想 粒子群算法最早是由两名美国的科学家基于群鸟觅食,寻找最佳觅食区域的过程所提出来的,作为一种智能算法,PSO模拟的就是最佳决策的过程,鸟群觅食类似于人类的决策过程,想想在你做出选 ...
- 粒子群算法求解多元函数最值问题
粒子群算法求解多元函数最值问题 一.简介 多元函数极值&最值问题通常使用导数/偏导数进行推导,这里尝试使用启发式算法进行求解近似最优解.选用粒子群算法进行求解,粒子群算法模仿鸟群觅食行为,核心 ...
- 自己对粒子群算法的理解(附matlab直接运行代码)(二维)
首先声明,作者为准大二学生,由于一些特殊原因被某研究生老师拉近了一个研究组,为了更好地记忆和复习,所以写了一下内容,如有错误,希望提出,直接骂我都可以. 现在开始正文,首先老样子,介绍一下粒子群算法的 ...
- 粒子群算法(一)—— 理论篇
目录 1 算法理论 2 算法流程 3 算法种类 3.1 基本粒子群算法 3.2 标准粒子群算法 3.3 压缩因子粒子群算法 3.4 离散粒子群算法 4 仿真实例 粒子群算法(Particle Swar ...
- 改进粒子群算法的配电网故障定位(PythonMatlab代码实现)
目录 1配电网故障定位原理 1.1 故障信息的数学表示 1.2 二进制PSO算法的配电网故障定位原理 1.3 构造配电网故障定位评价函数 1.4 求期望函数 2 二进制粒子群算法的简单举例------ ...
最新文章
- 远程办公,团队如何高效沟通与协作
- 32位的cpu不能安装linux_Python3.5.2 安装教程【64位/32位】
- windows录屏_ApowerREC for Mac(屏幕录屏工具) V1.2.7.10激活版
- 1_反向代理【跨域】
- php同学录网站设计_基于PHP的校友录系统的设计与实现
- vba两个集合的差集_Python中的集合是如何使用的?
- Javascript下拉刷新
- ubuntu上virsh+kvm安装虚拟机
- 盘点当下稳定又好用的远程控制方案,软硬全覆盖
- 打log的方式检查程序里面的问题 及示例代码 详解
- 英国电信选择由 Canonical 开发的 Ubuntu OpenStack 作为云平台
- 069 模块基础总结
- 第六次作业阶段一 学生成绩录入系统设计与实现
- postman批量测试成功newman生成测试报告失败
- postman中的header入参
- 谷歌Google验证
- 设计稳定的COT转换器以实现所需的负载和线路调节
- 抖音短剧本应该怎么写
- 幅频特性曲线protues_函数幅频特性曲线
- 智慧社区的现状分析及发展前景
热门文章
- 解字谜:黑白皆算,对我等众猿而言中央C所在位置数优剃爱肤杠吧爱慕帝贰亿次的值是?...
- vcs+verdi/Debussy
- USB大容量存储设备无法启动该怎么办?
- Exynos 4412处理器IIC总线控制器(包括协议)
- 7-12 个位数字统计 (15 分)
- LeetCode力扣刷题——简单易懂的贪心算法
- 今日早报 每日精选12条新闻简报 每天一分钟 知晓天下事 9月24日
- 洛谷 P4100 [HEOI2013]钙铁锌硒维生素 解题报告
- 怎么把jpg转换成pdf方法
- Windows Terminal + WSL2 + CENTOS 配置Windows命令终端