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

Posted fxalll

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MatlabLingo:数模09-线性规划模型相关的知识,希望对你有一定的参考价值。

例子

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

不同算法(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。

以上是关于MatlabLingo:数模09-线性规划模型的主要内容,如果未能解决你的问题,请参考以下文章

Python数模笔记-Sklearn支持向量机

Python数模笔记-Sklearn支持向量机

数模预测模型那些

Python数模笔记-Sklearn线性回归

Python数模笔记-PuLP库线性规划进阶

Matlab:数模06-模拟退火模型