数学建模--Matlab求解线性规划问题两种类型实际应用

1.约束条件的符号一致

(1)约束条件的符号一致的意思就是指的是这个约束条件里面的,像这个下面的实例里面的三个约束条件,都是小于号,这个我称之为约束条件符号一致;

(2)下面的就是上面的这个线性规划问题的代码,我们首先要把这个目标函数的系数矩阵表示出来,就是这个代码里面的第三行的c向量,然后表示这个约束条件的系数矩阵,因为第三个约束条件是x2<=7.因此这个x1前面的系数就是0,b向量表示的就是这个等号右边的数据;

clc,clear;pro=optimproblem("ObjectiveSense","max");c=[4,3];a=[2,1;1,1;0,1];b=[10;8;7];x=optimvar("x",2,"LowerBound",0);pro.Objective=c*x;pro.Constraints=a*x<=b;[s,v]=solve(pro);xx=s.x

 (3)optimvar表示的就是创建优化变量,在这个问题里面,x1和x2就是优化变量,因为这个优化变量的最小值是0,所以在这个代码里面,我们使用这个lowerbound表示的就是最小边界值,2表示的就是这个问题里面的优化变量的数量是两个;

(4)pro就是我们给这个问题起的一个名字,这个名字变量是可以随意命名的,但是这个过程中的名字要保持一致,c*x表示的就是这个目标函数,我们通过这个矩阵的乘法可以得到这个目标函数

(5)注意事项:上面这个里面老师讲解的时候使用的就是乘号,但是我自己认为应该使用点乘的操作,因为之前我们说过这个向量的乘法,应该使用点乘,但是这个如果使用点乘就会报错;

报错的原因就是这优化变量矩阵x表示的就是一个列向量,就是这个x1x2实际上是2行1列的矩阵,这个点乘的时候矩阵的维数(几行几列)必须是一样的,这个也是报错的提示出来的错误信息;

(6)为什么会出现这个情况,我们可以打开这个optimvar函数的帮助文档,这个里面就有一个例子,说的就是这个创建的是3*1的矩阵,因此,我们可以理解为这个函数创建的矩阵默认就是列向量;

实际上这个matlab里面输入一个向量,这个向量会被默认为是行向量,这个和该函数的默认方式还是有所区别的;

 

(7)同理这个约束条件,就是a*x<=b这个就是组合之后会出现我们现在的约束条件,使用solve函数解决这个pro问题,返回值两个,一个就是s,即两个优化变量的值,val指的就是这个目标函数的最值;

因为这个求解的是最大值,但是这个默认的是最小值,因此在这个optimproblem函数里面,我们使用到了这个objectsence表示的就是相反的意思,意思就是原来默认的是求解最小值,我们使用这个指令之后就会求解出来这个目标函数的最大值,这个也是不需要我们自己记住的,因为这个在我们键入这个optimproblem之后,这个会默认的显示出来,我们只需要使用tab键补充完整就可以了

 

2.约束条件的符号不一致

(2)这个想必你就已经知道了,这个符号不一致的时候,就是需要我们挨个把这个约束条件给罗列出来,而且这个matlab里面不支持这种符号不相同的方程组,只能放在不同的约束条件里面,无法使用一个约束条件统一表示出来,但是python可以;

(2)这个约束条件是写出来了3个,sum就是求解这三个优化变量的和,第二个和第三个就是普通的大于小于条件约束,这个变量x1中的1必须加上括号,否则运行的时候这个系统就会报错,表示这个变量无法识别;

 

(3)p1,p2,p3就是我们给这个约束条件起的名字,上一个题目是只有一个式子就可以表示这三个约束条件,因此我们只写出来了pro.constraints没有写后面的,但是这个里面我们使用的是多个式子,方便区分,我们必须给这三个约束条件命名;

clc,clear;pro=optimproblem("ObjectiveSense","max");c=[2,3,-5];x=optimvar("x",3,"LowerBound",0);pro.Objective=c*x;pro.Constraints.p1=sum(x)==7;pro.Constraints.p2=2*x(1)-5*x(2)+x(3)>=10;pro.Constraints.p3=x(1)+3*x(2)+x(3)<=12;[s,v]=solve(pro)xx=s.x

3.模型的应用

(1)这个就是一个仓库的租借问题;

 (2)

(3)我们通过对于这个模型的分析决定定义4*4的矩阵,这个每一个元素的含义上面有相应的说明,我们使用的就是无符号的,纯数学语言,使用通式进行表示这些变量;

 

(4)这个里面出现了一种符号,x(1,2:4)表示的就是这个矩阵里面的第一行的第二个,第三个和第四个,前面的sum元素就表示对于这三个元素进行求和;

x(1,:)这个就是取出来第一行的元素,哪些列呢,就是1,2,3,4,5一直到最后,我们就可以使用这个里面的冒号进行标识;

(5) 这个里面的问题会有什么,这个下面的就是我自己遇到的问题,这个目标函数我最开始是写了两行的,就是下面这样的,但是无法求解出来正确的结果,这个不是我们语法问题,而是这个换行的格式问题,我们可以写在一行,也可以使用下面的方法:即把加号放在末尾,加上三个点,系统会识别为蓝色的,这样就可以把这两行的内容连接在一起了;

(6)代码自测:

clc,clear;pro=optimproblem;x=optimvar('x',4,4,'LowerBound',0);pro.Objective=2800*sum(x(:,1))+4500*sum(x(1:3,2))+...
6000*sum(x(1:2,3))+7300*x(1,4);pro.Constraints.con=[sum(x(1,:))>=15
sum(x(1,2:4))+sum(x(2,1:3))>=10
x(1,3)+x(1,4)+x(2,2)+x(2,3)+x(3,1)+x(3,2)>=20
x(1,4)+x(2,3)+x(3,2)+x(4,1)>=12];[sol,val]=solve(pro)xx=sol.x

 

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

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

相关文章

我的3次软考高项通关之旅

1、缘起 初次听说软考是在2022年下半年了&#xff0c;软考的高级分为很多种&#xff0c;我起先想报考高级架构师&#xff0c;但是架构师一年才考一次&#xff0c;如果一次考不过得再准备一年&#xff0c;时间对我来说太长了&#xff0c;于是我决定报考一年考两次的高项。对于国…

iPhone怎么恢复删除的数据?几款顶级iPhone数据恢复软件

从iOS设备恢复数据。 对于任何数据恢复软件来说&#xff0c;从iOS设备恢复数据都是一项复杂的任务&#xff0c;因为Apple已将众多数据保护技术集成到现代iPhone和iPad中。其中包括硬件加密和文件级加密。iOS 上已删除的数据只能通过取证文件工件搜索来找到&#xff0c;例如分析…

抖音集团基于 Apache Doris 的实时数据仓库实践

作者&#xff1a;字节跳动数据平台 在直播、电商等业务场景中存在着大量实时数据&#xff0c;这些数据对业务发展至关重要。而在处理实时数据时&#xff0c;我们也遇到了诸多挑战&#xff0c;比如实时数据开发门槛高、运维成本高以及资源浪费等。 此外&#xff0c;实时数据处…

用谷歌Gemini免费批量生成微信公众号图书带货文章

谷歌Gemini 的api现在是免费的&#xff0c;功能很强大。可以在其官网简单几步操作申请到API&#xff1a;https://ai.google.dev/pricing 以上是一些Excel表格中的图书名称&#xff0c;现在要通过谷歌Gemini来批量生成这些图书的带货推广文章。 ChatGPT中输入提示词&#xff1a…

java对word文档预设参数填值并生成

目录 &#xff08;1&#xff09;定义word文档模板 &#xff08;2&#xff09;模板二次处理 处理模板图片&#xff0c;不涉及图片可以跳过 处理模板内容 &#xff08;3&#xff09;java对word模板填值 &#xff08;4&#xff09;Notepad的XML Tools插件安装 工作上要搞一个…

C#与工业自动化结合还有搞头吗?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「c#的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“666”之后私信回复“666”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;当然有搞头&#xff01;C#是一…

Java 8 新特性:Lambda表达式让你的代码焕然一新——掌握它,让编程变得轻松又高效!

前言 Java 8 是 Java 发展史上的一次重要里程碑。作为企业级开发语言&#xff0c;它在性能和功能上做了巨大的提升。这其中&#xff0c;Lambda表达式是一个关键的新特性&#xff0c;它为 Java 语言带来了函数式编程的概念。本篇文章将深入探讨Lambda表达式&#xff0c;并结合热…

element 问题整合

没关系&#xff0c;凡事发生必有利于我 文章目录 一、el-table 同级数据对齐及展开图标的位置问题二、el-table 勾选框为圆角及只能勾选一个 一、el-table 同级数据对齐及展开图标的位置问题 element 官方提供的扩展tree型数据在表格里默认是靠左边对齐&#xff0c;项目需求需要…

超越边界:探索深度学习的泛化力量

深度学习的泛化能力 一. 简介1.1 深度学习的定义1.2 什么是泛化能力1.3 深度学习模型的泛化能力1.4 提升深度学习模型的泛化能力 二. 泛化能力的重要性2.1 深度学习中泛化能力的作用2.1.1 防止过拟合2.1.2 处理噪声和不完整数据2.1.3 对于数据分布的变化具有适应性 2.2 泛化能力…

Gitlab合并代码并解决冲突演示

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

【SQL】数据操作语言(DML) - 删除数据:精细管理数据的利刃

目录 前言 DELETE语句的基础使用 删除指定记录 清空表与删除表数据的区别 注意 前言 在数据库管理的日常工作中&#xff0c;数据的删除是一项需要格外小心的操作&#xff0c;因为一旦数据被删除&#xff0c;往往难以恢复。数据操作语言(DML)中的DELETE语句&am…

景区智能厕所系统让旅游更便捷、更舒适

在旅游业蓬勃发展的今天&#xff0c;游客对于旅游体验的要求越来越高&#xff0c;而景区的基础设施建设也在不断创新和完善。其中&#xff0c;景区智能厕所系统的出现&#xff0c;无疑为游客带来了更加便捷、舒适的旅游体验。 一、智能厕所系统首先体现在其精准的定位和引导功能…

three.js 第六节 - 纹理以及贴图【.hdr文件(hdr贴图)】- 色彩空间

素材 这是素材 更多素材、案例、项目 好几个G一共&#xff0c;加我q178373168&#xff0c;60大洋拿走 源码 源码 // ts-nocheck // 引入three.js import * as THREE from three // 导入轨道控制器 import { OrbitControls } from three/examples/jsm/controls/OrbitControls…

【LeetCode 274】H指数

1. 题目 2. 分析 这题没啥难度&#xff0c;需要熟练运用Python API。 sort(reverseTrue)可以用于排序List&#xff0c;并且倒序排序。 3. 代码 class Solution:def hIndex(self, citations: List[int]) -> int:citations.sort(reverseTrue)res 0for idx,cite in enume…

【毛毛虫案例-拖拽 Objective-C语言】

一、这个毛毛虫案例啊,是这个样子的, 1.首先,你这个脑袋,这个蓝色的脑袋,它是可以拽起来的, 下面的红色球,一个一个中心点之间,相互去附着, 其他的红色球,是拖不起来的, 只有这个蓝色的东西,可以拽起来,这个蓝色的View,还有重力, 这个蓝色的View,我在拖动它…

[深度学习] 变分自编码器VAE

变分自编码器&#xff08;Variational Autoencoders, VAEs&#xff09;是一种生成模型 Tutorial on Variational Autoencoders&#xff0c;它结合了概率图模型和深度学习&#xff0c;通过学习数据的潜在表示来生成新的数据样本。VAEs在数据生成、异常检测、数据压缩等领域具有广…

如何应对UI测试自动化的不稳定循环!

以下为作者观点&#xff1a; 当我加入UI自动化团队时&#xff0c;我很高兴能为新功能的自动化测试用例开发做出贡献。然而&#xff0c;我很快意识到团队花费了大量时间来修复之前迭代中不稳定的测试。这种情况让我感到困惑&#xff0c;因为当自动化测试脚本已知不稳定时&#…

【Windows 常用工具系列 17 -- windows bat 脚本多参数处理】

请阅读【嵌入式开发学习必备专栏】 文章目录 bat 脚本命令行参数使用示例多参数处理使用示例遍历所有参数 bat 脚本命令行参数 在Windows批处理&#xff08;.bat&#xff09;脚本中接收命令行参数是一个常见的需求&#xff0c;这样的脚本能够根据提供的参数执行不同的操作。命…

Kubernetes之Controller详解

本文尝试从Kubernetes Controller的种类、交互逻辑、最佳实践、伪代码示例及历史演进5个方面对其进行详细阐述&#xff0c;希望对您有所帮助&#xff01; 一、Kubernetes Controller种类 Kubernetes Controller Manager 是 Kubernetes 集群的核心组件之一&#xff0c;负责管理…

无线幅频仪制作(WiFi通信)-含STM32源程序,JAVA上位机与设计报告

资料下载地址&#xff1a;无线幅频仪制作(WiFi通信)-含STM32源程序,JAVA上位机与设计报告 目录 项目功能 1、 系统方案1.1 比较与选择 1.1.1 控制器的论证与选择 1.1.2 信号源的论证与选择 1.1.3 放大器模块的论证与选择 1.1.4 键盘与显示模块的论证与选择 1.1.5 网络通…