Matlab~30个算法

matlab算法

第01章 MATLAB 线性规划



一、线性规划解决什么问题?

利用现有资源来安排生产,以取得最大经济
效益的问题

二、解决方案

1.单纯形法

这里不再过多解释,普通的画图工具即可完成,这里推荐Geogebra

2.MATLAB实现

在这里插入图片描述

基本函数形式为 linprog(c,A,b),它的返回值是向量 x 的值。还有其它的一些函数调用形式(在 Matlab 指令窗运行 help linprog 可以看到所有的函数调用形式),如:
[x,fval]=linprog(c,A,b,Aeq,beq,LB,UB,X0,OPTIONS)
这里 fval 返回目标函数的值,LB 和 UB 分别是变量 x 的下界和上界,x0 是 x 的初始值,OPTIONS 是控制参数。

三、常见问题

eg 1 线性规划

案例1
Step 1
编写M文件

c=[2;3;-5];
a=[-2,5,-1;1,3,1]; b=[-10;12];
aeq=[1,1,1];
beq=7;
x=linprog(-c,a,b,aeq,beq,zeros(3,1)) %第一项取得是min,如果求max可以填个符号,第二、三项取得是<的一边,这样比较容易整,zeros(3,1)构造维度好习惯
value=c.*x   %也可以用'*操作符
&也可以这样处理
[x,y] = linprog(-c,a,b,aeq,beq,zeros(3,1)) ; %这样操作取得的是凸点y的负值
x; vaule = -y 


.* 和 * 的区别

在进行数与数之间的运算时“.”和“”是没有区别的,都是表示普通的乘法运算。例:m = 2,n = 4,m.n = 8, mn = 8。
在进行矩阵之间的运算时“.”和“”的意义就有所不同了。假设a,b表示两个矩阵,a*b表示矩阵a与矩阵b进行矩阵相乘,a.*b表示矩阵a中的元素与矩阵b中的元素按位置依次相乘,得到的结果将作为新矩阵中相同位置的元素。

Step 2
存盘、命名

Step 3
运行

eg 2 运输问题(产销平衡)

数学模型:

在这里插入图片描述
其约束条件的系数矩阵相当特殊,可用比较简单的计算方法,习惯上称为表上作业法(由康托洛维奇和希奇柯克两人独立地提出,简称康—希表上作业法)。
采用表上作业法即可,产销平衡和产销不平衡问题的链接放上: 运输问题表上作业法步骤.

eg 3 指派问题

拟分配n 人去干n项工作,每人干且仅干一项工作,若分配第i人去干第j项工作,需花费Cij单位时间,问应如何分配工作才能使工人花费的总时间最少?

数学模型:
在这里插入图片描述
在这里插入图片描述
可以发现指派问题可以转化为特殊的运输问题

独特解法

1.求解指派问题的匈牙利算法
这里有篇文章写的很好,小菜鸡就不写了,链接放上: 匈牙利算法解决指派问题清晰流程.

eg 4 对偶理论与灵敏度分析

知道有这回事就行,遇上再说[doge]
指的是问题矩阵的转置有解求原矩阵的最优解
链接放上:运筹学中应该如何理解互补松弛性。这条性质又该如何运用?

eg 5 投资的收益和风险

涉及数学建模,MATLAB方面的反而不多,需要建模原型的留言

总结

1.MATLAB中LP问题的矩阵处理,linprog函数
2.表上作业法
3.五个问题

  • 7
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值