2022年最小重量算法设计文 .pdf
《2022年最小重量算法设计文 .pdf》由会员分享,可在线阅读,更多相关《2022年最小重量算法设计文 .pdf(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、最小重量机器设计问题一、实验目的1、了解回溯法和分支限界法的基本思想。2、运用回溯法和分支限界法解决最小重量机器设计问题。二、实验要求最小重量机器设计问题:设某一机器由n 个部件组成,每一种部件可以从m 个不同的供应商处购得。设wij是从供应商j 处购得的部件i 的重量, cij是相应的价格。试设计一个算法,给出总价格不超过c 的最小重量机器设计。分别用回溯法和分支限界法实现问题的算法。三、算法思想和实现1、回溯法(1)此问题是一棵排列树,设开始时 bestx=-1,-1, ,-1则相应的排列树由x0:n-1 的所有排列构成。(2)找最小重量机器设计的回溯算法Backtrack 是类 mach
2、ine 的公有成员。 私有数据成员整型数组 Savex 保存搜索过的路径,到达叶节点后将数据赋值给数组bestx。成员 bestw 记录当前最小重量,cc 表示当前花费,cw 表示当前的重量。(3)在递归函数Backtrack 中,在保证总花费不超过c 的情况下:当 i=n 时,当前扩展结点是排列树的叶节点。此时搜索到一个解,判断此时的最小重量是否小于当前最小重量,若小于则更新bestw,并得到搜索路径bestx。当 in 时,当前扩展结点位于排列树的第i-1 层。当 x0:i 的花费小于给定最小花费时,算法进入排列树的第i 层,否则将减去相应的子树。算法用变量cc 记录当前路径x0:i 的费
3、用。#include using namespace std; #define N 3 #define M 3 int wNM=1,2,3,3,2,1,2,2,2; int cNM=1,2,3,3,2,1,2,2,2; class machine public: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 9 页 - - - - - - - - - void InitMachine(int C); void Backtrack(int i); void printsa
4、ve(); private: int COST;/ 题目中的C int cw;/ 当前的重量int cc;/ 当前花费int bestw;/ 当前最小重量int bestxN;/ 最优解int savexN;/savexi 如果为 j,表示第i 个零件应该选用第j 个人供应的;void machine:InitMachine(int C) COST=C; cw=cc; bestw=-1;/ 初值为 -1,标记最小重量是否变化for(int j=0;j=N)/ 达到叶子节点if(cwbestw|bestw=-1)/当前能找到的最小重量以前最小重量,保留当前的最小重量 bestw=cw; cout
5、*endl; cout 搜索路径的bestw:bestwendl 供应商搜索路径:;for(int k=0;kN;k+)/把当前搜过的路径记下来 coutbestxk; savexk=bestxk; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 9 页 - - - - - - - - - coutendl; return; for(int j=0;jM;j+)/依次递归尝试这三个供应商 if(cc+cij0) cc+=cij; cw+=wij; bestxi=j; Ba
6、cktrack(i+1); bestxi=-1; cc-cij; cw-=wij; void machine:printsave() if(bestw=-1) cout 输入的总价格太小!endl; else cout*endl; cout最优重量( bestw )是: bestwendl; for(int k=0;kN;k+) cout第k+1 个部件由第 savek+1 供应商供应 endl; coutendl; int main() mach Mach; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - -
7、 - - - - - 第 3 页,共 9 页 - - - - - - - - - int C; coutC;/ 输入最小花费Mach.InitMachine(C); Mach.Backtrack(0); Mach.printsave(); return 0; 2、分支限界法解空间为一棵排列树,采用优先队列式分支限界法找出所给的最小重量机器设计,开始时,将排列树的根节点置为当前扩展结点。在初始扩展结点处还设有选定部件是哪个供应商提供的,故 cv=0,cw=0,position=0 ,peer=0, 1 i n。x1:n 记录供应商的选择while 完成对排列树内部结点的有序扩展。循环体内依次从活
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年最小重量算法设计文 2022 最小 重量 算法 设计
限制150内