数学建模,关于MATLAB的问题,急死我了

2. 某班有男同学30人,女同学20人参加植树。其工作效率:男同学每人每天可以挖坑20个,或栽树30棵,或浇水25棵;女同学每人每天可以挖坑10个,或栽树20棵,或浇水15棵。问如何分配这些同学劳动可以使一天植树最多,最多植多少棵?(注:分配给某一项劳动的名额,不一定是整数;如男同学10.5人挖坑,表示10个男同学全天挖坑,1个男同学挖半天坑。)
要求:(1)将此问题化成线性规划问题,并写出其标准形式;
(2)将整个利用MATLAB求解的过程写成一个程序并附上。

(1) 用x1,x2,x3分别表示男生挖坑,栽树,浇水的人数。y1,y2,y3分别表示女生挖坑,栽树,浇水的人数。必须满足一下约束条件:
x1+x2+x3=30
y1+y2+y3=20(保证全部人都参加劳动)
20x1+10y1>=30x2+20y2 (挖坑数不少于栽树的数量)
25x3+15y3>=30x2+20y2 (浇水的数量不少于栽树的数量)
其中0=<x1,x2,x3<=30, 0=<y1,y2,y3<=20(不超过总人数)
注:(为了书写的简洁以上都省略了乘号—*,应该能看清楚吧)
目标函数是:
max 30x2+20y2(满足以上约束条件,可以以栽树的数量为植树多少的判断标准)
写成标准形式就是:
min 0x1-30x2+0x3+0y1-20y2+0y3 使得,
x1+x2+x3+0y1+0y2+0y3=30;
0x1+0x2+0x3+y1+y2+y3=20;
-20x1+30x2-0x3-10y1+20y2-15y3<=0;
-0x2+30x2-25x3-0y1+20y2-15y3<=0;
0=<x1,x2,x3<=30;
0=<y1,y2,y3<=20;
(2) 用matlab编写M文件求解:
f=[0; -30; 0; 0; -20; 0];
A=[-20, 30, 0, -10, 20, -15; 0 ,30 ,-25 ,0 ,20 , -15];
b=[0;0];
Aeq=[1, 1, 1, 0, 0, 0; 0, 0, 0, 1, 1, 1];
beq=[30;20];
Lb=zeros(6,1);
Ub=[30;30;30;20;20;20];
options=optimset('LargeScale','on','Display','iter')
[x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,Lb,Ub,[],options)
运行结果如下:

Residuals: Primal Dual Upper Duality Total
Infeas Infeas Bounds Gap Rel
A*x-b A'*y+z-w-f {x}+s-ub x'*z+s'*w Error
-------------------------------------------------------------
Iter 0: 1.31e+003 2.17e+001 4.29e+002 3.03e+004 3.64e+001
Iter 1: 2.96e-013 4.59e-015 0.00e+000 3.19e+003 9.05e-001
Iter 2: 3.76e-014 6.47e-015 0.00e+000 2.86e+002 4.12e-001
Iter 3: 7.91e-014 4.91e-014 0.00e+000 2.64e+001 5.53e-002
Iter 4: 3.50e-013 3.46e-015 5.02e-015 1.80e-001 3.88e-004
Iter 5: 1.91e-013 5.38e-015 0.00e+000 8.98e-006 1.94e-008
Iter 6: 6.04e-014 3.82e-015 3.55e-015 9.51e-013 1.97e-015
Optimization terminated.
x =
8.1081
15.4054
6.4865
0.0000
0.0000
20.0000
fval =
-462.1622
exitflag =
1
output =
iterations: 6
algorithm: 'large-scale: interior point'
cgiterations: 0
message: 'Optimization terminated.'
lambda =
ineqlin: [2x1 double]
eqlin: [2x1 double]
upper: [6x1 double]
lower: [6x1 double]
exitflag=1表示优化成功,
x =
8.1081
15.4054
6.4865
0.0000
0.0000
20.0000
表示x1=8.1081,x2=15.4054,x3=6.4865
y1=0.0000,y2=0.0000,y3=20.0000时 植树最多。
fval =
-462.1622
表示最大植树数为-462.1622。
为了使结果更有说服力,我用Lingo也做了一遍,结果如下:Global optimal solution found.
Objective value: 462.1622
Infeasibilities: 0.000000
Total solver iterations: 5

Variable Value Reduced Cost
X2 15.40541 0.000000
Y2 0.000000 0.000000
X1 8.108108 0.000000
X3 6.486486 0.000000
Y1 0.000000 1.351351
Y3 20.00000 0.000000

Row Slack or Surplus Dual Price
1 462.1622 1.000000
2 0.000000 8.108108
3 0.000000 5.405405
4 0.000000 0.4054054
5 0.000000 0.3243243
6 8.108108 0.000000
7 15.40541 0.000000
8 6.486486 0.000000
9 0.000000 0.000000
10 0.000000 0.000000
11 0.000000 0.000000
12 21.89189 0.000000
13 14.59459 0.000000
14 23.51351 0.000000
15 20.00000 0.000000
16 20.00000 0.000000
17 0.000000 5.540541
两者的结果完全一样,使我们对结果更有信心。
最后, 希望能帮到你。
温馨提示:内容为网友见解,仅供参考
无其他回答

数学建模,关于MATLAB的问题,急死我了
(1) 用x1,x2,x3分别表示男生挖坑,栽树,浇水的人数。y1,y2,y3分别表示女生挖坑,栽树,浇水的人数。必须满足一下约束条件:x1+x2+x3=30 y1+y2+y3=20(保证全部人都参加劳动)20x1+10y1>=30x2+20y2 (挖坑数不少于栽树的数量)25x3+15y3>=30x2+20y2 (浇水的数量不少于栽树...

数学建模MATLAB程序看不太明白,求指点
题主给出的算例是斐波那契数列计算。其中题主框出的代码的意思是这样的:X=[]; %对变量初始化,清零 for k=1:7 %循环语句计算每列斐波那契数列 X=[X,myfib(k)]; %调用斐波那契数列计算函数,并储存在X向量数组里 end %结束循环 X %显示斐波那契数列 如x=1,2,3……7分别带入myfib...

数学建模问题,matlab
你这个题目的意思应该是让你用多项式拟合的结果求解第三问。第二问多项式拟合可以用polyfit函数实现。用第一个函数形式,其中的三个参数分别是已知点的横纵坐标(x,y)和多项式阶数(n),p为多项式系数,降幂排列。你可以根据自己需要写循环计算不同阶数下的拟合多项式,然后对拟合结果进行评价,可以用SS...

数学建模MATLAB问题两道!求大神!急!在线等!
1、clc,clear,close FS=ceil(100*rand(500,1));hist(FS,10);2、clc,clear,close x距离(m),y时间(s)x=[ 50;100;200;400;800;1500];y=[21.81;48.42;106.69;225;466.60;863.48];plot(x,y,'o');hold on p=fittype('a*x.^b','independent','x');f=fit(x,y,p)plot(...

求救,关于数学建模,MATLAB多元非线性拟合
根据数据,其多元非线性拟合函数为 y=a(1)*(x1-22)^2 + a(2)*(x2-113)^2 + a(3)该拟合问题可以用nlinfit()命令函数来实现。实现代码:x1=[22.9908325 22.99456666 23.00022308 23.0024026 23.00421017]';x2=[113.0723102 113.1409256 113.1080614 113.0651869 113.0704232]';y=[68...

数学建模关于matlab、等差数列的
start_y = 1;步长 step_x = -1;step_y = 1;要求计算的点的个数 num_point = 5;产生等差数列 point_x = start_x:step_x:start_x + (num_point-1)*step_x;point_y = start_y:step_y:start_y + (num_point-1)*step_y;显示数值 disp(point_x)disp(point_y)绘图 plot(point_...

做数学建模要学MATLAB的哪些内容
在进行数学建模时,熟练掌握MATLAB是非常重要的。我总结了几点关键内容,希望对你有所帮助。首先,理解并掌握矩阵的表示和操作是基础。包括加减乘除、转置、求逆等操作,这些是进行数学运算的基础。掌握矩阵操作可以帮助你更高效地处理数据。其次,学习如何使用M文件编程是必不可少的。尽管MATLAB语言与C语言...

怎么用MATLAB数学建模?
1、题中的决策者可以认为是消费者;2、运用预期效用函数来计算,即 3、比较E的大小,选择E值大的。就是决策者应选择的产品。4、用matlab实现上述要求,可以这样书写其程序。1)创建一个x从0到10的数组 2)创建u1(x),u2(x)效用函数 3)用plot绘图函数,绘制决策者的效用函数曲线 4)用xlabel和...

MATLAB在数学建模上的使用如此繁多,主要的使用点是哪些呢?
说老实话,你问的太笼统,这是一个太大的问题,我试着从数学建模的过程方面说一下吧,不见得能回答完全。不选择从知识点上来解答是因为知识点太多,难以罗列。1、在数学模型的建立阶段,可以用simulink等工具进行模拟建模,非常好用;simulink中可以利用matlab中所有的模块进行搭建所需要的模型,模块功能...

求2013年数学建模B题的解第二题思路以及如何运行代码(MATLAB...
2013年数学建模B题的解第二题思路是:问题二,对既纵切又横切的碎片复原。我们建立模型二,给出基于文本行特征的碎 片行分组算法,对行分组碎片进行横向拼接得到复原的碎片行,再对碎片行进行纵向拼 接,得到最终复原结果。这两种拼接策略均为模型一中基于旅行商问题的拼接策略。 其中,文本行特征即为...

相似回答
大家正在搜