#! /usr/bin/env python
#coding:utf8
import itertools
list1=[509,838,924,650,604,793,564,651,697,649,747,787,701,605,644]
#对数据正序排序
list1.sort()
#该函数用于计算最多或者最少容纳的最优个数
def return_num(num_list):
num,count=0,0
for i in list1:
count=count+i
if count<=5000:
num=num+1
else:
continue
return num
#给出特定数的最优无序组合
def return_data(input_list,num,current_sum=0):
zuhe_all=list(itertools.combinations(input_list,num))
for i in zuhe_all:
count=sum(i)
if count>current_sum and count<=5000:
current_sum=count
print i,current_sum
#计算出满足条件时最多能容纳的个数
max_num=return_num(list1)
print max_num
#将正序逆序
list1.reverse()
#计算出满足条件时最少需要多少才更接近理想值
min_num=return_num(list1)
print min_num
current_sum=0
for num in range(min_num,max_num+1):
current_sum=return_data(list1,num,current_sum)
老王装货 最优化问题
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...