您的位置:首页 > 编程语言 > MATLAB

[数学建模]线性规划与matlab,lingo解法

2018-07-24 21:41 801 查看

1.1线性规划问题

1.1.1什么情况下使用线性规划(规划)模型求解

线性规划通常研究资源的最优利用问题,总的来说有两类方面。

a.在任务确定的条件下,如何利用最少的资源(如资金、原材料、人工、设备)完成确定的任务?

b.在资源一定的条件下,如何组织生产使得成本最小,利润最大?

1.1.2线性规划解题的基本步骤

a.建立模型,列出线性规划模型的三要素(决策变量、目标函数、约束条件)。

b.利用软件计算得结果(excel,matlab,lingo)。

c.灵敏度分析和最优解判别,推荐使用lingo。

1.1.3经典问题

a.运输问题

b.指派问题

1.1.4程序代码

mtlab专用程序函数

[x,fval] = linprog(f,A,b,Aeq,beq,lb,ub,x0),下面分别介绍各参数的含义.

[x,fval]返回值中x为最优解,fval为最优值.

f表示目标函数中各个变量前面的系数向量,如果是求最小值问题,那么f就是各个变量的系数,如果是求最大值问题,那么f就是各个变量的系数的相反数.

A和b    表示不等式约束A*x <=b中的矩阵A和向量b.

Aeq和beq    表示等式约束Aeq*x =beq中的矩阵Aeq和向量beq.

lb和ub    分别表示自变量的上下界组成的向量,如果没有上下界,该选项用[]表示,如果只有部分变量有上下界,其余的变量没有,那么可以把没有上下界的变量的上下界设为-inf或者inf使lb或者ub的长度符合要求.

x0    表示变量的初始值,可以缺省.

1.1.5例题举例

 

matlab代码

[code]clc
clear
c=1:4;
c=[c,c]';
aeq=[1,-1,-1,1;
1,-1,1,-3;
1,-1,-2,3];
beq=[0,1,-1/2];
aeq=[aeq,-aeq];
[x,fval]=linprog(c,[],[],aeq,beq,zeros(8,1))
x=x(1:4)-x(5:end)

 

lingo代码

[code]model:
sets:
col/1..4/:c,x;
row/1..3/:b;
links(row,col):a;
endsets
data:
c=1 2 3 4;
a=1 -1 -1 1 1 -1 1 -3 1 -1 -2 3;
b=0 1 -0.5;
enddata
min=@sum(col:c*@abs(x));
@for(row(i):@sum(col(j):a(i,j)*x(j))=b(i));
@for(col:@free(x));!x的取值可正可负;
end

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: