线性规划

简单的线性规划(目标函数和约束都是线性函数)

R中常用lpSolve、Rglpk包来解决。lpSolve包的核心函数的lp(),lp.assign,lp.transport()依次解决简单线性规划、分配问题、生产计划和交通运输问题。用法:

简单线性规划

lp (direction = "min", objective.in, mat,dir,rhs, int.vec,binary.vec, all.int=FALSE, all.bin=FALSE)
# mat为系数矩阵 dir 约束的方向 rhs 约束的右端系数
#若为整数规划,可通过int.vec=c(i)制定序号来设定,若全是可通过all.int=TRUE实现。若为0-1规划,则可以通过all.bin=TRUE来实现。

Rglpk包的函数Rglpk_solve_LP()也可以实现上述简单线性规划。用法:

Rglpk_solve_LP(obj, mat, dir, rhs, types = NULL, max = FALSE,control = list(), ...)
#max为最大值的逻辑参数
#type 变量类型 B——0-1变量 I——正整数 C 正实数

分配问题

分配问题,此处以匈牙利问题为例,说明其在R中的实现
- lp.assign()的用法

lp.assign (mat,  "min", presolve = 0, compute.sens = 0)#mat为系数矩阵#返回的是目标值,可以通过$solution来查看具体的方案
  • clue包下的solve_LSAP()
solve_LSAP(mat, maximum = FALSE)
#其返回的是具体的方案,若想看目标值,可以通过以下代码实现,
y<-solve_LSAP(mat)
sum(mat[cbinds(seq_along(y),y)]

例:有一份中文说明书,需要译成日德俄英四种文字,分别有四个人来完成。每个翻译所需时间不同。问怎样分配任务可以使总的时间最小。

Mat<-matrix(c(6,7,11,2,4,5,9,8,3,1,10,4,5,9,8,2),ncol=4,byrow=TRUE)
lp.assign(Mat)#结果#Success: the objective function is 15
lp.assign(Mat)$solution#结果:[,1] [,2] [,3] [,4]
[1,]    0    0    0    1
[2,]    1    0    0    0
[3,]    0    1    0    0
[4,]    0    0    1    0#使用solve_LSAP解决问题
library(clue)
y<-solve_LSAP(Mat)
sum(Mat[cbinds(seq_along(y),y)])#结果:Optimal assignment:1 => 4, 2 => 1, 3 => 2, 4 => 3

线性约束的非线性规划问题

R中内置函数constrOptim函数专门求解约束的非线性规划。

constrOptim(theta, f, grad, ui, ci, mu = 1e-04, control = list(),method = if(is.null(grad)) "Nelder-Mead" else "BFGS", outer.eps = 1e-05, ..., hessian = FALSE)
#theta 为初始值 ui 系数矩阵 ci=rhs
#所有不等式默认是“》=”

如香蕉函数

**f(x1,x2)=(1-x1)^2+100*(x2-x1^2)^2**

s.t:

**-3x1-4x2>=12**
**-x1+2x2>=-2**
**x1>=0;x2>=0**

代码:

constrOptim(theta=c(2,1),obj.f,gr.f,Mat,rhs)

非线性约束的非线性规划

R中通过alabama包,Rsolnp(R_3.4.2上不能使用)。以下简单介绍alabama包,其核心函数为constrOptim.nl(),用法:

constrOptim.nl(par, fn, gr = NULL,hin = NULL,...)
#hin为不等式约束,所有的约束需要转化为“》=”

例:

min z=(1-x1^2)+100(x2-x1^2)^2
s.t: x1^2+x^2<=4 
     x1/x2>=2
library(alabama)
hin.f<-function(x){x1<-x[1]x2<-x[2]c(-x1^2-x2^2+4,x1/x2-2)
}
constrOptim.nl(par=c(1,0.3),obj.f,gr.f,hin.f)

整数约束的非线性规

可以通过优化算法,如:遗传算法,蚁群等。

参考文献:

数据科学中的R语言 李舰 肖凯(2015.3)

最优化读书笔记R(二)相关推荐

  1. 最优化读书笔记R(一)

    人生是场穷游,偶尔需要暴走 R读书笔记(一) 无约束的线性规划 实质可以转化为求根问题 1.求单根时: uniroot(f,interval) 2.求多项式的根 f(x)=a0+a1*x....+an ...

  2. C++prime读书笔记(二)C++标准库:IO、容器、泛型算法、动态内存

    layout: post title: C++prime读书笔记(二)C++标准库:IO.容器.泛型算法.动态内存 description: C++prime读书笔记(二)C++标准库:IO.容器.泛 ...

  3. 计算复杂性读书笔记(二): 论怎么把一个证明写得有意思

    2019独角兽企业重金招聘Python工程师标准>>> 计算复杂性读书笔记(二): 论怎么把一个证明写得有意思 比特猪 quanzz1129@gmail.com 首先是版权声明,版权 ...

  4. Linux设备驱动程式之读书笔记(二) [转]

    http://www.sudu.cn/info/html/edu/code/20070102/286543.html setlevel.c 非常实用 google 查找 #define _syscal ...

  5. 重构(Refactoring)技巧读书笔记 之二

    重构(Refactoring)技巧读书笔记 之二<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:of ...

  6. 深入分析Java Web技术内幕读书笔记(二)浅析DNS域名解析过程

    上一篇文章<浅析Web请求过程>讲述的是如何发起HTTP请求,对于请求发起过程中很重要的一个步骤--DNS解析过程的描述是一带而过,本篇文章将跟着DNS解析过程来分析域名是如何解析的. 一 ...

  7. cindy POSA2读书笔记(二)

    POSA2读书笔记(二) 呵呵,距离第一篇已经过了半年了--这本书其实翻完已经很久了,但是实践中没有使用到的东西总是一知半解,写出来会误导大众,所以还是不写的好. 今天在为Cindy 3.0a1中并发 ...

  8. Effective Java读书笔记(二)

    Effective Java 读书笔记 (二) 创建和销毁对象 遇到多个构造器参数时要考虑使用构建器 创建和销毁对象 何时以及如何创建对象? 何时以及如何避免创建对象? 如何确保它们能够适时地销毁? ...

  9. 《黑客与画家》读书笔记(二)

    <黑客与画家>读书笔记(二) 软件的bug 在自己刚刚写好的代码中,找出bug往往会比较快.有时,你只要看到出错提示,就知道问题出在哪里,甚至都不用看源码,因为潜意识中你已经在担心那个地方 ...

最新文章

  1. Windows 95被做成了App,可玩扫雷和纸牌
  2. android 之多线程详解
  3. hdu 5055(贪心)
  4. jupyter lab文档位置默认system_九大神招,让Python里数据分析神器Jupyter,完美升华...
  5. Linux下boost库的安装
  6. 测试需要的的linux命令,(面试必备)软件测试人员必备Linux命令操做(初级基础)...
  7. SQL中STR()函数功能
  8. linux下如何添加一个用户并且让用户获得root权限
  9. 计算机思维导论在线测试题库,计算机导论题库有答案.docx
  10. SSCOM的模拟连接测试及服务器连接
  11. 强连通分量(Tarjan算法)
  12. 调查问卷或量表数据的一般处理与SPSS统计分析
  13. 宇视NVR设备接入EasyCVR平台,离线后无法上线该如何解决?
  14. 制作本地视频网站 苹果cms 超详细
  15. 黑群晖二合一安装不了套件_家庭NAS部署指南(二)——如何自己动手安装一台黑群晖主机...
  16. 相关性评估:皮尔逊相关系数,R2
  17. 用Snoop工具来探测WPF窗体的构成
  18. CSS3:3D环绕实现
  19. 微信公众号第三方登录,简单易懂
  20. linux网站如何添加swf支持,linux上查看swf文件.靠谱

热门文章

  1. 抖音电商“双11”:品质国货和地方农特产成亮点
  2. 首款Android 16旗舰敲定!谷歌Pixel 6系列将获5年Android更新
  3. 特斯拉三季度生产23.8万辆 交付超24万辆
  4. 马斯克终于承认售出比特币:卖了10%
  5. “万物互联”的时代来了!鸿蒙系统OS 2.0重磅发布:“朋友圈”逐渐扩大
  6. 让IT人早点下班?高效的vPro平台帮你忙
  7. “五一”档总票房破13亿 《你的婚礼》高居榜首
  8. 五一档票房超8.8亿元!张艺谋新片仅第二
  9. MSCI发布最新ESG评级 三七互娱位居A股游戏行业最高
  10. 中国移动咪咕公司:打造五新体验 做5G时代内容的聚合者与生产者