零基础上手线性规划问题

线性规划是解决极值问题的一种数学方法,涉及决策变量、约束条件和目标函数。标准型包括最大化或最小化目标函数,同时满足线性等式和不等式约束。若可行区域存在,可能找到最优解;否则,可能是问题不可行或无界。单纯形法是求解线性规划的经典算法,而MATLAB和Python的优化库如linprog则提供了便捷的求解工具。在实际应用中,线性规划广泛用于资源分配、生产计划等领域。
摘要由CSDN通过智能技术生成

线性规划

要求:

  • 写出线性规划函数

  • 利用工具求解

本质上是极值问题

三要素:

  • 决策变量 问题的求解就是找出决策变量的最优值
  • 约束条件 范围意义
  • 目标函数 关于决策变量的某个函数

最优解也可能不存在,这对应于两种可能

  • 该线性规划本身不可行(可行区域为空)
  • 约束条件过松,导致可行区域无界
单纯形法求解线性规划

算法从一个顶点开始,不断地重复地寻找目标函数值较高的邻居顶点,并向前移动,一旦再也找不到更高地邻居,结束计算

只适用于简单的线性规划问题,可能有限于局部最优解

线性规划问题的标准型是:

  • 目标函数的最大约束

max(把min转换成max——两边添加负号)

  • 等式约束

保持等号

  • 非负约束

右端常量b为非负数 / 决策变量非负

求目标的最小值 F=-f

约束条件为不等式,引入一个非负变量Xn+i ,转化为线性等式,其中Xn+i松弛变量

如有bi <= 0 可在两边同乘 -1

如果有某个变量Xj无非负约束 可引进非负变量xj ,xj ,令Xj = Xj - Xj 代入到约束条件和目标函数中

用matlab求解线性规划问题

a.m 为matlab文件 不能命名为1.m

函数为:linprog

x = linprog(c,A,b,Aeq,beq,vLB,vUB)

c 为目标函数的系数向量

A为约束条件构成的向量系数矩阵,每一行用;隔开

b为 系数构成的列向量 用;隔开

Aeq =[] ; beq =[]

vlb= vub=

在这里插入图片描述

试用模型为:

​ min = Z = cTX

s.t. AX <= b

​ VLB <= X <= VUB

注意分母上不要出现决策变量

方法:进行变形

用python求解线性规划问题

scipy.optimize.linprog(c,A_ub=None,b_ub=None,A_eq=None,b_eq=None,bounds=None,method=‘simplex’, callback=None,options=None)

#导包 
from scipy import optimize
import numpy as np
#确定c,A,b,Aeq,beq
c = np.array([])
A = np.array([[],[],[],[]])  #两层[[]]
b = np.array([[]])
Aeq = np.array([]) 
beq = 
x1=(0,None)
x2=(0,None)

#求解 bounds 为界限
x = optimize.linprog(c,A,b,Aeq,beq,bounds = (x1,x2,x3,x4,x5,x6))
print(x)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值