目标规划问题与LINGO求解

问题:某企业生产甲、乙两种产品,需要用到 A, B,C 三种设备,关于产品的赢利与使用设备的工时及限制如下表所示。问该企业应如何安排生产,才能达到下列目标:

目标规划问题与LINGO求解_第1张图片

( 1)力求使利润指标不低于 1500 元;
( 2)考虑到市场需求,甲、乙两种产品的产量比应尽量保持 1:2;
( 3)设备 A 为贵重设备,严格禁止超时使用;
( 4)设备C 可以适当加班,但要控制;设备 B 既要求充分利用,又尽可能不加班。
在重要性上,设备 B 是设备C 的 3 倍。
建立相应的目标规划模型并求解。
解:设该企业生产甲乙两种产品的件数分别为 x1, x2 ,相应的目标规划模型为:

目标规划问题与LINGO求解_第2张图片
 

将以上多目标问题转化为单目标问题进行求解:

第一步:

model:
sets:
variable/1..2/:x;!规定变量;
s_con_num/1..4/:g,dplus,dminus;!软约束条件个数以及相关参数;
s_con(s_con_num,variable):c;!软约束系数;
endsets
data:
g=1500 0 16 15;
c=200 300 2 -1 4 0 0 5;
enddata
min=dminus(1);!第一个目标函数;
2*x(1)+2*x(2)<12;!硬约束;
@for(s_con_num(i):@sum(variable(j):c(i,j)*x(j))+dminus(i)-dplus(i)=g(i));
!软约束表达式;
@for(variable:@gin(x));!限制变量为整数;
end

 此时,第一目标最优值为0,达到要求;下面进行第二步:

!求得dminus(1)=0,接着求解第二个目标;
model:
sets:
variable/1..2/:x;!规定变量;
s_con_num/1..4/:g,dplus,dminus;!软约束条件个数以及相关参数;
s_con(s_con_num,variable):c;!软约束系数;
endsets
data:
g=1500 0 16 15;
c=200 300 2 -1 4 0 0 5;
enddata
min=dminus(2)+dplus(2);!第二个目标函数;
2*x(1)+2*x(2)<12;!硬约束;
@for(s_con_num(i):@sum(variable(j):c(i,j)*x(j))+dminus(i)-dplus(i)=g(i));
!软约束表达式;
dminus(1)=0;!第一目标结果;
@for(variable:@gin(x));
end

此时,第二目标最优值为0,达到要求;下面进行第三步:

!求得dminus(2)=0,接着求解第三个目标;
model:
sets:
variable/1..2/:x;!规定变量;
s_con_num/1..4/:g,dplus,dminus;!软约束条件个数以及相关参数;
s_con(s_con_num,variable):c;!软约束系数;
endsets
data:
g=1500 0 16 15;
c=200 300 2 -1 4 0 0 5;
enddata
min=3*dminus(3)+3*dplus(3)+dminus(4);!第三个目标函数;
2*x(1)+2*x(2)<12;!硬约束;
@for(s_con_num(i):@sum(variable(j):c(i,j)*x(j))+dminus(i)-dplus(i)=g(i));
!软约束表达式;
dminus(1)=0;!第一目标结果;
dminus(2)+dplus(2)=0;!第二级目标结果;
@for(variable:@gin(x));
end

最终求得x1=2,x2=4。 

 

你可能感兴趣的:(数学建模,LINGO)