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

线性规划模型理论与实践

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.hqwc.cn/news/618750.html

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

相关文章

深入剖析MongoDB集群架构设计

目录 一、MongoDB集群架构介绍 1.1 主从复制 1.2 副本集 1.3 分片集群 二、副本集 3.1 主节点选举 3.2 oplog 3.2 主从同步 三、分片集群 3.1 分片策略 3.2 分片键的选择 3.3 何时选择分片集群 四、总结 一、MongoDB集群架构介绍 MongoDB 有三种集群架构模式&#xff0c;分…

bugku-web-文件上传

提示他的名字是margin&#xff0c;给他一个图片文件&#xff0c;不要php文件 上传一句话木马的图片 抓包&#xff0c;后缀改为php 提示无效文件&#xff0c;即后台还会检测一次后缀 测试后台系统 为linux系统 开始绕过 截断绕过 上传成功&#xff0c;但是会变为jpg 开始分析…

【opencv】示例-stiching.cpp 图像拼接

#include "opencv2/imgcodecs.hpp" // 导入opencv图像编码功能库 #include "opencv2/highgui.hpp" // 导入opencv高层用户界面功能库 #include "opencv2/stitching.hpp" // 导入opencv图像拼接功能库#include <iostream> // 导入输入输出…

解决 php 连接mysql数据库时报错:Fatal error: Class ‘mysqli’ not found in问题

如果你没找到php.ini但只有php.ini-development或者php.ini-production。 首先先创建一个php.ini然后复制php.ini-development或者php.ini-production到里面去。 然后在php.ini里面进行操作。一共两步。 第一步&#xff0c;将extension前面的分号去掉 第二步&#xff0c;更换为…

AutoGen - Build Powerful AI Agents with ChatGPT/GPT-4

原文:AutoGen - Build Powerful AI Agents with ChatGPT/GPT-4 | MLExpert - Crush Your Machine Learning interview In this tutorial, well explore AutoGen1, a Microsoft library that lets you create LLM applications with agents. These agents can communicate and …

基于Docker构建CI/CD工具链(六)使用Apifox进行自动化测试

添加测试接口 在Spring Boot Demo项目里实现一个简单的用户管理系统的后端功能。具体需求如下&#xff1a; 实现了一个RESTful API&#xff0c;提供了以下两个接口 &#xff1a; POST请求 /users&#xff1a;用于创建新的用户。GET请求 /users&#xff1a;用于获取所有用户的列…

ChatGPT在线网页版

ChatGPT镜像 今天在知乎看到一个问题&#xff1a;“平民不参与内测的话没有账号还有机会使用ChatGPT吗&#xff1f;” 从去年GPT大火到现在&#xff0c;关于GPT的消息铺天盖地&#xff0c;真要有心想要去用&#xff0c;途径很多&#xff0c;别的不说&#xff0c;国内GPT的镜像…

YOLTV8 — 大尺度图像目标检测框架(欢迎star)

YOLTV8 — 大尺度图像目标检测框架【ABCnutter/YOLTV8: &#x1f680;】 针对大尺度图像&#xff08;如遥感影像、大尺度工业检测图像等&#xff09;&#xff0c;由于设备的限制&#xff0c;无法利用图像直接进行模型训练。将图像裁剪至小尺度进行训练&#xff0c;再将训练结果…

Matlab隐式方程拟合【案例源码+视频教程】|隐函数拟合|非线性拟合|视频教程

专栏导读 作者简介&#xff1a;工学博士&#xff0c;高级工程师&#xff0c;专注于工业软件算法研究本文已收录于专栏&#xff1a;《复杂函数拟合案例分享》本专栏旨在提供 1.以案例的形式讲解各类复杂函数拟合的程序实现方法&#xff0c;并提供所有案例完整源码&#xff1b;2.…

OpenHarmony实战开发-Actor并发模型对比内存共享并发模型

内存共享并发模型指多线程同时执行复数任务&#xff0c;这些线程依赖同一内存并且都有权限访问&#xff0c;线程访问内存前需要抢占并锁定内存的使用权&#xff0c;没有抢占到内存的线程需要等待其他线程释放使用权再执行。 Actor并发模型每一个线程都是一个独立Actor&#xf…

synchronized底层原理

1synchronized关键字的底层原理 Monitor 举个例子&#xff1a; 1.线程1执行synchronized代码块&#xff0c;里面用到了lock(对象锁)。首先会让这个lock对象和monitor关联&#xff0c;判断monitor中的owner属性是否为null。如果为null直接获取对象锁。owner只能关联一个线程。 2…

机器学习和深度学习--李宏毅 (笔记与个人理解)Day 16

Day 16 deep Learning – 鱼与熊掌兼得 最近在减重&#xff0c; 昨天跑了个一公里&#xff0c;然后今天上午又打了个篮球&#xff0c;真是老胳膊老腿了&#xff0c;运动完给我困得不行 Review 见前面的笔记 这里说dl 会提供一个足够大的模型&#xff0c; 来使得Dall loss 足够小…