import itertools
#from multiprocessing import Pool
problems = [
[8, 4, 26],
[12, 1, 28],
[6, 6, 32],
[10, 5, 35],
[3, 1, 38],
[11, 4, 48],
[9, 5, 50],
[11, 9, 51],
[13, 8, 53],
[7, 1, 64]
]
process, weight, duedate = 0, 1, 2
def f(perm):
flowtime = 0
WT = 0
for prob in perm:
flowtime += prob[process]
if flowtime >= prob[duedate]:
WT += (flowtime - prob[duedate]) * prob[weight]
return WT, perm
if __name__ == '__main__':
#pool = Pool(processes=8)
#WTS = pool.map(f, itertools.permutations(problems, 10))
WTS = (f(x) for x in itertools.permutations(problems, 10))
bestWT, perm = min(WTS, key=lambda item:item[0])
print("-"*78)
print("bestWT:", bestWT)
print("problem:", perm)
"""
bestWT: 218
problem: ([8, 4, 26], [6, 6, 32], [10, 5, 35], [3, 1, 38], [11, 9, 51], [13, 8, 53], [9, 5, 50], [11, 4, 48], [7, 1, 64], [12, 1, 28])
"""
aW1wb3J0IGl0ZXJ0b29scwojZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IFBvb2wKCnByb2JsZW1zID0gWwogICAgICAgIFs4LCA0LCAyNl0sCiAgICAgICAgWzEyLCAxLCAyOF0sCiAgICAgICAgWzYsIDYsIDMyXSwKICAgICAgICBbMTAsIDUsIDM1XSwKICAgICAgICBbMywgMSwgMzhdLAogICAgICAgIFsxMSwgNCwgNDhdLAogICAgICAgIFs5LCA1LCA1MF0sCiAgICAgICAgWzExLCA5LCA1MV0sCiAgICAgICAgWzEzLCA4LCA1M10sCiAgICAgICAgWzcsIDEsIDY0XQogICAgICAgIF0KcHJvY2Vzcywgd2VpZ2h0LCBkdWVkYXRlID0gMCwgMSwgMgoKZGVmIGYocGVybSk6CiAgICBmbG93dGltZSA9IDAKICAgIFdUID0gMAogICAgZm9yIHByb2IgaW4gcGVybToKICAgICAgICBmbG93dGltZSArPSBwcm9iW3Byb2Nlc3NdCiAgICAgICAgaWYgZmxvd3RpbWUgPj0gcHJvYltkdWVkYXRlXToKICAgICAgICAgICAgV1QgKz0gKGZsb3d0aW1lIC0gcHJvYltkdWVkYXRlXSkgKiBwcm9iW3dlaWdodF0KICAgICAgICAKICAgIHJldHVybiBXVCwgcGVybQoKCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAjcG9vbCA9IFBvb2wocHJvY2Vzc2VzPTgpCiAgICAjV1RTID0gcG9vbC5tYXAoZiwgaXRlcnRvb2xzLnBlcm11dGF0aW9ucyhwcm9ibGVtcywgMTApKQogICAgV1RTID0gKGYoeCkgZm9yIHggaW4gaXRlcnRvb2xzLnBlcm11dGF0aW9ucyhwcm9ibGVtcywgMTApKQogICAgYmVzdFdULCBwZXJtID0gbWluKFdUUywga2V5PWxhbWJkYSBpdGVtOml0ZW1bMF0pCiAgICAKICAgIHByaW50KCItIio3OCkKICAgIHByaW50KCJiZXN0V1Q6IiwgYmVzdFdUKQogICAgcHJpbnQoInByb2JsZW06IiwgcGVybSkKICAgIAogICAgICAgIAoiIiIKYmVzdFdUOiAyMTgKcHJvYmxlbTogKFs4LCA0LCAyNl0sIFs2LCA2LCAzMl0sIFsxMCwgNSwgMzVdLCBbMywgMSwgMzhdLCBbMTEsIDksIDUxXSwgWzEzLCA4LCA1M10sIFs5LCA1LCA1MF0sIFsxMSwgNCwgNDhdLCBbNywgMSwgNjRdLCBbMTIsIDEsIDI4XSkKIiIiCg==