• 2023年亚太杯数学建模思路 - 复盘:人力资源安排的最优化模型


    0 赛题思路

    (赛题出来以后第一时间在CSDN分享)

    https://blog.csdn.net/dc_sinor?type=blog

    1 描述

    某大学数学系人力资源安排问题是一个整数规划的最优化问题,通过具体分析数学系现有的技术力量和各方面的约束条件,在问题一的求解中,可以列出一天最大直接收益的整数规划,求得最大的直接收益是42860元;而在问题二的求解中,由于教授一个星期只能工作四天,副教授一个星期只能工作五天,在这样的约束条件下,列出一个星期里最大直接收益的整数规划模型,求得其最大直接收益是198720元。

    2 问题概括

    数学系的教师资源有限,现有四个项目来源于四个不同的客户,工作的难易程度不一,各项目对有关技术人员的报酬不同。所以:

    1.在满足工作要求的情况下,如何分配数学系现有的技术力量,使得其一天的直接收益最大?

    2.在教授与副教授工作时间受到约束的条件下,如何分配数学系现有的技术力量,使得其在一个星期里的直接收益最大?

    3 建模过程

    3.1 边界说明

    1.不同技术力量的人每天被安排工作的几率是相等的,且相同职称的个人去什么地方工作是随机的;

    2.客户除了支付规定的工资额外,在工作期间里,还要支付所有相关的花费(如餐费,车费等);

    3.当天工作当天完成.

    3.2 符号约定

    在这里插入图片描述

    3.3 分析

    由题意可知各项目对不同职称人员人数都有不同的限制和要求.对客户来说质量保证是关键,而教授相对稀缺,因此各项目对教授的配备有不能少于一定数目的限制.其中由于项目技术要求较高,助教不能参加.而两项目主要工作是在办公室完成,所以每人每天有50元的管理费开支.

    由以上分析可得:最大直接收益=总收益-技术人员工资-、两地保管费.

    3.4 模型建立

    在这里插入图片描述在这里插入图片描述在这里插入图片描述

    3.5 模型求解

    相关数据表格如下:
    数学系的职称结构及工资情况
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    4 模型评价与推广

    本模型通过合理的假设,充分考虑各方面的限制条件,得出的人员安排和直接收益

    都是本模型的最优解与最优值,对武汉大学数学系的人力资源安排有一定的指导作用。但从模型假设中,我们可以知道对数

    学系现有的技术力量的安排是随机的,在相同工作时段里,可能会出现部分人工作次数较多,而部分人较少的不公平情况。

    所以在满足工作需求的情况下,分配工作时应该要人为地尽量使得每个人的工作次数不要相差太远,或者相等。

    此模型通过对人力资源的调配,从量化的角度得出数学系的最大直接收益。利用此模型的方法可以求出所有类似本模型的线性规划模型。但是,本模型只是单目标的规划,可以在此基础上,增加目标要求。如在数学系的直接收益尽可能大的基础上,使得客户所花费的资金最少,等等。从而建立多目标规划模型。解决更为复杂的实际问题。

    5 实现代码

    f=[-1000;-800;-550;-450;-1500;-800;-650;-550;-1300;-900;-650;-350;-1000;-800;-650;-450];
    A=zeros(9,16);
    for i=1:1
       for j=1:16
          A(i,j)=1; 
       end
    end
    for i=2:5
       for j=i-1:4:11+i
          A(i,j)=1;
       end
    end
    i0=0;
    for i=6:9
       for j=i0+1:(i-5 )*4
          A(i,j)=1;
       end
       i0=j;
    end
    b=[64;17;20;15;18;12;25;17;10];
    Aeq=zeros(1,16);
    Aeq(1,3)=1;
    beq=[2];
    LB=[1;2;2;1;2;2;2;2;2;2;2;1;1;3;1;0];
    UB=[3;5;2;2;inf;inf;inf;8;inf;inf;inf;inf;inf;inf;inf;0];
    [x,fval]=linprog(f,A,b,Aeq,beq,LB,UB)
    
    
    
    f=[-1000;-1000;-1000;-1000;-1000;-1000;-1000;-1500;-1500;-1500;-1500;-1500;-1500;-1500;-1250;-1250;-1250;-1250;-1250;-1250;-1250;-950;-950;-950;-950;-950;-950;-950;-800;-800;-800;-800;-800;-800;-800;-800;-800;-800;-800;-800;-800;-800;-850;-850;-850;-850;-850;-850;-850;-750;-750;-750;-750;-750;-750;-750;-600;-600;-600;-600;-600;-600;-600;-700;-700;-700;-700;-700;-700;-700;-650;-650;-650;-650;-650;-650;-650;-650;-650;-650;-650;-650;-650;-650;-500;-500;-500;-500;-500;-500;-500;-600;-600;-600;-600;-600;-600;-600;-350;-350;-350;-350;-350;-350;-350;-450;-450;-450;-450;-450;-450;-450];
    A=zeros(60,112);
    for i=1;1
       for j=1:112
          A(i,j)=1;
       end 
    end
    i0=0;
    for i=2:4
       for j=i0+1:(i-1)*28
          A(i,j)=1;
       end
       i0=j;
    end
    for i=5:32
       for j=(i-4):28:80+i
          A(i,j)=1;
       end
    end
    for i=33:39
       for j= i-32:7:(i-11)
          A(i,j)=1;
       end
    end
    j0=j;
    for i=40:46
       for j=j0+(i-39):7:(i-18)+j0
          A(i,j)=1;
       end
    end
    j0=j;
    for i=47:53
       for j=j0+(i-46):7:j0+(i-25)
          A(i,j)=1;
       end
    end
    j0=j;
    for i=54:60
       for j=j0+(i-53):7:j0+(i-32)
          A(i,j)=1;
       end
    end
    b=[362;48;125;119;17;17;17;17;17;17;17;20;20;20;20;20;20;20;15;15;15;15;15;15;15;18;18;18;18;18;18;18;12;12;12;12;12;12;12;25;25;25;25;25;25;25;17;17;17;17;17;17;17;10;10;10;10;10;10;10];
    UB=[3;3;3;3;3;3;3;5;5;5;5;5;5;5;3;3;3;3;3;3;3;2;2;2;2;2;2;2;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;8;8;8;8;8;8;8;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;+inf;0;0;0;0;0;0;0];
    LB=[1;1;1;1;1;1;1;2;2;2;2;2;2;2;1;1;1;1;1;1;1;1;1;1;1;1;1;1;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;1;1;1;1;1;1;1;1;1;1;1;1;1;1;3;3;3;3;3;3;3;1;1;1;1;1;1;1;0;0;0;0;0;0;0];
    Aeq=zeros(7,112);
    for i=1:7
       Aeq(i,i+14)=1;
    end
    beq=[2;2;2;2;2;2;2];
    [x,fval]=linprog(f,A,b,Aeq,beq,LB,UB)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80

    建模资料

    资料分享: 最强建模资料
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    linux下docker容器安装已经docker基本使用命令详解
    Python-----for循环基本语法及其应用---对序列进行遍历循环
    安装包 amd,amd64, arm,arm64 都有什么区别
    2023-08-31 LeetCode每日一题(一个图中连通三元组的最小度数)
    七、shell脚本语言文本处理三剑客awk
    应用宝应用认领签名指令
    Selenium自动化测试 —— 通过cookie绕过验证码的操作!
    mybatis03与spring的集成
    GAM注意力机制
    由阿里三位专家撰写:数据库高效优化:架构、规范SQL技巧文档
  • 原文地址:https://blog.csdn.net/math_assistant/article/details/134428893