【分配】linear_sum_assignment函数

every blog every motto: You can do more than you think.
https://blog.csdn.net/weixin_39190382?type=blog

0. 前言

分配问题小结,
linear_sum_assignment 函数使用的是Jonker-Volgenant algorithm算法

1. 分配问题

有工人和相应的工作,每个工作都有相应的成本,每个工人也有相应的成本,现在要安排工人去工作,使得总成本最小。

如下是成本矩阵C:

workerjob 1job 2job 3job 4
A43.547.148.438.2
B45.542.149.636.8
C43.439.142.143.2
D46.544.144.541.2
E46.347.850.437.2

形式上,令X XX为布尔矩阵,其中 X [ i , j ] = 1 X[i,j]=1X[i,j]=1 如果第 i ii 行分配给第j jj列。那么最优分配的成本:
20240425120859

具体实现,使用的是Jonker-Volgenant算法,该算法在1959年被提出,该算法基于动态规划,其时间复杂度为O(n^3)。
20240425121135

也可以使用之间介绍的匈牙利匹配算法。

2. 案例代码

import numpy as np
cost = np.array([[43.5, 45.5, 43.4, 46.5, 46.3],
                 [47.1, 42.1, 39.1, 44.1, 47.8],
                 [48.4, 49.6, 42.1, 44.5, 50.4],
                 [38.2, 36.8, 43.2, 41.2, 37.2]])

from scipy.optimize import linear_sum_assignment
row_ind, col_ind = linear_sum_assignment(cost)

row_ind 和 col_ind 是成本矩阵的最优分配矩阵索引:

row_ind
array([0, 1, 2, 3])
col_ind
array([2, 0, 3, 1])

3. 参考资料

  1. https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.linear_sum_assignment.html
  2. https://www.cnblogs.com/happyamyhope/p/16644134.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/574296.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

51单片机中断和定时的结合应用

#include <reg52.h>unsigned int cnt 0;sbit led P1^1;// 初始化定时器 void TimerSetup(){TMOD 0x01; // 定时器的第1个模式TH0 0xB8; // 定时器的初始值-高位TL0 0x00; // 定时器的初始值-低位TR0 1; //启动定时器cnt 0;EA 1; // 开启总中断ET0 1; // 时间中断…

DFS和回溯专题:全排列 II

DFS和回溯专题&#xff1a;全排列 II 题目链接: 全排列 II 参考题解 代码随想录 题目描述 代码纯享版 class Solution {public List<List<Integer>> list_all new ArrayList();public List<Integer> list new ArrayList();public int[] res;public Lis…

NVIDIA CUDA Toolkit

NVIDIA CUDA Toolkit CUDA Toolkit 12.4 Update 1 Downloads | NVIDIA Developer CUDA Toolkit是用于CUDA开发的软件包&#xff0c;主要包括CUDA编译器、运行时库、GPU驱动程序和开发工具等。它允许开发者使用通用编程语言&#xff08;如C、C&#xff09;来利用NVIDIA GPU进行…

echart-better基于最新的echarts5.5标题旋转功能

使用教程以及相关的echarts-better最新的包在这里&#xff1a;https://edu.csdn.net/course/detail/24569 echarts在侧边竖向展示标题&#xff0c;以及次标题 主标题和次标题进行旋转&#xff0c;适用于移动端或其他场景。

如何安装mysl驱动程序jar包

简介&#xff08;为什么要安装mysql驱动jar包&#xff09; MySQL 驱动程序&#xff08;通常以 JAR 文件的形式提供&#xff09;用于在 Java 应用程序中连接和与 MySQL 数据库进行交互。这些驱动程序提供了一组 API&#xff0c;使 Java 应用程序能够执行诸如查询、插入、更新和…

大数据真题讲解系列——拼多多数据分析面试题

拼多多数据分析面试题&#xff1a;连续3次为球队得分的球员名单 问题&#xff1a; 两支篮球队进行了激烈的比赛&#xff0c;比分交替上升。比赛结束后&#xff0c;你有一个两队分数的明细表&#xff08;名称为“分数表”&#xff09;。表中记录了球队、球员号码、球员姓名、得…

parallels desktop 19密钥分享 附PD虚拟机安装教程 支持M/intel

PD19虚拟机安装破解教程 Parallels Desktop 百度网盘下载&#xff1a;https://pan.baidu.com/s/1ezQmJAjIx796NEr9WZbcOg 提取码: 8w61 &#xff08;地址容易失效&#xff0c;来之不易&#xff0c;务必点赞和收藏&#xff0c;如果失效了请到评论区留言反馈&#xff09; 注意&…

猫咪吃主食罐头的好处盘点,附高营养高适口猫罐头推荐清单

关于是否要给猫咪喂食罐头&#xff0c;这可真是个让人头疼的争议话题啊&#xff01;有的猫主人觉得&#xff0c;罐头能让猫咪尝到更多美味&#xff0c;营养也更全面&#xff1b;而有些则觉得&#xff0c;猫粮就足够了&#xff0c;何必多此一举呢&#xff1f;作为一位拥有两只6岁…

LeetCode54. 螺旋矩阵

LeetCode54.螺旋矩阵 题解思路 代码 class Solution { public:vector<int> spiralOrder(vector<vector<int>>& matrix) {vector<int> res;int n matrix.size();// 行int m matrix[0].size(); // 列vector<vector<bool>> st(n, v…

C#基础|构造方法相关

哈喽&#xff0c;你好&#xff0c;我是雷工。 以下为C#方法相关的学习笔记。 01 方法的概述 概念&#xff1a;方法表示这个对象能够做什么&#xff0c;也就是封装了这个对象行为。 类型&#xff1a;实例方法—>静态方法&#xff08;抽象方法、虚方法&#xff09;—>特殊…

阿斯达年代记下载注册+短信验证教程分享

阿斯达年代记&#xff1a;三强争霸》预计将于4月24日盛大发布&#xff0c;标志着一款新颖的MMORPG游戏面世&#xff0c;它跨越安卓、苹果和PC三大平台&#xff0c;实现数据互通&#xff0c;满足多元化玩家群体的需求。无论是追求移动便捷的手游爱好者&#xff0c;还是偏爱高性能…

揭秘神器:智能私信破局获客难!

在数字营销的海洋中&#xff0c;每个企业都如同一艘努力航行的船&#xff0c;希望能在广阔的客户蓝海中获得丰收。然而&#xff0c;现实却往往充满挑战&#xff0c;尤其是当面对如何吸引并维系客户这一核心难题时。传统的获客手段逐渐显得力不从心&#xff0c;而智能科技的介入…

OpenHarmony语言基础类库【@ohos.util.Deque (线性容器Deque)】

Deque&#xff08;double ended queue&#xff09;根据循环队列的数据结构实现&#xff0c;符合先进先出以及先进后出的特点&#xff0c;支持两端的元素插入和移除。Deque会根据实际需要动态调整容量&#xff0c;每次进行两倍扩容。 Deque和[Queue]()相比&#xff0c;Queue的特…

Postman获取接口返回值设置为变量

//设置环境变量&#xff0c;提取token // 把responseBody转为json字符串 var jsonData JSON.parse(responseBody); // 设置环境变量&#xff0c;提取token pm.environment.set("Authorization", jsonData.token_type " " jsonData.access_token); //设…

如何分析和优化慢sql语句

前言 sql查询速度比较慢容易成为性能瓶颈,这时我们可以优化我们的sql语句或数据库表 一般sql语句执行很慢的种类分为: 1.聚合查询 2.多表查询 3.表数据量过大查询 4.深度分页查询 这四种的前三种都可以通过优化sql语句来优化sql查询速度 正文 聚合查询 我们可以通过尝…

洗地机什么牌子比较好?4款洗地机品牌型号深度推荐

随着科技的不断发展&#xff0c;清洁工具也在不断进化。手持洗地机作为一种新型的清洁工具&#xff0c;因其便捷、高效的特点受到了消费者的青睐。然而&#xff0c;市场上的洗地机品牌众多&#xff0c;消费者在选择时常常感到困惑。那么&#xff0c;哪些洗地机品牌在口碑上表现…

FinalShell 安装 及使用教程

一 简介&#xff1a; FinalShell 是一款免费的国产的集 SSH 工具、服务器管理、远程桌面加速的良心软件&#xff0c;同时支持 Windows,macOS,Linux&#xff0c;它不单单是一个 SSH 工具&#xff0c;完整的说法应该叫一体化的的服务器&#xff0c;网络管理软件&#xff0c;在很…

记录一个Maxwell采集MySQL数据时报安全证书时间不通过的问题

【背景描述】 我的zk&#xff0c;kafka和Maxwell都正常启动了 此时我需要用Maxwell将MySQL的一张表user_info将其全量同步到kafka当中时发生报错&#xff0c;命令如下&#xff1a; [atguiguhadoop102 datas]$ /opt/module/maxwell/bin/maxwell-bootstrap --database gmall --…

3、Flink执行模式(流/批)详解(上)

0、批模式和流模式对比表 类别流模式批模式任务调度所有任务需要持续运行&#xff0c;消耗资源大任务可以按Shuffle分阶段执行&#xff0c;消耗资源小Shuffle记录会被流水线式的持续发送到下游任务&#xff0c;在网络上进行缓冲可以保存Shuffle分阶段执行的中间结果State Back…

Linux的UDEV机制

udev 机制引入&#xff1a; 手机接入Linux热拔插相关 a. 把手机接入开发板 b. 安装adb工具&#xff0c;在终端输入adb安装指令&#xff1a; sudo apt-get install adb c. dmeg能查看到手机接入的信息&#xff0c;但是输入adb devices会出现提醒 dinsufficient permissions for …