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

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

相关文章

SQLite3命令行工具最佳实践指南

《SQLite3命令行工具最佳实践指南》SQLite3是轻量级嵌入式数据库,无需服务器支持,具备ACID事务与跨平台特性,适用于小型项目和学习,sqlite3.exe作为命令行工具,支持SQL执行、数... 目录1. SQLite3简介和特点2. sqlite3.exe使用概述2.1 sqlite3.exe

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

Springboot整合Redis主从实践

《Springboot整合Redis主从实践》:本文主要介绍Springboot整合Redis主从的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言原配置现配置测试LettuceConnectionFactory.setShareNativeConnect

java中Optional的核心用法和最佳实践

《java中Optional的核心用法和最佳实践》Java8中Optional用于处理可能为null的值,减少空指针异常,:本文主要介绍java中Optional核心用法和最佳实践的相关资料,文中... 目录前言1. 创建 Optional 对象1.1 常规创建方式2. 访问 Optional 中的值2.1

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

MyBatis编写嵌套子查询的动态SQL实践详解

《MyBatis编写嵌套子查询的动态SQL实践详解》在Java生态中,MyBatis作为一款优秀的ORM框架,广泛应用于数据库操作,本文将深入探讨如何在MyBatis中编写嵌套子查询的动态SQL,并结... 目录一、Myhttp://www.chinasem.cnBATis动态SQL的核心优势1. 灵活性与可

pytest+allure环境搭建+自动化实践过程

《pytest+allure环境搭建+自动化实践过程》:本文主要介绍pytest+allure环境搭建+自动化实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、pytest下载安装1.1、安装pytest1.2、检测是否安装成功二、allure下载安装2.

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

Mybatis嵌套子查询动态SQL编写实践

《Mybatis嵌套子查询动态SQL编写实践》:本文主要介绍Mybatis嵌套子查询动态SQL编写方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、实体类1、主类2、子类二、Mapper三、XML四、详解总结前言MyBATis的xml文件编写动态SQL