Flutter开发App的未来及其在各行业的应用潜力分析
1251
2022-11-11
数学建模:线性规划(Python&Matlab实现)
目录
1 概述
2 Python实现
3 Matlab实现
3.1 官网详细解释
3.2 为linprog使用基于问题的方法求解LP
3.3 投资的收益和风险
1 概述
在人们的生产实践中,经常会遇到如何利用现有资源来安排生产,以取得最大经济效益的问题。此类问题构成了运筹学的一个重要分支—数学规划,而线性规划(LinearProgramming 简记LP)则是数学规划的一个重要分支。自从1947年G B. Dantzig 提出求解线性规划的单纯形方法以来,线性规划在理论上趋向成熟,在实用中日益广泛与深入。特别是在计算机能处理成千上万个约束条件和决策变量的线性规划问题之后,线性规划的适用领域更为广泛了,已成为现代管理中经常采用的基本方法之一。
2 Python实现
我前面已经详细总结过:线性规划(Python各种包实现及Yalmip+Cplex)
3 Matlab实现
3.1 官网详细解释
求解线性规划问题 - MATLAB linprog - MathWorks 中国
3.2 为linprog使用基于问题的方法求解LP
此示例说明如何使用基于问题的方法设立问题,然后使用基于求解器的方法求解问题。问题是:
创建名为 prob 的 OptimizationProblem 对象来表示此问题:
clc,clearx = optimvar('x','LowerBound',-1,'UpperBound',1.5);y = optimvar('y','LowerBound',-1/2,'UpperBound',1.25);prob = optimproblem('Objective',x + y/3,'ObjectiveSense','max');prob.Constraints.c1 = x + y <= 2;prob.Constraints.c2 = x + y/4 <= 1;prob.Constraints.c3 = x - y <= 2;prob.Constraints.c4 = x/4 + y >= -1;prob.Constraints.c5 = x + y >= 1;prob.Constraints.c6 = -x + y <= 2;prob.Constraints.c7 = x + y/4 == 1/2;problem = prob2struct(prob); %将问题对象转换为问题结构体。[sol,fval,exitflag,output] = linprog(problem) %求解生成的问题结构体。
Optimal solution found.sol = 0.1875 1.2500fval = -0.6042exitflag = 1output = 包含以下字段的 struct: iterations: 0 constrviolation: 0 message: 'Optimal solution found.' algorithm: 'dual-simplex' firstorderopt: 0>>
3.3 投资的收益和风险
(1)问题提出
(2)模型简化
(3)算例
(4)Matlab实现
clc,cleara=0;hold onwhile a<0.05 %========不等式约束================== c=[-0.05,-0.27,-0.19,-0.185,-0.185]; A=[zeros(4,1),diag([0.025,0.015,0.055,0.026])]; %diag:创建对角矩阵或获取矩阵的对角元素 b=a*ones(4,1); %========等式约束============ Aeq=[1,1.01,1.02,1.045,1.065]; beq=1; %========线性规划============= LB=zeros(5,1); [x,Q]=linprog(c,A,b,Aeq,beq,LB); %======可视化============= Q=-Q; plot(a,Q,'*r'); a=a+0.001;endxlabel('a'),ylabel('Q')
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~