基于matlab软件数学建模(一)线性规划--linporg()函数求解

线性规划

本文中,主要介绍基于matlab软件,解决数学建模或者生活学习中遇到的线性规划问题。

线性规划的定义

线性规划问题是一种数学优化问题,它的目标是在满足一系列线性不等式或等式的约束条件下,找到一个线性目标函数的最大值或最小值。线性规划问题通常可以用以下的标准形式来定义:

目标函数

一个线性函数,需要被最大化或最小化。在这个函数中,有且仅有一次函数,且不包含sin(),log(),1/x等,具体实例如下:
在这里插入图片描述
求最大与最小值是线性规划中最常见的问题

决策变量

决策变量为一组实数,即x1,x2,…,xn,如果在有非负性约束的情况下,比如工程完成的日期,购买物品的数量等,决策变量是非负实数。

约束条件

一组线性不等式或等式,这些约束条件定义了决策变量的可行域。约束条件通常由读者在题干中进行列举。

基于matlab求解

在matlab内,对于线性规划问题通常有两种求解方式,基于求解器求解和基于问题求解,下面对两种方法进行介绍

基于求解器求解–linporg()函数

下面,列举一个线性规划问题,基于求解器进行求解,题目如下
在这里插入图片描述

linprog函数

标准型

对于此问题,基于求解器求解时,需要注意将所有形式转化为标准型,标准型的含义为,目标函数求其最小值,约束条件均为小于等于,如果所得目标函数和约束条件并不是标准型,只需要加符号即可

在matlab内,基于求解器求解时应用linporg()函数,该函数参数如下
[ x , f v a l , e x i t f l a g , o u t p u t ] = l i n p r o g ( f , a , b , a e q , b e q , l b , u b ) [x,fval,exitflag,output]=linprog(f,a,b,aeq,beq,lb,ub) [x,fval,exitflag,output]=linprog(f,a,b,aeq,beq,lb,ub)
输入侧

符号符号含义
f目标函数的系数向量
a线性不等式约束的系数矩阵,每一行代表一个约束,列数与 f 向量相同
b线性不等式约束的右侧常数向量,与 a 的行数相同
aeq线性等式约束的系数矩阵,形式与 a 相同
beq线性等式约束的右侧常数向量,与 aeq 的行数相同
lb决策变量的下界,可以是向量或单个值,默认情况下所有变量的下界是 0
ub决策变量的上界,用法与 lb 相同

输出侧

符号符号含义
x优化问题的解,即决策变量的值
fval目标函数在 x 处的值,即最小化或最大化的目标函数值
exitflag表示算法的退出状态,1 表示算法成功找到了解,0 表示算法没有收敛,-1 表示迭代次数超过了预设的限制.
output一个结构体,包含了算法的额外信息

下面利用求解器进行求解

clc; clear;  % 界面初始化 
f=[-2;-3;5];  % 目标函数系数,化为标准型
a=[-2,5,-1;1,3,1];  % 线性不等式约束的系数矩阵 
b=[-10;12];  % 线性不等式约束右侧常数向量
aeq=[1,1,1];  % 线性等式约束的系数矩阵 
beq=7;  % 线性等式约束右侧的常数向量
[x,y]=linprog(f,a,b,aeq,beq,zeros(3,1));  % 最小是为0,即zeros(3,1)
x, y=-y  %目标函数最大化

读者可根据所需解决问题对函数内的系数进行更改,但需要注意标准化。

  • 18
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值