对于标准的线性规划我们可以写成如下的形式,如果有不等式约束,则写出他的对偶问题:


我们以一个实例来看

解一下线性规划问题,通过linprog求解器和sedumi求解器分别求解。注意,使用sedumi求解前需要写出对偶形式,对对偶进行求解。

%%
clc
clear all
tic
b=[1 4]';
A=[-1 1 0 1 1;0 0 -1 1 2];
c=[0 2 0 3.5 6];
[x, y, info]=sedumi(A,b,c)
toc
time = toc
%%
tic
clear all
f = [-1;-4];
b = [0 2 0 3.5 6]';
A = [-1 1 0 1 1; 0 0 -1 1 2]';options = optimoptions('linprog','Algorithm','dual-simplex','Display','iter','MaxIterations',20)[x,fval,exitflag,output,lambda]  = linprog(f,A,b,[],[],[],[],options)
toc
time = toc

我们对求解器运行时间也做了计时,进行对比:

SeDuMi 1.3 by AdvOL, 2005-2008 and Jos F. Sturm, 1998-2003.
Alg = 2: xz-corrector, Adaptive Step-Differentiation, theta = 0.250, beta = 0.500
eqs m = 2, order n = 6, dim = 6, blocks = 1
nnz(A) = 7 + 0, nnz(ADA) = 4, nnz(L) = 3it :     b*y       gap    delta  rate   t/tP*  t/tD*   feas cg cg  prec0 :            4.58E+01 0.0001 :   8.27E+00 1.37E+01 0.000 0.2992 0.9000 0.9000   1.99  1  1  1.3E+002 :   1.15E+01 3.16E+00 0.000 0.2304 0.9000 0.9000   1.81  1  1  2.4E-013 :   1.19E+01 5.77E-01 0.000 0.1826 0.9000 0.9000   1.19  1  1  4.1E-024 :   1.20E+01 2.97E-03 0.000 0.0051 0.9990 0.9990   1.01  1  1
iter seconds digits       c*x               b*y4      0.2   Inf  1.2000000000e+01  1.2000000000e+01
|Ax-b| =   0.0e+00, [Ay-c]_+ =   0.0E+00, |x|=  2.2e+00, |y|=  3.0e+00Detailed timing (sec)Pre          IPM          Post
6.900E-02    1.440E-01    1.700E-02
Max-norms: ||b||=4, ||c|| = 6,
Cholesky |add|=0, |skip| = 0, ||L.L|| = 1.80888.
x =(1,1)        1(5,1)        2
y =03
info = struct with fields:iter: 4feasratio: 1pinf: 0dinf: 0numerr: 0timing: [0.0690 0.1440 0.0170]wallsec: 0.2300cpusec: 0.2500
Elapsed time is 0.250347 seconds.
time =0.2504
options = linprog options:Options used by current Algorithm ('dual-simplex'):(Other available algorithms: 'interior-point', 'interior-point-legacy')Set properties:Algorithm: 'dual-simplex'Display: 'iter'MaxIterations: 20Default properties:ConstraintTolerance: 1.0000e-04MaxTime: InfOptimalityTolerance: 1.0000e-07LP preprocessing removed 1 inequalities, 0 equalities,
0 variables, and 1 non-zero elements.Iter      Time            Fval  Primal Infeas    Dual Infeas  0     0.002    0.000000e+00   0.000000e+00   2.672696e+00  2     0.002   -1.200000e+01   0.000000e+00   0.000000e+00  Optimal solution found.x =03
fval =-12
exitflag =1
output = struct with fields:iterations: 2constrviolation: 0message: 'Optimal solution found.'algorithm: 'dual-simplex'firstorderopt: 0
lambda = struct with fields:lower: [2×1 double]upper: [2×1 double]eqlin: []ineqlin: [5×1 double]
Elapsed time is 0.992132 seconds.
time =0.9922

linprog之前博客已经解释过,我们现在对sedumi做一次解释,因为对偶问题是最大化问题,这里求解信息中第一个b*y值可以看到在不断增大,在关注一个feasibility值,表示结果置信度,最后为0.999。gap是对偶间隙,这个对偶间隙要求越小越好,也可以看到,最后gap也缩小到e-3了。sedumi中还给出了计算时间,包括预处理时间,处理时间,后处理时间,这个求解过程占用时间都分别给出来了。

我们通过tic toc计时,发现sedumi求解速度比linprog快速很多。

SeDuMi教程(2)_线性规划的两种求解器的对比相关推荐

  1. 【Android 逆向】ART 脱壳 ( InMemoryDexClassLoader 脱壳 | 加固厂商在 ART 下使用的两种类加载器 | InMemoryDexClassLoader 源码 )

    文章目录 一.加固厂商在 ART 下使用的两种类加载器 ( InMemoryDexClassLoader | DexClassLoader ) 二.InMemoryDexClassLoader 源码分 ...

  2. Java多线程两种实现方式的对比

    Java多线程两种实现方式的对比 一种,直接继承Thread类 一种,实现Thread类的Runnable接口 两种方式的区别 比如,售票厅有四个窗口,可以发售某日某次列出的100张车票,此时,100 ...

  3. 1.18.2.Table APISQL(概念与通用API、两种计划器(Planner)的主要区别、创建 TableEnvironment、临时表、永久表、创建表、虚拟表、Connector 等)

    1.18.2.概念与通用API 1.18.2.1.两种计划器(Planner)的主要区别: 1.18.2.2.Table API和SQL程序的结构 1.18.2.3.创建 TableEnvironme ...

  4. 盘中孔Via-In-Pad 和狗骨Dog-bone两种Fanout扇出方式对比

    盘中孔Via-In-Pad 和狗骨Dog-bone两种Fanout扇出方式对比 1.1单端正常扇孔,盘中孔Via-In-Pad 和狗骨Dog-bone比较 BGA等高引脚密度的器件,在出线的时候会进行 ...

  5. a - 数据结构实验之串一:kmp简单应用_串的两种模式匹配方式(BF/KMP算法)

    串的两种模式匹配方式(BF/KMP算法) 前言 串,又称作字符串,它是由0个或者多个字符所组成的有限序列,串同样可以采用顺序存储和链式存储两种方式进行存储,在主串中查找定位子串问题(模式匹配)是串中最 ...

  6. 有向图的广度优先遍历_图的两种遍历方式

    1 引言 遍历是指从某个节点出发,按照一定的的搜索路线,依次访问对数据结构中的全部节点,且每个节点仅访问一次. 在二叉树基础中,介绍了对于树的遍历.树的遍历是指从根节点出发,按照一定的访问规则,依次访 ...

  7. win10可用空间变成未分配_教你两种方法有效利用Win10未分配的空间 - 易我科技...

    Haley 于 2020/08/24更新 磁盘分区管理 摘要 文中介绍了两种方法充分利用Windows10未分配空间,分别为1)格式化Win10未分配空间来创建新的分区,2)在分区上添加未分配空间. ...

  8. prim算法求最小生成树_最小生成树的两种方法(Kruskal算法和Prim算法)

    关于图的几个概念定义: 连通图:在无向图中,若任意两个顶点vivi与vjvj都有路径相通,则称该无向图为连通图. 强连通图:在有向图中,若任意两个顶点vivi与vjvj都有路径相通,则称该有向图为强连 ...

  9. Unity3D教程:播放视频的两种方式

    Unity3D中播放游戏视频的方式有两种,第一种是在游戏对象中播放,就好比在游戏世界中创建一个Plane面对象,摄像机直直的照射在这个面上.第二种是在GUI层面上播放视频.播放视频其实和贴图非常相像, ...

最新文章

  1. 华北电力大学计算机图形学实验报告,华北电力大学计算机图形学实验报告分析.doc...
  2. R语言临床预测模型的评价指标与验证指标实战:净重新分类指数NRI(Net Reclassification Index, NRI)
  3. 8 月--菜鸟吐槽日志
  4. 使用ShareSDK完成第三方(QQ、微信、微博)登录和分享
  5. 柳传志:33年来,联想这13条管理经验从未改变
  6. 华为hwics格式产品文档打开方式
  7. Servlet实现上传下载
  8. AB PLC Modbus TCP通讯测试
  9. 两球完全弹性碰撞反弹方向问题
  10. Android 应用程序无响应(ANR)报错原因
  11. iOS App 签名的原理
  12. [转] ReactNative Animated动画详解
  13. Windows 中的键盘快捷方式
  14. JRtplib开发笔记(二):JRtplib库编译、示例演示
  15. 基础设施即代码:一场变革即将到来
  16. 我已经是糖尿病患者将近9年了。
  17. 黑客攻防从入门到精通 第7章及后文
  18. EPON:ONU注册流程简介
  19. 捷俊通称重软件教你如何处理简单地磅软件故障
  20. mysql 加写锁_MySQL中的读锁和写锁

热门文章

  1. python编程能有什么用_揭秘python都能做什么?
  2. 计算机的未来科技作文700字,未来的科技与绿*的作文700字
  3. 前端证券项目_证监会公告[2018]6号 证券公司投资银行类业务内部控制指引
  4. 火箭联盟服务器维护中怎么办,《火箭联盟》出现服务器问题 官方致歉并承诺会尽快修复...
  5. [置顶] 如何把你的笔记本电脑变成一个Wi-Fi路由器在Windows 7 8?
  6. shop--7.店铺信息编辑--Controller层
  7. k8s+jenkins
  8. 【UOJ】【BZOJ】 [Zjoi2016]小星星
  9. oracle 常用知识点整理
  10. 如何让百度快速收录文章