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

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

相关文章

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

Linux中Curl参数详解实践应用

《Linux中Curl参数详解实践应用》在现代网络开发和运维工作中,curl命令是一个不可或缺的工具,它是一个利用URL语法在命令行下工作的文件传输工具,支持多种协议,如HTTP、HTTPS、FTP等... 目录引言一、基础请求参数1. -X 或 --request2. -d 或 --data3. -H 或

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G