数模笔记2-线性及非线性规划

线性规划用于在约束条件下优化线性目标函数,MATLAB提供linprog函数求解。整数规划是线性规划的扩展,变量限制为整数,分为纯整数和混合整数规划。解这类问题的方法包括分枝定界和割平面算法。MATLAB也支持fmincon函数解决非线性规划问题,而quadprog处理二次规划问题。
摘要由CSDN通过智能技术生成

线性规划模型

目标函数及约束条件(s.t.)均为线性函数,故被称为线性规划问题。线性规划问题是在一组线性约束条件的限制下,求一线性目标函数最大或最小的问题。

在解决实际问题时,把问题归结成一个线性规划数学模型是很重要的一步,往往也是很困难的一步,模型建立得是否恰当,直接影响到求解。而选适当的决策变量,是我们建立有效模型的关键之一。

线性规划问题的解的概念

  • matlab中规定的线性规划的标准形式:

img

f, x, b, beq, lb, ub为列向量,f 称为价值向量,b 称为资源向量,A、Aeq 为矩阵。

  • 一般线性规划问题的(数学)标准型为:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tJTixYjh-1622189985825)(C:\Users\User\AppData\Roaming\Typora\typora-user-images\image-20210528160022997.png)]

  • 可行解:

    满足约束条件的解称为线性规划问题的可行解,而使目标函数达到最大值的可行解叫最优解

  • 可行域:

    所有可行解构成的集合称为问题的可行域,记为R


  • matlab中求解线性规划的命令为:

    [x, fval] = linprog(f, A, b)
    [x, fval] = linprog(f, A, b, Aeq, beq)
    [x, fval] = linprog(f, A, b, Aeq, beq, lb, ub)
    

    其中 x 返回的是决策向量的取值,fval 返回的是目标函数的最优值,c 为价值向量,A, b 对应的是线下不等式约束,Aeq, beq 对应的是线下等式约束,lb 和 ub 分别对应的是决策向量的下界向量和上界向量。

整数规划模型(IP)

数学规划中的变量(部分或全部)限制为整数时,称为整数规划。若在线性规划模型中,变量限制为整数,则称为整数线性规划。目前所流行的求解整数规划的方法,往往只适用于整数线性规划。目前还没有一种方法能有效地求解一切整数规划。

整数规划分类

  1. 变量全限制为整数时,称纯(完全)整数规划。
  2. 变量部分限制为整数的,称混合整数规划。

整数规划特点

  • 原线性规划有最优解,当自变量限制为整数后,其整数规划解出现下述情况
    • 原线性规划最优解全是整数,则整数规划最优解与线性规划最优解一致。
    • 整数规划无可行解。
    • 有可行解(当然就存在最优解),但最优解值变差。
  • 整数规划最优解不能按照实数最优解简单取整而获得。(因为直接四舍五入可能不满足约束条件)

整数规划的数学模型

  • 一般形式:

    在这里插入图片描述

  • 依照决策变量取整要求的不同,整数规划可分为纯整数规划、全整数规划、混合整数规划、0-1整数规划。

    • 纯整数规划:所有决策变量要求取非负整数(这时引进的松弛变量和剩余变量可以不要求取整数)。
    • 全整数规划:除了所有决策变量要求取非负整数外,系数aij和常数bi也要求取整数(这时引进的松弛变量和剩余变量也必须是 整数)。
    • 混合整数规划:只有一部分的决策变量要求取非负整数,另一部分可以取非负实数。
    • 0-1整数规划:所有决策变量只能取0或1两个整数。(一般适用于工作安排)

整数规划与线性规划的关系

整数规划可行解是松驰问题可行域中的整数格点,松驰问题无可行解,则整数规划无可行解;

ILP(整数线性规划)最优值小于或等于松驰问题的最优值,松驰问题最优解满足整数要求,则该最优解为整数规划最优解;


分枝定界算法

不考虑整数限制先求出相应松弛问题的最优解,

​ 若松弛问题无可行解,则ILP无可行解;

​ 若求得的松弛问题最优解符合整数要求,则是ILP的最优解;

若不满足整数条件,则任选一个不满足整数条件的变量 x i0 来构造新的约束添加到松弛问题中形成两个子问题xi <=[x i0]; xi >=[x i0+1]

依次在缩小的可行域中求解新构造的线性规划的最优解,并重复上述过程,直到子问题无解或有整数最优解(被查清)。

img

割平面算法

基本思想

  • 如果松弛问题(P0)无解,则§无解;

  • 如果(P0)的最优解为整数向量,则也是§的最优解;

  • 如果(P0)的解含有非整数分量,则对(P0)增加割平面条件:即对(P0)增加一个线性约束,将(P0)的可行区域割掉一块,使得非整数解恰好在割掉的一块中,但又没有割掉原问题§的可行解,得到问题(P1),重复上述的过程。

基本步骤

  • 第一步:求解线性规划最优解

  • 第二步:
    x i + ∑ a i k x k = b i x_i + \sum{a_{ik}x_k} = b_i xi+aikxk=bi

    a i k = [ a i k ] + ( a i k − L a i k ) = [ a i k ] + f i k a_{ik} = [a_{ik}] + (a_{ik} - La_{ik}) = [a_{ik}] + f_{ik} aik=[aik]+(aikLaik)=[aik]+fik

    b i = [ b i ] + ( b i − L b i ) = [ b i ] + f i b_i = [b_i] + (b_i - Lb_i) = [b_i] + f_i bi=[bi]+(biLbi)=[bi]+fi

  • 第三步:
    x i + ∑ [ a i k ] x k + ∑ [ f

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

L、fly

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值