N 个相同处理器上的任务调度的精确算法?

2024-03-29

我正在寻找精确的算法,可以在 N 个相同的处理器中找到任务调度的最佳解决方案。

该算法的时间并不重要,最重要的是一个最佳解决方案(完成最后一个任务时所有处理器的最短时间)。

理论上描述该算法的方程如下:P||Cmax

如果有人有算法(尤其是 Java 算法)或伪代码,我将非常乐意寻求帮助。

我尝试编写自己的精确算法,但 id 不起作用:(。在下面的代码中,permUtil 是一个对应于排列的类。

方法参数:
- 任务 --> 所有任务,其中索引标识任务和值时间
- op --> 分配处理器(分配任务的处理器)
// 我们有一个全局数组 op 处理器 proc,其中索引是标识,值是该处理器上的任务调度时间

public void schedule(Byte[] tasks, int op)
{
    PermUtil<Byte> permA = new PermUtil<Byte>(tasks);
    Byte[] a;
    // permutation of all tasks
    while ((a = permA.next()) != null)
    {

        // assign tasks
        for(int i=1; i< a.length; i++)
        {
            // get the b set from i to end
            Byte[] b = Arrays.copyOfRange(a, i, a.length);
            // all permutations off b set
            PermUtil<Byte> permB = new PermUtil<Byte>(b);
            while ((b = permB.next()) != null)
            {
                // task on assign processor
                proc[op] = sum(Arrays.copyOfRange(a, 0, i));
                if (op < proc.length)
                    schedule(b, ++op);
                else
                {
                    proc[++op] = sum(b);
                }
            }
        }
    }
}

这是迭代所有可能的分配的蓝图。 在真正的实现中你应该替换long with BigInteger, 并将数组初始化移到内部循环之外。

public void processOne(int nProcs, int nTasks, int[] assignment) {
    /* ... */
}

public void checkAll(int nProcs, int nTasks) {
    long count = power(nProcs, nTasks);
    /* Iterate over all the possible assignments */
    for (long j = 0; j < count; j++) {
        int[] assignment = new int[nTasks];
        for (int i = 0; i < nTasks; i++)
            assignment[i] = (int) (j / power(nProcs, i) % nProcs);
        processOne(nProcs, nTasks, assignment);
    }
}

诀窍是将分配编码为数字。由于赋值代表nTasks的决定,每一个都有nProcs结果,它可以被认为是基数中的数字nProcs having nTasks数字。每个这样的数字都对应于一个有效的分配,并且每个分配在该范围内都有一个唯一的数字。迭代所有赋值很容易,因为我们基本上是迭代一系列整数。

您所要做的就是填写processOne(int, int, int[])函数,这应该是相当简单的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

N 个相同处理器上的任务调度的精确算法? 的相关文章

  • Java Sqlite Gradle

    我对 gradle 和 java 还很陌生 我有一个使用 sqlite 的项目 它通过 intellij idea 运行良好 但我无法从终端运行它 它会抛出异常 java lang ClassNotFoundException org sq
  • 指纹奇异点检测

    我正在尝试确定指纹的核心点和增量点 我正在使用庞加莱指数方法 但我无法成功检测到这一点 而且我不明白为什么 First I divide the image in 15x15 blocks then I calculate the x an
  • 如何使用 Java 创建多个模式连接?

    我必须使用两个数据库 DB2 Oracle 我在 DB2 数据库中有一个名为NAVID 我想使用 Java 为 Oracle 中的所有表创建相同的架构 public class automateExport static String va
  • 如何在数据库中对 (Java) 枚举进行建模(使用 SQL92)

    您好 我正在使用名为 性别 的列对实体进行建模 在应用程序代码中 性别应该是一个 Java 枚举类型 有 2 个值 男性和女性 知道作为数据类型的枚举不是通用 SQL 语言 92 的一部分 您将如何建模它 数据模型必须是可移植的 以便由多个
  • 使用 JAXB 编组 LocalDate

    我正在构建一系列链接类 我希望能够将其实例编组到 XML 以便我可以将它们保存到文件中并稍后再次读取它们 目前我使用以下代码作为测试用例 import javax xml bind annotation import javax xml b
  • 动画图像视图

    目前我正在开发一款游戏 这是我的游戏的详细信息 用户应选择正确的图像对象 我希望图像从左到右加速 当他们到达终点时 他们应该再次出现在活动中 这是我正在处理的屏幕截图 我有 5 个图像视图 它们应该会加速 您有此类动画的示例代码吗 非常感谢
  • 通过分布式数据库聚合作业优化网络带宽

    我有一个分布式 联合数据库 结构如下 数据库分布在三个地理位置 节点 每个节点集群有多个数据库 关系数据库是 PostgreSQL MySQL Oracle 和 MS SQL Server 的混合体 非关系数据库是 MongoDB 或 Ca
  • BigDecimal 的 JPA @Size 注释

    我该如何使用 SizeMySQL 的注释DECIMAL x y 列 我在用着BigDecimal 但是当我尝试包括 Size max它不起作用 这是我的代码 Size max 7 2 Column name weight private B
  • 如何使用 BufferedReader 对象从 Java 中的一行读取多个整数值?

    我正在使用 BufferedReader 类读取 Java 程序中的输入 我想读取用户的输入 该用户可以在带空格的单行中输入多个整数数据 我想读取整数数组中的所有这些数据 输入格式 用户首先输入他 她想要输入的数字数量 然后在下一行中使用多
  • 中间件 API 的最佳实践是什么? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我们正在开发一个中间件 SDK 采用 C 和 Java 语言 供游戏开发人员 动画软件开发人员 阿凡达开
  • 如何在命令提示符中检查 JAVA_OPTS 值?

    我们的应用程序部署 JBoss 服务器然后抛出错误 PermGen space 然后在 jboss bat 和配置文件中设置 permgen 变量中的 java OPTS JAVA OPTs 中是否有值 assige 如何检查 如何在命令提
  • Kerberos 缓存票证

    我使用的是 Windows 7 64 位 我创建了一个简单的应用程序来对实现 PrivilegedAction 的类的 run 方法中的文件进行计数 以下是我的 jaas conf 文件 CountFiles com sun securit
  • 删除 ArrayList 对象问题

    我在处理作业时遇到从 ArrayList 中删除对象的问题 如果我使用 正常 for 循环 它的工作原理如下 public void returnBook String isbn for int i 0 i lt booksBorrowed
  • setKeyListener 将覆盖 setInputType 并更改键盘

    大家好 我在两个设备之间遇到问题 在实践中使用InputType和KeyListener我正在操纵一个EditText让它从数字键盘接收逗号和数字 有关更多背景信息 请检查我之前的question https stackoverflow c
  • 使用 Cucumber Scenario Outline 处理 Excel 电子表格

    如果可能的话 我试图找到一种更优雅的方法来处理从与 Excel 电子表格行 第 n 个 相关的 Cucumber Scenario Outline 中调用第 n 个数字 目前 我正在使用迭代编号来定义要从中提取数据的 Excel 电子表格的
  • 如何将任务添加到 gradle 中的主要“构建”任务

    当我尝试使用以下代码将任务添加到主构建任务时 rootProject tasks getByName build dependsOn mytask 当我跑步时它抱怨gradle w build输出 Where Build file line
  • 删除队列中的最后一个元素

    我需要删除队列的最后一个元素 我唯一可以使用的操作是 Peek 获取第一个元素而不删除它 Enqueue element 向队列末尾插入一个元素 Dequeue 删除第一个元素 IsEmpty true 或 false 队列是否为空 而且我
  • java中wav文件转换为字节数组

    我的项目是 阿塞拜疆语音的语音识别 我必须编写一个程序来转换wav文件到字节数组 如何将音频文件转换为byte 基本上如第一个答案中的片段所描述 但不是BufferedInputStream use AudioSystem getAudio
  • Jenkins 管道和 java.nio.file.* 方法的问题

    我正在尝试使用 java nio file 中的方法在 Jenkins 管道中执行一些基本文件操作 无论代码存在于哪个节点块中 代码都在主节点上执行 在管道中 我已经验证了各个节点块都是正确的 它们唯一地标识了特定的节点 但是 pathEx
  • 设计抽象类时是否应该考虑序列化问题?

    一般来说这个问题来自Eclipse建议在抽象类上添加串行版本UID 由于该类是抽象类 因此该类的实例永远不会存在 因此它们永远不会被序列化 只有派生类才会被序列化 所以我的问题是放置一个安全 SuppressWarnings serial

随机推荐

  • Objective-C 调用 Swift 函数

    Swift 函数定义于MySwift swift File func SomeSwift SomeSwift 没有在任何 Swift 类中定义 它只是一个纯函数 After CMD B to build the project open P
  • .NET Core 项目添加对 .NET Framework 项目的引用。为什么有可能?

    我有以下项目 NET Core 2 0 Web 应用程序 NET Standard 2 0 类库 NET Framework 4 5 类库 我将 net框架类库的引用添加到asp net core web api项目中 看起来效果很好 我想
  • 如何在运行不同 php 版本的服务器上安装 laravel

    我在默认运行 php 5 3 的服务器下安装 laravel 时遇到问题 但我可以选择一个 php 版本在任何特定目录下运行 guzzlehttp guzzle 4 1 2 requires php gt 5 4 0 gt your PHP
  • feed_dict 中的喂养问题(Tensorflow)

    我的 raw data 是 PTB 数据集 我通过以下代码生成批次 def generate batches raw data batch size unrollings global data index data len len raw
  • IE 11 平滑滚动不触发中间滚动事件

    如果我们做一个简单的测试用例 例如 document documentElement addEventListener scroll function console log document documentElement scrollT
  • 如何在 VBA for Excel 中引用复选框

    我使用开发人员功能区 gt 插入 gt ActiveX 控件 gt 复选框创建了一个复选框 我想编写一个子代码 当选中该框时 PCAPV10 工作表中的一系列值将复制到 BOM 工作表上的一个范围中 我不确定我是否在代码中正确引用了我的复选
  • OpenGL显示列表大小的限制

    有谁知道将太多 OpenGL 调用放入显示列表中是否会导致其失败 如果是这样 有人估计有多少个电话可以做到这一点吗 和显存有关系吗 我从 JOGL 调用 OpenGL 但我认为这并不重要 根据这个文档页 http www opengl or
  • 将 varchar 值转换为数据类型 int 时转换失败

    我有一个 varchar 1000 列声明为包含所有数字的字段 如下所示 我想执行以下脚本 我需要这个才能工作 Declare PostalCode varchar 1000 0 set PostalCode 7005036 7004168
  • 如何使用ML模型和FastAPI处理多个用户的请求?

    我正在研究通过FastAPI分发人工智能模块的过程 我创建了一个 FastAPI 应用程序 它使用预先学习的机器学习模型来回答问题 在这种情况下 一个用户使用是没有问题的 但是当多个用户同时使用时 响应可能会太慢 那么 当多个用户输入问题时
  • 如何让MySQL像SQLite一样处理字符串,涉及Unicode和排序规则?

    我已经在 SO MySQL 文档和其他地方研究这个问题几个小时了 但仍然找不到令人满意的解决方案 问题是 让 MySQL 像 SQLite 一样处理字符串而不需要任何额外的 智能 转换的最简单方法是什么 例如 以下代码在 SQLite 中完
  • 如何使用 bazel 中的 make 规则链接库构建

    我已经使用构建了一个 lib so在 bazel 中制定规则 https stackoverflow com questions 58035752 building makefile using bazel 如何将此外部 lib so 链接
  • 将“名字姓氏”更改为“姓氏,名字”

    我有一个姓名列表 需要将其从 名字姓氏 转换为 姓氏 名字 Barack Obama Donald J Trump J Edgar Hoover Beyonce Knowles Carter Sting 我用了 G Grothendieck
  • 以编程方式触发 ResponsiveSlides.js

    我在用着响应式幻灯片 js http responsive slides viljamis com 我正在尝试以编程方式更改幻灯片 我已经尝试过两种方法 但都没有成功 调用插件的slideTo来自缩略图上的单击事件的函数 传递它应该转到的幻
  • JavaScript 是否有相当于 VBScript 的 ExecuteGlobal 的功能?

    javascript 中是否有 ExecuteGlobal 的替代方案 Function vbExecuteGlobal parmSCRIPT ExecuteGlobal parmSCRIPT End Function DevGuru 描述
  • 使用 Sumifs() 的更快方法

    我每周有一项任务 需要更新一份报告 目前刚刚超过 50K 行 该报告每周都会增长约 500 行 手动添加新数据后 我运行下面的代码来执行Sumifs 总结数据 数据结构为 A 至 C 列是标准列 数字 字母 数字 D 列包含要求和的数量 整
  • 根据两列删除重复项

    我有这张表 我想要一个 SELECT 来排除标记的行 一般规则是 如果有两行或多行的 controlname AND Brandname AND grouptypes 列相等 然后保留组名不是 Keine Zuordnung 的行 CONT
  • 如何将过滤器应用于具有多个“AND”条件的 DataView

    我有一个DataTable包含一些行 哪个被复制到DataView 现在我的 ID 格式为List
  • 使用 JQuery 从出生日期计算年龄

    我需要使用 JQuery 计算某人从出生日期算起是否已超过 18 岁 var curr new Date curr setFullYear curr getFullYear 18 var dob Date parse this text i
  • DataGridView 复选框列 - 值和功能

    我已在 C 表单中的 DataGridView 中添加了一个复选框列 该功能需要是动态的 您选择一个客户 然后显示他们可以提供服务的所有项目 然后您选择这次希望为其中哪些项目提供服务 不管怎样 代码现在将在 DGV 的开头添加一个复选框 我
  • N 个相同处理器上的任务调度的精确算法?

    我正在寻找精确的算法 可以在 N 个相同的处理器中找到任务调度的最佳解决方案 该算法的时间并不重要 最重要的是一个最佳解决方案 完成最后一个任务时所有处理器的最短时间 理论上描述该算法的方程如下 P Cmax 如果有人有算法 尤其是 Jav