本篇内容介绍了“Python动态规划实现虚拟机部署的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
考虑到在虚拟机部署中资源提供商通常希望自己的收益最大化,现假设有一台宿主机,共有x个cpu和y GB的内存,用户可以采取自己报价的方式向资源提供商申请使用虚拟机资源,譬如说付w元申请a个cpu和b GB内存的一台虚拟机。请你设计一个算法,让资源提供商可以合理地安排虚拟机,使得自己的收益最大化。输入:n x y2 4 2004 2 150…说明,n表示共有n条用户报价申请,宿主机共有x个cpu和y GB的内存;以下n行,每行表示用户申请的cpu和内存数,以及用户报价的金额。
该问题为寻找全局最优解问题,采用动态规划的思想。找最大利益是最终的问题,可以将最大利益的子问题看做是已经报价的每个用户最大金额,并将其所要求的CPU数和内存数加入到总的需求总,与提供的CPU数和内存容纳进行对比。解决了目前最大报价的用户,下一个最大报价又可以看做是一个子问题,但CPU和内存容量需要减去已经分配的,如此反复,到CPU和内存容量不能满足任何一个用户要求为止,最优解便求得。
运行结果:
源代码
importsysprint("请输入申请虚拟机的用户个数,cpu个数,内存容量:")a=list(map(int,input().split()))#用数组a来存储参与报价的用户的个数,云端要存储的cpu个数,容量大小a1=a[0]#存储用户个数,要输入几行数据a2=a[1]#存储cpu的个数a3=a[2]#存储容量b=[]cpu_num=0size_num=0money=0b1=[0]*a1#数组b1存储用户报价p1=[0]*a1#数组p1记录报价金额的位置foriinrange(a1):print("请输入第",i+1,"个用户的申请CPU个数内存容量报价:")b.append(list(map(int,input().split())))forkinrange(a1):b1[k]=b[k][2]p1[k]=kforiinrange(0,a1-1):forjinrange(1,a1-i):ifb1[j]>b1[j-1]:temp=b1[j-1]b1[j-1]=b1[j]b1[j]=temptemp=p1[j-1]p1[j-1]=p1[j]p1[j]=tempdefFun(i):globalcpu_num,size_num,moneycpu_num=cpu_num+b[p1[i]][0]size_num=size_num+b[p1[i]][1]money=money+b[p1[i]][2]ifcpu_num>a2orsize_num>a3:money=money-b[p1[i]][2]cpu_num=cpu_num-b[p1[i]][0]size_num=size_num-b[p1[i]][1]foriinrange(a1):Fun(i)print("最大化收益:",money)
“Python动态规划实现虚拟机部署的方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注恰卡编程网网站,小编将为大家输出更多高质量的实用文章!
python(中无效的十进制怎么解决 python怎么转换进制)
python怎么转换进制?Python执行二进制转换:1.十进制到二进制(bin)首先,让让我们看看如何将十进制转换成二进制。我...
python怎么清除完全相同的行(python splte如何分隔有多个相同符号的str)
pythonsplte如何分隔有多个相同符号的str?str你的string内容str_(相同的符号)执行完了以后再在相同符号的...
python(编程控制电脑关机 如何控制电脑关机)
如何控制电脑关机?可以在电脑的运行窗口中输入输入公式,给电脑可以设置自动关机。1.按开快捷键winr然后打开运行窗口。2.在运行窗...
python中的特殊标识符(python 中 标识符中可以有逗号吗)
python中标识符中可以有逗号吗?在python语言中合法的标识符是字母、数字以及_,所以我合法的标识符中肯定不能有逗号if...
python(excel 提取数据写入新表 python导入excel数据找不到工作簿)
python导入excel数据找不到工作簿?我可以导入数据后找不到工作,不是因为他的工作没有被转移。什么软件可提取并合并Exce...
python中字典定义的四种方法(python global关键字的用法详解)
pythonglobal关键字的用法详解?global标志实际上是目的是提示python讲解器,说被其修饰的变量是全局变量。这样...
python(array用法 python如何对两个数组做差处理)
python如何对两个数组做差处理?Python中的列表中的元素肯定不能真接相加,减。t最佳的位置的是将列表装换成Python中的...
python多行注释符号怎么表示
python多行注释符号怎么表示这篇文章主要介绍“python多行...
python支持的操作系统是什么
python支持的操作系统是什么这篇文章主要介绍“python支持...
python如何判断列表为空
python如何判断列表为空这篇文章主要介绍“python如何判断...
用户名
密码
记住登录状态 忘记密码?
邮箱
确认密码
我已阅读并同意 用户协议