lingo-指派问题

数学建模

cij 指第i个人完成第j个任务需要的时间(效率矩阵)
决策变量 xij 若由第i个人完成第j项任务 xij = 1,否则 xij = 0
数学模型
m i n z = ∑ ∑ c i j ∗ x i j s . t . { ∑ j x i j = 1 ∑ i x i j = 1 x i j ∈ { 0 , 1 } , i , j = { 1 , 2 , 3 , 4 , 5 } min z = \sum\sum cij * xij \\ s.t. \left \{ \begin{matrix} \sum_j xij = 1\\ \sum_i xij = 1\\ xij \in \{0,1\},i,j = \{1,2,3,4,5\} \end{matrix} \right. minz=∑∑cijxijs.t. jxij=1ixij=1xij{0,1},i,j={1,2,3,4,5}

lingo 建模

建立集合

建立人员集合

worker/1,2,3,4,5/;

建立任务集合

assignment/A,B,C,D,E/;

建立联系集合(每个人和每个任务之间)
在联系集合上定义效用集合C,和决策变量X

link(worker,assignment):C,X;

赋值

DATA:
		C = 
		8 6 10 9 12
		12 10 7 15 9
		7 4 3 5 6
		9 5 4 12 8
		4 11 6 7 15;
	ENDDATA

目标函数

总费用最小

MIN = @sum(link(i,j): c(i,j) * x(i,j));

约束条件

1.每人只完成一个任务

@for(worker(i): @sum(assignment(j): x(i,j)) = 1);

2.每个任务只有一个人做

@for(assignment(j):@sum(worker(i): x(i,j)) = 1);

3.决策变量X是01变量

@for(link(i,j): @bin(x(i,j)));

完整代码

MODEL:
	SETS:
		worker/1,2,3,4,5/;
		assignment/A,B,C,D,E/;
		link(worker,assignment):C,X;
	ENDSETS
	DATA:
		C = 
		8 6 10 9 12
		12 10 7 15 9
		7 4 3 5 6
		9 5 4 12 8
		4 11 6 7 15;
	ENDDATA
	MIN = @sum(link(i,j): c(i,j) * x(i,j));
	@for(worker(i): @sum(assignment(j): x(i,j)) = 1);
	@for(assignment(j):@sum(worker(i): x(i,j)) = 1);
	@for(link(i,j): @bin(x(i,j)));
END

生产计划的建模与求解

题目

在这里插入图片描述

数学建模

productioni 表示第i个设备的生产能力
profitj 表示第j 个产品的利润
tij 表示第i个设备加工第j个产品的时间
决策变量Xj 指第j个产品生产几个
m a x z = ∑ j x j ∗ p r o f i t j s . t . { ∑ j x j ∗ t i j ≤ p r o d u c t i o n i max z = \sum_j xj * profitj \\ s.t. \left\{ \begin{matrix} \sum_j xj * tij \leq productioni \\ \end{matrix} \right. maxz=jxjprofitjs.t.{jxjtijproductioni

lingo 建模

集合

赋值

目标条件

约束条件

完整代码

MODEL:
	SETS:
		MACHINE/A B C D/: ABILITY;
		PRODUCTION/P Q/:PROFIT,X;
		LINK(MACHINE,PRODUCTION): T;
	ENDSETS

	DATA:
	ABILITY = 12 8 16 12;
	PROFIT = 2 3;
	T = 
	2 1 4 0
	2 2 0 4;
	ENDDATA

	MAX = @SUM(PRODUCTION(J):X(J) * PROFIT(J));

	@FOR(MACHINE(I):@SUM(PRODUCTION(J):T(I,J) * X(J)) <= ABILITY(I));
END 
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值