机器数的快速转换算法研究

合集下载

混合哈里斯鹰算法求解作业车间调度问题

混合哈里斯鹰算法求解作业车间调度问题

收稿日期:2021 11 21;修回日期:2022 01 20 基金项目:国家自然科学基金资助项目(62163034)作者简介:刘小宁(1997 ),男,新疆昌吉人,硕士研究生,主要研究方向为智能算法、生产调度;魏霞(1977 ),女(通信作者),新疆乌鲁木齐人,副教授,硕导,主要研究方向为工业大数据技术、电力监控系统网络安全防护等(xjuweix@xju.edu.cn);谢丽蓉(1969 ),女,新疆乌鲁木齐人,教授,博导,主要研究方向为控制系统优化、新能源发电、负荷预测等.混合哈里斯鹰算法求解作业车间调度问题刘小宁,魏 霞 ,谢丽蓉(新疆大学电气工程学院,乌鲁木齐830047)摘 要:针对哈里斯鹰算法(HHO)求解作业车间调度问题(JSP)时存在寻优能力差、易陷入局部最优等缺点,提出了混合哈里斯鹰算法(HHHO)。

首先,在种群初始化阶段引入混沌理论增加种群多样性;其次,在HHO搜索前期采用能量非线性递减和量子计算增强算法全局探索能力,在搜索后期采用邻域搜索算法增强算法局部开发能力;最后,选取了FT和LA系列算例测试了算法的性能,并与其他先进元启发式算法对比,验证了HHHO在求解JSP时的有效性和优越性。

关键词:作业车间调度问题;哈里斯鹰算法;混沌理论;量子计算;邻域搜索中图分类号:TP301.6 文献标志码:A 文章编号:1001 3695(2022)06 012 1673 05doi:10.19734/j.issn.1001 3695.2021.11.0640HybridHarriseaglealgorithmforJob ShopschedulingproblemLiuXiaoning,WeiXia,XieLirong(SchoolofElectricalEngineering,XinjiangUniversity,Urumqi830047,China)Abstract:AimingattheshortcomingsofHarriseaglealgorithm(HHO)insolvingJob Shopschedulingproblem(JSP),suchaspooroptimizationabilityandeasytofallintolocaloptimization,thispaperproposedahybridHarriseaglealgorithm(HHHO).Firstly,thealgorithmusedchaostheorytoincreasepopulationdiversityinthepopulationinitializationstage.Second ly,intheearlystageofHHOsearch,thealgorithmusednonlinearenergydeclineandquantumcomputingtoenhancetheglobalexplorationabilityofthealgorithm.Inthelaterstageofsearch,thealgorithmadoptedneighborhoodsearchalgorithmtoenhancethelocaldevelopmentabilityofthealgorithm.Finally,thealgorithmselectedFTandLAbasicexamplestotesttheperformanceofthealgorithm,andcomparedwithotheradvancedmetaheuristicalgorithmstoverifytheeffectivenessandsuperiorityofHHHOinsolvingJSP.Keywords:Job Shopscheduling;Harriseaglealgorithm;chaoticmapping;quantumcomputing;neighborhoodsearch0 引言作业车间调度是调度问题中最经典、最重要的分支,该问题作为许多实际加工生产线的简化模型,具有很广泛的应用范围,并且和实际工业有着最密切的联系,同时它作为一个NP难问题就更具有研究价值[1]。

大一计算机基础考试知识点

大一计算机基础考试知识点

大一计算机基础考试知识点计算机基础是大一计算机系学生必修的一门课程,它为学生提供了计算机原理和基本知识的基本框架。

在大一的计算机基础考试中,同学们需要掌握一些关键的知识点。

本文将为你详细介绍这些知识点,以便帮助你备考。

1. 计算机组成与原理1.1 计算机的基本组成部分:中央处理器、内存、输入设备、输出设备和存储设备。

1.2 冯·诺依曼体系结构:指令和数据存储在同一个存储器中,指令由控制单元执行。

1.3 计算机的运算方式:位运算、逻辑运算、算术运算、比较运算等。

2. 数据表示与运算2.1 二进制与十进制的转换方法。

2.2 机器数和补码表示法。

2.3 原码、反码和补码之间的转换关系。

2.4 位移运算、按位与、按位或与按位异或等操作的应用。

3. 数据结构与算法3.1 线性表:顺序表、链表、栈、队列等。

3.2 树与二叉树:二叉树的遍历方式、树的存储结构等。

3.3 排序算法:冒泡排序、插入排序、选择排序、快速排序等。

3.4 查找算法:顺序查找、二分查找、哈希查找等。

4. 操作系统基础4.1 操作系统的概念与功能。

4.2 进程与线程的区别与联系。

4.3 进程调度算法:先来先服务、短作业优先、时间片轮转等。

4.4 内存管理:分页、分段、虚拟内存等。

5. 网络基础5.1 OSI七层模型及每层的功能。

5.2 IP地址和子网掩码的概念与计算方法。

5.3 常见的网络协议:TCP、IP、HTTP、FTP等。

5.4 网络安全基础:防火墙、加密算法、身份认证等。

6. 数据库基础6.1 数据库的概念与基本特性。

6.2 关系数据库与非关系数据库的区别。

6.3 SQL语言的基本语法与常用操作:查询、插入、更新、删除等。

6.4 数据库事务的概念与特性。

7. 编程语言基础7.1 C语言的基本语法与数据类型。

7.2 控制结构:顺序结构、选择结构和循环结构。

7.3 函数的定义与调用。

7.4 数组、指针和字符串的应用。

以上是大一计算机基础考试的一些重点知识点。

大规模作业车间的瓶颈分解调度算法

大规模作业车间的瓶颈分解调度算法

第17卷第4期计算机集成制造系统Vol.17No.42011年4月Computer Integrated Manufacturing SystemsApr.2011文章编号:1006-5911(2011)04-0826-06收稿日期:2010-03-16;修订日期:2010-08-24。

Received 16Mar.2010;accepted 24Aug.2010.基金项目:国家自然科学基金资助项目(50705076,50705077);国家863计划资助项目(2007AA04Z187);陕西省自然科学基础研究计划资助项目(2009JQ9002)。

Fo undatio n items:Project supported by th e Nation al Natural Science Foun dation,China (No.50705076,50705077),the Nation al H igh -Tech.R&D Program,Ch ina(No.2007AA04Z187),and the Natu ral Science Basic Research Program in Sh aanxi Province,Chin a(No.2009JQ9002).大规模作业车间的瓶颈分解调度算法翟颖妮,孙树栋,王军强,郭世慧(西北工业大学系统集成与工程管理研究所现代设计与集成制造技术教育部重点实验室,陕西 西安 710072)摘 要:针对大规模作业车间生产调度问题,提出一种基于瓶颈工序分解的调度算法。

该算法采用正交试验进行瓶颈设备的识别,在设备层分解的基础上进一步进行工序级的分解,将大规模调度问题分解为瓶颈工序集调度、上游非瓶颈工序集调度和下游非瓶颈工序集调度三个子问题,通过子问题的求解和协调获得原问题的解。

该算法遵循约束理论中/瓶颈机主导非瓶颈机0的原则,抓住调度问题的关键因素,采用分而治之的调度策略,不仅较大程度地降低了原问题的计算规模和复杂度,还兼顾了求解的质量。

遗传算法的车间调度算法求解

遗传算法的车间调度算法求解

基本遗传算法的构成要素
(3)遗传算子 基本遗传算法使用下述三种遗传算子: 选择运算使用比例选择(也叫轮盘赌选择)算子 交叉运算使用单点交叉算子 变异运算使用基本位变异算子或均匀变异算子 (4)基本遗传算法的运行参数 SGA有下述四个运行参数需要 提前设定 M:群体规模影响遗传优化的最终结果以及遗传算法的执 行效率。当群体规模M太小时,遗传算法的优化性能一般 不会太好,而采用较大的群体规模则可以减少遗传算法陷 入局部最优解的机会,但是较大的群体规模意味着计算复 杂度高,一般M取10到120之间。
单件车间调度满足的约束条件
1.一个工件不能同时在不同的机器上加工,尽管一个 工件有时可能包括多个相同的零件,也不能将其 分成几部分,同时在几台不同的机器上加工; 2.对整个工件来说,在加工过程中采取平行移动方式, 即当上一道工序完工后,立即送下道工序加工; 3.不允许中断,当一个工件一旦开始加工,必须一直 进行到完工,不允许中途停下来,插入其他工件; 4.每道工序只在一台机器上完成,每台机器只完成一 道工序;
基本遗传算法的实现方法
各种不同的遗传算法都有相同的的特点,即通过对 生物遗传和进化过程中选择、交叉、变异机理的模 仿,来完成对问题最优解的自适应搜索过程。基于 这个共同特点,Goldberg总结出了一种统一的最基 本的遗传算法——基本遗传算法(Simple Genetic Algorithm,简称SGA)。SGA只使用选择算子、交 叉算子和变异算子这三种基本遗传算子,其遗传进 化操作过程简单,容易理解,是其他一些遗传算法 的雏形和基础,它不仅给各种遗传算法提供了一个 基本框架,同时也具有一定的应用价值。因此为方 便起见,本文在以后的应用中用此方法。
问题描述
假设有 n个工件{J1,J2,…,Jn}要经过m台机器 {M1,M2,…,Mm}加工。一个工件在一台机器上的加 工称为一道“工序”。加工顺序要求表示工件加工 在技术上的约束,即工件的加工工艺过程,这是事 先给定的。用“加工顺序”表示各台机器上工件加 工的先后次序。加工顺序是作业调度要解决的问题。 当每个工件都有其独特的加工路线时,要确定工件 的加工顺序,这属于单间车间(Job-Shop)的作业 调度问题;当所有工件的加工路线都一致时,要确 定工件的加工顺序,这属于流水车间(Flow-Shop) 的作业调度问题。完成一道工序的加工,需花费一 定的加工时间。在讨论一般情况下的作业调度问题 时,“加工时间”包括机器调整时间,实际加工时 间和工序之间的转送时间。加工时间是已知的。

128的补码

128的补码

128的补码-128的补码2010-10-24 10:29-128的补码2010年10月23日星期六10:538位定点整数的原码表示范围是-127到127 8位定点整数的补码表示范围是-128到127对上两句说明:用原码表示:01111111 8位有符号最大的数是127 11111111 8位有符号最小的数是-127 用补码表示:01111111 8位有符号最大的数是127 10000001 8位有符号最小的数是-127 但是还有一个更小的就是10000000把这个规定为-128的补码在8位长度下,-128的原码与反码都不存在,因为一个字节的有符号数的原码范围是:-127~+127,既然不存在-128的原码那么就无法求出-128的补码了,怎么办?前几天听汇编老师曲俊华讲过,-128这样的数很特殊,不是取反加一求补码。

-2^n是个特殊数(n为x数值位的长度):它补码的求法应按照公式进行运算: 如:-128"[-2^7]补"=(2^8)+(-2^7)=10000000原来还有更牛x的解释:一般的说法是负数的补码为其原码除符号位外取反然后总体加一,也就是说,要得到一个负数数的补码,要先知道这个负数的原码才行。

那么,问题出现了,在8位长度下,-128的原码与反码都不存在,127~+127,既然不存在-128的原码因为一个字节的有符号数的原码范围是:- 那么就无法求出-128的补码了,怎么办?其实,这个问题的实际意义是,既然说计算机内部的有符号整数都是补码,那么怎么才能有效的实现这一设计呢?潜台词是:根据上面由原码推导出补码的理论,如果是正数,计算机得到其原码,也就是得到了其补码(正数补码等同于原码),如果是负数,先得到其原码,然后再取反加一就可以了。

也就是说按这个思维设计编译器,或计算机电路,就可以了。

但是如果出现开始说的-128的补码问题,这个设计就不能工作了。

其实,在真正的设计中,这种获得负数补码的"取反加一"的方案根本没有实施过~拿现代的计算机举例,输入设备只有键盘,通过编辑器程序把键盘的扫描码变成ascii码存储起来,比如输入'a'就存储0x61,输入'5'就存储0x35,这些都是ascii码。

在汇编语言中实现多种数制输出的方法

在汇编语言中实现多种数制输出的方法

要】 用汇编语 言编程 时, 在 通常 需要将结果数据按不 同的数 制形式显示 出来。 计算机 中的机器数是按 二进 制形式进行 处理和存储的 ,
如何 将它们进行 转换 . 分别按二进制 、 十进制和十六进制等形式的 AS I码 显示在 显示器上, CI 本文给 出了具体的 实现方法。
【 关键词 】 汇编语 言; 出数据 ;s I码 ; 输 A cI 显示
科技信息
OI T论坛0
S IN E&T C NБайду номын сангаасL G F R A I N CE C E H O O YI O M TO N
21 年 0i
第2 5期
在汇编语言中实现多种数制输出的方法
郑 坤 f 陕西理 工 学院计 算机 科 学与技 术 系 陕西
【 摘
汉 中 7 3 0 ) 2 0 0
来。
0 引言
现在 掌握一 门计算机高级语言的人越来越多。 在高级语言中实现 不同数制数 据的输 入输 出有专用 的输入输出 函数 , C语 言的 Saf 如 cn0 和 Pit1 r f函数能实现多种进制 的通用输入输 出。 nf 而在汇编语言中要实 现不 同进制 的输入输 出就 比较麻烦 , 以往也有很多文章就这方 面的问 题进行过探讨 . 但所用到 的方法较繁琐 , 程序较长。 在汇编语言中对每 个 数的显示 . 般都需要逐位 地进行 转换 成 A CI 一 S I码才能调用 系统显 示 功能 完成显示 . 中。 不 同的数制要求 , 其 按 还要先 完成数 制间 的转 换 下面让我们探讨 一下数是如何编程实现按二进制 、 十进制 、 十六进 制的数制形式在显示屏上显示 的
十六进制与二进制有很好 的对应关 系f 4位二进 制数一一对应 每 1 位十六进制数 )显示时只需将原二进制数 ( B . 在 X中) 的每 4位划成 组. 按组求对应的 A CI S I码送显示器即可。 S I码与十六进制数字 A CI 的对应关 系为 : H 3 H对应数 字 0 9 4 H 4 H对应数字 A F 3 ~9 0  ̄ ,1 6 ~ 。需 要注意 的一点 . 字 9到 A, A CI 从数 其 S I码间隔 了 7 。为使一个 十六 H 进制数 能按高位到低位 依次显示 实际编程 中 . 我们对 B 中的数 每 x 次循环 左移一 组( 位二进 制 )然后 A D指令屏蔽掉 当前高 1 , 4 , N 2位 对 当前 余下 的 4 ( 1 十六进 制数 ) 位 即 位 求其 A CI , 判断 它是 SI码 要 0 9还是 A~ . 前者则加 3 H得对 应 的 A C I ,  ̄ F是 0 S I码 后者则 要加 3 H 7 才行 . 最后送显示器输出 以上步骤重复 4 , 次 就可 以完成 B 中数以 X 4 位十六进制的形式显示 出来。 当然 , 我们还可 以对 B x中数的低 4 位 判断输 出. 然后再循环右移一组( 4位二进制) 。

计算方法引论-第一章

• 基−进制
– β称为基 – 这样表示的数称为β进制数
• 上溢、下溢
计算方法引论( 第三版)
1.3
徐萃薇、孙绳武 高教2007
误差
• 误差
– 准确数x、近似数x*
– 误差e*=x*-x 、误差限ε*≥|x*-x|
– x=x2 65…
近似数
x* 3 3.14 3.141 6
max(0.005 /1.21 0.005 / 3.65, 0.005 / 9.81)
max(0.005 5, 0.000 5) 0.005 5
– 设y = xn, y的相对误差与x的相对误差之间的关
系: dr y | d( ln y) || nd( ln x) | ndr x
计算方法引论( 第三版)
2.4×10-6≈2×10-6
计算方法引论( 第三版)
1.6
徐萃薇、孙绳武 高教2007
相对误差(续)
• 相对误差与有效数字关系
– 设数x*可表成(1.1),

若x*有n位有效数字则有相对误差限
1
21
101n
x * x
1 2
10 pn
,x *
1 10p1
,相除.

若x*相对误差限
* r
1 2(1 1)
dlnf(x)= f′(x)/ f(x)dx= xf′(x)/f(x)dlnx
drf(x)= | x f′(x)/f(x) | drx
计算方法引论( 第三版)
1.10
徐萃薇、孙绳武 高教2007
误差的传播:例
•例
– 设a 1.213.65 9.81,其中每个数据的绝对误差 限为0.005,求a的绝对误差限和相对误差限

计算机数制基础


二进制数→ 2. 二进制数→十六进制数 四位二进制数为一组, 四位二进制数为一组,每组用等值的十六进制代换 如:(101011.11)2=(10,1011.1100)2=(2B.C)16 3.十六进制数→二进制数 十六进制数→ 一位十六进制数用等值的四位二进制数代换 =(0001,0111,1110.0101,1000) 如: (17E.58)16=(0001,0111,1110.0101,1000)2 4 . ① 十进制数→二进制数 十进制数→ 十进制整数→ 十进制整数→二进制数 算法: 取整, 算法:除2取整,直到商为零为止 ,倒排
如:键入"1",实际写入键盘存储区的是31H 键入" 实际写入键盘存储区的是31H 即 00110001B 键入" , 实际写入键盘存储区的是41H 键入"A", 实际写入键盘存储区的是41H 即 01000001B 又如:欲显示" , 又如:欲显示"0",应把 30H →显示存储区 即 00110000B →显示存储区 欲显示" , 欲显示"F ",应把 46H →显示存储区 即 01000110B →显示存储区
十六进制与二进制的关系: 十六进制与二进制的关系: 位二进制数用1位十六进制数来表示 每4位二进制数用 位十六进制数来表示 位二进制数用
4位二进制 数 等值的一位 十六进制数 4位二进制数 等值的一位 十六进制数
0000 0001 0010 0011 0100 0101 0110 0111
0 1 2 3 4 5 6 7
1.2 计算机中数据的编码
解决不同信息在计算机中的具体表示
字符的编码——ASCII码 一.字符的编码 字符的编码 码 在计算机中除了数值之外, 在计算机中除了数值之外 , 还有一类非常重要的数 那就是字符, 计算机常用的输入/ 据 , 那就是字符 , 计算机常用的输入 / 输出设备有 键盘, 显示器, 打印机, 键盘 , 显示器 , 打印机 , 它们处理的数都是人熟悉 的字符, 英文的大小写字母,数字符号( , , , 的字符,有英文的大小写字母,数字符号(0,1,…, 9)以及其他常用符号(如:%,+等). )以及其他常用符号( , 等 在计算机中, 在计算机中 , 这些符号都是用二进制编码的形式表 每一个字符被赋予一个惟一固定的二进制编码. 示 , 每一个字符被赋予一个惟一固定的二进制编码 . 目前,一般都是采用美国标准信息交换码 ( ASCII) , 它使用七位二进制编码来表示一个符 ) 由于用七位码来表示一个符号, 号 . 由于用七位码来表示一个符号 , 故该编码方案 中共有128个符号(27=128). 个符号( 中共有 个符号 )

轧钢切断阶段动态HFS调度模型和LR算法研究

轧钢切断阶段动态HFS调度模型和LR算法研究轩华;曹颖【摘要】以钢管生产为背景,在分析钢管切割工艺的基础上,提炼出第一阶段具有批处理特征的动态HFS调度问题,建立了数学规划模型,目标是最小化所有工件的加权完成时间.针对该模型,构造了改进的拉格朗日松弛算法( lagrangian relaxation,LR)的求解过程,设计了求解批级子问题的动态规划算法和构造可行解的启发式算法.%Based on the background of steel-tube production, on the analysis of the technology of steel tube cutting, the dynamic hybrid flowshop scheduling with batch processing at the first stage was presented, and an integer programming model was established for this problem. The objective was to minimize the total weighted completion time. The improved Lagrangian relaxation algorithm was constructed to slove the developed model where the dynamic programming was designed to solve batch-level subproblems, and two-stage heuristic was presented to construct a feasible schedule.【期刊名称】《郑州大学学报(理学版)》【年(卷),期】2012(044)001【总页数】6页(P56-61)【关键词】动态HFS调度;批处理;拉格朗日松弛;动态规划【作者】轩华;曹颖【作者单位】郑州大学管理工程系河南郑州450001;郑州大学管理工程系河南郑州450001【正文语种】中文【中图分类】TB490 引言钢管是轧钢生产的一项重要产品,大量用作输送流体的管道,如输送石油、天然气、煤气、水及某些固体物料的管道等.迄今为止,针对钢铁业中的炼钢过程或热轧调度的研究比较多[1-2],而针对钢管生产研究的文献还比较少.文献[3]利用了遗传算法得到钢管生产批量计划的近似最优解,模型考虑了两个目标:最小化剩余物和最小化所有的over-grade.文献[4]从整个生产工艺的角度,对钢管合同计划进行了建模和求解,目标是最小化带权重的合同完成时间和.钢管的制造方法主要有热轧、焊接和冷加工等,其中热轧工艺是无缝钢管的主要制造方法,占无缝管产量的80%.因此,研究热轧工艺的生产调度对于无缝钢管的生产具有重要的现实意义.热轧无缝钢管的生产工艺较为复杂,其过程可看做是在管坯切割之后的主要变形,工序有3个:穿孔、轧管和定径,如图1所示.图1 热轧无缝钢管的主要工艺流程图Fig.1 The major process of the hot rolling steel tube以天津无缝钢管公司为例,热轧无缝钢管采用的自动轧管机组,切割阶段有1台切割机,穿孔阶段有2台穿孔机,轧管阶段有2台自动轧管机,定径阶段有1台定径机.所有的管坯必须在切割之后依次进行穿孔、轧管、定径等,而且每个阶段都有1台或者1台以上的同构并行机,因此上述过程可以看作是一个混合流水车间(hybrid flowshop,HFS).然而它不同于典型的HFS,因为在第一阶段加工时,一批内的所有工件属于同一根管坯,因此要求同一批内的所有工件都要在同一台切割机上进行无间断地连续切割.于是,上述钢管切割过程可以看作是第一阶段具有批处理特征的HFS调度问题.假定各加工阶段间运输时间不可忽略,所有工件动态到达第一个阶段,则形成了本文所研究的考虑运输时间的第一阶段有批处理要求的动态HFS调度问题.1 问题描述所要研究的问题是在s个阶段调度n个工件,且它们在第一阶段按照其切割前所属管坯组成A批进行加工,目标是最小化所有工件的加权完成时间.当工件在第一阶段组批时,每批l包含的工件数al是已知的,同一批内工件之间必须按照已知的优先级关系顺序,在第一阶段的一台机器上连续加工.需要注意的是,由于同一批中的工件切割前属于同一根钢管,故同一批内的前al-1个工件的加工时间相同,而当前al-1个工件切割完后,第al个工件即已成型,因此,第al个工件的加工时间为0.此外,在建模中,还有如下假设:①允许每个工件动态到达第一个阶段.②一个工件在前一个阶段加工结束之后才可进行下一个阶段的加工.③一个工件在一个阶段没有加工完成之前不允许中断.④机器的调整时间忽略不计.2 模型建立2.1 参数的设置参数设置如下:i为工件序号,I ={1,2,…,n},n是工件总数;j为阶段序号,J={1,2,…,s},s是阶段总数;mj为阶段j可用的机器数;pij为工件i在第j阶段的加工时间;ri为工件i的动态到达时间;tj,j+1为工件从阶段 j 到阶段 j+1 的运输时间;al为第l批的工件总数,;blf为第l批中的第f个工件;Il为第l批中的所有工件集合,l∈{1,2,…,A},A为批的总数;K为计划水平的总时间单位;wi为工件i的权重.2.2 变量的定义变量定义为i∈I,j=1,2…,s,k=1,2,…,K;Bij为工件i在第j阶段加工的开始时间;Cij为工件i在阶段j上的完成时间(它是一个时间点,Cij=k表示工件i的阶段j在时刻k的末段完成加工).2.3 模型的构建模型构建如下:(1)s.t. Bi1≥ri,i∈I,(2)δijk≤mj,j=1,2,…,s,k=1,2,…,K,(3)Cij+tj,j+1+pi,j+1≤Ci,j+1,i∈I,j=1,2,…,s-1,(4)Cblf,1+pbl,f+1,1=Cbl,f+1,1,l∈{1,2,…,A},f =1,2,…,al -1,(5)(6)kδijk≤Cij,j∈I,j=1,2,…,s,(7)δijk∈{0,1},i∈I,j=1,2,…,s,k=1,2,…,K,(8)Bij,Cij∈ {1,2,…,K },i∈I,j=1,2,…,s.在上述模型中,目标函数(1)最小化所有工件的加权完成时间;约束(2)表示每个工件只有到达第一个阶段的机器之后,才能开始加工;约束(3)确保所有工件对机器的需求不能超过在相应时间段可使用的机器数;约束(4)表示同一工件在不同加工阶段间的工序优先级约束;约束(5)表示同一批内所有工件在第一阶段(切割阶段)的优先级约束;约束(6)表示工件在各阶段占用机器的时间区间;约束(7)定义工件开始占用机器的时间;约束(8)、(9)定义了变量的取值范围.虽然本文所研究的问题与文献[5]的类似,但这两项研究不同:首先,研究问题的背景不同,本文所探讨的HFS问题来源于钢管生产的工艺流程,故而第一阶段具有批处理特征,而文献[5]则是从钢铁行业炼钢-热轧-连铸阶段提炼出来的,且最后一阶段是具有批处理特征的HFS调度问题;其次,目标函数不同,本文以最小化工件加权总完成时间为目标,而文献[5]则考虑了总加权完成时间和对工件等待的惩罚;最后,本文考虑了工件的动态到达时间,从而表现了一定的动态特性,而文献[5]则是假定所有的工件在时间1都是可用的,即不考虑工件的动态到达时间.3 改进LR的求解方法构造以往关于求解HFS调度的研究较多.文献[6]中对HFS调度问题的求解方法有总结和归纳,主要有精确算法、启发式算法和混合启发式算法等.由于精确算法在解决复杂问题时往往耗时较长,而启发式算法虽然能在较短时间内得到可行解,但解的质量难于评价,又鉴于所建立的模型是“可分离的”(目标(1)是加和的形式,且耦合不同工件的机器能力约束是线性的),因此,提出改进的LR算法求解2.2节所建模型,求解过程构造如下.3.1 拉格朗日松弛由于约束(3)耦合不同的批,利用拉格朗日乘子μjk将其松弛到目标函数中,形成LR问题(10)满足约束(2),(4)~(9)和μjk≥0,j=1,2,…,s,k=1,2,…,K,(11)从而得到拉格朗日对偶问题满足(2),(4)~(9),(11).给定一组拉格朗日乘子{μjk},分解后对应于每批l的子问题为(12)满足(2),(4)~(9),(11).因此,L(μ)也可以写为(13)3.2 拉格朗日乘子的更新过程设计求解对偶问题过程中,常采用次梯度算法来更新拉格朗日乘子,μh+1=μh+ahgh,其中,gh=g(μh)是L(μ)的次梯度,ah是第h次迭代的步长.3.3 原问题可行解的构造由于约束(3)被松弛,因此对偶问题的解在某段时间内可能违背能力约束,所以它得到的解通常是不可行的.为构造可行解,基于局域搜索和文献[7]提出的列表调度构造一个两阶段启发式算法.3.4 子问题的求解过程设计图2 一批的出树结构Fig.2 The out tree structure of a batch将文献[8]所提出的动态规划应用推广到上述的批级子问题,令一个节点表示一个工序(i,j),假定同一批内有3个工件,共有4个阶段,即al=3,s=4,则每个批级子问题中的所有工序构成与文献[5]中子问题结构相反的出树结构(图2).图中虚线框内的所有工序是作为一批在一台机器上按顺序加工且不允许中断,实箭头表示物流的流向,虚箭头表示工序之间的加工顺序.以往也有一些研究对工件间存在优先级或一个工件内的各工序间存在优先级的LR 问题应用动态规划(dynamic programming,DP)进行求解[9-11].然而,作者所研究的子问题和文献提到的子问题不同,主要区别在于处理第一道工序的那台机器的生产方式:在该批处理机上有一序列工序,它们是作为一批进行处理,并且除了批中的最后一个工件加工时间为零之外,其他工件的加工时间均相等,且在第一阶段同一批内工件的加工顺序一定.为此,设计了求解该子问题的改进DP算法.在执行DP之前先进行以下处理:将同一批内工件的所有工序从第一阶段到最后一个阶段,在每个阶段根据工件在批内的位置进行排序.可以观察到由上述规则排序后的这些工序也是按照它们后面工序数的非增顺序排列的,而且第一阶段的工序标号恰好反映了相应工件在第l批内的位置.令h表示工序标号,则h与(ih,jh)有一一对应关系,可以得到jh=⎣h/al⎣,ih=bl,h-(jh-1)*al,即由工序h的标号可推断出该工序所对应的工件和阶段.另外,也可看到每个子问题中,所有工序形成的树结构是连接的,且每批的第一个节点都是节点1.对于工序h=10,11,12有0个紧后工序;工序h=3,4,5,6,7,8,9有1个紧后工序;工序h=1,2有2个紧后工序;工序的紧后工序可分为两类:一类是工序x(x=h+al),它是指同一工件在紧后阶段的工序;另一类为工序y(y=h+1),它是指在相同阶段s上同一批中位于工序h紧后面的工序.因此,式(13)也可以写为:对其中,Vh(Cih jh)定义为(14)令Ph表示工序h (h = 1,2,…,sal)的紧后工序的集合,令Fh(k)表示调度工序h和它的紧后工序在时刻k之前完成的最小总费用.后向动态规划(BDP)从最后一个节点开始,一直到节点1结束.工序h=(s-1)al+1,(s-1)al+2,…,sal的费用给定为Fh(Cih jh)=Vh(Cih jh).(15)当工序h(h∈{al,…,(s-1)al})的累计费用为对Cixjx+tixjh+pih jh≤Cih jh.(16)当工序h=1,2,…,al-1的累积费用为对Ciyjy+pih jh=Cih jh且Cixjx+ttxjh+pihjh≤Cihjh.(17)在计算Fh(Cihjh)时,关于工序h的紧后工序的函数Fx(Cixjx)和Fy(Ciyjy)都是已知量.由于每批内第一道工序是所有其他sal-1道工序的先前工序,因此,可计算得到下界(18)最后沿着最优路径向后追踪得到对应子问题的最优解.4 算例以一个有3个工件的批级子问题为例,假设这3个工件{1,2,3}依次经过3个阶段进行加工,在第一阶段上,它们组成一批并按照1-2-3的顺序在一台机器上进行加工,运输时间t12和t23分别为1和2.表1给出了每个工件在每个阶段的加工时间、在第一阶段的动态到达时间、工件的权重以及在每个阶段可用的机器能力数.在求解拉格朗日对偶问题时,将拉格朗日乘子{μjk}的初始值设为0.5,第一次迭代时利用改进DP求解这个批级子问题的详细过程如表1.表1 算例数据Tab.1 Data for the example problem工件pi1pi2pi3riwimj123112122112123023222Step 1 按照从第一阶段到最后阶段及工序在批内的位置排列所有工序,与图2相似(无第4阶段).Step 2 确定每道工序的紧前工序,并对它们进行分类.工序7,8,9无紧后工序;工序3,4,5,6有一道紧后工序,分别为6,7,8,9,它们属于x类型;工序1,2有两道紧后工序:包括x类型工序{4,5}和y类型的工序{2,3}.Step 3 根据式(4)和(5),计算每个工件的可能的工序完成时间.该例中,每个工件的每道工序的完成时间集合为:C11∈{2,3,4,5,6},C12∈{6,7,8,9},C13∈{9,10,11,12},C21∈{4,5,6,7,8},C22∈{6,7,8,9,10},C23∈{9,10,11,12,13},C31∈{6,7,8,9},C32∈{9,10,11,12,13},C33∈{14,15,16,17}.Step 4 根据式(14),计算F7(C13)=w1C13+μjhkδihjhk;F8(C23)=w2C23+μjhkδihjhk;F9(C33)=w3C33+μjhkδihjhk.F7(9)= 18.5; F7(10)=20.5; F7(11)=22.5; F7(12)=24.5;F8(9)=9.5; F8(10)=10.5; F8(11)=11.5; F8(12)=12.5; F8(13)=13.5;F9(14)=29.5; F9(15)=31.5; F9(16)=33.5; F9(17)=35.5.Step 5 根据式(15)和(16),计算F3(C31),F4(C12),F5(C22)和F6(C32).F6(9)=V6(9)+F9(14)=30.5; F6(10)=V6(10)+F9(15)=32.5;F6(11)=V6(11)+F9(16)=34.5; F6(12)=V6(12)+F9(17)=36.5;F5(6)=V5(6)+F8(9)=10; F5(7)=V5(7)+F8(10)=11; F5(8)=V5(8)+F8(11)=12; F5(9)=V5(9)+F8(12)=12; F5(10)=V5(10)+F8(13)=13;F4(6)=V4(6)+F7(9)=19.5; F4(7)=V4(7)+F7(10)=21.5;F4(8)=V4(8)+F7(11)=23.5; F4(9)=V4(9)+F7(12)=25.5;F3(6)=V3(6)+F6(9)=30.5; F3(7)=V3(7)+F6(10)=32.5;F3(8)=V3(8)+F6(11)=34.5; F3(9)=V3(9)+F6(12)=36.5.Step 6 根据式(17),计算F1(C11),F2(C21).F2(4)=V2(4)+ F5(6)+ F3(6)=41.5; F2(5)=V2(5)+ F5(7)+ F3(7)=44.5;F2(6)=V2(6)+ F5(8)+ F3(8)=47.5; F2(7)=V2(7)+ F5(9)+ F3(9)=50.5;F2(8)=V2(8)+ F5(10)+ F3(10)=53.5;F1(2)=V1(2)+ F2(4)+ F4(6)=62; F1(3)=V1(3)+ F2(5)+ F4(7)=65;F1(4)=V1(4)+ F2(6)+ F4(8)=68; F1(5)=V1(5)+ F2(7)+ F4(9)=71;F1(6)=V1(6)+ F2(8)+ F4(10)=74.Step 7 通过向前追踪得到子问题的解.C11=2; C12=6; C13=9; C21=4; C22=6; C23=9; C31=6; C32=9; C33=14.若A=1,则否则,对每个子问题重复上述过程,然后利用式(18)得到原问题最优值的下界.5 结束语对考虑运输时间的第一阶段具有批处理特征的动态HFS调度问题进行了研究,将此问题建模为一个整数规划模型,并设计了改进LR算法的求解过程.通过松弛机器能力约束,将原问题分解成多个独立的批级子问题,用动态规划求解子问题,并用实例来说明第一次迭代时利用改进DP求解批级子问题的详细过程;用次梯度方法求解拉格朗日对偶问题;两阶段启发式算法构造原问题的可行解.下一步研究利用钢管厂的实际生产数据来验证所提出的模型和算法过程.参考文献:[1] Atighehchian A,Bijari M,Tarkesh H.A novel hybrid algorithm forscheduling steel-making continuous casting production[J].Computers & Operations Research,2009,36(8): 2450-2461.[2] Tang Lixin,Luh P B,Liu Jiyin,et al.Steel-making process scheduling using Lagrangian relaxation[J].International Journal of Production Research,2002,40(1): 55-70.[3] Li Dawei,Wang Li,Wang Mengguang.Genetic algorithm for production lot planning of steel pipe[J].Production Planning and Control,1999,10(1): 54-57.[4] Xuan Hua.A Lagrangian relaxation algorithm for the order planning of steel pipe[J].International Conference of Management Science and Information System,2009(1/2/3/4): 685-688.[5] Xuan Hua,Tang Lixin.Scheduling a hybrid flowshop with batch production at the last stage[J].Computer & Operations Research,2007,34(9): 2718-2733.[6] Ruiz R,Vazquez-Rodriguez J A.The hybrid flow shop scheduling problem[J].European Journal of Operational Research,2010,205:1-18. [7] Hoitomt D J,Luh P B,Pattipati K R.A practical approach to job-shop scheduling problems[J].IEEE Transactions on Robotics and Automation,1993,9(1): 1-13.[8] Oguz C,Tang L.A Lagrangian relaxation method for hybrid flow-shop scheduling with multiprocessor tasks to minimize total weighted completion time[C]//Proceedings of the 1st Multidisciplinary International Conference on Scheduling:Theory and Applications.Nottingham,2003: 638-653.[9] Abdul-Razaq T S,Potts C N,Van Wassenhove L N.A survey of algorithms for the single machine total weighted tardiness schedulingproblem[J].Discrete Applied Mathematics,1990,26(2/3):235-253.[10] Chen Haoxun,Chu Chengbin,Proth J M.An improvement of the Lagrangean relaxation approach for job shop scheduling: a dynamic programming method[J].IEEE Transactions on Robotics and Automation,1998,14(5):786-795.[11] Tang Lixin,Xuan Hua,Liu Jiyin.Hybrid backward and forward dynamic programming based Lagrangian relaxation for single machine scheduling[J].Computers & Operations Research,2007,34(9): 2625-2636.。

零号电大计算方法(本)终考任务

零号电大计算方法(本)终考任务【原创实用版3篇】《零号电大计算方法(本)终考任务》篇1零号电大计算方法是指在电大计算机课程中,对于二进制数字的计算方法。

在这种计算方法中,我们使用二进制数字0 和1 来表示数值。

在电大计算中,通常使用四个二进制位(即0000、0001、0010、0011、0100、0101、0110、0111、1000、1001、1010、1011、1100、1101、1110、1111)来表示一个十进制数。

这样做的目的是为了节省计算机处理信息所需的硬件和能源。

例如,要计算1234 的二进制表示,我们可以采用“除 2 取余”的方法,具体步骤如下:1. 用2 除以1234,得到商617,余数0。

2. 将余数0 作为下一个计算的被除数,继续用2 除以它,得到商0,余数0。

3. 将余数0 作为下一个计算的被除数,继续用2 除以它,得到商0,余数0。

4. 将余数0 作为下一个计算的被除数,继续用2 除以它,得到商0,余数0。

5. 将余数0 作为下一个计算的被除数,继续用2 除以它,得到商0,余数0。

6. 将余数0 作为下一个计算的被除数,继续用2 除以它,得到商0,余数0。

7. 将余数0 作为下一个计算的被除数,继续用2 除以它,得到商0,余数0。

8. 将余数0 作为下一个计算的被除数,继续用2 除以它,得到商0,余数0。

9. 将余数0 作为下一个计算的被除数,继续用2 除以它,得到商0,余数0。

10. 将余数0 作为下一个计算的被除数,继续用2 除以它,得到商0,余数0。

计算完成后,我们将上述步骤中得到的余数从下往上排列,得到的二进制数就是1234 的二进制表示:10010001110。

在电大计算中,我们还需要掌握其他基本操作,如加、减、乘、除等。

《零号电大计算方法(本)终考任务》篇2零号电大计算方法是指在电大计算机课程中,对于二进制数字的计算方法。

在这种计算方法中,我们使用二进制数来表示各种数值,包括整数和分数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

龙源期刊网 http://www.qikan.com.cn 机器数的快速转换算法研究 作者:王德超 来源:《电脑知识与技术》2012年第16期

摘要:机器数是计算机相关原理如运算器设计等的基础,也是计算机数值运算的前提与基础。该文给出了一种更简便的机器数转换算法,并给出了实现该算法的C++源代码。

关键词:机器数;算法;机器字长;溢出;C++源代码 中图分类号:TP312文献标识码:A文章编号:1009-3044(2012)16-3872-03 Machine Number Fast Conversion Algorithm WANG De-chao (College of Fundation Education,Sichuan Normal University, Chengdu 610066, China) Abstract: Number of machines is the basis for computer-related design principles such as operations, is also a prerequisite and basis for nu merical computing. This article gives a simpler machine conversion algorithm, and C++ source code that implements the algorithms are given.

Key words: machine number; algorithm; machine length; overflow; C++ source code 1真值数与机器数 计算机中常采用数的符号和数值一起编码的方法来表示数据,即二进制数真值用机器数来表示,机器数通常有原码、反码和补码三种表示方法。在计算机的运算过程中,根据不同的运算运用不同的机器数,以简化计算机的运算过程[1]。如乘法和除法用原码参与运算比较方便,符号位通过异或运算即得结果的符号位;而加法与减法运算用补码参与运算比较方便,它使符号位不用单独处理,直接与数值位(尾数)一起参与运算。

计算机中表示一个数值型数据应包含三个因素: 1)采用什么进位计数制; 2)如何表示数值符号; 3)如何确定小数点位置。计算机中的数均存放在寄存器中,通常称寄存器的位数为机器字长。所谓无符号数,即没有符号的数,在寄存器中的每一位均用来存放数值,当存放有符号数时,则需要留出字长的最高位位置用于存放数值符号。

机器数是指在计算机内的数据表示形式,一般是采用某种编码形式表示带符号的二进制数。在计算机内,数值的符号位也用二进制数码0和1来表示,0表示正号,1表示负号,且规定字长的最高位作符号位。真值数则是指机器数所对应的带有+或-符号的实际二进制数值。例龙源期刊网 http://www.qikan.com.cn 如+125与-125两个数的二进制真值数分别是+1111101和-1111101,它们的原码机器数分别是01111101和11111101,即数值的符号位被二进制数字化了。

2原码、反码与补码 数制转换是计算机组成原理相关课程的重要组成部分[1-6]。计算机科学中所采用的数制包括十进制数、二进制数、十六进制数和八进制数等。但计算机中的数均采用二进制数表示,数的正负号也是用二进制表示,这样的数称为机器数。原码、反码和补码是机器数的三种形式。一个正的十进制数的原码、反码和补码为将该十进制数转换成位数为机器字长的二进数本身。一个负的十进制数的补码转换过程:先转换出最高位为1的长度为机器字长的该负数的原码,再求其反码,然后在反码的最低位加1得出补码。这便是传统的三种机器相互转换的方法。该文将给出不用“反码加1”求负数补码的快捷方法。

2.1原码 规则:机器数的最高一位表示符号,“0”表示正号;“1”表示负号,后面各位用数的二进制绝对值表示。若字长为n位,整数真值x=±xn-1xn-2…x2x1的原码一般可表示为0xn-1xn-2…x2x1(正数)与1xn-1xn-2…x2x1(负数)。如真值x=+0101010与y=-0101010的原码分别是x原=00101010与y原=10101010。

2.2反码 反码通常作为原码与补码相互转换的中间过渡。反码的简便转换方法是:当为正数时,其反码和原码的形式相同;当为负数时,反码为保持原码的符号位不变,原码的数值部分各位按位变反。如真值x=+ 0101010与y=-0101010的反码分别是x反=00101010与y

反=11010101。 2.3补码 计算机中通过补码可将减法转换为加法实现,这部分由计算机硬件来完成。CPU中同时有加法指令和减法指令,采用补码的目的是可以运算或存储有符号数。补码是计算机专业课中的重要知识点,如《计算机组成原理》与《C语言》等[3,6]课程需要补码知识。补码的传统转换方法:正数的补码就是其原码,负数的补码为其反码再最低位加二进制数1。如真值x=+0101010与y=-0101010的补码分别是x补= 00101010与y补=11010110。

2.4负数原码与补码相互变补的简捷算法 规则:符号位保持不变,尾数自低位向高位数第一个1及其右边的各低位0保持不变,其左边的各高位按位变反。如设机器字长为8位: 龙源期刊网 http://www.qikan.com.cn 1)x原=1.1010000→x补=1.0110000;2)x原=10001010→x补=11110110;3)真值-0.10101:原码1.1010100补码1.0101100。

2.5三种机器数的关系 1)正数的原码、反码与补码形式完全相同,不用转换。 2)最高位都表示符号位,补码和反码的符号位可作为数值位的一部分一起参加运算,但原码的符号位不允许和数值位同等看待,必须分开处理。

3)原码和反码各有两种零的表示法,而补码只有惟一种零。 4)原码、反码表示的正、负数范围相对零来说是对称的,但补码负数表示范围较正数表示范围宽1,能多表示一个最负的数,即绝对值最大的负数。如字长为1字节的计算机补码机器数能表示的有符号十进制范围是-128~+127。

5)负数反码与补码机器数间的关系:补码=反码+1,或:反码=补码-1。 3计算真值数的三种机器数的C++源代码 根据上面给出的三种机器数的相互转换方法,特别是负数的原码与补码的快速变补算法,设计出如下C++源代码,可用于实现三种机器数的转换工具。

#include #include #include using namespace std; char a[17],b[17];//假设机器字长为16位 void ctrans(int x) {/*此函数的功能为将任 意十进制整数x转换为二进制原码机器数*/ int i=0,j=0,y,rem; //用于保存余数 for(i=0;i if(x else y=x; 龙源期刊网 http://www.qikan.com.cn do {rem=y%2; y=y/2; a[i]=48+rem;//"0"的ASCII码为48 i++;}while(y!=0);j=16-i; while(i>0){b[j]=a[--i];++j;} /*前面do循环已使i多增加1故用--i cout.width(16);cout.setf(ios::left||ios::fixed);*/} void main() {int s,r,i;char c[17],d[17]; //c,d分别用于存放反码和补码 cout>s;ctrans(s); cout cout if(b[0]==’0’){strcpy(c,b);strcpy(d,b);} else {strcpy(c,b);strcpy(d,b); r=strrchr(b,’1’)-b; for(i=1;i else c[i]=’0’;} for(i=1;i else d[i]=’0’;}} cout cout cout cout 4补码运算 4.1补码运算的规则 龙源期刊网 http://www.qikan.com.cn [X+Y]补=[X]补+[Y]补; [X-Y]补=[X+(-Y)]补=[X]补+[-Y]补。 可见,在计算机中,当数用补码表示时,加法与减法可统一为“加法”运算。符号位也参加运算;相加后,如果符号位有进位出现,要把这个进位舍去(自然丢失);运算结果本身就是补码。当转换为真值时,若符号位为0,数位不变;若符号位为1,则应按前面介绍方法进行机器数转换后才能获得其真值。如:设X=83D=+1010011, Y=37D=+0100101,计算X-Y: [X]补=01010011, [-Y]补= 11011011, [X]补+[-Y]补=[X补-Y补]=100101110=00101110 (高位1丢失,溢出)=46D,结果正确。又如:设X=54,Y=-121,X-Y=175D, X= +0110110,Y= -1111001,[X]补=0,0110110,[-Y]补=0,1111001,[X]补-[Y]补=[X]补+[-Y]补=1,0101111=-1010001=-81D (数值位向符号位进位,数值溢出),结果错。

4.2补码溢出的判断 计算机机器字长决定了所能表示的数据范围。一旦运算结果超出能表示的数据范围,就会产生溢出。发生溢出会导致运算结果错误,计算机必须判断是否产生溢出。异号数相加时,实际是两数的绝对值相减,不可能产生溢出,但有可能出现正常进位;同号数相加时,实际上是两数的绝对值相加,既可能产生溢出,也可能出现正常进位。

无论采用何种机器数,只要运算的结果大于计算机字长所能表示数的范围,就会产生溢出。如对于字长为n的机器能表示有符号整数范围为-2n-1~2n-1-1。如上面示例,补码运算存在符号位进位自然丢失而运算结果正确的情况,因此,应区分补码的溢出与正常进位。机器是正常进位还是溢出的判定依据:当补码运算结果中最高位和次高位均无进位产生,或均产生进位,则结果正确;当最高位和次高位中只有一位产生了进位则结果是错误的。在微机中可用异或门电路来实现这种判断。

5结束语 该文在阐述机器数的传统计算方法的基础上,提出了一种快速准确的原码与补码相互变补的速算方法,实际应用中,用传统方法计算机器数易出错,采用速算方法,效率和准确度都会有所提高。该文还根据机器数的速算算法,设计了计算真值数的三种机器数的C++源代码。

相关文档
最新文档