混合整数线性规划,图的最大流,图的匹配,求解
求解软件有,
matlab,lingo,商用软件
GLPK,GNU LP Kit,开源,ansi C
介绍图的匹配,matching
https://www.tutorialspoint.com/graph_theory/graph_theory_matchings.htm
最大流问题,有许多图的基础知识
https://blog.csdn.net/qq_39557517/article/details/81945749
介绍如何使用GLPK
https://www-sop.inria.fr/members/Frederic.Giroire/teaching/ubinet/pdfs/exercises-solvers.pdf
线性规划基本介绍:https://www.cs.cmu.edu/~ckingsf/bioinfo-lectures/linearp.pdf
线性规划三种求解方法:
Simplex method,单纯形法,古老的方法,虽然不是多项式时间算法,但实际计算很快;
Ellipsoid method,椭球方法,1970s提出,虽然是多项式时间算法,但实际效果差,很少用;
Interior point method,多项式时间算法,实用。
最大二分匹配,maximum bipartite matching
最大流问题求解:
下面这个例子简单一些:
http://www.cs.cornell.edu/~tomf/pyglpk/ex_maxflow.html
与这个图类似:
对应的matlab线性规划代码如下,有一点需要注意PPT的目标函数是max,matlab目标函数是min:
clc;clear; A = [ 1, 0, 0, 0, 0;0, 1, 0, 0, 0;0, 0, 1, 0, 0;0, 0, 0, 1, 0;0, 0, 0, 0, 1]; b = [4;1;2.5;1;4]; Aeq=[ 1, 0, -1, -1, 0;0, 1, 1, 0, -1]; beq = [0;0];f = [-1,-1,0,0,0];x = linprog(f,A,b,Aeq,beq)
View Code
输出结果如下,最大流为4.5:
Optimization terminated.x =3.50001.00002.50001.00003.5000
View Code
下面这篇很好的介绍了如何将最大流问题整理成一个线性规划问题,使用了PyGLPK 。
http://www.mathcs.emory.edu/~cheung/Courses/323/Syllabus/NetFlow/max-flow-lp.html
对应的matlab线性规划代码如下,需要使用整数线性规划:
clc;clear;%x01,x02,x03,x14,x15,x24,x25,x26,x35,x47,x57,x67 Aeq=[ 1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0;0, 1, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0;0, 0, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0;0, 0, 0, 1, 0, 1, 0, 0, 0, -1, 0, 0;0, 0, 0, 0, 1, 0, 1, 0, 1, 0, -1, 0;0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1]; beq = [0;0;0;0;0;0];%x01,x02,x03,x14,x15,x24,x25,x26,x35,x47,x57,x67 A = [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0;0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0;0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0;0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0;0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0;0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0;0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0;0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0;0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0;0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]; b = [3;2;2;5;1;1;3;1;1;4;2;4];f = [-1,-1,-1,0,0,0,0,0,0,0,0,0];intcon = [1:12]; x = intlinprog(f,intcon,A,b,Aeq,beq)
View Code
输出结果如下,最大流为6:
LP: Optimal objective value is -6.000000. Optimal solution found.Intlinprog stopped at the root node because the objective value is within a gap tolerance of the optimal value, options.AbsoluteGapTolerance = 0 (the default value). The intcon variables are integer within tolerance, options.IntegerTolerance = 1e-05 (the default value).x =321301101420
View Code
转载于:https://www.cnblogs.com/yanhc/p/10989972.html
混合整数线性规划,图的最大流,图的匹配,求解相关推荐
- MindOpt对于混合整数线性规划问题如何建模优化(python语言)
简介 MindOpt是一款高效的优化算法软件包,求解算法实现了线性规划(LP).混合整数线性规划(MILP).二次规划(QP),可以支持命令行.c.c++.java和python调用.接下来我们将发布 ...
- 基于混合整数线性规划的电力系统机组组合优化研究
基于混合整数线性规划的电力系统机组组合优化研究 *一.简介 电力系统机组组合问题属于单目标.多约束优化问题,是电力系统优化调度.系统规划的学习的第一步.通过对机组组合优化的掌握,并进一步引入新的运行场 ...
- 混合整数线性规划——切割平面
我们可以使用Gomory切割来完全求解一个整数线性规划问题.思路是 1. 求解线性松弛 2. 根据这个线性松弛的单纯性表产生并添加Gomort切割,切割约束条件空间, 直到线性松弛的最优解为整. 针对 ...
- 如何用matlab编写混合整数规划,MATLAB中的混合整数线性规划
我试图用MATLAB解决这个混合整数线性规划问题 . 但是,我在matlab中对线性目标函数和决策变量求和的定义存在问题 . 我在MATLAB中使用intlinprog函数 . 请在下面找到图片链接 ...
- 混合整数线性规划(MILP)
混合整数线性规划(MILP) 线性规划模型(Linear Programming, LP):LP的定义比较简单,它指的就是目标函数是线性的,所有约束也是线性的,最后,决策变量可以取任何的实数.如果在线 ...
- 混合整数线性规划问题 Matlab
问题介绍 一般来说可以使用simplex算法计算正实数范围内的线性规划问题,但是在实际生活中我们常常会遇到带有相关整数要求的线性规划问题,我们称之为整数线性规划问题,而更复杂的情况下,问题中既有实数又 ...
- 混合整数线性规划——分支限界法
当上一节讲到的线性规划问题中,要求某些变量是整数的时候,就变成了混合整数线性规划问题. 其实对于某些问题来说,线性规划问题的最优解刚好是整数,那么它对应的混合整数线性规划问题的解就刚好是这个最优解了. ...
- 使用COPT求解混合整数线性规划
一.使用Copt求解模型步骤 1.模型的引入 使用 from copt import * 引入模型 import coptpy as cp 2.创建求解环境 env = Envr() 创建优化模型,返 ...
- yalmip + lpsolve + matlab 求解混合整数线性规划问题(MIP/MILP)
转自,原文: https://www.cnblogs.com/kane1990/p/3428129.html 最近建立了一个网络流模型,是一个混合整数线性规划问题(模型中既有连续变量,又有整型变量). ...
- 利用CVX和gurobi这个求解器复现一篇混合整数线性规划问题时遇到的问题
利用CVX和gurobi这个求解器复现一篇混合整数线性规划问题时遇到的问题 1.当出现从cvx 转换为double 时出现错误: ![](https://img-blog.csdnimg.cn/202 ...
最新文章
- Scala(三):类
- Nvidia: Mx150 CUDA10安装驱动
- 武大计算机学院八零后博导张翔,走近名校新生状元 武大张翔:学贵有恒
- gstat | 空间插值(二)——克里金插值之普通克里金
- python3.7 matplotlib增加坐标说明_python matplotlib:如何在极坐标图中的轴和刻度标签之间插入更多空格?...
- Openresty各个阶段的执行次序
- redis启动以及开机自启动
- flex自定义preloader预加载进度条
- 力扣-80 删除有序数组中的重复项 II
- word文档中打钩的8种方法【实用】
- SAP库存查询MB52报表如何设置为ALV格式显示?
- 从0开始强化学习——强化学习的简介和分类
- 黑马程序员最新版JavaWeb基础教程-学习笔记
- 什么是主从复制?mysql主从复制?redis主从复制?
- linux 强制更新只读文件
- 商业源码QQ币,YY币,充值支付系统源码
- webscraper 爬取二级网页_Web Scraper 高级用法——抓取二级网面 | 简易数据分析 13...
- 避其锋芒,侧翼出击。——司马亮创业回忆录(一)
- java 生成pdf 插件下载_java(iText)工具包生成PDF
- 项目质量管理的七个基本原理