司守奎<数学建模算法应用>第二版----第一章习题解答

司守奎<数学建模算法应用>第二版----第一章习题解答

1.1

题目

在这里插入图片描述
这道题就是简单的一个线性规划模型,不要求我们自行建立,所以就按照书本上的例题去写就行

代码

% 例题1
%使用matlab解决线性规划问题
%目标函数:z=3x1-x2-x3
% 要求x1,x2,x3都是下限大于0
c=[-3,1,1]';
A=[1,-2,1;
    4,-1,-2];
b=[11,-3]';
Aeq=[-2,0,1];
beq=1;
lb=zeros(3,1);
ub=[];%对上限没有要求
[x,fval]=linprog(c,A,b,Aeq,beq,lb,ub)

运行结果如图所示
在这里插入图片描述

1.2

题目

分别用 M a t l a b 和 L i n g o 求解下列规划问题 : 分别用 Matlab 和 Lingo 求解下列规划问题: 分别用MatlabLingo求解下列规划问题:
min ⁡ z = ∣ x 1 ∣ + 2 ∣ x 2 ∣ + 3 ∣ x 3 ∣ + 4 ∣ x 4 ∣ , \min z=\left|x_{1}\right|+2\left|x_{2}\right|+3\left|x_{3}\right|+4\left|x_{4}\right|, minz=x1+2x2+3x3+4x4,  s. t.  { x 1 − x 2 − x 3 + x 4 = 0 x 1 − x 2 + x 3 − 3 x 4 = 1 , x 1 − x 2 − 2 x 3 + 3 x 4 = − 1 2 \text { s. t. }\left\{\begin{array}{l} x_{1}-x_{2}-x_{3}+x_{4}=0 \\ x_{1}-x_{2}+x_{3}-3 x_{4}=1, \\ x_{1}-x_{2}-2 x_{3}+3 x_{4}=-\frac{1}{2} \end{array}\right.  s. t.  x1x2x3+x4=0x1x2+x33x4=1,x1x22x3+3x4=21
书上例题的解释
在这里插入图片描述

% 例题2
clear;clc
% 由于有绝对值的问题,所以需要将变量进行代换
c=[1:4,1:4]';
%令ui=(xi+|xi|)/2,vi=(|xi|-xi)/2
Aeq=[1,-1,-1,1;
    1,-1,1,-3;
    1,-1,-2,3];
Aeq=[Aeq,-Aeq]
beq=[0,1,-0.5];
[y,z]=linprog(c,[],[],Aeq,beq,zeros(8,1));
x=y(1:4)-y(5:end)
z

运行结果如下:
在这里插入图片描述

1.3

题目

在这里插入图片描述
根据题目要求建立以下规划方程
对于完成产品 I I I来说,设以 A 1 , A 2 A_1,A_2 A1,A2完成 A A A工序的产品分别为 x 1 , x 2 x_1,x_2 x1,x2件,完成 A A A转入 B B B的三道工序 B 1 B 2 B 3 B_1B_2B_3 B1B2B3分别为 x 3 , x 4 , x 5 x_3,x_4,x_5 x3,x4,x5
以此类推,然后建立如下方程
max ⁡ z = ( 1.25 − 0.25 ) ( x 1 + x 2 ) + ( 2 − 0.35 ) x 8 + ( 2.8 − 0.5 ) x 9 − 300 6000 ( 5 x 1 + 10 x 6 ) − 321 10000 ( 7 x 2 + 9 x 7 + 12 x 9 ) − 250 4000 ( 6 x 3 + 8 x 3 ) − 783 7000 ( 4 x 4 + 11 x 9 ) − 200 4000 ∗ 7 x 5 \max z=(1.25-0.25)(x_1+x_2)+(2-0.35)x_8+(2.8-0.5)x_9-\frac{300}{6000}(5x_1+10x_6)\\-\frac{321}{10000}(7x_2+9x_7+12x_9)-\frac{250}{4000}(6x_3+8x_3)-\frac{783}{7000}(4x_4+11x_9)-\frac{200}{4000}*7x_5\\ maxz=(1.250.25)(x1+x2)+(20.35)x8+(2.80.5)x96000300(5x1+10x6)10000321(7x2+9x7+12x9)4000250(6x3+8x3)7000783(4x4+11x9)40002007x5  s. t.  { 5 x 1 + 10 x 6 ≤ 6000 , 7 x 2 + 9 x 7 + 12 x 9 ≤ 10000 , 6 x 3 + 8 x 8 ≤ 4000 4 x 4 + 11 x 9 ≤ 7000 7 x 5 ≤ 4000 , x 1 + x 2 = x 3 + x 4 + x 5 , x 6 + x 7 = x 8 , x i ≥ 0 , i = 1 , 2 , … , 9. \text { s. t. }\left\{\begin{array}{l} 5x_{1}+10x_{6}\le6000, \\ 7x_{2}+9x_{7}+12x_{9}\le10000, \\ 6x_{3}+8x_{8}\le 4000\\ 4x_{4}+11x_{9}\le 7000\\ 7x_5\le 4000,\\ x_1+x_2=x_3+x_4+x_5,\\ x_6+x_7=x_8,\\ x_i\ge0,i=1,2,\dots,9. \end{array}\right.  s. t.  5x1+10x66000,7x2+9x7+12x910000,6x3+8x840004x4+11x970007x54000,x1+x2=x3+x4+x5,x6+x7=x8,xi0,i=1,2,,9.

代码

% 例3
%这道题是实际应用题
%完成工序一共为8个
clear;clc
c = zeros(9,1); % 初始化目标函数的系数向量全为0
c(1) = 1.25 -0.25 -300/6000*5;  % x1前面的系数是c1
c(2) = 1.25 -0.25 -321/10000*7;
c(3) = -250 / 4000 * 6;
c(4)  = -783/7000*4;
c(5) = -200/4000 * 7;
c(6) = -300/6000*10;
c(7) = -321 / 10000 * 9;
c(8) = 2-0.35-250/4000*8;
c(9) = 2.8-0.5-321/10000*12-783/7000*11;% 我们求的是最大值,所以这里需要改变符号
A=[5,zeros(1,4),10,zeros(1,3);
    0,7,zeros(1,4),9,0,12;
    zeros(1,2),6,zeros(1,4),8,0;
    zeros(1,3),4,zeros(1,4),11;
    zeros(1,4),7,zeros(1,4)];
b=[6000,10000,4000,7000,4000]';
aeq=ones(2,9);
aeq(1,3:5)=-aeq(1,3:5);
aeq(2,8)=-aeq(2,8);
aeq(1,6:8)=0;
aeq(2,1:5)=0;
%aeq(6:9)=zeros(1,4)
%aeq=[aeq;aeq];
aeq(:,9)=0
beq=zeros(1,2);
beq=beq';
lb=zeros(9,1);
[x,z]=linprog(-c,A,b,aeq,beq,lb,[]);
%整数规划
intcon=1:9;
[x2,z2]=intlinprog(-c,intcon,A,b,aeq,beq,lb,[])
z2=-z2

在这里插入图片描述

1.4

题目

一架货机有三个货舱:前舱、中舱和后舱。三个货舱所能装载的

货物的最大重量和体积有限制(如表 3 所示)。现有四类货物用该货机进行装运,

货物的规格以及装运后获得的利润如表 4 所示。并且为了飞机的平衡,三个货

舱装载的货物重量必须与其最大的容许量成比例。问应如何装运,使货机飞行利

润最大?
在这里插入图片描述
在这里插入图片描述

假设:

每种货物可以无限细分;

每种货物可以分布在一个或者多个货舱内;

不同的货物可以放在同一个货舱内,并且可以保证不留空隙。

分析

这道题的目标函数还是比较好写的,包括其约束条件也是比较好写,但是货物重量必须与其最大的容许量成比例这个约束条件还是要好好琢磨的

代码

%例题1.4
%本题要求使得飞机利润最大,则目标函数与利润挂钩
clear;clc;
c=zeros(12,1);
c(1)=3100;
c(5)=3100;
c(9)=3100;
c(2)=3800;
c(6)=3800;
c(10)=3800;
c(3)=3500;
c(7)=3500;
c(11)=3500;
c(4)=2850;
c(8)=2850;
c(12)=2850;
A=zeros(10,12);
A(1,1:4)=1;A(2,5:8)=1;A(3,9:12)=1;
A(4,1:4:9)=1;
A(5,2:4:10)=1;
A(6,3:4:11)=1;
A(7,4:4:12)=1;
value=[480,650,580,390];
for i=1:length(value)
    A(8,i)=value(i);
    A(9,i+4)=value(i);
    a(10,i+8)=value(i);
end
A
b=[10,16,8,18,15,23,12,6800,8700,5300]';
Aeq=zeros(3,12);
Aeq(1,1:4)=16;
Aeq(1,4:8)=-10;
Aeq(2,1:4)=8;
Aeq(2,9:12)=-10;
Aeq(3,5:8)=8;
Aeq(3,9:12)=-16;
Aeq
beq=zeros(3,1);
lb=zeros(12,1);
[x,z]=linprog(-c,A,b,Aeq,beq,lb,[]);
x
z=-z

运行结果如下:
在这里插入图片描述

数学建模算法应用 司守奎第二版》是一本非常重要的数学建模教材,旨在帮助读者理解和应用数学建模的基本原理和方法。本书内容丰富,涵盖了数学建模的各个方面。 本书的第一部分介绍了数学建模的基本知识和数学建模的基本流程。从实际问题的提出到解决方案的求解,作者详细介绍了数学建模的一般步骤和方法,并给出了许多实际问题的数学建模示例,帮助读者更好地理解和应用数学建模。 第二部分介绍了数学建模中常用的数学方法和算法。作者详细介绍了线性规划、非线性规划、整数规划、动态规划、图论等数学方法和算法,并给出了大量的数学建模案例,让读者能够深入理解和掌握这些方法和算法的实际应用。 第三部分是数学建模的实例与解答。作者选取了一些经典的数学建模实例,通过详细的描述和分析,展示了数学建模的具体过程和解决方法。同时,作者还给出了这些实例的解答和评价,方便读者检验和了解自己的数学建模能力。 整本书通过丰富的案例、详细的讲解和实例的解答,旨在帮助读者深入理解数学建模的理论与方法,并能够独立解决实际问题。无论是对于学习数学建模的学生还是从事数学建模工作的专业人士,这本书都是一本非常实用的参考书。读者可以通过该书的学习,提高自己的数学建模能力,并能够更好地应用数学建模于实际问题中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值