如何用lingo做线性规划的数学建模提
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用lingo做线性规划的数学建模提相关的知识,希望对你有一定的参考价值。
汽车装配是汽车生产的一个重要组成部分。为保证装配质量,提高劳动生产率,生产厂家会根据汽车的结构特点,将其分解成为可单独组织装配的单元(称为操作),然后合理地安排人员流水作业进行装配。部分操作间存在优先关系,即必须某项操作完成,另一项操作才能开始装配。每名工人需要完成几项操作(这几项操作合在一起称为一个工位,即该流水线需要的工人数),要求各个工位的实际作业时间应尽可能相等。
问题1:某装配线共有16项操作,操作的作业时间(操作上方的数字)及优先关系见下图,假设装配线有3个工位,试建立数学模型,合理安排装配计划,给出各项操作的作业起始和结束时间,使得各工位的实际作业时间尽可能相等。
我运行了,感觉并不是非常满意,后来我自己也编出来了。不管怎样,还是非常谢谢你的
model:
sets:
worker/1..3/;
operat/1..16/:weight;
pred(operat,operat)/1,2 1,3 1,4 2,5 3,6 4,6 5,7 5,8 6,8 7,9 8,10 8,11 9,12 9,13 10,14 11,14 12,16 13,15 14,15 15,16/;
txs(operat,worker):x;
endsets
data:
weight=7,9,13,15,22,14,11,8,38,21,16,30,14,17,26,25;
enddata
@for(operat(i):@sum(worker(k):x(i,k)) = 1);
@for(pred(i,j):@sum(worker(k):k*x(j,k) - k*x(i,k)) >= 0);
@for(worker(k):@sum(operat(i):weight(i)*x(i,k)) <= best);
min = best;
@for(txs:@bin(x));
end
任务 耗时 先决条件 任务 耗时 先决条件
1 7 没有 9 38 7
2 9 1 10 21 8
3 13 1 11 16 8
4 15 1 12 30 9
5 22 2 13 14 9
6 14 3,4 14 17 10,11
7 11 5 15 26 13,14
8 8 5,6 16 25 12,15
model:
sets:
station/1..3/:x;
task/a..p/:t;
pred(task,task)/a,b a,c a,d b,e c,f d,f e,g e,h f,h g,i h,j h,k i,l i,m j,n k,n m,o n,o l,p o,p/:;
txs(task,station):g;
endsets
data:
t=7 9 13 15 22 14 11 8 38 21 16 30 14 17 26 25;
enddata
@for(task(I):@sum(station(K):g(I,K))=1);
@for(pred(I,J):@sum(station(K):K*g(J,K)-K*g(I,K))>=0);
@for(txs:@bin(g));
@for(station(I):@sum(txs(J,I):t*g)=x);
min=@sum(station:x*x);
任务 耗时 先决条件 任务 耗时 先决条件
1 7 没有 9 38 7
2 9 1 10 21 8
3 13 1 11 16 8
4 15 1 12 30 9
5 22 2 13 14 9
6 14 3,4 14 17 10,11
7 11 5 15 26 13,14
8 8 5,6 16 25 12,15
用lingo做起来恐怕有点难度 没发现很好的方法写出来
以上是关于如何用lingo做线性规划的数学建模提的主要内容,如果未能解决你的问题,请参考以下文章
你好,我正在做一个数学建模的论文,无意中看到你回答的行于Lingo的@for(link(i,j):@gin(x(i,j));的回答,