数学建模【规划模型--线性规划(整数规划、0-1规划)、非线性规划-附:案例分析、奶制品的生产和销售(详细求解过程)】_汽车厂生产计划lingo模型-程序员宅基地

技术标签: 线性规划  数学建模  数学建模与实验  非线性规划  规划模型  Lingo  

【MOOC数学建模与实验---学习笔记---整理汇总表】

【学习网址:MOOC---郑州轻工业大学---数学建模与实验】

目   录

4.1 数学规划介绍

1、数学规划模型的定义

2、数学规划模型

2.1、企业生产计划

3、例1 加工奶制品的生产计划

3.1、整数规划(Integer Programming,简记IP)

4、0-1规划模型 选课策略

5、非线性规划模型

5.1、非线性规划

5.2、基本概念

5.3、算法概述

5.4、MATLAB软件求解

4.2 奶制品的生产和销售

1、优化模型和优化软件的重要意义

2、优化(Optimization),规划(Programming)

3、优化问题的一般形式

4、无约束优化:最优解的分类和条件

5、LINGO需要掌握的几个重要方面

6、例1 加工奶制品的生产计划

6.1、模型求解

6.2、结果解释

7、LINGO模型的构成:5个段

8、例1:选址问题

选址问题:NLP

Lingo模型的集合求解

6发点8收点运输模型

4.3 整数规划(4.3 汽车生产与原油采购)(例1 汽车厂生产计划)

问题1:制定月生产计划,使工厂的利润最大.

1、模型建立

2、模型求解

问题2:生产某类汽车,至少生产80辆,求生产计划.

方法1:分解为8个LP子模型

方法2:引入0-1变量,化为整数规划

方法3:化为非线性规划

汽车厂生产计划---分析总结

4.4 0-1规划

选课策略

销售代理的开发与中断

问题1的建模

问题1的求解

问题2的建模

问题2的求解

4.5 非线性规划

引例 组合投资

引例 投资选择问题

基本概念

算法概述

MATLAB软件求解

1.函数fminunc、 fminsearch的具体用法

2.函数fmincon的具体用法


4.1 数学规划介绍

数学规划:线性规划、非线性规划、连续规划、整部规划、动态规划...

数学规划:线性规划【整数线性规划(全整数线性规划、部分整数线性规划)、0-1规划】、非线性规划

1、数学规划模型的定义

目标函数:z=f(x)       x:n维列向量     x1、x2...xn:决策变量

gi(x) ≤ 0 :约束条件

2、数学规划模型

需要对模型进行计算、分析

2.1、企业生产计划

                                                                 空间层次

工厂级:根据外部需求和内部设备、人力、原料等条件,以最大利润为目标制订产品生产计划;

车间级:根据生产计划、工艺流程、资源约束及费用参数等,以最小成本为目标制订生产批量计划.

                                                                 时间层次

若短时间内外部需求和内部资源等不随时间变化,可制订单阶段生产计划,否则应制订多阶段生产计划.

非线性规划问题:无约束   二分法、牛顿迭代法、计数向量法

针对不同的问题,要采用不同的方法。

3、例1 加工奶制品的生产计划

灵敏度分析

影子价格(shadow price),又称 最优计划价格 或 计算价格。它是指依据一定原则确定的,能够反映投入物和产出物真实经济价值、反映市场供求状况、反映资源稀缺程度、使资源得到合理配置的价格。影子价格反映了社会经济处于某种最优状态下的资源稀缺程度和对最终产品的需求情况,有利于资源的最优配置。

Lingo:默认所有变量 ≥ 0;如果变量取负,需要声明【  @free(变量)  】

3.1、整数规划(Integer Programming,简记IP)

整数线性规划问题

@gin(x1):@指向,x1取整数。

Lingo:<、≤ 作用相同!

280*x1:称号* 不能省略,省略的话 280x1 -> 变量名。

4、0-1规划模型 选课策略

0-1规划模型:对 问题决策、选择,有着很大的作用。

3个 约束条件 !!!

选修3号课程的前提是:已学1号、2号课程。

∴ x3 ≤ x1,x3 ≤ x2      两式相加,2*x3 ≤ x1 + x2

移项得:2*x3 - x1 - x2 ≤ 0

与此类似:x4 ≤ x7,x4 - x7 ≤ 0

...

得到 6个 约束条件。

一共9个约束条件。拉格朗日法求解,较为麻烦 --> Lingo   @gin(x1...x9):x1...x9取整数

5、非线性规划模型

5.1、非线性规划

只要 目标函数、约束条件,有一个是非线性的,这个问题 就是 非线性规划。

xj 取 0:表示不投资这个项目。

xj 取 1:表示    投资这个项目。

5.2、基本概念

L:下界;   U:上界

f(x)、g(x)、h(x) 只要有一个是非线性的,问题就是一个非线性规划问题。

非线性规划问题:有一部分,可以用Lingo求解。

非线性规划问题:无约束(没有条件限制)、约束   两种。

无约束:决策变量无条件限制  x∈R^{n}

对于无约束问题的求解方法:一般构造 迭代数列。编写迭代程序,求f(x)最小值。

牛顿迭代法(常用)、最速下降法   一般是这俩方法结合使用,各有优点、缺点。

最速下降法:当不知道最优解在什么情况下时,随便找一个初始解,从此解出发 用最速下降法迭代...最后,靠近f(x)最小值点的速度越来越慢,并且永远达不到。--> 改用 牛顿迭代法:当初始值充分靠近x*(f(x)最小值点)附近时,迭代点收敛到x*的速度较快。

最速下降法:当初始值离最优解x*较远的时候,下降速度(收敛速度)很快,一旦靠近x*收敛速度就会变慢。

两法结合使用 --> f(x)最小值最优解x*。

二次规划

min:目标函数;   X、c:n维列向量;   H:矩阵;

5.3、算法概述

5.4、MATLAB软件求解

4.2 奶制品的生产和销售

1、优化模型和优化软件的重要意义

2、优化(Optimization),规划(Programming)

3、优化问题的一般形式

f(x):目标函数          目的:求最小值min

4、无约束优化:最优解的分类和条件

5、LINGO需要掌握的几个重要方面

  1. 掌握集合(SETS)的应用;
  2. 正确阅读求解报告(尤其要掌握敏感性分析);
  3. 正确理解求解状态窗口;
  4. 学会设置基本的求解选项(OPTIONS);
  5. 掌握与外部文件的基本接口方法。

6、例1 加工奶制品的生产计划

6.1、模型求解

Lingo:默认变量非负数。

48.000000:原料每增加一桶牛奶,目标函数值(总利润)增加48元。   48-35=13,获利13元

2.000000:每增加一个工时,利润增加2元。

可以用 Lingo 进行 模型求解

Lingo:<、<=  含义相同;默认所有变量都是 非负变量;@free(x1);  声明变量x1可以取负值。

!  :注释作用。

6.2、结果解释

Lingo分析:默认关闭。

开启 Lingo数据分析

结果解释

x1:当前系数72,最大可增加24,最小可减少8

x1在区间 [72-8, 72+24] 变化,最优解不变。

7、LINGO模型的构成:5个段

  1. 目标与约束段
  2. 集合段(SETS ENDSETS)
  3. 数据段(DATA ENDDATA)
  4. 初始段(INIT ENDINIT)
  5. 计算段(CALC ENDCALC)

目标:目标函数;   约束段:约束条件

集合段:所用到的变量的下标

数据段:所用到的变量(向量、矩阵...)的值

初始段:Lingo求解线性规划模型,是一个迭代过程,需要初值,设定初始值。

计算段:计算。

实际遇到的问题,规模较大,要掌握Lingo集合。使用原始方法,将模型数据输入,明显不太现实。

Lingo可以求解非线性规划模型。

8、例1:选址问题

吨公里数:运送的水泥量*运送距离。

目标函数(总的顿公里数)min:统计和【Cij(运量) * 距离】

水泥日用量:di   需求量约束   从两个料场运往工地的水泥总数(cij) 要 满足 工地需求量(di)      6个工地

运送水泥量(cij) < 水泥存储量(ej)

sets:集合      endsets 集合结尾                data: 数据   用“ ”或“,”分隔数据   enddata: 结束输入数据

demand集合名称;1...6:六维向量;a、b、d:都是六维向量

supply/1..2/:x,y,e;    supply是二维列向量集合,   x、y:两个料场的横纵坐标构成的列向量

link(demand, supply):c;    联合集合   矩阵集合    link:六行两列矩阵    c属于此集合

a:六个工地的横坐标 系数矩阵

b:六个工地的纵坐标

d:六个工地的水泥需求量

e:日存储量

x、y:料场的横纵坐标

x=5,1; 两个料厂的横坐标构成的向量

y=2,7; 两个料厂的横坐标构成的向量

目标函数@sum(link(i,j): c(i,j)*((x(j)-a(i))^2+(y(j)-b(i))^2)^(1/2));   @sum:Σ(求和)    i属于demand(1~6),j属于supply(1~2)

link(i,j)   i属于demand(6个分量),j属于supply(2个分量),c(i, j):从j料场到i工地的水泥运量

(x(j)-a(i))^2+(y(j)-b(i))^2)^(1/2):料场到工地的距离

@for():约束条件    demand(i):对任意的i(1~6)

选址问题:NLP

cij:料场j到工地i的运量

总的吨公里数:料场j到工地i的运量 * 料场j到工地i的距离

两个料场的位置:(x1, y1)、(x2, y2)

xj、yj 是 变量

给x、y初始值赋值:迭代法,初始值合适的话,可以减少迭代次数,容易找到迭代次数。    init:    endinit  之间

目标函数@sum(link(i,j): c(i,j)*((x(j)-a(i))^2+(y(j)-b(i))^2)^(1/2));   @sum:Σ(求和)    i属于demand(1~6),j属于supply(1~2)

(x(j)-a(i))^2+(y(j)-b(i))^2)^(1/2):料场到工地的距离

@for():约束条件    demand(i):对任意的i(1~6) 

 

x、y是位置,可正可负,取消非负要求  @free()

料场A:(5.75,5.00)      料场B:(7.25,7.75)

C(1, 1)~C(6, 2):运输量

 横纵坐标,都取整。

Lingo模型的集合求解

6发点8收点运输模型

4.3 整数规划4.3 汽车生产与原油采购)(例1 汽车厂生产计划

整数规划:整数线性规划、整数非线性规划 

问题1:制定月生产计划,使工厂的利润最大.

1、模型建立

线性规划模型

x1、x2、x3 取 整数 ---> @gin(x1...x9):x1...x9取整数

2、模型求解

问题2:生产某类汽车,至少生产80辆,求生产计划.

方法1:分解为8个LP子模型

不考虑 “不满足条件的子模型” 。

方法2:引入0-1变量,化为整数规划

引入非常大的正数M         y1=1时,表示 生产这种车。

y1 = 0:x1 ≤ 0 ,x1 ≥ 0

y1 = 1:x1 ≤ M,x1 ≥ 80

@bin();     设定0-1变量

方法3:化为非线性规划

x1 =0 或 ≥80   等价于   x1 (x1 − 80) ≥ 0

汽车厂生产计划---分析总结

汽车厂生产计划

  • 决策变量为整数,建立整数规划模型.
  • 求解整数规划和非线性规划比线性规划困难得多(即便用数学软件).
  • 当整数变量取值很大时, 可作为连续变量处理,问题简化为线性规划.
  • 对于类似于“x=0 或 ≥80”这样的条件,通常引入0-1变量处理,尽量不用非线性规划(特别是引入的整数变量个数较少时).

4.4 0-1规划

选课策略

0-1规划模型:对 问题决策、选择(策略选择问题),有着很大的作用。

3个 约束条件 !!!

选修3号课程的前提是:已学1号、2号课程。

∴ x3 ≤ x1,x3 ≤ x2      两式相加,2*x3 ≤ x1 + x2

移项得:2*x3 - x1 - x2 ≤ 0

与此类似:x4 ≤ x7,x4 - x7 ≤ 0

...

得到 6个 约束条件。

一共9个约束条件。拉格朗日法求解,较为麻烦 --> Lingo   @gin(x1...x9):x1...x9取整数

@bin();    设定0-1变量

目标:Z尽量小,W尽量大。即,求 min{Z, -W}

Lingo不能给出问题 所有的最优解,只给一个!!!

加权法:侧重xxx               λ1 + λ2 = 1               多目标问题,转化为单目标问题。

  • x1 ≤ x2
  • x1=1,x2=0
  • (x1=1,x2=0   or   x1=0,x2=1)x1*x2=0
  • x1≥0,x2≥0

销售代理的开发与中断

问题1的建模

0-1规划问题                       Σx1t:t(1~5)1~5年

7.5(5*x11 + 4*x12 + 3*x13 + 2*x14 + x15):从第x年,开始建立代理关系。

问题1的求解

\sum x_{it}\leq 1   代理关系,一旦建立,将长期保持。∴从1~5年建立代理关系后,关系将一直保持到第5年。

i=1~4,分别代表 4位代理;t=1~5,分别 第1~5年。

问题2的建模

问题2的求解

4.5 非线性规划

引例 组合投资

R(X):利润;       Q(X):风险

x1~x8:8个项目,只能选一个进行投资。(0-1变量)

  • 模型1:将 风险 固定到 某个范围内。
  • 模型2:收益大于某个值的情况下,最小化风险。

  • 加权平均:ρ小,偏向于增加利润;ρ大,偏向于降低风险。ρ * \sqrt{Q(X))} 或者 R(X),要根据情况选择。  

引例 投资选择问题

基本概念

L≤x≤U,决策变量的上界、下界

算法概述

约束非线性规划算法

  1. 可行方向法;
  2. 罚函数法;
  3. 梯度投影法;
  4. 逐步二次规划法(SQP)

          (Sequential Quadratic Programming)

MATLAB软件中主要采用SQP算法。

MATLAB软件求解

fminsearch:寻找无约束规划问题的最小值。一般是,多元函数求最小值。也可求,最大值。

fminunc 无约束非线性最优化   常用

1.函数fminunc、 fminsearch的具体用法

unc:无约束   Unconstrained

求 F(X)最小值,Min F(X)

建立fun.m文件后,将F(X)表达式写到文件中。

[X, fval] :(X)最优解、(fval)最优解对应的最优值

'fun'  或者  @fun

x0:(迭代初始值)设定的初始值

options:设置

先新建fun1.m文件。

x是向量,x向量有2个分量 x(1)、x(2)

误差:1e-10:10^-10

iter:迭代

找两个不同的初始值,进行迭代,结果不一样,说明:此问题对初始值敏感。

选不同的初始值进行比较,看解集中到哪个点上,此点可能就是最优解。

局部性   尽量选择接近最优解的点,否则可能会迭代失败。

2.函数fmincon的具体用法

lb ≤ X ≤ ub      lb、ub:决策变量的上界、下界

[x,fval]= fminunc('fun1',x0, options),        x:最优解;fval:最优解对应的最优值

x0:迭代初始值         A:所有的不等式线性约束的系数构成的矩阵   b:不等式约束的右端向量

Aeq:所有的线性等式约束的变量前的系数构成的矩阵   beq:等式约束的右端向量

@con:调用con.m文件,记录了模型中所有的不等式约束、等式约束。非线性约束

① fun.m文件:目标函数的表达式文件

② function [c,ceq]= nonlcon(x)        c:非线性不等式约束表达式(函数体)     ceq:非线性等式约束表达式

非线性不等式约束 写成 标准形式 -> “等式 ≤ 0”的形式

c=G1(x);    有若干个(≥2)非线性不等式约束,使用[]括起来,中间用“,”分开。

没有等式约束:ceq用空“[]”来表示。

f = -x(1)*x(2);     求Max f(x) = x1*x2,    fmincon用来求最小值,       给f加负号,可求最大值Max。

x0=[10 10 2]';     ':转置,列向量

3、使用quadprog求解二次规划问题

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44949135/article/details/107376270

智能推荐

获取大于等于一个整数的最小2次幂算法(HashMap#tableSizeFor)_整数 最小的2的几次方-程序员宅基地

文章浏览阅读2w次,点赞51次,收藏33次。一、需求给定一个整数,返回大于等于该整数的最小2次幂(2的乘方)。例: 输入 输出 -1 1 1 1 3 4 9 16 15 16二、分析当遇到这个需求的时候,我们可能会很容易想到一个"笨"办法:..._整数 最小的2的几次方

Linux 中 ss 命令的使用实例_ss@,,x,, 0-程序员宅基地

文章浏览阅读865次。选项,以防止命令将 IP 地址解析为主机名。如果只想在命令的输出中显示 unix套接字 连接,可以使用。不带任何选项,用来显示已建立连接的所有套接字的列表。如果只想在命令的输出中显示 tcp 连接,可以使用。如果只想在命令的输出中显示 udp 连接,可以使用。如果不想将ip地址解析为主机名称,可以使用。如果要取消命令输出中的标题行,可以使用。如果只想显示被侦听的套接字,可以使用。如果只想显示ipv4侦听的,可以使用。如果只想显示ipv6侦听的,可以使用。_ss@,,x,, 0

conda activate qiuqiu出现不存在activate_commandnotfounderror: 'activate-程序员宅基地

文章浏览阅读568次。CommandNotFoundError: 'activate'_commandnotfounderror: 'activate

Kafka 实战 - Windows10安装Kafka_win10安装部署kafka-程序员宅基地

文章浏览阅读426次,点赞10次,收藏19次。完成以上步骤后,您已在 Windows 10 上成功安装并验证了 Apache Kafka。在生产环境中,通常会将 Kafka 与外部 ZooKeeper 集群配合使用,并考虑配置安全、监控、持久化存储等高级特性。在生产者窗口中输入一些文本消息,然后按 Enter 发送。ZooKeeper 会在新窗口中运行。在另一个命令提示符窗口中,同样切换到 Kafka 的。Kafka 服务器将在新窗口中运行。在新的命令提示符窗口中,切换到 Kafka 的。,应显示已安装的 Java 版本信息。_win10安装部署kafka

【愚公系列】2023年12月 WEBGL专题-缓冲区对象_js 缓冲数据 new float32array-程序员宅基地

文章浏览阅读1.4w次。缓冲区对象(Buffer Object)是在OpenGL中用于存储和管理数据的一种机制。缓冲区对象可以存储各种类型的数据,例如顶点、纹理坐标、颜色等。在渲染过程中,缓冲区对象中存储的数据可以被复制到渲染管线的不同阶段中,例如顶点着色器、几何着色器和片段着色器等,以完成渲染操作。相比传统的CPU访问内存,缓冲区对象的数据存储和管理更加高效,能够提高OpenGL应用的性能表现。_js 缓冲数据 new float32array

四、数学建模之图与网络模型_图论与网络优化数学建模-程序员宅基地

文章浏览阅读912次。(1)图(Graph):图是数学和计算机科学中的一个抽象概念,它由一组节点(顶点)和连接这些节点的边组成。图可以是有向的(有方向的,边有箭头表示方向)或无向的(没有方向的,边没有箭头表示方向)。图用于表示各种关系,如社交网络、电路、地图、组织结构等。(2)网络(Network):网络是一个更广泛的概念,可以包括各种不同类型的连接元素,不仅仅是图中的节点和边。网络可以包括节点、边、连接线、路由器、服务器、通信协议等多种组成部分。网络的概念在各个领域都有应用,包括计算机网络、社交网络、电力网络、交通网络等。_图论与网络优化数学建模

随便推点

android 加载布局状态封装_adnroid加载数据转圈封装全屏转圈封装-程序员宅基地

文章浏览阅读1.5k次。我们经常会碰见 正在加载中,加载出错, “暂无商品”等一系列的相似的布局,因为我们有很多请求网络数据的页面,我们不可能每一个页面都写几个“正在加载中”等布局吧,这时候将这些状态的布局封装在一起就很有必要了。我们可以将这些封装为一个自定布局,然后每次操作该自定义类的方法就行了。 首先一般来说,从服务器拉去数据之前都是“正在加载”页面, 加载成功之后“正在加载”页面消失,展示数据;如果加载失败,就展示_adnroid加载数据转圈封装全屏转圈封装

阿里云服务器(Alibaba Cloud Linux 3)安装部署Mysql8-程序员宅基地

文章浏览阅读1.6k次,点赞23次,收藏29次。PS: 如果执行sudo grep 'temporary password' /var/log/mysqld.log 后没有报错,也没有任何结果显示,说明默认密码为空,可以直接进行下一步(后面设置密码时直接填写新密码就行)。3.(可选)当操作系统为Alibaba Cloud Linux 3时,执行如下命令,安装MySQL所需的库文件。下面示例中,将创建新的MySQL账号,用于远程访问MySQL。2.依次运行以下命令,创建远程登录MySQL的账号,并允许远程主机使用该账号访问MySQL。_alibaba cloud linux 3

excel离散度图表怎么算_excel离散数据表格-Excel 离散程度分析图表如何做-程序员宅基地

文章浏览阅读7.8k次。EXCEL中数据如何做离散性分析纠错。离散不是均值抄AVEDEV……=AVEDEV(A1:A100)算出来的是A1:A100的平均数。离散是指各项目间指标袭的离散均值(各数值的波动情况),数值较低表明项目间各指标波动幅百度小,数值高表明波动幅度较大。可以用excel中的离散公式为STDEV.P(即各指标平均离散)算出最终度离散度。excel表格函数求一组离散型数据,例如,几组C25的...用exc..._excel数据分析离散

学生时期学习资源同步-JavaSE理论知识-程序员宅基地

文章浏览阅读406次,点赞7次,收藏8次。i < 5){ //第3行。int count;System.out.println ("危险!System.out.println(”真”);System.out.println(”假”);System.out.print(“姓名:”);System.out.println("无匹配");System.out.println ("安全");

linux 性能测试磁盘状态监测:iostat监控学习,包含/proc/diskstats、/proc/stat简单了解-程序员宅基地

文章浏览阅读3.6k次。背景测试到性能、压力时,经常需要查看磁盘、网络、内存、cpu的性能值这里简单介绍下各个指标的含义一般磁盘比较关注的就是磁盘的iops,读写速度以及%util(看磁盘是否忙碌)CPU一般比较关注,idle 空闲,有时候也查看wait (如果wait特别大往往是io这边已经达到了瓶颈)iostatiostat uses the files below to create ..._/proc/diskstat

glReadPixels读取保存图片全黑_glreadpixels 全黑-程序员宅基地

文章浏览阅读2.4k次。问题:在Android上使用 glReadPixel 读取当前渲染数据,在若干机型(华为P9以及魅族某魅蓝手机)上读取数据失败,glGetError()没有抓到错误,但是获取到的数据有误,如果将获取到的数据保存成为图片,得到的图片为黑色。解决方法:glReadPixels实际上是从缓冲区中读取数据,如果使用了双缓冲区,则默认是从正在显示的缓冲(即前缓冲)中读取,而绘制工作是默认绘制到后缓..._glreadpixels 全黑

推荐文章

热门文章

相关标签