运筹学模型与软件实践
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
D 9 11 5 11 5
E 12 9 8 8 11
集合的构造 如何去构造一个集合(SETS)?
从人和工作两个方面进行构造原始集合 集合长度均为5项 确定人原始集合的属性--能力 确定工作原始集合的属性--需求 需要构造人和工作的派生集合 确定派生集合的属性--费用、数量
集合的构造
SETS: WORKER/W1,W2,W3,W4,W5/:CAPACITY;!工人的集合; JOB/J1,J2,J3,J4,J5/:DEMAND;!工作的集合; ROUTES(WORKER,JOB):COST,VOLUME;!产生的派生集 合--矩阵; ENDSETS DATA: CAPACITY = 1,1,1,1,1; DEMAND = 1,1,1,1,1; COST = 8, 6, 10, 9, 12, 9, 12, 7, 11, 9, 7, 4, 3, 5, 8, 9, 5, 8, 11, 8, 4, 6, 7, 5,11; ENDDATA
设决策变量:
1, 若分配第 i个人去做第 j件工作 xij 0,否则
i ,j 1,2,, n 。 j 其中, 那么第i 个人做第 件工作的效率为cij xij 。
从而 i 1,2, , n ; j 1,2, , n 的综合即为总效率。每件工作都
用人去做,使用数学表达式为
x
i 1
n
ij
1 , j 1,2,, n ;同样,
x 每个人都用工作做,为
j 1
n
ij
1 , i 1,2, , n ;
分配问题的数学模型:
min Z cij xij
i 1 j 1
n
n
n xij 1, i 1,2,, n jn1 s.t. xij 1, j 1,2,, n i 1 xij 0或1,i, j 1,2, , n
!供给约束; @FOR(WORKER(I): @SUM(JOB(J):VOLUME(I,J))=CAPACITY(I));
构造Lingo程序
MODEL: !5个工人,5项工作的分配问题; SETS: WORKER/W1,W2,W3,W4,W5/:CAPACITY;!工人的集合; JOB/J1,J2,J3,J4,J5/:DEMAND;!工作的集合; ROUTES(WORKER,JOB):COST,VOLUME;!产生的派生集合--矩阵; ENDSETS !目标函数; [OBJ] MIN = @SUM(ROUTES:COST*VOLUME); !需求约束; @FOR(JOB(J):[DEM] @SUM(WORKER(I):VOLUME(I,J))=DEMAND(J)); !供给约束; @FOR(WORKER(I):[SUP] @SUM(JOB(J):VOLUME(I,J))=CAPACITY(I)); !数据输入部分; DATA: CAPACITY = 1,1,1,1,1; DEMAND = 1,1,1,1,1; COST = 8, 6, 10, 9, 12, 9, 12, 7, 11, 9, 7, 4, 3, 5, 8, 9, 5, 8, 11, 8, 4, 6, 7, 5,11; ENDDATA END
运筹学模型与软件实践
Models and Software Practice of the Operations Research
中国科学院研究生院
第五章
分配问题与实验
分配问题的数学模型 用LINGO软件计算分配问题的实例 匹配问题 二次分配问题模型 分配问题应用
分配问题概述
在实际生活中经常可归纳成这样的分配问题: 某单位需要完成 n 项任务, 恰好有 m ( m 可能等于 n ) 人可以承担这些任务。由于每个人的专长不同,同一件 工作由不同的人完成,效率是不同的。于是就会出现应 分配哪个人去完成哪项任务,使完成这 n 项任务的总效 率最高的问题。 这类问题称为分配问题,又称指派问题(Assignment Problem)。 分配问题是运输问题的特殊情况,一般可以采用匈牙利 (Hungarian)算法求解。
分配问题的数学模型
标准分配模型: 设有 n 个人被分配去做 n 件事, 规定每个人只做一 件事情,每件工作只由一个人去做。已知第 i 个人 做 第 j 件 工 作 的 效 率 ( 时 间 或 费 用 ) 为 cij , ( i 1,2,, n; j 1,2,, n ),并假设 cij 0 。问应 如何分配才能使总效率 ( 总时间或总费用最少等 ) 最高?
类似对运输问题特点的分析可知,分配问题的约束条件系数矩阵 A 的秩为 2n 1 ,故它的基可行解中共有 2n 1 个基变量。但实 际上只需要找出 n 个 1 即可(即分配 n 个人去做 n 件不同的工作), 而其余 n 1 个基变量取值为 0,因此这是一个高度退化的线性规 划问题。
用Lingo软件计算分配问题的实例
匹配问题
假设你是公司规划部经理,该部门有8个分析 专家,正打算搬入新的办公地点。新办公地点 共有4个办公室。你需要将专家配成4对,每一 对分配一个新的办公室。基于以往的观察,有 些专家在一起合作得很好,而有些在一起则不 行。为了部门安宁,你也许想找出一种匹配, 使得在一起的专家发生冲突的可能性最小。为 了这一目的,要计算出匹配专家的不相容等级 分。等级从1到10,某个专家匹配的等级分为1 意味着两个专家合作得非常好。反之,等级分 为10意味着两个专家不能一起共事。
模型的构造Leabharlann 如何去构造一个模型? 目标函数--总费用最省
约束条件--需求约束
约束条件--供给约束
集合的构造
!目标函数; MIN = @SUM(ROUTES:COST*VOLUME);
!需求约束; @FOR(JOB(J): @SUM(WORKER(I):VOLUME(I,J))=DEMAND(J));
设有五项工作 A,B,C,D,E。需要分配甲、乙、丙、丁、戊五人去 完成。 每个人只能完成一件工作, 每件工作只能由一个人去完成。 五个人分别完成各项工作所需得费用如下表所示。问如何分配工 作才能使得费用最省。
A 甲 乙 丙 丁 戊 8 9 7 9 4
B 6 12 4 5 6
C 10 7 3 8 7