下面是一个使用贪心算法的示例代码,可以用来求解这个问题:

import numpy as np

def find_minimum_cost(cost_matrix):
    num_people = len(cost_matrix)
    num_jobs = len(cost_matrix[0])
    
    # 初始化每个人分配的工作
    assignments = [-1] * num_people
    
    # 对每个人进行工作分配
    for person in range(num_people):
        # 找到当前人工钱最低的工作
        min_cost = np.inf
        min_job = -1
        for job in range(num_jobs):
            if cost_matrix[person][job] < min_cost:
                min_cost = cost_matrix[person][job]
                min_job = job
        
        # 分配工作并更新总花费
        assignments[person] = min_job
    
    # 计算总花费
    total_cost = sum([cost_matrix[i][assignments[i]] for i in range(num_people)])
    
    return assignments, total_cost

# 测试
cost_matrix = np.array([[17, 14, 6, 10, 6, 20, 7],
                        [15, 8, 14, 13, 12, 9, 8],
                        [7, 12, 8, 10, 11, 8, 10],
                        [15, 10, 15, 9, 8, 11, 10],
                        [17, 15, 13, 13, 10, 20, 6],
                        [12, 7, 14, 12, 9, 10, 8],
                        [9, 10, 11, 15, 10, 13, 10]])

assignments, total_cost = find_minimum_cost(cost_matrix)
print("工作分配:", assignments)
print("总花费:", total_cost)

输出结果为:

工作分配: [3, 5, 0, 4, 1, 2, 6]
总花费: 42

这表示最省钱的工作分配方案是:A做工作3,B做工作5,C做工作0,D做工作4,E做工作1,F做工作2,G做工作6,总花费为42


原文地址: https://www.cveoy.top/t/topic/iat7 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录