Rdonlp2

Rdonlp2包是R中解决非线性规划问题的利器, 其约束条件可为线性的或非线性的. 使用它可以很轻松地求解NLP问题, 几乎是偷懒不想多码代码时的不二选择. Rdonlp2包实际上是Prof. Peter Spellucci的DONLP2在R环境下的一个包装, 但目前似乎Spellucci的主页上写着要求必须写封email才能取得DONLP2. 而Rdonlp2包的作者Ryuichi Tamura在更新到版本0.3-1后也不再公开放出此包的下载. 我在CRAN上翻遍, 一无所获. R-help上还有人说给R包作者发邮件杳无回音云云 .. (谁叫这包从CRAN撤下两年后仍然挂在CRAN Task Views的Optimization页面上呢) 后来, 俺无意中在Rmetrics项目的SVN trunk上找到了此包的源代码. 编译之, 发现由于年代久远, 这包对目前版本的R有点水土不服. 于是上CRAN下了一圈旧发行版, 从R 2.11.x依次递减版本号进行实验, 结论是能够正常运行此包的R最高版本为R 2.6.2.

R对于数据类型的检查随着其版本号的升高而更加严格, 在使用Rdonlp2包求解问题时, 从R 2.7.0版起将出现一个Warning:

Warning message:
In all(lapply(nlin, function(e) is.function(attr(e, "gr")))) :
coercing argument of type 'list' to logical

从R 2.9.0版本开始,除了上面的Warning之外,还会出现一个Error:

Error in tryCatchList(expr, classes, parentenv, handlers) :
SET_VECTOR_ELT() can only be applied to a 'list', not a 'character'

第一个问题源于donlp2.R第59行, 相对比较好解决; 第二个问题则源于Rdonlp2.c, 这文件大约600行吧. 因为我不懂C, 所以希望哪位大侠能够费心手工hack一下, 让它能够在较新的的R版本上正常跑起来. 这里我就偷个懒, 不做任何修改. 直接装个R 2.6.2就可以正常使用啦.

这里放上源码和自己编译的Rdonlp2包.

Package source:     Rdonlp2_0.3-1.tar.gz

Windows binary:     Rdonlp2_0.3-1.zip

编译环境: R 2.6.2 + RTools 2.7 + Win Server 2k3 DataCenter SP2

R 2.6.2下测试通过, 使用时无上述Error和Warning, 加载包时亦无"编译环境版本号高"的Warning.

Read The "Friendly" Manual: http://arumat.net/Rdonlp2/

请注意: DONLP2和Rdonlp2只能用于学习和研究, 商业用途需经作者授权.

放几句英文自勉.

The Six Tenets:

  1. Access to computers - and anything which might teach you something about the way the world works - should be unlimited and total. Always yield to the Hands-On imperative!
  2. All information should be free.
  3. Mistrust authority - promote decentralization.
  4. Hackers should be judged by their hacking, not bogus criteria such as degress, age, race, or position.
  5. You can create art and beauty on a computer.
  6. Computers can change your life for the better.

PKU Vis Summer School

viz_cran_package_network

Prof. Michael McGuffin的热心让人感动. 当Michael问我"... You want to visualize something?"而我只能巨汗地回答"Just want to learn the basic things well ..."时, 我体会到以后还真是需要好好学一下计算几何了 .. Gary对大家都很有教益的Color Science .. 内敛的Patrignani的内敛的意式英语 .. 可爱老头Inselberg的极其无敌极其牛x闪闪的平行坐标 .. 周围低调的群牛 .. 都很值得回味. 感谢和我在同在一个group的Zhang, Wang, Chen三位同学, 你们优秀的想法给了我很多启发. :smile: 考虑到自己只是打酱油+纯路过的本质, 其他什么的就不多写了. 最后特别感谢高涛同学的友情食宿赞助. :wink:

Slides 1 - Group3: Plan(s)

Slides 2 - Final Presentation: Visualization of CRAN Package Dependency Network

最后的Name Cards偷了谢老大的创意 .. 脸红ing .. :oops:

原来暑假就要这么华丽丽的没了 ...

开源的矢量图手绘工具:Ipe

说起绘图工具, 尤其是适合与TeX配合使用的示意图绘制工具, MetaPost和Asymptote都很强大, 只是二者画图时都需要垒点代码, MetaPost还略显古老, 有些方面设计得不够完善. 在绘制那些非数学图非统计图非流程图而精度要求又不是很高的示意图时, 寻找一个上手简单, 功能足够的矢量图绘制工具就显得很重要了. 画个小图用上AI/CorelDraw/Inkscape这些巨无霸似乎有些夸张, 而且我总是用不好这些软件里那个贝塞尔曲线工具 .. Google后也不会, 希望下次遇到个会用的人手把手教我一下 .. :oops:

ipe_tetracube

Ipe绘制的图形示例

今天试用了一些专门的绘图宏包(PSTricks/PGF/TikZ)和GUI的手绘工具(TpX/Ipe/MetaGraf/Jpgfdraw/LaTeXDraw), 个人感觉还是Ipe比较好用, 图形简约自然, 风格十分贴近MetaPost等经典工具, 可以直接导出EPS/PDF, 又能直接嵌入TeX字符和公式(利用了PDFLaTeX). 有这些功能, 我已经满足了. 一个小小的遗憾是Ipe没有那个LaTeXDraw自带的坐标轴和网格绘制功能, 但手工画一下好像也不是很难.

特别值得注意的是,Ipe是支持编写扩展的. 其扩展叫做Ipelets. 官方释出的版本中已经自带了一些比较实用的Ipelets, 比如绘制任意边数的正多边形, 画三角形内切/外接圆等等功能简单的Ipelets, 更有Delaunay三角剖分等等与计算几何中Voronoi图相关的比较专业的Ipelets. 更让我惊讶的是, Ipe还与优秀的计算几何算法库CGAL建立了联系: CGAL Ipelets提供了对CGAL算法库的访问, 而这些Ipelets现在已经是CGAL的一部分. 可以在研究计算几何时作为辅助工具玩玩.

ipelets

Ipe中自带的Ipelets

官方主页(The Ipe extensible drawing editor):

http://tclab.kaist.ac.kr/ipe/

部分第三方Ipelets:

http://tclab.kaist.ac.kr/ipe/ipelets.html

下面的页面有很多绘图示例(基本上都是物理情境示意图)可以作为参照练习使用:

http://melusine.eu.org/lab/ipe

Ipe的缺点是不能精确控制图形, 对于一些牵涉数学的图形和较为复杂的、涉及计算的图形十分乏力, 不过在要求比较低时快速作个图还是可以的. 下面是一份网友制作的完整文档, 《经典力学学习札记》, 全部图形使用Ipe绘制, 可以大致看一下效果(由于dropbox目前被ooxx, 国内无法访问).

http://dl.dropbox.com/u/4509593/Mech_tianyi/mech_tianyi.pdf

p.s. 我很喜欢这个文档的风格, 行气很足, 很漂亮. 只是Adobe的免费宋体还是显得略细了些.