优化:如何搜索大型解决方案空间

时间:2012-12-03 23:39:46

标签: python optimization

开发Python例程......我需要帮助来解决这个问题:

工程问题: 我有3个位置((x = 3),每个位置有4个物理支持(y = 4):

Loc 1:    {H1, L1, R1, G1}
Loc 2:    {H2, L2, R2, G2}
Loc 3 (x):{H3, L3, R3, G3}

跨地点的有效组合(测试和优化)是:

H1(Loc1), H2(Loc2), H3(Loc3)------ cost 1
H1(Loc1), H2(Loc2), L3(Loc3)------ cost 2
H1(Loc1), H2(Loc2), R3(Loc3)------ cost 3
H1(Loc1), H2(Loc2), G3(Loc3)------ cost 4

下一步,

H1(Loc1), L2(Loc2), H3(Loc3)------ cost 5
H1(Loc1), L2(Loc2), L3(Loc3)------ cost 6
H1(Loc1), L2(Loc2), R3(Loc3)------ cost 7
H1(Loc1), L2(Loc2), G3(Loc3)------ cost 8

下一步,

H1(Loc1), R2(Loc2), H3(Loc3)------ cost 9
H1(Loc1), R2(Loc2), L3(Loc3)------ cost 10
H1(Loc1), R2(Loc2), R3(Loc3)------ cost 11
H1(Loc1), R2(Loc2), G3(Loc3)------ cost 12

下一步,

H1(Loc1), G2(Loc2), H3(Loc3)------ cost 13
H1(Loc1), G2(Loc2), L3(Loc3)------ cost 14
H1(Loc1), G2(Loc2), R3(Loc3)------ cost 15
H1(Loc1), G2(Loc2), G3(Loc3)------ cost 16

总共16套,每套都有成本。并且,将有另外3组16组(总共64组)。顺便说一句,订单很重要,但没有重复。所以,{H1,G2,H3}不同于 {G2,H1,H3}和{H1,H3,G2}等等。

首先,我是否正确假设解空间中的可能集合总数为4 ^ 3(y ^ x)集?这个叫什么?我对术语感到困惑。排列,组合?

我需要以最低成本选择集合,或者显示具有大约相同成本的所有集合(例如彼此的10%之内)。对于这个例子,我想我可以通过设置3个循环,每个位置一个循环,并迭代项目来接近它。

prevcost = 0.0
for loc1 items i:1 to 4
    for loc2 items j: 1 to 4
        for loc3 items k: 1 to 4
            cost = findcost(i,j,k)
            if cost < prevcost:
               prevcost = cost

因为我已经有与每套相关的费用;这是一个单独的程序,我打电话来找到一套的成本,我可以使这项工作。

但是,如果我在每个地方有40个地点和5个可能的物品,我是否需要处理5 ^ 40套(9E + 27 !!)?我无法设置40个嵌套循环;递归是一个答案。但这需要一个聪明的搜索程序。我刚读完“模拟退火”技术,但不知道如何适应它。

该程序(最终)将能够在工业工厂环境中找到管道系统的物理现场支持的最佳组合。最好的,我的意思是支撑的组合,在支撑上产生最小负载。我计划(a)一次选择一个组合,(b)通过工程求解器运行它,(c)然后让我的例程解析结果文件以找到支持载荷的总和(在所有位置),并迭代地继续前进,直到找到最佳组合。

我用于“花费”的结果文件的格式在这里: python genfromtxt problems

寻找想法。感谢所有答案。谢谢。

0 个答案:

没有答案