数学建模 线性规划(LP)

简介: 数学建模 线性规划(LP)

线性规划(LP)

案例

案例1

线性规划1.png

数学求解过程

线性规划2.png

一般线性规划问题标准型

线性规划3.png

Matlab标准

线性规划4.png

matlab linprog函数

线性规划6.png

Lingo 求解规划问题

lingo1.png

!Lingo 中“<"表示“<=";
!Lingo默认所有变量非负,要取消该限制,用@free(x);

线性规划案例(优化算法-线性规划.md)

  1. min最小值
    mathproblem1.png
  2. max最大值
    mathproblem2.png
    mathproblem3.png
%  线性规划(LP) Linear Programming
%{
   
   

调用格式:其中,c和x为n维列向量;b为m维列向量;A为mXn矩阵。
[x,fval,exitflag,output,lambda]=linprog(c,A,b,Aeq,beq,LB,UB,x0,options)
    其中,
    x返回最优解;fval返回目标函数值;
    A和b对应不等式约束Ax<b;
    Aeq和beq对应等式约束Ax=b;
    LB和UB分别是变量x的下界和上界;
    x0为x的初始值;options为控制参数。

    如果没有不等式约束条件则A,b = []
    如果没有等式约束条件则Aeq,beq = []
    exitflag返回算法停止的原因:
    1表示成功找到最优解,0表示达到最大选代次数,不能继续寻找最优解,<0表示优化失败
    -2未找到可行解,-3问题没有定义边界,-4 NaN存在导致算法退出,-5原始对偶问题没有可行解,-7算法搜索方向存在问题;
%}

%线性规划案例1(题目见--优化算法-线性规划.md)

c = [2,3,1];
A = [1,4,2;3,2,0];
b= [8,6];

[x,fval]=linprog(c,-A,-b,[],[],zeros(3,1)) 
%Aeq,beq = []没有等式约束条件
% -A,-b 的原因是 不等式是大于号  应该转换成标准形式小于号

c1 = -[2,1,-1]; %求解最大值需要改成  -[]
A1 = [1,4,-1;2,-2,1];
b1 = [4,12]
A1eq = [1,1,2];
b1eq = [6];  

[x1,fval1]=linprog(c1,A1,b1,A1eq,b1eq,zeros(3,1)) 

%x返回最优解;fval返回目标函数值;

c2 = [2,3,-5]; %求解最大值需要改成  -[] 或者输出 '-c'
A2 = [2,-5,1]; %不等式大于号  应该转换成标准形式小于号
b2 = [10];       %不等式大于号  应该转换成标准形式小于号
A2eq = [1,1,1]; 
b2eq = [7];  

[x2,fval2]=linprog(-c2,-A2,-b2,A2eq,b2eq,zeros(3,1)) %-fval2才是最大值
目录
相关文章
|
7月前
|
算法
MATLAB求解线性方程组的八种方法
求解线性方程分为两种方法--直接法和迭代法 常见的方法一共有8种 直接法 Gauss消去法 Cholesky分解法 迭代法 Jacobi迭代法 Gauss-Seidel迭代法 超松弛迭代法 共轭梯度法 Bicg迭代法 Bicgstab迭代法
413 0
P9853 [入门赛 #17] 方程求解
P9853 [入门赛 #17] 方程求解
|
7月前
R语言解决最优化问题-线性规划(LP)问题
R语言解决最优化问题-线性规划(LP)问题
|
7月前
|
算法
MATLAB求解非线性方程组的五种方法
求解线性方程分为两种方法--二分法和迭代法 常见的方法一共有5种 二分法 迭代法 牛顿法 割线法 拟牛顿法 Halley法
218 0
数学建模——微分方程介绍
数学建模——微分方程介绍
155 0
|
机器学习/深度学习 移动开发 算法
【数学建模】 非线性规划+二次规划(下)
【数学建模】 非线性规划+二次规划(下)
147 0
|
存储 机器学习/深度学习 算法
【数学建模】 非线性规划+二次规划(上)
【数学建模】 非线性规划+二次规划(上)
150 0
|
数据可视化 数据建模 算法框架/工具
【数学建模】常微分方程
【数学建模】常微分方程
211 0
|
Python
【数学建模】Python+Gurobi——零基础学优化建模线性规划模型(LP)
【数学建模】Python+Gurobi——零基础学优化建模线性规划模型(LP)
850 0
|
机器学习/深度学习 算法 数据挖掘
使用 LSSVM 的 Matlab 演示求解反常微分方程问题(Matlab代码实现)
使用 LSSVM 的 Matlab 演示求解反常微分方程问题(Matlab代码实现)