司守奎《数学建模算法与应用》课后习题:线性规划

这篇具有很好参考价值的文章主要介绍了司守奎《数学建模算法与应用》课后习题:线性规划。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.1、常规求解线性规划

1.2、带有绝对值的线性规划求解

1.3、单下标求解生产利润问题

1.4 、双下标求解利润问题

最后给出一些基础帮助的链接:


1.1、常规求解线性规划

司守奎《数学建模算法与应用》课后习题:线性规划

需要注意三个问题:

1)分清哪些是列向量,哪些是行向量;

2)如“-2x1+x3”中的x2系数为0,但是不能忽略;

3)MATLAB 默认求最小值,那么需要分清哪些需要加负号;

4)求最大值等于加负号后求最小值。

clear;clc
c=[-3,1,1];
a=[1,-2,1;4,-1,-2];
b=[11,-3]';
aeq=[-2,0,1];
beq=1;
lb=zeros(3,1);
[x,fval]=linprog(c,a,b,aeq,beq,zeros(3,1))
z=-fval 

 答案:x1=4,x2=1,x3=9,z=2

1.2、带有绝对值的线性规划求解

司守奎《数学建模算法与应用》课后习题:线性规划

        这种看似非线性的问题 可以转化成线性的问题进行求解:

司守奎《数学建模算法与应用》课后习题:线性规划

clear;clc
c=[1,2,3,4];
aeq=[1,-1,-1,1;1,-1,1,-3;1,-1,-2,3];
beq=[0,1,-0.5]';
prob=optimproblem;
u=optimvar('u',4,'LowerBound',0);
v=optimvar('v',4,'LowerBound',0);
prob.Objective=sum(c*(u+v));
prob.Constraints.con=aeq*(u-v)== beq;
[sol,fval]=solve(prob)
x=sol.u-sol.v

 答案:x1=0.25 x2=x3=0 x4=-0.25 z=1.25

这里补充一些MATLAB的基础知识:

1、prob=optimproblem 创建优化问题

2、

u=optimvar('u',4,'LowerBound',0);
v=optimvar('v',4,'LowerBound',0);

创建优化变量 其中参数意义如下:

‘u’:创建一个名为 u   的标量优化变量

‘4’:创建一个名为 u 的 4×1 优化变量向量,而且是列向量

'LowerBound':是指下界,因为u和v都是大于等于0的,详解看上面的图(UpperBound是上界)

后面接一个标量代表下界(上界为多少)

3、最后用solve函数进行求解,原书里面给的是输出四个参数,但是我这里为了简化,只输出两个参数:sol代表一个类(可能这样解释有误,但我是这么理解的),因为x=u-v,|x|=u+v,所以最后计算出答案,fval就是最优解。

1.3、单下标求解生产利润问题

司守奎《数学建模算法与应用》课后习题:线性规划

司守奎《数学建模算法与应用》课后习题:线性规划

1.目标函数正号的那一部分,是产品的利润和数量的乘积,利润是单价减去原料费。数量应该怎么表示很简单,举个例子:对于产品I必须要经过A1、A2、B1、B2、B3的过程,那么x1+x2就是数量,当然我这里都统一最后的工序的数量。并且有:x1+x2=x3+x4+x5和x6+x7=x8;

2.负号那一部分是计算单位时间的设备费用,这个费用等于满负荷时设备的费用与设备有效台时的比值,原本的分式我都化成小数了。

这里对目标函数进行化简得:

司守奎《数学建模算法与应用》课后习题:线性规划

clear;clc
c=[0.25,0.2247,-0.625,-0.5524,-0.65,0.5,0.2889,-1.15,-0.6839];
a=zeros(5,9);
a(1,1)=5;
a(1,6)=10;
a(2,2)=7;
a(2,7)=9;
a(2,9)=12;
a(3,3)=6;
a(3,8)=8;
a(4,4)=4;
a(4,9)=11;
a(5,5)=7;
b=[6000,10000,4000,7000,4000]';
aeq=[1,1,-1,-1,-1,0,0,0,0;0,0,0,0,0,1,1,-1,0];
beq=[0;0];
lb=zeros(9,1);
[x,fval]=linprog(c,a,b,aeq,beq,lb)
fval=-fval

 答案:x1=1200 x2=230 x3=0 x4=859 x5=571 x6=0 x7=500 x8=500 x9=324 z=1146.4142

1.4 、双下标求解利润问题

司守奎《数学建模算法与应用》课后习题:线性规划

 1)每种货物可以分布在一个或多个货舱内 以及 不同的货物可以放在一个货舱内 这里就说明了要使用双变量进行求解,即用i=1,2,3,4 分别表示货物 1 货物 2 货物 3 和货物 4 ;j=1,2,3 分别表示前船中舱和后舱。那么有设 xij(i=1,2,3,4;j=1,2,3)表示第i种货物装在第j个货舱内的质量;

2)接着我们需要表示题目给出的量:

wj和vj分别表示第j个货舱的重量限制和体积限制;j=1,2,3

ai,bi,ci分别表示货物规格中的重量、单位质量的空间和利润;i=1,2,3,4

3)这里有一个很细节的点:“三个货舱所能装载的货物的重量必须与其最大的容许量成比例”

这句话的意思就是说我们放在某一个货舱内货物重量与其货舱的最大容积的比值是一个常数,这个常数满足三个货舱。

司守奎《数学建模算法与应用》课后习题:线性规划

这里我们可以这样理解:以货物为研究对象,而不是货舱,因为货物可以放在不同的货舱内。举个例子:c1就是货物一的单价,乘上货物一在三个舱里的质量总和

接着我们需要考虑如下约束对象:

1)所放货物总质量不能超过货舱质量限制;(货舱为研究对象)

2)所放货物的空间不能超过货舱的体积限制;(货舱为研究对象)

3)所放货物的总质量不能超过现有货物的总质量;(货物为研究对象)

4)三个货舱所能装载的货物的重量必须与其最大的容许量成比例;(货舱为研究对象)

5)货物质量一定为非负数。

写到这里就有一点感悟啦!对于找约束条件,约束的主体一定是我们构造的决策变量xij,这也就是为什么有3)的约束,而没有对自身体积的约束(因为xij表示质量)

司守奎《数学建模算法与应用》课后习题:线性规划

 因为把双下标的决策变量转化成单下标的变量很麻烦,所以我选择创建优化问题:

clear;clc
a=[18,15,23,12]';% 货物质量
b=[4800,650,580,390];% 单位质量的空间
c=[3100,3800,3500,2850];% 利润
w=[10,16,8];% 质量限制
v=[6800,8700,5300]';% 体积限制
prob=optimproblem('ObjectiveSense','max');% 创建优化问题
x=optimvar('x',4,3,'LowerBound',0);% 创建4X3的优化问题
prob.Objective=c*sum(x,2);% 目标函数 xi1到xi3 是对行求和
% 这样计算的是1X4的行向量c乘上对x行求和后的4X1的列向量得出一个数:利润
con1=sum(x,1)<=w;
con2=(b*x)'<=v;% 1X4 * 4X3 =1X3 对矩阵乘法的基础有要求哇 
con3=sum(x,2)<=a;
con4=[sum(x(:,1))/10==sum(x(:,2))/16;sum(x(:,2))/16==sum(x(:,3))/8];
prob.Constraints.con1=con1;
prob.Constraints.con2=con2;
prob.Constraints.con3=con3;
prob.Constraints.con4=con4;
[sol,fval]= solve (prob)% fval 121515元
sum(sol.x,2)% 第i行代表货物i,第j列代表货舱j,计算货物i的总质量需要把分散在各个货舱的质量都求和

答案:四种货物的质量(吨)分别为:0 15 15.9474 3.0526 总利润(元):1.2152+e5

最后给出一些基础帮助的链接:

求和函数sum

优化问题OptimizationProblem

优化变量optimvar文章来源地址https://www.toymoban.com/news/detail-453881.html

到了这里,关于司守奎《数学建模算法与应用》课后习题:线性规划的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数学建模算法与应用:预测模型(3)案例: SARS 疫情对经济指标影响

    目录         问题描述: 一、建模思路  二、对模型进行分析预测          2.1、对模型进行假设 三、建立灰色预测模型GM(1,1)           3.1、模型的求解(i)商品零售额          3.2、用MATLAB程序,实现(i)商品零售额          3.3、输出结果          3.4、模

    2024年02月07日
    浏览(57)
  • 数学建模-建模算法(4)

    python虽然不是完全为数学建模而生的,但是它完整的库让它越来越适合建模了。 - 线性规划:使用scipy.optimize.linprog()函数   - 整数规划:使用scipy.optimize.linprog()函数,并将目标函数系数转换为整数   - 多元规划:使用scipy.optimize.linprog()函数   - 二次规划:使用scipy.optimize

    2024年02月11日
    浏览(36)
  • 2023年数学建模:逻辑回归在数学建模中的应用

    目录 引言 逻辑回归原理 1. 数学原理 2. 直观解释

    2024年02月09日
    浏览(36)
  • 数学建模学习(2):数学建模各类常用的算法全解析

    常见的评价算法  1.层次分析法 基本思想         是定性与定量相结合的多准则决策、评价方法。将决策的有关元素分解成 目标层、准则层和方案层 ,并通过人们的 判断对决策方案的 优劣进行排序 ,在此基础上进行定性和定量分析。它把人的思维过程层次化、数量化,

    2024年02月09日
    浏览(48)
  • 2023年数学建模:支持向量机在数学建模中的应用

    目录 引言 支持向量机原理

    2024年02月15日
    浏览(54)
  • 数学建模-退火算法和遗传算法

    退火算法和遗传算法 一.退火算法 退火算法Matlab程序如下: [W]=load(\\\'D:100个目标经度纬度.txt\\\'); 二、遗传算法 [E]=xlsread(\\\'D:100个目标经度纬度\\\');  % 加载敌方 100 个目标的数据, 数据按照表格中的位置保存在纯文本文件 sj.txt 中 x=[E(:,1)]; y=[E(:,2)]; e =[x y]; d1=[70,40]; e =[d1;  e ;d1];

    2024年02月20日
    浏览(55)
  • 数学建模 插值算法

    有问题 牛顿差值也有问题 它们都有龙格现象,一般用分段插值。 插值预测要比灰色关联预测更加准确,灰色预测只有2次 拟合样本点要非常多,样本点少差值合适

    2024年02月16日
    浏览(36)
  • 数学建模——插值算法

    概念:数模比赛中,常常需要根据有已知的函数点进行数、模型处理和分析,而有时候现有的数据是极少的,不足以支撑分析的进行,这时就需要使用一些数学的方法,“模拟产生“一些新的但又比较靠谱的值来满足需求,这就是插值的作用。 一维插值问题: 通过已有的点

    2024年02月16日
    浏览(37)
  • 数学建模之插值算法

    注:本文面向应用,参考了清风大大的资料以及司守奎老师的《数学建模算法与应用》,属作者的个人学习总结。 当已知函数点非常少的时候,我们经常要 模拟产生一些新的函数值 来支撑后续数据分析。这就是插值算法的应用目的。*插值算法还可以用来实现短期预测,但我

    2024年01月24日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包