数模方法论-线性规划

一、基本概念

        在实际生产过程中,人们经常面临如何有效利用现有资源来安排生产,以实现最大经济效益的问题。这类问题构成了运筹学的一个重要分支——数学规划,而线性规划(Linear Programming, LP)是数学规划中的一个关键领域。线性规划是一种用于解决优化问题的数学方法,其主要目标是最大化或最小化一个线性目标函数,同时满足一系列线性约束条件。

目标函数

          线性规划的目标是优化一个线性目标函数。假设有n个决策变量x_1, x_2, \ldots, x_n,目标函数可以表示为:

\text{Maximize (or Minimize)} \quad z = c_1 x_1 + c_2 x_2 + \cdots + c_n x_n

        其中,c_1, c_2, \ldots, c_n是目标函数的系数。

约束条件

线性规划问题需要满足一组线性约束条件。这些约束条件可以是以下形式的线性不等式或等式:

a_{11} x_1 + a_{12} x_2 + \cdots + a_{1n} x_n \leq b_1\\ a_{21} x_1 + a_{22} x_2 + \cdots + a_{2n} x_n \leq b_2\\ \vdots\\ a_{m1} x_1 + a_{m2} x_2 + \cdots + a_{mn} x_n \leq b_m

        其中,a_{ij}是约束条件中的系数,b_i 是约束条件的常数项。

非负约束

        通常情况下,线性规划问题要求所有的决策变量都是非负的,即:

x_i \geq 0 \quad \text{for} \; i = 1, 2, \ldots, n

标准形式

        为了便于求解,线性规划问题通常会被转化为标准形式。标准形式要求:

  • 目标函数为最大化形式:

\text{Maximize} \quad z = c_1 x_1 + c_2 x_2 + \cdots + c_n x_n \\

  • 所有约束条件为等式形式:

a_{11} x_1 + a_{12} x_2 + \cdots + a_{1n} x_n = b_1 \\ a_{21} x_1 + a_{22} x_2 + \cdots + a_{2n} x_n = b_2 \\ \quad \vdots \\ a_{m1} x_1 + a_{m2} x_2 + \cdots + a_{mn} x_n = b_m \\

  • 所有决策变量非负:

x_i > 0 \quad \text{for} \ i = 1, 2, \ldots, n

图1 《数学建模算法与应用》(第二版)中的例题

二、求解方法

线性规划的求解方法包括:

  • 单纯形法(Simplex Method):这是最常用的线性规划求解方法,通过在一个多面体的顶点上移动来寻找最优解。
  • 内点法(Interior-Point Method):这是一种通过迭代在可行区域的内部寻找最优解的方法,适用于大规模问题。

现在的数模竞赛都是使用软件进行求解,首先需要列出线性规划的标准形式,然后再编写求解程序,例如求解以下线性规划问题:

1、将问题转化成标准形式

2、编写求解代码

Python代码:

import numpy as np
from scipy.optimize import linprog# 定义目标函数系数
f = [-2, -3, 5]# 定义约束矩阵和约束向量
A = [[-2, 5, -1], [1, 3, 1]]
b = [-10, 12]# 定义等式约束矩阵和等式约束向量
A_eq = [[1, 1, 1]]
b_eq = [7]# 调用 linprog 进行线性规划
result = linprog(c=f, A_ub=A, b_ub=b, A_eq=A_eq, b_eq=b_eq, bounds=[(0, None)]*3)# 提取结果
x = result.x
y = -result.funprint("x:", x)
print("y:", y)

matlab代码: 

f=[-2; -3; 5];
a=[-2,5,-1;1,3,1]; b=[-10;12];
aeq=[1,1,1];
beq=7;
[x,y]=linprog(f,a,b,aeq,beq,zeros(3,1));
x, y=-y

三、应用实例

线性规划可以应用于多个实际问题,包括:

  • 生产调度:如何安排生产以最小化成本或最大化利润。
  • 运输问题:如何将货物从多个供应点运输到多个需求点,以最小化运输成本。
  • 金融投资:如何在不同的投资组合中分配资金,以最大化收益或最小化风险。

1、生产调度问题

        农作物的种植策略(2024国赛c题目):该问题可以使用线性规划来求解,思路可参考下面的文章2024 年高教社杯全国大学生数学建模竞赛C题—农作物的种植策略(讲解+代码+成品论文助攻,均已更新完毕)_农作物的替补与互补性-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/qq_41489047/article/details/141961294

2、投资的收益和风险

 1、问题假设(符合假设和条件假设)

  2、模型分析与建立

 

 

3、 模型求解

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import linprog# 初始化变量
a = 0# 准备绘图
plt.figure()
plt.ion()  # 开启交互模式while a < 0.05:# 定义目标函数系数c = [-0.05, -0.27, -0.19, -0.185, -0.185]# 定义不等式约束矩阵和向量A = np.hstack((np.zeros((4, 1)), np.diag([0.025, 0.015, 0.055, 0.026])))b = a * np.ones(4)# 定义等式约束矩阵和向量A_eq = [1, 1.01, 1.02, 1.045, 1.065]b_eq = 1# 定义下界bounds = [(0, None)] * 5# 求解线性规划result = linprog(c, A_ub=A, b_ub=b, A_eq=[A_eq], b_eq=[b_eq], bounds=bounds)# 提取结果x = result.xQ = -result.fun# 绘图plt.plot(a, Q, '*k')# 更新变量a += 0.001# 设置标签和标题
plt.xlabel('a')
plt.ylabel('Q')
plt.show()

matlab代码:

clc,clear
a=0;
hold on
while a<0.05c=[-0.05,-0.27,-0.19,-0.185,-0.185];A=[zeros(4,1),diag([0.025,0.015,0.055,0.026])];b=a*ones(4,1);Aeq=[1,1.01,1.02,1.045,1.065];beq=1;LB=zeros(5,1);[x,Q]=linprog(c,A,b,Aeq,beq,LB);Q=-Q;plot(a,Q,'*k');a=a+0.001;
end
xlabel('a'),ylabel('Q')

4、分析结果

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

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

相关文章

Facebook的虚拟现实计划:未来社交的全新视角

随着科技的不断进步&#xff0c;虚拟现实&#xff08;VR&#xff09;正逐步成为我们日常生活的一部分。作为全球领先的社交平台&#xff0c;Facebook正在大力投入虚拟现实技术&#xff0c;以重新定义社交互动的方式。本文将深入探讨Facebook的虚拟现实计划&#xff0c;分析其如…

网络高级(学习)2024.9.11

目录 Modbus库函数 1.初始化和释放函数 2.功能函数 3.功能案例 Modbus RTU 1.特点 2.协议格式 3.编程思路 Modbus库函数 1.初始化和释放函数 modbus_t* modbus_new_tcp(const char *ip, int port) 功能&#xff1a;以TCP方式创建Modbus实例&#xff0c;并初始化 参数…

基于vue框架的城市智慧地铁管理系统73c2d(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,站点查询,车次线路,站点周边 开题报告内容 基于Vue框架的城市智慧地铁管理系统开题报告 一、研究背景与意义 1.1 研究背景 随着城市化进程的加速和人口的不断增长&#xff0c;城市交通压力日益增大。地铁作为城市公共交通的重要…

C++--模板

1 泛型编程 如何将Swap实现乘成一个通用的交换函数 void Swap(int& left, int& right) {int temp left;left right;right temp; }void Swap(double& left, double& right) {double temp left;left right;right temp; }void Swap(char& left, char&…

深入理解Java虚拟机:Jvm总结-Java内存区域与内存溢出异常

第二章 Java内存区域与内存溢出异常 2.1 意义 对于C、C程序开发来说&#xff0c;程序员需要维护每一个对象从开始到终结。Java的虚拟自动内存管理机制&#xff0c;让java程序员不需要手写delete或者free代码&#xff0c;不容易出现内存泄漏和内存溢出问题&#xff0c;但是如果…

【网络安全】-文件上传漏洞

文件操作漏洞包括文件上传漏洞&#xff0c;文件包含漏洞&#xff0c;文件下载漏洞。 文章目录 前言 什么是文件上传漏洞&#xff1f; 文件上传的验证与绕过&#xff1a; 1.前端js验证&#xff1a;   Microsft Edge浏览器&#xff1a; Google Chrome浏览器&#xff1a; 2.后端…

Taro实现微信小程序自定义拍照截图识别

效果图&#xff1a; 代码&#xff1a; <template><view class"lary-top" :style"{ height: ${topBarHight}px }"></view><Camerav-show"!canvasShow"class"camera-photo":style"{width: ${info.windowWidt…

LIO-SAM如何保存地图

一、找到LIO-SAM配置文件&#xff0c;路径为config/params.yaml&#xff0c;修改以下两项参数&#xff1a; savePCD: true # https://github.com/TixiaoShan/LIO-SAM/issues/3savePCDDirectory: "/home/slam/catkin_ws/src/maps" …

Http带消息头两种请求办法

API接口最近经常碰到&#xff0c;协调几个乙方来回对接&#xff0c;把我折腾晕了&#xff0c;索性自己写一个小的工具&#xff0c;导入历史数据。 获取平台免登录token 接口说明 URL Path&#xff1a;gateweb/bigm-dm/openApi/ologin/openLogin 说明&#xff1a;第三方免登…

Java架构师实战篇Redis亿级数据统计方案

目录 1 Redis亿个keys数据统计方案2 Redis聚合统计(SUNIONSTORE)3 Redis排序统计(LRANGE)4 值状态统计(bitmap)4.1 位图简介4.2 应用场景4.3 常用的命令4 基数统计(SADD)5 总结想学习架构师构建流程请跳转:Java架构师系统架构设计 1 Redis亿个keys数据统计方案 在 Web 和移动…

.NET 一款用于解密web.config配置的工具

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

SpringBoot2:请求处理原理分析-接口参数解析原理(argumentResolvers)

一、知识回顾 我们知道&#xff0c;接口的参数&#xff0c;一般都要配上注解来一起使用。 不同的参数注解&#xff0c;决定了传参的方式不同。 为什么会这样&#xff1f; 如果让你设计接口参数解析&#xff0c;你会怎么做&#xff1f; 首先&#xff0c;我们知道方法参数是形…

机器学习之监督学习(三)神经网络

机器学习之监督学习&#xff08;三&#xff09;神经网络基础 0. 文章传送1. 深度学习 Deep Learning深度学习的关键特点深度学习VS传统机器学习 2. 生物神经网络 Biological Neural Network3. 神经网络模型基本结构模块一&#xff1a;TensorFlow搭建神经网络 4. 反向传播梯度下…

开源的 Windows 12 网页体验版!精美的 UI 设计、丰富流畅的动画

大家周二好呀&#xff01;博主今天给小伙伴们分享一款炫酷的 Windows 12 体验版&#xff0c;网页效果拉满&#xff0c;非常值得我们去尝试&#xff01; 如果你对未来的Windows操作系统充满期待&#xff0c;那么这款开源的Windows 12 网页体验版绝对不容错过&#xff01;这不仅…

consul配置ACL安全认证

文章目录 前言一、漏洞详情二、漏洞处理1.ACL相关介绍2.开启ACL3.创建令牌4.修改acl文件5.修改单节点consul启动配置文件6.重启consul 三、漏洞处理结果验证 前言 因为现阶段属于护网期,因此公司对服务器、业务的安全都很关注,只要再次期间被漏扫出来的漏洞&#xff0c;都需要…

tomcat是不是已经被Springboot集成了?

Tomcat 确实已经被 Spring Boot 集成。Spring Boot 通过其独特的“starter”模块&#xff08;如spring-boot-starter-web&#xff09;实现了对Tomcat的自动配置。当在Spring Boot项目中引入这个starter时&#xff0c;会自动引入相关的依赖&#xff0c;包括tomcat-embed-core、t…

C语言补习课——文件篇

来源&#xff1a;黑马程序员 第157讲 C语言操作文件概述 读取文件&#xff1a;输入流 写文件&#xff1a;输出流 读写的方向判断取决与参照&#xff0c;一般我们站在程序的角度判断读写方向。 第158讲 路径 基本概念 路径就是指文件在电脑中的位置&#xff0c;eg&#xf…

阿里旗下土耳其电商Trendyol计划进军欧洲市场

阿里旗下土耳其电商Trendyol计划进军欧洲市场 近年来&#xff0c;阿里巴巴集团在全球电商领域的布局持续深化&#xff0c;其旗下土耳其电商巨头Trendyol更是凭借其出色的市场表现和强劲的增长势头&#xff0c;成为了备受瞩目的焦点。近日&#xff0c;Trendyol宣布了一项重要战…

Java初步

背景 名字 Oak&#xff08;橡树&#xff09;改到一个岛&#xff08;疑似盛产咖啡&#xff09; Java之父 詹姆斯高斯林&#xff08;James Gosling&#xff09; sun公司研发 现在属于Oracle公司 把它称为甲骨文公司 应用 企业级应用开发 重点学习JavaSE&#xff08;Standa…

线性代数 第六讲 特征值和特征向量_相似对角化_实对称矩阵_重点题型总结详细解析

文章目录 1.特征值和特征向量1.1 特征值和特征向量的定义1.2 特征值和特征向量的求法1.3 特征值特征向量的主要结论 2.相似2.1 相似的定义2.2 相似的性质2.3 相似的结论 3.相似对角化4.实对称矩阵4.1 实对称矩阵的基本性质4.2 施密特正交化 5.重难点题型总结5.1 判断矩阵能否相…