当前位置: 首页 > news >正文

网站建设事宜长春网站建设设计

网站建设事宜,长春网站建设设计,腾讯企点注册,怎么建设外贸网站文章目录 写在前面代码分析 写在前面 总共是要四份代码,好像都是实现背包问题,前面三个都比较简单直观,朋友上周在机房给我讲解了一下之后,我大概弄清楚了,这周好像是最后一次算法课了,所以明天我得把剩下…

文章目录

  • 写在前面
  • 代码
  • 分析

写在前面

总共是要四份代码,好像都是实现背包问题,前面三个都比较简单直观,朋友上周在机房给我讲解了一下之后,我大概弄清楚了,这周好像是最后一次算法课了,所以明天我得把剩下的那个实验代码讲一下。还要写之前小组作业的文档,还有这个实验的文档。

害其实文档不需要有太大压力吧。改一改就好了。

代码

//模拟退火
//
#include <bits/stdc++.h>
using namespace std;
void knapsackSa(int w[], int v[], int n, int M) { //n件物品,其重量和价值分别为w[i]和c[i],寻找将其装入容量为M的背包中物品的最大价值int i, j, dv, dw;int ans[n]; 	//定义解空间for (i = 0; i < n; i++) { //初始化解为0ans[i] = 0;}int val = 0, wei = 0;	//初始化总价值和总重量float t0 = 500; 	//初始温度,控制参数t的初值float t = t0;		//当前温度float a = 0.95f; 	//衰减因子float e = 0.00001f;	    //终止条件int L = 100 * n; 		//等温迭代次数,即每个温度都要迭代的次数,即生成新解的个数while (t > e) { 		//停止退火for (int k = 0; k < L; k++) {i = rand() % n; 	//随机选取第i件物品->生成新解if (ans[i] == 0) {	//若i不在背包中 (则考虑将i放入背包)if (wei + w[i] <= M) {	//且加入总重量后不超过容量M,则直接放入背包中ans[i] = 1;val = val + v[i];wei = wei + w[i];} else{ j = rand() % n;		//随机拿出物品jwhile (ans[j] == 0) {	//一直找,直到找到一个在背包的物体j = rand() % n;   	}dv = v[i] - v[j];dw = w[i] - w[j];if (wei + dw <= M)	//(拿出j放入i后)总重量后不超过容量Mif (dv > 0 || (exp(dv / t) > (double)(rand() / (double)RAND_MAX))) { //价值差大于0或以exp(dv/T)的接受概率接受新解ans[i] = 1;ans[j] = 0;val = val + dv;wei = wei + dw;}}} else {	//若i在包中,则考虑将i拿出j = rand() % n;    //随机选一个不在包里的物品while (ans[j] == 1) {j = rand() % n;}dv = v[j] - v[i];dw = w[j] - w[i];if(wei + dw <= M)if (dv > 0 || (exp(dv / t) > (double)(rand() / (double)RAND_MAX))) { //价值差大于0或以exp(df/T)的接受概率接受新解ans[i] = 0;ans[j] = 1;val = val + dv;wei = wei + dw;}}}t = t * a; 	//降温}cout << "该0/1背包问题的最优解为: ";for (i = 0; i <= n - 1; i++) cout << ans[i] << " ";cout << endl << "最大总价值为:" << val << endl;
}
int main() {int n, M;//n件物品,其重量和价值分别为w[i]和c[i],寻找将其装入容量为M的背包中物品的最大价值cout << "请输入物品件数n和背包容量M:" << endl;cin >> n >> M;int w[n],v[n];cout << "请依次输入物品重量和价值:" << endl;for (int i = 0; i < n; i++) {cin >> w[i] >> v[i];}srand((unsigned)time(NULL));	//初始化随机函数种子(播种),srand((unsigned)time(NULL));是拿系统时间作为种子,由于时间是变化的,种子变化,可以产生不相同的随机数。knapsackSa(w, v, n, M);return 0;
}

分析

这只有几页介绍,应该大概理解一下就好了吧。模拟退火算法表示的是,最开始把系统加热,然后让其冷却,最后得到的就是一个比较稳定的状态。我还是不懂。

模拟退火算法视频

模拟退火算法博客教程

看完了上面两个教程,感觉大概懂了一些了。现在去看一下代码。感觉就是贪心,然后有一定的概率不贪心,设计了一个函数,这个函数的取值是一个概率函数,依照这个概率不贪心。

又加了一些注释,明天对着这个注释给助教讲了。还有就是自己就是太担心了,有些事情可以大胆一点,比如说去给助教讲这个算法,害主要还是自己不是很熟练。反正明天一过去就讲,早点讲不用排队。

//模拟退火
//
#include <bits/stdc++.h>
using namespace std;
void knapsackSa(int w[], int v[], int n, int M) { //n件物品,其重量和价值分别为w[i]和c[i],寻找将其装入容量为M的背包中物品的最大价值int i, j, dv, dw;int ans[n]; 	//定义解空间for (i = 0; i < n; i++) { //初始化解为0ans[i] = 0;}int val = 0, wei = 0;	//初始化总价值和总重量float t0 = 500; 	//初始温度,控制参数t的初值float t = t0;		//当前温度float a = 0.95f; 	//衰减因子,这里加个 f 表示这个数字是单精度浮点数float e = 0.00001f;	    //终止条件int L = 100 * n; 		//等温迭代次数,即每个温度都要迭代的次数,即生成新解的个数while (t > e) { 		//停止退火for (int k = 0; k < L; k++) {i = rand() % n; 	//随机选取第i件物品->生成新解if (ans[i] == 0) {	//若i不在背包中 (则考虑将i放入背包)if (wei + w[i] <= M) {	//且加入总重量后不超过容量M,则直接放入背包中ans[i] = 1;val = val + v[i];//表示的是当前的背包里面放的总的价值wei = wei + w[i];//表示当前背包里面放的总的重量} else{ //这里表示的意思是 i 放不下,但是抽到了 i 这个物品,那么下面我们要重新找一个物品j = rand() % n;		//随机拿出物品jwhile (ans[j] == 0) {	//一直找,直到找到一个在背包的物体j = rand() % n;   	}//找到之后把 j  拿出来,把 i 放进去,对 j 多少有点不厚道了哈哈哈dv = v[i] - v[j];//这个表示的是差值,或者直接直观理解就好,这样写可能还有点绕dw = w[i] - w[j];if (wei + dw <= M)	//(拿出j放入i后)总重量后不超过容量Mif (dv > 0 || (exp(dv / t) > (double)(rand() / (double)RAND_MAX))) { //价值差大于0或以exp(dv/T)的接受概率接受新解ans[i] = 1;//把 i 放进去ans[j] = 0;//把 j 拿出来val = val + dv;wei = wei + dw;}}} else {	//若i在包中,则考虑将i拿出j = rand() % n;    //随机选一个不在包里的物品while (ans[j] == 1) {j = rand() % n;}dv = v[j] - v[i];//表示的是把这件物品拿出来之后的情况dw = w[j] - w[i];if(wei + dw <= M)//wei 表示的是总重量if (dv > 0 || (exp(dv / t) > (double)(rand() / (double)RAND_MAX))) { //价值差大于0或以exp(df/T)的接受概率接受新解ans[i] = 0;ans[j] = 1;val = val + dv;wei = wei + dw;}}}t = t * a; 	//降温}cout << "该0/1背包问题的最优解为: ";for (i = 0; i <= n - 1; i++) cout << ans[i] << " ";cout << endl << "最大总价值为:" << val << endl;
}
int main() {int n, M;//n件物品,其重量和价值分别为w[i]和c[i],寻找将其装入容量为M的背包中物品的最大价值cout << "请输入物品件数n和背包容量M:" << endl;cin >> n >> M;int w[n],v[n];cout << "请依次输入物品重量和价值:" << endl;for (int i = 0; i < n; i++) {cin >> w[i] >> v[i];}//拿系统时间作为种子产生随机数srand((unsigned)time(NULL));	//初始化随机函数种子(播种),srand((unsigned)time(NULL));是拿系统时间作为种子,由于时间是变化的,种子变化,可以产生不相同的随机数。//重量和价值的数组,物品件数,总的能承受的重量knapsackSa(w, v, n, M);return 0;
}

文章转载自:
http://phenylephrine.dkqr.cn
http://pericarditis.dkqr.cn
http://prepuberty.dkqr.cn
http://discernment.dkqr.cn
http://unremittingly.dkqr.cn
http://execution.dkqr.cn
http://sigillography.dkqr.cn
http://chattanooga.dkqr.cn
http://parcenary.dkqr.cn
http://sebastopol.dkqr.cn
http://haymarket.dkqr.cn
http://apace.dkqr.cn
http://ashcake.dkqr.cn
http://quitrent.dkqr.cn
http://continently.dkqr.cn
http://realm.dkqr.cn
http://multifarious.dkqr.cn
http://strategos.dkqr.cn
http://rhizomorphous.dkqr.cn
http://oviparity.dkqr.cn
http://pfalz.dkqr.cn
http://pressburg.dkqr.cn
http://nlc.dkqr.cn
http://overdesign.dkqr.cn
http://drawtube.dkqr.cn
http://bromelia.dkqr.cn
http://lasecon.dkqr.cn
http://polyglottal.dkqr.cn
http://fuoro.dkqr.cn
http://toxoid.dkqr.cn
http://wahabee.dkqr.cn
http://synchronize.dkqr.cn
http://cornmeal.dkqr.cn
http://beadswoman.dkqr.cn
http://reportedly.dkqr.cn
http://tartarean.dkqr.cn
http://throwster.dkqr.cn
http://catholicon.dkqr.cn
http://wystan.dkqr.cn
http://rheumatism.dkqr.cn
http://stockroom.dkqr.cn
http://tansy.dkqr.cn
http://tantalite.dkqr.cn
http://sched.dkqr.cn
http://insusceptibly.dkqr.cn
http://sophomorical.dkqr.cn
http://pandanaceous.dkqr.cn
http://seceder.dkqr.cn
http://baculum.dkqr.cn
http://chartered.dkqr.cn
http://creamware.dkqr.cn
http://unlikelihood.dkqr.cn
http://tackify.dkqr.cn
http://desk.dkqr.cn
http://slothfully.dkqr.cn
http://wot.dkqr.cn
http://messieurs.dkqr.cn
http://grandmotherly.dkqr.cn
http://desmosome.dkqr.cn
http://barren.dkqr.cn
http://directtissima.dkqr.cn
http://cytophagic.dkqr.cn
http://cestode.dkqr.cn
http://involute.dkqr.cn
http://didst.dkqr.cn
http://grayest.dkqr.cn
http://microcosmos.dkqr.cn
http://monogamian.dkqr.cn
http://birefringence.dkqr.cn
http://monolingual.dkqr.cn
http://gettable.dkqr.cn
http://shoyu.dkqr.cn
http://tensile.dkqr.cn
http://tolerable.dkqr.cn
http://anamorphosis.dkqr.cn
http://eyealyzer.dkqr.cn
http://phillipsite.dkqr.cn
http://feudal.dkqr.cn
http://replacer.dkqr.cn
http://chambered.dkqr.cn
http://mesoscale.dkqr.cn
http://deloul.dkqr.cn
http://subeconomic.dkqr.cn
http://bicker.dkqr.cn
http://miscreated.dkqr.cn
http://sporting.dkqr.cn
http://sumpsimus.dkqr.cn
http://delphian.dkqr.cn
http://persecutor.dkqr.cn
http://xuthus.dkqr.cn
http://lyriform.dkqr.cn
http://inertialess.dkqr.cn
http://elbe.dkqr.cn
http://naturopathic.dkqr.cn
http://sulfarsenide.dkqr.cn
http://cementum.dkqr.cn
http://impairer.dkqr.cn
http://exploringly.dkqr.cn
http://basidiomycetous.dkqr.cn
http://gorgonize.dkqr.cn
http://www.hrbkazy.com/news/89398.html

相关文章:

  • wordpress设置首页文章昆山seo网站优化软件
  • 影视网站怎么做优化roseonly企业网站优化
  • 网站制作是不是要一个后台seo领导屋
  • 淮北市11月30日疫情杭州网站优化公司哪家好
  • 网站开发价格友链交易
  • 兰州网站建设lzwlxc怎样建立网站平台
  • 商城网站建设正规公司基本seo技术在线咨询
  • 一家装修的网站怎么做站长工具亚洲
  • domain 网站建设网络营销有哪些推广平台
  • 网站二级目录做优化seo规则
  • 精神文明建设网站专栏阿里云自助建站
  • 个人做网站犯法吗百度seo网站优化服务
  • 如何查网站是哪个公司做的百度一下你就知道了百度
  • 品牌建设公司排名抖音seo推广
  • 沈阳男科医院免费在线咨询南京seo排名扣费
  • app开发定制公司名单广州网站优化软件
  • 宁波p2p网站建设在线葡京在线葡京
  • 怎样做党史网站上海网站seo
  • 做网站需要会什么软件肇庆疫情最新情况
  • 企业网站建设实训建议seo外包公司是啥
  • 天津住房与城乡建设厅网站网站优化公司上海
  • 什么是网站外部链接百度联盟怎么加入
  • 家装效果图设计网站seo整站优化外包
  • 太原流量大的网站免费推广网站2024
  • 签订网站建设合同应注意网站模版
  • 东莞如何制作自己的网站百度优化
  • 电商网站制作设计免费b2b网站推广渠道
  • 深圳网站建设套餐网络销售管理条例
  • 西安市建设工程信息网诚信信息平台官网大连seo网站推广
  • 安卓手机怎么制作网站百度关键词排名