线性规划在数学建模中的两道例题

news/2024/11/16 1:49:46/文章来源:https://www.cnblogs.com/dlmuwxw/p/18352753

目录
  • 一、生产决策问题
    • 1.问题分析
    • 2.模型建立
      • (1)符号设定
      • (2)目标函数建立
      • (3)约束建立
    • 3.代码求解
      • (1)输入系数向量
      • (2)输入不等式约束
      • (3)输入等式约束与上下界
      • (4)进行求解
  • 二、投料问题
    • 1.问题分析
    • 2.模型建立
      • (1)符号设定
      • (2)目标函数建立
      • (3)约束建立
    • 3.代码求解
      • (1)输入系数向量
      • (2)输入不等式约束
      • (3)输入等式约束与上下界
      • (4)进行求解

一、生产决策问题

1.问题分析

本题最终是要求一个利润最大化,由此得知是一个规划问题,因此我们需要设定一些符号,将目标函数写出来,再进一步写出约束

2.模型建立

(1)符号设定

由于三种产品需要经过两道工序,两道工序中又分别有不同的机器,不妨把一种产品经过一道工序设为一个变量,这样才能不重不漏。
因此对产品I来说,设以A1、A2,完成A工序的产品分别为x1、x2件,转入B工序时,以 B1、B2、B3完成B工序的产品分别为x3、x4、x5件;对产品Ⅱ来说,设以A1、A2完成A工序的产品分别为x6、x7件,转入B工序时,以B1完成B工序的产品为x8件;对产品Ⅲ来说,设以A2完成A工序的产品为x9件,则以B,完成B工序的产品也为x9件。
此外,每一种产品经过A工序和B工序的产品数量是一样的,因此我们需要加上约束:x1+x2=x3+x4+x5;x6+x7=x8

(2)目标函数建立

先计算出某种设备平均每台时需要的费用,再用产品单件工时乘以这个值,就可以得到某工件再设备上所花费用

(3)约束建立

3.代码求解

(1)输入系数向量

因为我们的变量有9个,因此先初始化一个9行的列向量,再往里面添数

format long g   %可以将Matlab的计算结果显示为一般的长数字格式(默认会保留四位小数,或使用科学计数法)
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;
c = -c;  % 我们求的是最大值,所以这里需要改变符号

(2)输入不等式约束

我们有9个变量,因此矩阵的列数为9,又由于我们有5个约束,因此行数为5。初始化的好处就是,直接往里面添数即可,不需要的地方直接为0。

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]';

(3)输入等式约束与上下界

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);

(4)进行求解

[x fval] = linprog(c, A, b, Aeq, beq, lb)
fval = -fval
% fval =
% 1146.56650246305
% 注意,本题应该是一个整数规划的例子,我们在后面的整数规划部分再来重新求解。
intcon = 1:9;
[x,fval]=intlinprog(c,intcon,A,b,Aeq,beq,lb)
fval = -fval

二、投料问题

1.问题分析

本题也是一个规划问题,规划问题的第一要素就是要定义变量,然后写出目标函数与约束。所定义的变量一定是要便于在编程中好体现写出目标函数与约束的。首先在约束中,我们肯定是想写出距离矩阵,然后再定义一个矩阵,代表i料场向j工地运输aij吨,这样求点积分使其最小就可以了。但遗憾的是matlab对线性规划的标准型不允许矩阵的存在,因此我们的变量只能是一个列向量,在处理的时候,将这个向量拼凑成一个矩阵即可

2.模型建立

(1)符号设定


(2)目标函数建立

(3)约束建立

3.代码求解

(1)输入系数向量

这里计算距离非常巧妙,让把j的循环写在前面,让后再循环i,分别得到料场到工地的距离

a=[1.25  8.75  0.5  5.75  3  7.25];  % 工地的横坐标
b=[1.25  0.75  4.75	5  6.5  7.25];   % 工地的纵坐标
x = [5  2];  % 料场的横坐标
y = [1  7];  % 料场的纵坐标
c = [];  % 初始化用来保存工地和料场距离的向量 (这个向量就是我们的系数向量)
for  j =1:2for i = 1:6c = [c;  sqrt( (a(i)-x(j))^2 + (b(i)-y(j))^2)];  % 每循环一次就在c的末尾插入新的元素end
end

(2)输入不等式约束

我们有12个变量,因此矩阵的列数为12,又由于我们有2个约束,因此行数为2。

A =zeros(2,12);
A(1,1:6) = 1;
A(2,7:12) = 1;
b = [20,20]';

(3)输入等式约束与上下界

Aeq = zeros(6,12);  
for i = 1:6Aeq(i,i) = 1;  Aeq(i,i+6) = 1;
end
% Aeq = [eye(6),eye(6)]  % 两个单位矩阵横着拼起来
beq = [3 5 4 7 6 11]';  % 每个工地的日需求量
lb = zeros(12,1);

(4)进行求解

[x fval] = linprog(c, A, b, Aeq, beq, lb)
x = reshape(x,6,2)  % 将x变为6行2列便于观察(reshape函数是按照列的顺序进行转换的,也就是第一列读完,读第二列,即x1对应x_1,1,x2对应x_2,1)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/781011.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CF1674G Remove Directed Edges 题解

CF1674G 给出一个 \(n\) 点 \(m\) 边的有向无环图,你需要从中移除一些边,使得对于每一个点,其入度减少(如果原来有入边),出度也减少(如果原来有出边)。 当删完边以后,如果有一个点集,满足对于任两点 \((i,j)\) 可以从 \(i\) 走到 \(j\) 或可以从 \(j\) 走到 \(i\),那…

学习Java的第六周

第六周的学习记录来喽,本周按照黑马程序员课程安排,并没有学习新的内容,而是上了专题课:综合案例,通过这些练习题综合练习了前面所学的各个知识点,既复习了前面几周跟着课程自学的Java基础,也在做练习题的过程中“温故而知新”,学到了不少新知识新技巧,总体看来这些习…

Kubernetes-POD的健康检查

目录简介什么是探针Liveness Probe(存活探针)Readiness Probe(就绪探针)Startup Probe(启动探针)什么时候使用探针?何时使用存活探针(Liveness Probe)何时使用就绪探针(Read iness Probe)何时使用启动探针(Startup Probe)容器探测方法exechttpGettcpSocket容器探测…

一些结论

Prufer 序列 Prufer 序列可以将一个带标号 n 个节点的树用 [1,n]中的 n−2 个整数表示,即 n 个点的完全图的生成树与长度为 n−2 值域为 [1,n] 的数列构成的双射。Cayley 定理 节点个数为n的无根标号树的个数为nn-2 扩展 Cayley 定理 1 n个标号节点形成一个有s颗树的森林且给定…

一个适合普通人的兼职平台,在家做也靠谱又能赚钱

随着互联网的普及和远程工作的兴起,找到一份既能赚钱又能在家中舒适的环境下进行的兼职工作变得越来越容易。 今天推荐一个正规靠谱的兼职副业平台,它提供了多种灵活的工作机会,让你在家也能有可观的收入。 这个就是阿里旗下的闲鱼:点击这里安装闲鱼app,直达活动入口。 闲…

M16半履带防空车简介

事情的起因是这样的某不知名OIer在犇犇里面发了一张顺丰快递载着4联装防空炮的照片(虽然显然不是真的)。 我定睛一看。 它拉着的这一坨是来自美国M16半履带防空车的四联装防空炮。1945年5月,德国波西米亚(Bohemia)地区,隶属美军第3军一辆未明单位的M16型半履带装甲车。 那…

[rCore学习笔记 024]多道程序与协作式调度

写在前面 本随笔是非常菜的菜鸡写的。如有问题请及时提出。 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 本节重点 主要是对 任务 的概念进行进一步扩展和延伸:形成任务运行状态:任务从开始到结束执行过程中所处的不同运行状态:未初…

探索-C--高级特性-全-

探索 C# 高级特性(全)原文:Exploring Advanced Features in C# 协议:CC BY-NC-SA 4.0一、受关注的 C# 7 C# 7 于 2017 年 3 月发布,是 Visual Studio 2017 发布的一部分。如上所述。NET Blog 中,C# 7 专注于数据消费、简化代码和提高性能。C# 7 最大的特点是元组和模式匹…

C--编程零基础入门指南-全-

C# 编程零基础入门指南(全)原文:C# Programming for Absolute Beginners 协议:CC BY-NC-SA 4.0一、做好准备 亲爱的读者,欢迎您开始学习编程之旅!电脑、平板电脑、手机和许多其他电子设备都是可编程的,会完全按照人类程序员告诉他们的去做。 编程是一个完全基于逻辑的世…

IOS-AR-游戏开发入门手册-全-

IOS AR 游戏开发入门手册(全)原文:Beginning iOS AR Game Development 协议:CC BY-NC-SA 4.0一、介绍 在本书中,我们将学习如何使用 Unity (Unity3D 2018,或者更常见的是 Unity)的游戏开发软件来创建一个增强现实(或 AR)游戏。在这一章中,我们将介绍 Unity 的下载和安装…

【网络架构系列】内网 DNS 架构之办公网 DNS

需求分析一、DNS 安全性:二、DNS 请求转发能力:三、域名管控和审计能力:架构设计架构分析技术建议需求分析办公网 DNS 不同于业务网 DNS,主要承担的是企业或组织机构内部员工的日常办公的域名解析需求,比如:日常的办公系统的访问:OA/ERP/CRM/财务系统/文件共享系统/内部…