精华内容
下载资源
问答
  • 资源分配问题
    千次阅读 多人点赞
    2020-07-20 15:14:18

    资源分配问题

      大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客

    本文原创为亓官劼,请大家支持原创,部分平台一直在盗取博主的文章!!!

    博主目前仅在CSDN中写博客,唯一博客更新的地址为:亓官劼的博客


    在这里插入图片描述

    题目

    某工业生产部门根据国家计划的安排,拟将某种高效率的5台机器,分配给所属的3个工厂A,B,C, 各工厂在获得这种机器后,可以为国家盈利的情况如表1所示。问:这5台机器如何分配给各工厂,才能使得国家利益最大?

    利益表:

    <
    S A B C
    更多相关内容
  • 资源分配问题(动态规划)

    千次阅读 2021-04-23 15:59:58
    //问题描述:资源分配问题//某厂根据计划安排,拟将n台相同的设备分配给m个车间,各车间获得这种设备后,可以为国家提供盈利Cij(i台设备提供给j号车间将得到的利润,1≤i≤n,1≤j≤m)。//问如何分配,才使国家得到...

    //问题描述:资源分配问题

    //某厂根据计划安排,拟将n台相同的设备分配给m个车间,各车间获得这种设备后,可以为国家提供盈利Ci j(i台设备提供给j号车间将得到的利润,1≤i≤n,1≤j≤m) 。

    //问如何分配,才使国家得到最大的盈利?其中Cij为(0,1000)的随机数。要求输出10个实例

    #include

    #include

    #include

    #include

    #include

    #define N 30//设备数量

    #define M 10//车间数量

    #define T 5//实例个数,题目要求10个,但是控制台最大只能同时显示5个,因此这里设置为5

    int main(){

    //

    int t=T;

    while(t--){

    //声明变量以及初始化

    cout<

    srand((unsigned int)time(0));

    //数组c存放i台机器分配给j号车间可获得的利润

    //数组v存放i台机器分配给前j个车间可获得的最大的利润

    //数组d存放分配给前j个车间的分配数

    int C[N+1][M+1],V[N+1][M+1],D[N+1][M+1];

    //初始化数组

    memset(C,0,sizeof(int));

    memset(V,0,sizeof(int));

    memset(D,0,sizeof(int));

    int i=0,j=0,k=0;

    这段代码随机产生并输出C[i][j];

    cout<

    for(i=0;i<=M;i++){

    cout<

    }

    cout<

    for(i=1;i<=N;i++){

    cout<

    for(j=1;j<=M;j++){

    C[i][j]=rand()%1000;

    cout<

    }

    cout<

    }

    //这段代码顺推算出每增加第j号车间其前j-1个车间所分配的设备数D[i][j];

    //以及算出i台设备分配到j个车间的最大利润V[i][j];

    for(i=1;i<=N;i++){

    for(j=1;j<=M;j++){

    for(k=0;k<=i;k++){

    if(V[i][j]

    V[i][j]=V[k][j-1]+C[i-k][j];

    D[i][j]=k;

    }

    }

    }

    }

    cout<

    ///

    //从最后一个车间分配的设备数量(N-D[i][j])逆推到第一号车间分配的设备数量。

    k=N;

    for(j=M;j>=1;j--){

    cout<

    k=D[k][j];

    }

    }

    return 0;

    }

    0818b9ca8b590ca3270a3433284dd417.png

    0818b9ca8b590ca3270a3433284dd417.png

    展开全文
  • 动态规划--资源分配问题

    千次阅读 2020-12-07 11:24:23
    资源分配问题是将数量一定的一种或若干种资源(原木料、资金、设备或劳动力等)合理地分配给若干个使用者,使总收益最大。 例如,某公司有3个商店A、B、C,拟将新招聘的5名员工分配给这3个商店,各商店得到新员工后每年...

    问题描述:

    资源分配问题是将数量一定的一种或若干种资源(原木料、资金、设备或劳动力等)合理地分配给若干个使用者,使总收益最大。

    例如,某公司有3个商店A、B、C,拟将新招聘的5名员工分配给这3个商店,各商店得到新员工后每年的赢利情况如表所示,求分配给各商各多少员工才能使公司的赢利最大?

     

    解析:

    其实就是完全背包的变形

    用dp[i][j]表示为前i个商店共分配j个人时盈利的最大值,状态转移方程如下(k表示为i商店分配的人数):

    dp[i][j] = max(dp[i][j], dp[i-1][j-k] + c[i][k])

    求解过程如下(括号内红字表示选的人数,画框的表示倒退求解的过程):

    具体代码:

    #include <iostream>
    #include <cstdio>
    #include <vector>
    
    using namespace std;
    const int MAX = 30;
    
    vector<int> ans;
    
    int c[MAX][MAX], dp[MAX][MAX]; // dp[i][j]表示前i个车间共分配j个人
    int pnum[MAX][MAX];
    int n, m;
    
    int DP_source()
    {
        // 初始化
        for(int i = 0; i <= n; i++)
            dp[i][0] = 0;
    
        for(int i = 0; i <= m; i++)
            dp[0][i] = 0;
    
    
        int sel_num = 0; // 记录第i个车间分配j人时应分配的人数
        for(int i = 1; i <= n; i++)
        {
            for(int j = 1; j <= m; j++)
            {
                sel_num = 0;
    
                for(int k = 0; k <= j; k++) // 枚举当前车间分配k人时的最大值
                {
                    if(dp[i][j] < dp[i - 1][j - k] + c[i][k]) // 更新答案
                    {
                        dp[i][j] = dp[i - 1][j - k] + c[i][k];
                        sel_num = k;
                    }
                }
    
                // 循环结束后找到为前i个车间共分配j人时第i个车间应分配的人数
    
                pnum[i][j] = sel_num;
            }
        }
    
        return dp[n][m];
    
    }
    
    void print_allocate() // 输出每个车间应分配的人数
    {
        int r, s;
        s = pnum[n][m]; // 最后一个车间应该选择的人数
        r = m - s; // 剩余人数
        for(int i = n; i >= 1; i--)
        {
            printf("%d 商店分配 %d 人\n", i, s);
    
            s = pnum[i- 1][r];
            r -= s;
        }
    }
    
    int main()
    {
    
        scanf("%d%d", &n, &m);
        for(int i = 1; i <= n; i++)
            for(int j = 1; j <= m; j ++)
            scanf("%d", &c[i][j]);
    
        printf("max = %d\n", DP_source());
        print_allocate();
    
    
        return 0;
    }
    
    /*
    3 5
    3 7 9 12 13
    5 10 11 11 11
    4 6 11 12 12
    */
    

     

    展开全文
  • 有关资源分配问题。数学建模的格式什么的可以借鉴一下。我们自己写的。题目比较简单。适合初学者学习一下。
  • k8s调度过程中的资源分配问题

    千次阅读 2021-01-09 00:56:05
    想要明白调度过程中的资源分配问题,首先要明白一件事,k8s中的资源分配,是以Pod为单位的。而Pod本质上而言,其实就是一个进程。就像操作系统一样,进程是资源分配的最小单位。 k8s解决的一个比较大的问题,就是...

    想要明白调度过程中的资源分配问题,首先要明白一件事,k8s中的资源分配,是以Pod为单位的。而Pod本质上而言,其实就是一个进程。就像操作系统一样,进程是资源分配的最小单位。

    k8s解决的一个比较大的问题,就是资源分配。

    作为这么受欢迎调度服务编排的一员,k8s自然有出色的资源调度能力。

    其实主要问题就两个,一个是通过yaml进行资源的申请,一个是k8s,满足资源的申请。

     为了讲明白,我用了很多个小故事!希望能帮到大家

     

    罗列一下资源分配都有哪问题

    先从资源申请者:pod来讲

    • Pod如何才能具有弹性。弹性包括单个Pod,如果在不是很需要资源的情况下,k8s回收一些资源用于执行重要的任务。弹性还包括,如何在执行紧急任务的时候,先停一些不重要的Pod、
    • 如果Pod与pod具有关联性,需要分配在相同的机器怎么办?
    • 如果Pod与Pod不能部署在同一台机器上怎么办。
    • 如果Pod需要部署在指定类型的机器上怎么办,比方说,一个Pod需要的所计算密集型的主机,或者需要的是IO密集型的主机,或者需要特殊的GPU。

    从机器的角度来讲:

    • 如果机器只允许一些Pod调度上去,怎么做。
    • 如果机器故障了,不想再让新的Pod调度上来怎么做。
    • 机器如何选择Pod

    以Pod为单位的资源分配

     先看看资源是如何申请的。  

     其中资源无非分为这几种, cpu,内存,gpu,这些。

      Pod想要申请的资源,就是通过 yaml配置来的,案例如下:注意红框,要申请两个cpu,1G的内存。limits,代表的是最低限度,最少2个CPU,最少1G内存。

     

    上边提到了三类问题下边逐一解决:

     

    第一个问题,关于弹性问题

    先了解一个概念,就是关于Pod的QoS类型

    什么是 Qos呢?Qos 全称是 Quality of Service,它其实是 Kubernetes 用来表达一个 pod 在资源能力上的服务质量的标准,Kubernetes 提供了三类的 Qos Class:

    1. 第一类是 Guaranteed,它是一类高的 Qos Class,一般用 Guaranteed 来为一些需要资源保障能力的 pod 进行配置; 这个具体的特征就是上边的Pod资源申请的图里边的红框内容,requests和limits相同的。其实这个用自己的话理解就是,我想要两个女朋友,也必须要两个女朋友。
    2. 第二类是 Burstable,它其实是中等的一个 Qos label,一般会为一些希望有弹性能力的 pod 来配置 Burstable;这个其实就是必须两个不相等。感觉有点多余。比方说:我想要两个女朋友,最少有一个女朋友,就是这个概念。还不能是我有一个女朋友,正好有一个女朋友。因为这就符合第一种模式了。
    3. 第三类是 BestEffort,通过名字我们也知道,它是一种尽力而为式的服务质量。第三种是必须都不配置。第三种是我是成年人了,我其实可以有个女朋友,但是我比较佛系,有没有都行。

      其实经过我上边的栗子的讲解,就大概知道一个需求的强烈程度了。第一种最强烈,第二种适中,第三种有没有都行。

      k8s也是根据这三种模式来分配资源的。对于第一种,就一定要分配资源给它,而且是要多少给多少。第二种也差不多,但是不是要多少给多少。第三种就是,如果富裕了就给它点,如果不富裕就不给了。同样对于弹性而言,如果资源不够了,那就优先停第三种,或者把第二种原先多分了收回来一点。但是对于第一种,如果不是认为敢于,是没办法把资源收回来的。

      另外在 memory 上也会按照不同的 Qos 进行划分:OOMScore。比如说 Guaranteed,它会配置默认的 -998 的 OOMScore;Burstable 的话,它会根据内存设计的大小和节点的关系来分配 2-999 的 OOMScore。BestEffort 会固定分配 1000 的 OOMScore,OOMScore 得分越高的话,在物理机出现 OOM 的时候会优先被 kill 掉。

     

    第二个问题,Pod的亲和性

     也是如何把一些关联性的Pod部署在同一台机器

     先举个栗子吧,其实比较简单,一个服务,它需要定制化的监控。所以它们被设计成了两个Pod,但是为了方便数据采集,又需要将它们部署在一起。

     这里问题再用生活的栗子讲一下,其实k8s就是老师,我是学生,李小妹也是学生,李小妹是村东头的村花儿。新学期排座位的时候,我把老师叫到办公室,并且告诉老师,我要和李小妹坐同桌,其一我长的帅,小妹长的漂亮。其二我们是一个村的,比较熟,方便相互照应学习。老师排座位的时候就把我们排在了一起!

      那k8s是如何把两个Pod分配到同一台机器上的呢?

    首先我们来看 Pod 亲和调度,假如我想把一个 Pod 和另一个 Pod 放在一起,这时我们可以看上图中的实例写法,填写上 podAffinity,然后填上 required 要求。

    在这个例子中,必须要调度到带了 key: k1 的 Pod 所在的节点,并且打散粒度是按照节点粒度去打散索引的。这种情况下,假如能找到带 key: k1 的 Pod 所在节点,就会调度成功。假如这个集群不存在这样的 Pod 节点,或者是资源不够的时候,那就会调度失败。这是一个严格的亲和调度,我们叫做尝试亲和调度。

      对于上边的栗子,其实比较苛刻的,因为这次排座不成功,可能我一气之下,转学了。所以可能还有别的选择的。比方说,我给老师说,我第一志愿是跟李小妹当同桌,如果不行,和二狗当同桌也行。其实就是退而求其次的一种策略。

    有些时候我们并不需要这么严格的调度策略。这时候可以把 required 改成 preferred,变成一个优先亲和调度。也就是优先可以调度带 key: k2 的 Pod 所在节点。并且这个 preferred 里面可以是一个 list 选择,可以填上多个条件,比如权重等于 100 的是 key: k2,权重等于 10 的是 key: k1。那调度器在调度的时候会优先把这个 Pod 分配到权重分更高的调度条件节点上去。

    第三个问题,Pod的反亲和性

     有了上边的栗子,其实还有一种情况,就是不想和谁当同桌。比方说,我不想和李小妹当同桌,因她的妹,可能会影响我的学习。我告诉了老师,不要把我排到李小妹附近。 我是一个Pod,李小妹是一个Pod,这个栗子就是Pod与Pod的反亲和性。

    再看看k8s是如何做的:

    第四个问题,Pod对node的选择

       还用新学期排座位的栗子,这次不是我和李小妹的关系了。而是我具体坐在第几排的问题,我告诉老师,我太高了,最好不要把我排到前边,可能会挡住后边李小妹看黑板。必须把我排到后三排。

      看看k8s,是如何把Pod分配到想去的node上的:第一种,pod选择node,通过标签选择器。

     

    第五个问题,还是Pod选择Node

      上边有个问题,就是假如后三排人坐满了,我不就没座位了吗?我这么爱学习,怎么能没作为。同样的道理,比方说Pod想要调度到一个机器上去,但是这台机器资源已经被分配完了,所以就不能被分配资源了。

      所以有了下边的策略,后三排做人坐满了,倒数第四排也行。下边这个栗子其实就是,可以调度到带有v1标签的node上,不行就调度到v2标签的node上。其实利用这个特性,我们就可以把我们的Pod分配到具体特性的机器上去执行。

     

     

    第六个问题,node 拒绝 Pod

      经常有这样的情况,某台机器发生了异常,不希望再有Pod调度上来。或者这台机器资源吃紧了,希望预留一点空间出来。反正就是不想再让Pod分配上来了。这个时候可以给node打上一个污点。

     

     

    那我们如何限制 Pod 调度到某些 Node 上呢?比如说现在有个 node 叫 demo-node,这个节点有问题,我想限制一些 Pod 调度上来。这时可以给这个节点打一个 taints,taints 内容包括 key、value、effect:

    • key 就是配置的键值
    • value 就是内容
    • effect 是标记了这个 taints 行为是什么

    目前 Kubernetes 里面有三个 taints 行为:

    1. NoSchedule 禁止新的 Pod 调度上来;
    2. PreferNoSchedul 尽量不调度到这台;
    3. NoExecute 会 evict 没有对应 toleration 的 Pods,并且也不会调度新的上来。这个策略是非常严格的,大家在使用的时候要小心一点。

    如上图绿色部分,给这个 demo-node 打了 k1=v1,并且 effect 等于 NoSchedule 之后。它的效果是:新建的 Pod  没有专门容忍这个 taint,那就没法调度到这个节点上去了。

    假如有些 Pod 是可以调度到这个节点上的,应该怎么来做呢?这时可以在 Pod 上打一个 Pod Tolerations。从上图中蓝色部分可以看到:在 Pod 的 spec 中填写一个 Tolerations,它里面也包含了 key、value、effect,这三个值和 taint 的值是完全对应的,taint 里面的 key,value,effect 是什么内容,Tolerations 里面也要填写相同的内容。

    Tolerations 还多了一个选项 Operator,Operator 有两个 value:Exists/Equal。Equal 的概念是必须要填写 value,而 Exists 就跟上文说的 NodeAffinity 一样,不需要填写 value,只要 key 值对上了,就认为它跟 taints 是匹配的。

    上图中的例子,给 Pod 打了一个 Tolerations,只有打了这个 Tolerations 的 Pod,才能调度到绿色部分打了 taints 的 Node 上去。这样的好处是 Node 可以有选择性的调度一些 Pod 上来,而不是所有的 Pod 都可以调度上来,这样就做到了限制某些 Pod 调度到某些 Node 的效果。

     

     

     

     

     

     

     

     

     

    展开全文
  • 【C语言】——资源分配问题实现

    千次阅读 2020-12-07 20:44:29
    1.题目描述:资源分配问题 2.分析: 动态规划算法一般是n步叠代du计算局部zhi最优解,每一步叠dao代需要计算m个子项,那么时zhuan间复杂度就shu是O(m*n)。 如果只保存一步叠代的结果,空间复杂度就是O(m);如果...
  • 最优化资源分配问题

    千次阅读 2018-10-28 12:33:26
    最优化资源分配问题 问题提出:现有三个发电厂A,B,C其生产成本和最大发电度数分别如下: 发电厂 生产成本T 最大发电度数 A P^2.2 1千万度 B 2p^1.8 1.5千万度 C 0.8p^2.0 1.8千万度 问:全年总发电量不少于3千万度,...
  • 上一篇文章写了动态规划求解0-1背包问题,这里做一道资源分配问题强化理解,顺便分析一下动态规划算法的优化问题。 问题描述:某厂根据计划安排,拟将n台相同的设备分配给m个车间,各车间获得这种设备后,可以为...
  • 问题描述:把4个份额的资源分配给3个工程,给定利润表如下表所示,写出资源的最优分配方案的求解过程。
  • 动态规划 资源分配问题 代码超详细注释!!!

    千次阅读 多人点赞 2021-01-07 20:27:21
    #include<iostream>...//资源最大利润分配表 float q[100],f[100],temp[100];//利润表 当前最大收益 正在计算的最大收益 printf("输入工程数m:"); scanf("%d",&m); printf("输入总资源数n:...
  • 关于5G的embb和urllc复用问题,欢迎讨论
  • 问题举例二:资源分配问题 例 5.1.2 离散变量的资源分配问题 多阶段决策问题 动态规划的最优子结构性质 动态规划的子问题重叠性质 前向优化 后向优化 例 5.1.2 连续变量的资源分配问题 例 5.3.2 多阶段有限资源分配...
  • 动态规划法求解资源分配问题

    千次阅读 2020-03-28 20:16:23
    资源分配问题是将数量一定的一种或若干种资源(原材料、资金、设备或劳动力等),合理地分配给若干使用者,使总收益最大。 例如,某公司有3个商店A、B、C,拟将新招聘的5名员工分配给这3个商店,各商店得到新员工后...
  • Lingo与资源分配问题

    千次阅读 2018-08-16 16:08:53
    Lingo与一维资源分配问题 代码如下: sets: R/1..6/:z; L/1..3/; c(R,L):x,y; endsets data: X=0 0 0 5 5 4 15 15 26 40 40 40 80 60 45 90 70 50; z=0 1 2 3 4 5; enddata max=@sum(c(i,j):X(i,j)*y(i...
  • 动态规划 资源分配问题

    千次阅读 2016-05-09 14:26:32
    资源分配问题是考虑如何把有限分配给若干个工程的问题。参考《算法设计与分析》 下面直接贴代码: //为了和书上的内容一致,我的变量名、变量所代表的意思和书上的几本一致 #include #include #define M 8 //可...
  • 实验名称:用动态规划法求解资源分配问题 (验证型实验) 实验目标: (1)掌握用动态规划方法求解实际问题的基本思路。 (2)进一步理解动态规划方法的实质,巩固设计动态规划算法的基本步骤。 实验任务: (1)...
  • 动态规划应用举例---资源分配问题

    千次阅读 2018-12-09 22:20:00
    一维资源分配问题 二维资源分配问题 固定资金分配问题 转载于:...
  • 问题描述:给出一定用户的请求(各类虚拟机的数量),装在给定规格的服务器内 ,要求服务器的资源利用率最大。其中,虚拟机和服务器各有两个维度限制,CPU和内存(Mem)。思路:本题实质是背包问题,考虑过dp,贪心...
  • 资源分配问题:某厂根据计划安排,拟将n台相同的设备分配给m个车间,各车间获得这种设备后,可以为国家提供盈利Ci j(i台设备提供给j号车间将得到的利润,1≤i≤n,1≤j≤m)。问如何分配,才使国家得到最大的盈利? ...
  • 问题描述】 某公司有3个商店A, B, C,拟将新招聘的5名员工分配给这3个商店,各商店得到的新员工后每年的赢利情况如表所示,求如何分配才能使利益最大化? 表 (右边数字是每个公司分配0 – 5个人的收益情况) ...
  • 资源分配算法

    2013-06-16 15:01:47
    matlab中处理OFDMA的资源分配,包括子载波分配和功率分配.是LTE系统中的以最大化系统吞吐量为目的
  • 资源分配问题: 是考虑如何把有限的资源分配给 若干个工程问题。假设资源总数为 r,工程个数为 n,给每个工程投入的资源不同,所得的利润也不 同,要求把总数为 r 的资源分配给n个工程,以获 得最大利润的分配方案。 ...
  • 银行家算法资源分配问题(例子!!!)

    万次阅读 多人点赞 2021-04-07 14:49:10
    在银行家算法中,若出现表2-4所示的资源分配情况,试问: 该状态是否安全? 如果进程P2提出请求Request2(1,2,2,2)后,系统能否将资源分配给它。 表2-4 资源分配表 Allocation Need ...
  • 实验目标: (1)掌握用动态规划方法求解实际问题的基本思路。...(1)设计动态规划算法求解资源分配问题,给出算法的非形式描述。  (2) 在Windows环境下用C 语言实现该算法。计算10个实例,每个实例中n=30,
  • spark提交任务以及资源分配问题

    千次阅读 2018-09-25 16:08:39
    分配超出 worker 可用的内存容量,大家根据自己 worker 的容量进行分配任务资源。 如果使用配置—executor-cores,超过了每个 worker 可以的 cores,任务处于等待状态。 如果使用—total-executor-cores ,即使...
  • 资源分配类动态规划

    千次阅读 2019-08-06 18:14:49
    一种资源的分配问题称为一维资源分配问题,两种资源的分配问题称为二维资源分配问题。 假设有一种资源,数量为a,将其分配给n个使用者,分配给第 i 个使用者数量 xi 时,相应的收益为gi(xi) . 问如何分配使得总...
  • 动态规划--资源离散分配问题

    千次阅读 2020-04-02 14:47:57
    问题:资源离散分配问题 (问题来自中国大学MOOC-华中科技大学-运筹学) 动态规划的思想在于把一个大问题化成一些同类型的子问题,然后逐个求解。从边界条件开始递推,每一个子问题的解决,均使用到了前面子问题的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 704,611
精华内容 281,844
关键字:

资源分配问题

友情链接: PYthon入门代码.rar