基于lingo/matlab解决简单的线性规划问题

某班准备从5名游泳队员中选择4人组成接力队,参加学校的4×100m混合泳接力比赛。5名队员4种泳姿的百米成绩如下表,问应该如何选拔队员组成接力队?写出模型以及程序给出结果。
基于lingo/matlab解决简单的线性规划问题_第1张图片
建立模型:
基于lingo/matlab解决简单的线性规划问题_第2张图片
基于lingo/matlab解决简单的线性规划问题_第3张图片

matlab代码:

clear;clc
%[x11;x21;x31;x41;x12;x22;x32;x42;x13;x23;x33;x43;x14;x24;x34;x44;x15;x25;x35;x45
 
f=[76.8;75.6;87;78.6;57.2;76;66.4;53;78;67.8;84.6;59.4;70;74.2;69.6;57.2;67.4;71;83.8;62.4];
A=[1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0;0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0;0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0;0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1];
b=[1;1;1;1;1];
Aeq=[1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0;0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0;0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0;0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1];
beq=[1;1;1;1];
lb=zeros(20,1);
ub=ones(20,1);
[x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,lb,ub);

运行结果:
x =

0.0000
0.0000
0.0000
0.0000
1.0000
0.0000
0.0000
0.0000
0.0000
1.0000
0.0000
0.0000
0.0000
0.0000
1.0000
0.0000
0.0000
0.0000
0.0000

1.0000
即:乙蝶泳,丙仰泳,丁蛙泳,戊自由泳

lingo代码:

min 76.8x11+75.6x12+87x13+78.6x14+57.2x21+76x22+66.4x23+53x24+78x31+67.8x32+84.6x33+59.4x34+70x41+74.2x42+69.6x43+57.2x44+67.4x51+71x52+83.8x53+62.4x54
s.t.
   x11+x12+x13+x14<=1
   x21+x22+x23+x24<=1
   x31+x32+x33+x34<=1
   x41+x42+x43+x44<=1
   x11+x21+x31+x41+x51=1
   x12+x22+x32+x42+x52=1
   x13+x23+x33+x43+x53=1
   x14+x24+x34+x44+x54=1
end
int 20

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