数模 线性规划模型理论与实践

2024-04-13 22:04

本文主要是介绍数模 线性规划模型理论与实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

线性规划模型理论与实践

1.1 线性规划问题

  • 在人们的生产实践中,经常会遇到如何利用现有资源来安排生产,以取得最大经济效益的问题。此类问题构成了运筹学的一个重要分支一数学规划,而线性规划(Linear Programming 简记LP)则是数学规划的一个重要分支。
  • 自从1947年 G . B . D a n t z i g G.B.Dantzig G.B.Dantzig提出求解线性规划的单纯形方法以来,线性规划在理论上趋向成熟,在实用中日益广泛与深入。特别是在计算机能处理成千上万个约束条件和决策变量的线性规划问题之后,线性规划的适用领域更为广泛了,已成为现代管理中经常采用的基本方法之一。

1.1.1 线性规划的实例与定义

1.实例:某机床厂生产甲、乙两种机床,每台销售后的利润分别为 4千元与3千元。生产甲机床需用4、B机器加工,加工时间分别为每台2小时和1小时;生产乙机床需用A、B、C三种机器加工,加工时间为每台各一小时。若每天可用于加工的机器时数分别为A机器10小时、B机器8小时和C机器7小时,问该厂应生产甲、乙机床各几台,才能使总利润最大?

上述问题的数学模型:设该厂生产 x 1 x_1 x1台甲机床和 x 2 x_2 x2台乙机床时总利润最大,则 x 1 , x 2 x_1,x_2 x1,x2应满足
m a x z = 4 x 1 + 3 x 2 (1.1) max\ \ z=4x_1+3x_2\tag{1.1} max  z=4x1+3x2(1.1)

{ 2 x 1 + x 2 ≤ 10 x 1 + x 2 ≤ 8 x 2 ≤ 7 x 1 , x 2 ≥ 0 (1.2) \begin{cases} 2x_1+x_2\le10 \\ x_1+x_2\le8\\ x_2\le7\\ x_1,x_2\ge0 \end{cases}\tag{1.2} 2x1+x210x1+x28x27x1,x20(1.2)

变量 x 1 , x 2 x_1,x_2 x1,x2称之为决策变量,(1.1)式被称为问题的目标函数,(1.2)中的几个不等式是问题的约束条件,记为s.t(即subject to)。

2.定义:

  • 目标函数及约束条件均为线性函数,故被称为线性规划问题。线性规划问题是在一组线性约束条件的限制下,求一线性目标函数最大或最小的问题。
  • 在解决实际问题时,把问题归结成一个线性规划数学模型是很重要的一步,往往也是很困难的一步,模型建立得是否恰当,直接影响到求解。而选适当的决策变量,是我们建立有效模型的关键之一。

1.1.2 线性规划问题的解的概念

1. M a t l a b Matlab Matlab中求解线性规划的基本公式:下式一般求最小值,要求最大值在目标函数前加一个负号即可
m i n x c T x \underset{x}{min}\ \ c^Tx xmin  cTx

s . t . { A x ≤ b A e q ⋅ x = b e q l b ≤ x ≤ u b s.t.\ \ \begin{cases} Ax\le b \\ Aeq\cdot x = beq\\ lb\le x\le ub \end{cases} s.t.   AxbAeqx=beqlbxub

其中c和x为n维向量, A 、 A e q A、Aeq AAeq为适当维数的矩阵, b 、 b e q b、beq bbeq为适当维数的列向量。

  • 第一个式子是目标函数的简化形式;
  • 第二个式子是所有不等式的集合;
  • 第三个式子是所有等的集合;
  • 第四个式子是决策变量的取值范围。

2.一般线性规划问题的(数学)标准型为:
m a x z = ∑ j = 1 n c j x j (1.3) max\ \ z=\sum_{j=1}^nc_jx_j\tag{1.3} max  z=j=1ncjxj(1.3)

s . t . { ∑ j = 1 n a i j x j = b i i = 1 , 2 , 3 , . . . , m x j ≥ 0 j = 1 , 2 , 3 , . . . , n (1.4) s.t.\ \ \begin{cases} \overset{n}{\underset{j=1}{\sum}} a_{ij}x_j=b_i\ \ \ i=1,2,3,...,m \\ \\ x_j\ge0\ \ \ j=1,2,3,...,n \end{cases}\tag{1.4} s.t.   j=1naijxj=bi   i=1,2,3,...,mxj0   j=1,2,3,...,n(1.4)

3.基础概念:

  • 可行解:满足约束条件(1.4)的解 x = [ x 1 , x n ] T x=[x_1,x_n]^T x=[x1,xn]T,称为线性规划问题的可行解。
  • 最优解:使目标函数(1.3)达到最大值的可行解叫最优解。
  • 可行域:所有可行解构成的集合称为问题的可行域,记为R。

1.1.3 线性规划的 M a t l a b Matlab Matlab标准形式及软件求解

1.线性规划的目标函数可以是求最大值,也可以是求最小值,约束条件的不等号可以是小于号也可以是大于号。为了避免这种形式多样性带来的不便, M a t l a b Matlab Matlab中规定线性规划的标准形式为:
m i n x c T x \underset{x}{min}\ \ c^Tx xmin  cTx

s . t . { A x ≤ b A e q ⋅ x = b e q l b ≤ x ≤ u b s.t.\ \ \begin{cases} Ax\le b \\ Aeq\cdot x = beq\\ lb\le x\le ub \end{cases} s.t.   AxbAeqx=beqlbxub

其中, c , x , b , b e q , l b , u b c,x,b,beq,lb,ub c,x,b,beq,lb,ub为列向量, f f f称为价值向量, b b b称为资源向量, A 、 A e q A、Aeq AAeq为矩阵。

2. M a t l a b Matlab Matlab 中求解线性规划的命令为:

[x,fval]=linprog(c,A,b)
[x,fval]=linprog(c,A,b,Aeq,beq)
[x,fval]= linprog(c,A,b,Aeq,beq,lb,ub)

其中 x x x返回的是决策向量的取值, f v a l fval fval返回的是目标函数的最优值, c c c为价值向量, A , b A,b A,b对应的是线性不等式约束, A e q , b e q Aeq,beq Aeq,beq对应的是

线性等式约束, l b lb lb u b ub ub分别对应的是决策向量的下界向量和上界向量。

3.实例速递:( M a t l a b Matlab Matlab只能求最小值,最大值不是标准形式)

其中,所有的系数都加上了一个负号是因为在用 M a t l a b Matlab Matlab求解最大值。

1.1.4 可以转化为线性规划问题------构造

1.例题:

1.2 投资的收益和风险

1.2.1 问题提出

1.2.2 符号规定和基本假设

1.符号规定:

2.基本假设:

  • 投资数额 M M M相当大,为了便于计算,假设 M = 1 M=1 M=1
  • 投资越分散,总的风险越小;
  • 总体风险用投资项目 S i S_i Si中最大的一个风险来度量;
  • n + 1 n+1 n+1种资产 S i S_i Si之间是相互独立的;
  • 在投资的这一期间内, r i , p i , q i r_i,p_i,q_i ri,pi,qi为定值,不受意外因素影响;
  • 净收益和总体风险只受 r i , p i , q i r_i,p_i,q_i ri,pi,qi​影响,不受其它因素干扰。

1.2.3 模型的分析与建立

1.总体风险用所投资的 S i S_i Si中最大的一个风险来衡量,即
m a x { q i x i ∣ i = 1 , 2 , L , n } max\{q_ix_i|i=1,2,L,n\} max{qixii=1,2,L,n}
2.购买 S i ( i = 1 , L , n ) S_i(i=1,L,n) Si(i=1,L,n)所付交易费是一个分段函数,即
交易费 = { p i x i , x i ≥ u i p i u i , x i ≤ u i 交易费= \begin{cases} p_ix_i,\ \ \ x_i\ge u_i \\ p_iu_i,\ \ \ x_i\le u_i \end{cases} 交易费={pixi,   xiuipiui,   xiui
而题目i所给的定值 u i u_i ui(单位:元)相对总投资 M M M很少, p i u i p_iu_i piui更小,这样购买 S i S_i Si的净收益可以简化为 ( r i − p i ) x i (r_i-p_i)x_i (ripi)xi

3.要使净收益尽可能大,总体风险尽可能小,这是一个多目标规划模型。

目标函数为:
{ m a x ∑ i = 0 n ( r i − p i ) x i m i n m a x { q i x i } ( ) \begin{cases} max\ \overset{n}{\underset{i=0}{\sum}}(r_i-p_i)x_i\\ min\ \ max\{q_ix_i\}() \end{cases} max i=0n(ripi)ximin  max{qixi}()
约束条件为:
{ ∑ i = 0 n ( 1 + p i ) x i = M x i ≥ 0 , i = 0 , 1 , . . . , n \begin{cases} \overset{n}{\underset{i=0}{\sum}}(1+p_i)x_i=M\\ x_i\ge0,\ \ i=0,1,...,n \end{cases} i=0n(1+pi)xi=Mxi0,  i=0,1,...,n
这是一个多模规划,不仅要找到净收益的最大值,还要找到风险评估的最小值,所以我们要把多模规划化简到单目标线性规划。

4.一共有三种方法:

①在实际投资中,投资者承受的风险程度不一样,若给定一个界限a,使最大的一个风险 q i x i M ≤ a \dfrac{q_ix_i}{M}\le a Mqixia,可以找到相应的投资方案,这样就把多目标规划变成一个目标的线性规划。

  • 模型一:固定风险水平,优化收益

  • 模型二:固定盈利水平,极小化风险

②投资者在权衡资产风险和预期收益两方面时,希望选择一个令自己满意的投资组合。因此对风险、收益分别赋予权重s(0<s≤1)和(1-s),s称为投资偏好系数。

  • 模型三:综合考虑

1.2.4 模型求解

1.以模型一求解为例:

由于a是任意给定的风险度,到底怎样没有一个准则,不同的投资者有不同的风险度。我们从a=0开始,以步长 Δ a = 0.001 \Delta a=0.001 Δa=0.001进行循环搜索,编制程序如下:

通过 M a t l a b Matlab Matlab运行可以得到下图所示的结果:

通过上图可以看出:

  • 风险大,收益也大;
  • 当投资越分散时,投资者承担的风险越小,这与题意一致。冒险的投资者会出现集中投资的情况,保守的投资者则尽量分散投资;
  • 在a=0.006附近有一个转折点,在这一点左边,风险增加很少时,利润增长很快。在这一点右边,风险增加很大时,利润增长很缓慢,所以对于风险和收益没有特殊偏好的投资者来说,应该选择曲线的转折点作为最优投资组合,大约是a=0.6%,Q=20%,所对应投资方案为:
    风险度a=0.006,收益Q=0.2019, x 0 = 0 x_0=0 x0=0 x 1 = 0.24 x_1=0.24 x1=0.24 x 2 = 0.4 x_2=0.4 x2=0.4 x 3 = 0.1091 x_3= 0.1091 x3=0.1091 x 4 = 0.2212 x_4= 0.2212 x4=0.2212

这篇关于数模 线性规划模型理论与实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/901341

相关文章

Spring WebFlux 与 WebClient 使用指南及最佳实践

《SpringWebFlux与WebClient使用指南及最佳实践》WebClient是SpringWebFlux模块提供的非阻塞、响应式HTTP客户端,基于ProjectReactor实现,... 目录Spring WebFlux 与 WebClient 使用指南1. WebClient 概述2. 核心依

MyBatis-Plus 中 nested() 与 and() 方法详解(最佳实践场景)

《MyBatis-Plus中nested()与and()方法详解(最佳实践场景)》在MyBatis-Plus的条件构造器中,nested()和and()都是用于构建复杂查询条件的关键方法,但... 目录MyBATis-Plus 中nested()与and()方法详解一、核心区别对比二、方法详解1.and()

Spring Boot @RestControllerAdvice全局异常处理最佳实践

《SpringBoot@RestControllerAdvice全局异常处理最佳实践》本文详解SpringBoot中通过@RestControllerAdvice实现全局异常处理,强调代码复用、统... 目录前言一、为什么要使用全局异常处理?二、核心注解解析1. @RestControllerAdvice2

Spring事务传播机制最佳实践

《Spring事务传播机制最佳实践》Spring的事务传播机制为我们提供了优雅的解决方案,本文将带您深入理解这一机制,掌握不同场景下的最佳实践,感兴趣的朋友一起看看吧... 目录1. 什么是事务传播行为2. Spring支持的七种事务传播行为2.1 REQUIRED(默认)2.2 SUPPORTS2

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

MySQL 中 ROW_NUMBER() 函数最佳实践

《MySQL中ROW_NUMBER()函数最佳实践》MySQL中ROW_NUMBER()函数,作为窗口函数为每行分配唯一连续序号,区别于RANK()和DENSE_RANK(),特别适合分页、去重... 目录mysql 中 ROW_NUMBER() 函数详解一、基础语法二、核心特点三、典型应用场景1. 数据分

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实

MySQL 用户创建与授权最佳实践

《MySQL用户创建与授权最佳实践》在MySQL中,用户管理和权限控制是数据库安全的重要组成部分,下面详细介绍如何在MySQL中创建用户并授予适当的权限,感兴趣的朋友跟随小编一起看看吧... 目录mysql 用户创建与授权详解一、MySQL用户管理基础1. 用户账户组成2. 查看现有用户二、创建用户1. 基

Spring Boot 实现 IP 限流的原理、实践与利弊解析

《SpringBoot实现IP限流的原理、实践与利弊解析》在SpringBoot中实现IP限流是一种简单而有效的方式来保障系统的稳定性和可用性,本文给大家介绍SpringBoot实现IP限... 目录一、引言二、IP 限流原理2.1 令牌桶算法2.2 漏桶算法三、使用场景3.1 防止恶意攻击3.2 控制资源

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再