自学内容网 自学内容网

【线性规划求解系列】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 在预求解过程中即找到解,根本不必进行迭代。

 


原文地址:https://blog.csdn.net/2301_81199775/article/details/142353417

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!