数学建模——LINGO入门学习笔记(2)(2)
*本篇笔记参考自中国大学mooc 西北工业大学《数学建模》1.3篇 *
2.0-1线性规划(最优指派问题)
分析过程:
利用矩阵相乘简化为数学运算过程
约束条件:每个人分配一项任务且每个任务都有一个人做
MODEL:
SETS:
person/1..4/; !4个业务员;
task/1..4/; !4项业务;
assign(person,task):a,x; !定义决策变量二维数组;
ENDSETS
DATA:
a=1100,800,1000,700,
600,500,300,800,
400,800,1000,900,
1100,1000,500,700; !输入效率矩阵的数据;
ENDDATA
min=@sum(assign:a*x);
@for(task(j):@sum(person(i) :x(i,j))=1); !j未指代代表j取所有值.每个任务一个人完成;
@for(person(i):@sum(task(j) :x(i,j))=1); !每个人完成一个任务;
@for(assign(i,j):@bin(x(i,j))); !Xij 取0/1;
END
运算结果:
即第1个做第4项业务,第2个做第2项业务, 即第3个做第1项业务,第4个做第3项业务. 总费用达到最小,为2100元
补充:
采用数据文件方式程序:
model:
sets:
person/1..4/;
task/1..4/;
assign(person,task):a,x;
endsets
data:
a=@file(