【数学建模】求解混合整数线性规划 MILP 问题

宇宙微尘
2025-01-15 10:50:49
运筹优化
算法解析
本帖最后由 宇宙微尘 于 2025-1-21 16:10 编辑


实验介绍


混合整数线性规划(Mixed Integer Linear Programming,MILP)是一类优化问题,其中目标函数和约束条件均为线性,并且包含整数变量。MILP 在实际应用中具有广泛的应用,可以解决很多实际问题,如生产调度、网络设计、资源分配等。


知识点


(1)混合整数线性规划


(2)资源分配问题


混合整数线性规划的应用


混合整数线性规划(MILP)在实际应用中具有广泛的用途。下面列举了一些常见的应用领域:


(1)生产计划和调度:在制造业中,MILP 可以帮助制定最佳的生产计划和调度方案,以优化资源利用,最大化产出或最小化成本。例如,在生产线上安排作业顺序、分配工人和机器的调度等问题。


(2)物流和运输优化:MILP 可以用于优化货物的运输路线、仓库位置选择、车辆调度等物流和供应链管理问题。通过最佳路线和调度,可以最大限度地降低物流成本并提高效率。


(3)设施位置规划:在城市规划、网络设计和设施选址等领域中,MILP 可以帮助确定最佳的设施位置和配置方案。例如,确定新的工厂、仓库或服务设施的最佳位置,以便最大程度地满足需求并减少成本。


(4)资源分配和调度:MILP 可以用于优化资源的分配和调度,例如人员、设备、资金等。在医疗机构、航空公司、能源系统等领域,MILP 可以支持决策者制定最佳的资源分配方案,以提高效率和满足需求。


(5)项目管理:在项目管理中,MILP 可以帮助制定最佳的项目进度计划、资源分配和工作分配。通过优化项目执行顺序、资源利用和时间表,可以最大限度地减少项目延误和成本超支。


混合整数线性规划


混合整数线性规划(Mixed Integer Linear Programming,简称 MILP)是一种优化问题的数学建模方法。在 MILP 中,目标函数和约束条件都是线性的,并且问题中既包含连续变量(取任意实数值),又包含整数变量(取整数值)。整数变量的存在使得问题更加复杂,因为整数变量引入了离散决策的要素。


MILP 可以用于解决许多实际问题,例如生产规划、资源分配、调度问题等。通过在目标函数中考虑最小化或最大化某个指标,同时在约束条件中限制变量的取值范围,MILP 可以帮助找到最优的决策方案。



x = intlinprog(f,intcon,A,b) 最小化 f'*x,使得 intcon 中的 x 分量是整数,且 A*x ≤ b。


x = intlinprog(f,intcon,A,b,Aeq,beq) 求解上述问题,同时还满足等式约束 Aeq*x = beq。如果不存在不等式,请设置 A = [] 和 b = []。


x = intlinprog(f,intcon,A,b,Aeq,beq,lb,ub) 定义设计变量 x 的一组下界和上界,使解始终在 lb ≤ x ≤ ub 范围内。如果不存在等式,请设置 Aeq = [] 和 beq = []。


x = intlinprog(f,intcon,A,b,Aeq,beq,lb,ub,x0) 使用初始可行点 x0 进行优化。如果不存在边界,请设置 lb = [] 和 ub = []。


x = intlinprog(f,intcon,A,b,Aeq,beq,lb,ub,x0,options) 使用 options 中指定的优化选项执行最小化。使用 optimoptions 可设置这些选项。如果不存在初始点,请设置 x0 = []。


输入参数介绍


f — 系数向量。


系数向量,指定为实数向量或实数数组。


intcon — 整数约束组成的向量。


整数约束组成的向量,指定为正整数向量。intcon 中的值指示决策变量 x 中应取整数值的分量。


A — 线性不等式约束。


线性不等式约束,指定为实矩阵。A 是 M×N 矩阵,其中 M 是不等式的数目,而 N 是变量的数目(f 的长度)。


b — 线性不等式约束。


Aeq — 线性等式约束。


beq — 线性等式约束。


lb — 下界,ub — 上界。



示例演示一


假设我们有以下优化问题:



我们的目标是找到满足约束条件下的最大值。


f = [-5;-4];
intcon = 1:2;
A = [2,1;
     1,2];
b = [8;6;];
lb=[0;0];
x = intlinprog(f,intcon,A,b,[],[],lb)

结果展示:


LP:                Optimal objective value is -22.000000.

Cut Generation:    Applied 1 Gomory cut.
                   Lower bound is -20.000000.
                   Relative gap is 0.00%.

Optimal solution found.

x =

     4
     0

示例演示二


求解具有线性不等式的 MILP。



编写目标函数向量和由整数变量组成的向量。


f = [8;1];
intcon = 2;
A = [-1,-2;
    -4,-1;
    2,1];
b = [14;-33;20];
x = intlinprog(f,intcon,A,b)

结果展示:


LP:                Optimal objective value is 59.000000.

Optimal solution found.

x =

    6.5000
    7.0000

示例演示三


求解具有所有类型的约束的 MILP。



f = [-3;-2;-1];
intcon = 3;
A = [1,1,1];
b = 7;
Aeq = [4,2,1];
beq = 12;
lb = zeros(3,1);
ub = [Inf;Inf;1];
x = intlinprog(f,intcon,A,b,Aeq,beq,lb,ub)

结果展示:


LP:                Optimal objective value is -12.000000.

Optimal solution found.

x =

         0
    5.5000
    1.0000

实验总结


本实验让我们了解了整数规划的流程:


(1)确定问题背景和目标,明确需要优化的目标函数,例如最小化成本、最大化利润等。


(2)定义问题中的决策变量和约束条件,包括连续变量和整数变量,以及线性等式和线性不等式约束。


(3)将问题转化为数学模型,构建目标函数和约束条件的数学表示。


利用计算工具或优化软件包提供的函数进行求解。MATLAB 的优化工具箱提供了用于求解 MILP 问题的 intlinprog 函数。需要重点考虑问题的建模准确性、求解方法的效率和可行性,以及对最优解的解释和验证。通过不断优化建模和求解过程,可以更好地解决复杂数学规划问题,并取得更好的优化结果。




本文转载自微信公众号:数学建模CUMCM

1446
0
0
0
关于作者
相关文章
  • 量子计算赋能能源材料革命:从分子模拟到材料设计,开启高效研发 ...
    国际团队在《ACS Energy Letters》发表《Harnessing Quantum Computing for Energy Materials: O ...
    了解详情 
  • 量子力学百年之际的 MLIP:化学精度、效率与通用泛化的演进与展 ...
    随着量子力学在2025年迎来其百年纪念,机器学习原子间势(MLIP)已逐渐发展为分子建模领域的变革性 ...
    了解详情 
  • 具身智能再迎突破!俄罗斯团队用量子退火技术破解机器人运动控制 ...
    内容提要一项由俄罗斯多家科研机构联合完成的最新研究表明,量子退火(Quantum Annealing)技术 ...
    了解详情 
  • Transformer 的尽头是 Ising 机
    华人学者闪耀2026元旦,前有DeepSeek mHC:一次将 Transformer 残差流拉回重整化轨道的重大升级 ...
    了解详情 
  • 机器学习赋能靶向蛋白降解药物设计:PROTACs与分子胶的技术综述 ...
    靶向蛋白降解(TPD)通过利用泛素–蛋白酶体系统(UPS)实现对致病相关蛋白的催化性去除。蛋白 ...
    了解详情 
领取成功
本月5个550bit真机配额已发放给您,配额将在2个月后到期,请及时使用哦~
活动中心
联系我们
二维码
返回顶部
返回
活动中心

完成任务,轻松获取真机配额

×
每日必做
新手任务
长期任务
其他任务
快速回复 返回顶部 返回列表
玻色有奖小调研
填写问卷,将免费赠送您1个1000bit真机配额
(单选) 您是从哪个渠道得知我们的?*
您是从哪个社交媒体得知我们的?*
您是通过哪个学校的校园宣讲得知我们的呢?
取消

提交成功

真机配额已发放到您的账户,可前往【云平台】查看

量子AI开发者认证

考核目标

开发者能够成功搭建Kaiwu-PyTorch-Plugin项目基础环境,并成功运行示例代码,根据示例提示,输出指定的值并填写至相应的输入框中。

通过奖励

5个一年效期的1000量子比特真机配额

专属「量子AI开发者」社区认证标识

开发者权益

每月固定权益:5个550量子比特真机配额
前往考核

第一步

按照README提示成功安装Kaiwu-PyTorch-Plugin库环境依赖
前往GitHub

第二步

运行 community-assessment 分支下的 run_rbm.py 代码示例

第三步

理解示例代码,手动打印并填写如下数值:

正相采样的状态

负相采样的状态

正相的能量值

负相的能量值

*

提交答案

开发者权益

每月固定权益:5个550量子比特的真机配额

恭喜您完成考核

您将获得量子AI开发者认证标识及考核奖励

1000 bit*5

配额

Quantum AI Developer Certification

Assessment Objectives

Developers should successfully set up the basic environment for the Kaiwu-PyTorch-Plugin project, run the QBM-VAE sample code, and calculate the correct FID value based on the random seed value provided by the system.

Pass Rewards

10 quotas for 550-qubit real quantum machines with a one-year validity period

Exclusive "Quantum AI Developer" Community Certification Badge

Developer Benefits

Fixed Monthly Benefits: 5 quotas for 550-qubit real quantum machines
Proceed to Assessment

Step 1

Install the environment dependencies for the Kaiwu-PyTorch-Plugin library according to the README instructions
Go to GitHub

Step 2

Replace the Seed Value

Your seed value is

Step 3

Enter the FID Value You Calculated

*

Submit Answer

Developer Benefits

Fixed Monthly Benefits: 5 quotas of 550-qubit real machines

Congratulations on Completing the Assessment

You will receive the Quantum AI Developer Certification Badge and Assessment Rewards

550bit*10

Quotas