当前位置: 首页 > news >正文

整数规划学习总结

整数规划学习总结

一、整数规划概述

整数规划是一类约束优化问题,其中部分或全部决策变量必须取整数值。其一般形式为:

min⁡/max⁡f(x)s.t.gi(x)≤0,i=1,2,…,mxj∈Z,j∈I⊆{1,2,…,n}xj∈R,j∉I \begin{aligned} \min/\max \quad & f(x) \\ \text{s.t.} \quad & g_i(x) \le 0, \quad i = 1,2,\dots,m\\ & x_j \in \mathbb{Z}, \quad j \in I \subseteq \{1,2,\dots,n\} \\ & x_j \in \mathbb{R}, \quad j \notin I \end{aligned} min/maxs.t.f(x)gi(x)0,i=1,2,,mxjZ,jI{1,2,,n}xjR,j/I
根据整数变量的个数和类型,整数规划可以分为:

  1. 纯整数规划(Pure Integer Programming, IP):所有决策变量都是整数。
  2. 混合整数规划(Mixed-Integer Programming, MIP):部分变量是整数,部分变量是连续值。
  3. 二进制/0-1 整数规划(Binary/0-1 IP):整数变量只能取 0 或 1,常用于选择、分配、布置问题。

二、整数规划在数学建模中的应用

  1. 运输与物流

    • 问题:配送车辆分配、仓库选址、最短路径、物流调度
    • 特点:物品或车辆的数量是整数,不能分割
    • 示例:设有 5 个配送中心和 10 个客户,求最小运输成本的配送方案
  2. 生产计划与资源分配

    • 问题:工厂生产计划、设备选择、任务排程
    • 特点:生产批次、机器台数、工人数量都是整数
    • 示例:生产 3 种产品,资源有限,最大化利润
  3. 选址与布局优化

    • 问题:仓库/工厂/服务器选址
    • 特点:选址决策通常是二进制变量(选/不选)
    • 示例:在多个候选地点中选 2 个仓库,使总运输成本最小
  4. 项目选择与投资决策

    • 问题:投资项目组合、科研项目选择
    • 特点:每个项目投资与否用 0-1 变量表示
    • 示例:预算有限,选择若干项目,使总收益最大
  5. 网络设计与分配

    • 问题:网络链路规划、电力线路建设
    • 特点:是否建设某条线路用 0-1 变量表示

三、MATLAB 中的整数规划语法

MATLAB 提供 intlinprog 函数求解整数规划问题。其基本格式:

[x,fval,exitflag,output] = intlinprog(f,intcon,A,b,Aeq,beq,lb,ub)

参数说明:

  • f:目标函数系数向量(求最小化)
  • intcon:需要整数约束的变量索引
  • A, b:不等式约束 A∗x≤bA*x \le bAxb
  • Aeq, beq:等式约束 Aeq∗x=beqAeq*x = beqAeqx=beq
  • lb, ub:变量下界和上界
  • x:最优解,fval 最优目标值

若求最大化问题,只需将目标函数取负再最小化:

[x,fval] = intlinprog(-f,intcon,A,b,Aeq,beq,lb,ub);
fval = -fval;

四、具体 MATLAB 示例

例 1:简单生产计划(整数规划)

问题描述

工厂生产 A、B 两种产品,每种产品需使用两种原料。已知利润和资源约束,求整数生产量使利润最大化。

产品利润(元)原料1原料2
A4021
B3012

原料总量:原料1 ≤ 8,原料2 ≤ 6。

MATLAB 代码

f = [-40 -30];      % 最大化利润 => 最小化负利润
intcon = [1 2];     % 两个变量都要求整数
A = [2 1; 1 2];     % 原料约束
b = [8; 6];
lb = [0 0];         % 非负
ub = [];            % 无上界
x = intlinprog(f,intcon,A,b,[],[],lb,ub);
profit = -f*x;
disp('最优生产量:');
disp(x);
disp('最大利润:');
disp(profit);

运行结果示意

最优生产量:22
最大利润:140

解释:生产 2 件 A 和 2 件 B,利润最大。


例 2:仓库选址(0-1 整数规划)

问题描述

有 4 个候选仓库(W1~W4),要选 2 个,满足客户配送需求最小化运输成本。

MATLAB 代码

f = [10 12 20 18];  % 运输成本
intcon = 1:4;       % 0-1 整数
Aeq = [1 1 1 1];    % 选两个仓库
beq = 2;
lb = zeros(4,1);
ub = ones(4,1);
x = intlinprog(f,intcon,[],[],Aeq,beq,lb,ub);
disp('选址方案:');
disp(x');

说明:变量 x(i) 为 1 表示选仓库 i,为 0 表示不选。


五、总结

  1. 整数规划适合处理离散决策问题(生产数量、选址、任务分配、车辆调度)。
  2. MATLAB 的 intlinprog 可以方便地解决混合整数和纯整数规划问题。
  3. 通过目标函数 + 约束条件 + 整数约束即可建立模型,MATLAB 可直接求解。
  4. 二进制/0-1 整数规划是最常见的模型类型,广泛应用于选址、投资组合、资源分配等问题。
http://www.xdnf.cn/news/1347193.html

相关文章:

  • 靶机 - SAR
  • 【学习记录】c完整线程池实现
  • 集成算法学习笔记
  • C++ OpenGL中几个常见库及其区别
  • Python实现从Parquet文件生成Redshift表并存储SQL语句
  • Eigen 中Sparse 模块的简单介绍和实战使用示例
  • (纯新手教学)计算机视觉(opencv)实战八——四种边缘检测详解:Sobel、Scharr、Laplacian、Canny
  • Day11 数据统计 图形报表
  • RKLLM 模型转换从0开始
  • vagrant怎么在宿主机操作虚拟机里面的系统管理和软件安装
  • 2025软件供应链安全技术路线未来趋势预测
  • vim的使用
  • Retrieval-Augmented Generation(RAG)
  • 为什么访问HTTPS站点时,会发生SSL证书错误
  • Trie 树(字典树)
  • 8月22号打卡
  • FFmpeg及 RTSP、RTMP
  • GitGithub相关(自用,持续更新update 8/23)
  • 文件下载和文件上传漏洞
  • LeetCode第1695题 - 删除子数组的最大得分
  • CSS自定义属性(CSS变量)
  • Jenkins发布spring项目踩坑——nohup java -jar发布后显示成功,但实际jps查询并未运行
  • kubernetes中pod的管理及优化
  • Python打卡Day49 CBAM注意力
  • Apache Ozone 2.0.0集群部署
  • 微信原生下载互联网oss资源保存到本地
  • CCleaner v1.2.3.4 中文解锁注册版,系统优化,隐私保护,极速清理
  • Unreal Engine Class System
  • 图数据库(neo4j)基础: 分类/标签 节点 关系 属性
  • 蓝牙部分解析和代码建构