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

【线性规划求解系列】MATLAB中使用linprog解决线性规划问题

linprog - 求解线性规划问题 - MATLAB - MathWorks 中国icon-default.png?t=O83Ahttps://ww2.mathworks.cn/help/optim/ug/linprog_zh_CN.html

本文详细介绍了如何在MATLAB中使用linprog函数来解决各种类型的线性规划问题。首先概述了linprog的基本语法,随后通过五个具体实例演示了如何处理仅含有线性不等式约束、同时含有线性等式和不等式约束、以及包含所有类型约束的线性规划问题。此外,还展示了如何获取优化过程中的目标函数值及退出条件,帮助读者更好地理解和应用linprog函数进行优化计算。无论是初学者还是有一定经验的用户,都能从中受益,掌握使用MATLAB进行线性规划的基础知识和技巧。

目录

一、matlab中linprog的语法

二、说明

例一  只有线性不等式约束的线性规划

 例二  具有线性等式和线性不等式约束的线性规划

例三 具有所有类型约束的线性规划

 例四 返回目标函数值

例五 返回退出的条件


一、语法

x = linprog(f,A,b)
x = linprog(f,A,b,Aeq,beq)
x = linprog(f,A,b,Aeq,beq,lb,ub)
x = linprog(f,A,b,Aeq,beq,lb,ub,options)
x = linprog(problem)
[x,fval] = linprog(___)
[x,fval,exitflag,output] = linprog(___)
[x,fval,exitflag,output,lambda] = linprog(___)

二、说明

例一  只有线性不等式约束的线性规划

x = linprog(f,A,b) 求解 min f*x,满足 A*x  b。 

目标函数是: min −x(1)−x(2)/3。

约束如下:

A = [1 1
    1 1/4
    1 -1
    -1/4 -1
    -1 -1
    -1 1];

b = [2 1 2 1 -1 2];

f = [-1 -1/3];

x = linprog(f,A,b)

结果如下: 

 例二  具有线性等式和线性不等式约束的线性规划

x = linprog(f,A,b,Aeq,beq) 包括等式约束 Aeq*x = beq

如果不存在不等式,请设置 A = [] 和 b = []

 

 

A = [1 1
    1 1/4
    1 -1
    -1/4 -1
    -1 -1
    -1 1];

b = [2 1 2 1 -1 2];

Aeq = [1 1/4];
beq = 1/2;

f = [-1 -1/3];

x = linprog(f,A,b,Aeq,beq)

结果如下:

例三 具有所有类型约束的线性规划

= linprog(f,A,b,Aeq,beq,lb,ub) 定义设计变量 x 的一组下界和上界,使解始终在 lb ≤ x ≤ ub 范围内。

如果不存在等式,请设置 Aeq = [] 和 beq = []

A = [1 1
    1 1/4
    1 -1
    -1/4 -1
    -1 -1
    -1 1];

b = [2 1 2 1 -1 2];

Aeq = [1 1/4];
beq = 1/2;

f = [-1 -1/3];

lb = [-1,-0.5];
ub = [1.5,1.25];

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

 例四 返回目标函数值

对于任何输入参量,[x,fval] = linprog(___) 返回目标函数 fun 在解 x 处的值:fval = f*x

如:

[x,fval] = linprog(f,A,b)

 

[x,fval,exitflag,output] = linprog(___) 还返回说明退出条件的值 exitflag,以及包含优化过程信息的结构体 output。 

 

例五 返回退出的条件

output] = linprog(___) 还返回说明退出条件的值 exitflag,以及包含优化过程信息的结构体 output

#设置选项以使用 'dual-simplex'算法。
options = optimoptions('linprog','Algorithm','dual-simplex');

#求解线性规划并请求返回函数值、退出标志和输出结构体。
[x,fval,exitflag,output] = linprog(f,A,b,Aeq,beq,lb,ub,options)

 结果如下:

  • exitflag = 1 表示解可靠。

  • output.iterations = 0 表示 linprog 在预求解过程中即找到解,根本不必进行迭代。

 


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

相关文章:

  • 关于sass在Vue3中编写bem框架报错以及警告问题记录
  • 卸载一直显示在运行的应用
  • 河南省的一级科技查新机构有哪些?
  • 游戏引擎学习第七天
  • js中import引入一个export值可以被修改。vue,react
  • 树-好难-疑难_GPT
  • 【学术会议:中国杭州,机器学习和计算机应用面临的新的挑战问题和研究方向】第五届机器学习与计算机应用国际学术会议(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版)
  • 股指期权交易详细基础介绍
  • 图像亮度均衡算法
  • QFramework v1.0 使用指南 更新篇:20240918. 新增 BindableList
  • 利用反射实现动态代理
  • qiankun沙箱实现原理
  • linux之网络命令
  • 移动开发(三):使用.NET MAUI打包第一个安卓APK完整过程