ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Matlab:数模09-线性规划模型

2021-05-04 16:58:41  阅读:216  来源: 互联网

标签:Aeq lb 09 fval 数模 Matlab Judge beq ub


文章目录

例子

在这里插入图片描述
我们由上可以得到线性规划式子:
在这里插入图片描述
要如何解呢?

不同算法(lingo)

可以使用lingo软件:
在这里插入图片描述
在这里插入图片描述
结果为14,x1为4,x2为2。

然而,mac上没有lingo软件,用Matlab行不行?可以。

不同算法(Matlab)

翻阅资料,我找到了Matlab的写法。我们首先要了解线性规划问题的MATLAB标准型,为:
在这里插入图片描述

我们可以使用

[x,fval]=linprog(f,A,b,Aeq,beq,lb,ub]

解这类问题。

x表示所解出的值,是一个按列排序的矩阵。

fval为目标函数值得结果。

f表示目标函数中未知数的系数。

A表示不等式中,位置数的系数,是一个多维数组或一维数组。

b表示不等式右边的值,也是一个矩阵。

Aeq表示等式中未知数的系数(矩阵)。

beq表示等式右边的数。

lb表示未知数取值的下限。

ub表示未知数取值的上限。

对于

在这里插入图片描述

代码如下:

disp('max(0) or min(1)?');
Judge=input('Judge=');
f=[2,3];
A=[1,2;4,0;0,4];
b=[8,16,12];
Aeq=[];
beq=[];
lb=[0;0];
ub=[inf;inf];
if Judge==0
    [x,fval]=linprog(-f,A,b,Aeq,beq,lb,ub);
    x
    fval=-fval
else
    [x,fval]=linprog(f,A,b,Aeq,beq,lb,ub);
    x
    fval
end

并将上式保存为linePlan.m。

在命令行输入linePlan。

在这里插入图片描述
提示是max还是min,我们的题目是max,于是输入0。
在这里插入图片描述
这样就可以获得和lingo一样的答案。

我们可以再找例题试一试;

在这里插入图片描述
(注意,式子中>=号要改成<=,对应的数字也要变号)

代码:

disp('max(0) or min(1)?');
Judge=input('Judge=');
f=[3,-1,-1];
A=[1,-2,1;4,-1,-2];
b=[11,-3];
Aeq=[-2,0,1];
beq=[1];
lb=[0;0;0];
ub=[inf;inf;inf];
if Judge==0
    [x,fval]=linprog(-f,A,b,Aeq,beq,lb,ub);
    x
    fval=-fval
else
    [x,fval]=linprog(f,A,b,Aeq,beq,lb,ub);
    x
    fval
end

在这里插入图片描述
所以x1=4,x2=1,x3=9。目标函数值为2。

标签:Aeq,lb,09,fval,数模,Matlab,Judge,beq,ub
来源: https://blog.csdn.net/weixin_51496152/article/details/116401672

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有