当前位置: 首页 > article >正文

MATLAB数学规划:2.线性规划

线性规划

数学规划介绍

数学规划(mathematical programming):是运筹学的一个重要分支,是一个如何分配有限资源,从而达到人们期望目标的优化问题,也就是通过确定一些可控制变量的值,使相关量(目标)达到最优(最大或最小)
其一般表达式为:
min f(x,a,b)
s.t. g(x,a,b)≤0

其中,f(x,a,b)是目标函数,g(x,a,b)是约束条件,x是可控变量,a是已知参数,b是随机参数
s.t. 表示subject to,即满足约束条件。

数学规划建模的基本步骤

  • 根据影响所要达到目的的因素找到决策变量
  • 由决策变量和所要达到的目的之间的函数关系确定目标函数
  • 由决策变量所受的限制条件确定决策变量所要满足的约束条件

所建立的数学模型具有以下特点

  • 每个模型有若干个决策变量x=(x1,x2,.x),决策变量的一组值表示一种方案
  • 目标函数是决策变量的函数,根据具体问题可以是最大化或最小化问题。
  • 约束条件也是决策变量的函数

线性规划

其一般表达式为:
min 目标函数
∑a*x≤b,i=1,2…m 等式、不等式约束条件
x>=c 变量范围约束

或写成矩阵的形式:
minZ=Cx
Ax≤b
x-c≥0

  • 线性规划的标准形式要求使目标函数最小化
  • 约束条件取等式
  • 不符合该条件的线性模型可以转化为标准形式。
  • 目标函数与约束条件都是决策变量的线性函数

MATLAB求解线性规划问题

x=linprog(f,A,b,Aeq,beq,lb,ub,options)

  • 求解问题min f(x),约束条件Ax<=b.
  • 约束条件Aeq*x=beq,lb,ub定义x的上下限,即lb=<x=<ub.
  • 若中间条件不存在,设为空,例如:无不等式,则将A设为[],将b设为[]。
  • 用options指定的优化参数进行最小化(详情参见MATLAB帮助文件)。

返回值:
[x,fval.exitflag,output,lamdba]=linprog()

  • fval:x处的目标函数值。
  • exitingflag:描述函数计算的退出条件。
  • oulput::包含优化信息的输出变量oulput。
  • 将解x处的Lagrange乘子返回到lambda参数中。
  • 若不需要某个中间返回变量,设为~

例题:
求函数的最小值
f(x)=-5x1-4x2-6x3
其中,x满足不等式条件:
x1-x2+x3≤20
3x1+2x2+4x3≤42
3x1+2x2≤30
同时X的范围为:
0≤x,0≤x2:0≤x3

求解之前,首先将目标函数、不等式条件、范围表示为矩阵或向量的形式

  • 自变量可以表示为一个向量:
    X=[x1,x2,x3]

  • 目标函数可以表示为:
    f(x)=-5x1-4x2-6x3
    f(x)=[-5,-4,-6]·x

  • 不等式关系
    x1-x2+x3≤20
    3x1+2x2+4x3≤42
    3x1+2x2≤30
    可以表示为:
    左侧系数矩阵A=
    1 -1 1
    3 2 4
    3 2 0
    右侧数值b=
    20
    42
    30
    也就是:
    A·x≤b
    如果不等式约束中有≥,通过移项总可以表示为≤的形式。

  • 自变量上下限
    0≤x1,0≤x2,0≤x3
    可以表示为:
    lb=[0,0,0]
    ub=[inf,inf,inf]

matlab代码:

f=[-5,-4,-6];
A=[1 -1 1;3 2 4;3 2 0];
b=[20;42;30];
lb=[0;0;0];
ub=[inf;inf;inf];
[x,fval]=linprog(f,A,b,[],[],lb,ub);
[x,fval,exitflag,output,lambda]=linprog(f,A,b,[],[],lb,ub);

http://www.kler.cn/a/311880.html

相关文章:

  • 问:MySQL主从同步的机制梳理?
  • css:没错又是我
  • 提升法律文书处理效率的秘密武器:开源文档比对工具解析
  • 【Python无敌】在 QGIS 中使用 Python
  • SQLI LABS | Less-40 GET-BLIND Based-String-Stacked
  • CSS教程(二)- CSS选择器
  • 分享一个 在线拍卖系统 商品竞拍平台Java、python、php三个技术版本(源码、调试、LW、开题、PPT)
  • MATLAB系列03:分支语句和编程设计
  • 指挥中心操作台怎么布局更合理
  • Can‘t connect to local MySQL server through socket
  • 【线性规划求解系列】MATLAB中使用linprog解决线性规划问题
  • 【学术会议:中国杭州,机器学习和计算机应用面临的新的挑战问题和研究方向】第五届机器学习与计算机应用国际学术会议(ICMLCA 2024)
  • 大数据-141 - ClickHouse 集群 副本和分片 Zk 的配置 Replicated MergeTree原理详解
  • Linux 环境永久更换国内pip镜像源地址
  • 【MySQL】表的相关操作
  • 你敢相信吗,我用AI撸了一个在线计算器网站!
  • ElasticSearch7整合es-head,ES配置密码
  • 微软 Azure AI 服务免费试用及申请:语音识别、文本转语音、基于视觉、语言处理、文档分析等10大场景
  • ReentrantLock实现原理
  • opencv anaconda yolov5安装流程
  • 【C++】C++ STL探索:Priority Queue与仿函数的深入解析
  • Leetocde146. LRU 缓存
  • 梧桐数据库(WuTongDB):postgresql 12的CBO(Cost-Based Optimizer)优化器
  • 浅谈人工智能之基于HTTP方式调用本地QWen OPenAI接口(Java版)
  • 股指期权交易详细基础介绍
  • 图像亮度均衡算法