乌村夜话 - VOL 5

Author Avatar
xmoiduts 1月 28, 2020
  • 用其他设备扫码打开本文

组合优化与 MiniZinc 与澳洲水资源调度(?);共享罚单;华为云电脑海外体验;一封五百块的邮件。

简评组合优化建模(M4CO)

时间来到了我在乌普萨拉的第三个学期。说实话,第二年的课程选择并没有很多:有意思/能划水的课头一年都修完了。

久闻皮埃尔的课要求高、难度大,刚来时不敢选,可笔者在瑞典读了一年的书,对一些事情有了新的看法,变得越来越放飞自我。

所以,就选你了,M4CO (组合优化建模)。

太长不读TLDR:

难度不小,肝度很高,Pierre 大名保证,学费花到超值(指花5学分的钱肝20学分数量的作业)。

以下内容均可跳过


组合优化建模是个啥呢?假设你面前有个 数独/八皇后/旅行商人 之类的问题,用暴力搜索需要很长时间。有时会有专门设计的高效算法,但部分问题会有额外的约束,使那些算法不再适用,这时就可以用组合优化算法来求解。

课程使用 MiniZinc 语言(其中的入门级的语法)进行建模,建好的模型丢给现成的求解器/优化器(Gurobi/Chuffed/Gecode/or-tools等)去跑。Vol4 中已经提到过,这门新的语言与大众化的编程语言并不相同,因此边学边做作业真是付出了巨大的功夫。

下面付作业一例:

星舰生产排期问题

2137年,星舰公司开始接造船订单,订单包括飞船的型号和交付周数。飞船必须如期交付,你的任务是拟定生产计划,尽可能降低总的生产开销。

生产计划指各周生产哪型飞船(或什么也不生产),生产每艘飞船都要耗时一周,每周也只能生产一艘飞船;生产开销由仓储费用和产线切换费用组成。

飞船可在交期之前任意一周进行生产,但飞船在库积压期间(假设仓库无限大)会产生仓储费用,每艘飞船(型号不限)每周10块钱(说不定是BTC呢?);生产当周就交付的飞船无此费用。

生产线只有一条,如果先后生产的两艘飞船型号不一,生产线就要变动,产生产线切换费用。例如从生产A型变为生产C型,需要花费SetupCost[A,C]元。开产前的产线准备和停产后的产线拆除免费,如果连续生产同种飞船(允许中间有停产周),只要途中不切换生产品类就无此费用。费用满足三角不等式:SetupCost[A,B] + SetupCost[B,C] >= SetupCost[A,C]

这样的作业有三次(上面是第二次),每次作业给两周时间,并且如流水线般前后重叠。作业的难度不断增加,这道题花了我大概整整两周,同期我还有个10学分的课,实际投入后者的时间却被压缩到了极限。

我自己写的代码,对100周15种飞船,要花77秒解出答案(Gurobi优化器,辣鸡至强单核);在事后的习题课上,一种我们从未想到的既有组合优化约束(请细心揣摩本文)竟然还能快上很多倍。

自选大作业

除了三次作业之外,我们还要自选题目(CSPlib && Google Hashcode 的指定题目子集,部分题目被做过了所以排除在外)进行解答(交代码,交报告,做presentation)。 我和同学搭伙选了CSPlib一道比较简单的题:ACC篮球排期问题

西大洋海岸联盟(ACC)在1997-98年遇到了棘手的球赛排期问题,球队的强弱/既有安排/招新安排/休息时间/主客场公平性、电视直播商的利益、比赛组委会的好恶和往年的赛程安排都会对排班产生影响,使得赛程安排变得难上加难。

(Nemhauser 和 Trick,1997)使用组合优化技术,在轻松满足各方利益的情况下,还游刃有余地选出了3组赛程表交给举办方,最终获得认可。

由于我和队友都不懂唱、跳、RAP、篮球,在这篇中文内容的帮助下,我们终于厘清了ACC的赛制。那篇论文所用的语言与我们所用的完全不同,我们也无意去用别人的解法,在读完了论文introduction后,我们就自行对这个问题做了建模。

编码过程出乎意料地顺利,真正的开发只用了一个周末。跑出的1083个解(中文文章给出的是179个解,很奇怪)也包含了当年的真实赛程安排。

做题期间,我也终于理解了一件事——为什么pierre会这么严格地要求学生:

如果不对学生做出这么严格的要求,学生们就总会以各种方法来逃避/钻你空子,交出不合格的答案。教书,育人,行事,无异于此。

学生替换成求解器,这就是我对做题过程的概括。

CSPlib版本的问题对真实问题做了弱化,事实上1997年论文所研究的问题更难,原作者给出的可行结果也更少些。


在完成作业和自选题目的过程中,我觉得这门课还是有很强的现实意义的。其他组做的问题里,我印象深刻的另有一道:Google Hashcode 2017 资格赛

面对海量Youtube视频请求和硬盘空间有限的CDN服务器,如何控制缓存哪些视频,来尽可能降低用户等着冲的时间?

Presentation课上也请到了当年选了此题的学生,确实,这哥们最后去了谷歌。

2019/2020之交的澳洲森林大火牵动着很多人的心,水源总是人类要保卫的重要资源。课程也请到过莫纳什大学的相关学者,为我们讲述了澳洲水库之间的调水/供水/淡化优化模型的开发过程。

所以……

如果你够M / 对组合优化有兴趣 / 想挑战一下自己的学习能力 / 想让学费花得够值,这门课和pierre的其他课程简直不能太适合你。

也建议同时选修一些水课,因为这课肝度太高了,下一期可能会写到“否则”的副作用。

上一个TLDR到此为止

斯京人民与SL的斗智斗勇

瑞典人民从小就被教育要勇于提出自己的意见,在面临公共事务的变动时,一小部分人民群众还会身体力行付诸实践。

SL斯德哥尔摩交通公司)的票价年年上涨人民怨声载道而一些群众认为公共交通事业不应该向用户征收这么高的费用,这既不利于节能减排久 等 了和缓解拥堵(把乘客推向自己开车)、又推高了经济活动的成本;此外,交通卡的使用也为大数据追踪人流提供了物质基础,可能侵害到人的隐私。

公共交通应该免费并成为交通的绝对主流形式

于是 planka 应运而生。

Planka 意思是“贴着前面一个人走以此逃票”。

原意是木板,因为逃票进站的时候要站得直的像一个平木板一样,所以引申到了贴着前面的人逃票。

留学瑞典

该组织号召人们白嫖轨道交通(闸机是双向的,可以轻易从非付费区开门);SL会有查票员随机抽查,被抓到逃票会吃1500克朗的罚单,planka 要求用户每月交一笔小钱(100克朗)用来众筹罚款。作为回报,你的罚单可以发给他们代为支付。为了鼓励用户积极报告查票员的所在,每次“代付”罚单都有100克朗的“免赔额”。

共 享 罚 单

声明:笔者从没用过他们的服务,在现有的道德框架下也不支持读者真去白嫖人家轨交,毕竟大深度隧道挖起来很烧钱的(纵贯斯京地下的Citybanan全长6公里,预算184亿克朗折算2009年水平。最后竟然只超支了1% 我甚至不敢相信这是在瑞典);自己乘坐SL车辆时也是如实买票,毕竟谁知道这玩意会不会上瑞典征信呢。

华为云电脑海外体验

前段时间,5G话题在国内炒得火热。对于每一种新技术,人们在期内都会过于乐观。3G/4G时代宣传的视频电话,到了今天不还是连上wifi再打。大数据,机器学习,神经网络什么的也一样,只是在投资人(若有)和大众面前侃侃而谈带货的话题罢了。 这一代技术的示例应用也不会例外:远程医疗/串流游戏/自动驾驶。当然,还有我们的正主 华 为 云 电 脑

华为给自家的新款平板电脑/手机配备了云电脑App(以下或只称App),着重宣传了远程办公/手机开黑的可能性。TESTV 《值不值得买》366期简单提到过华为云电脑的娱乐和生产力应用。由于笔者某种意义上已经在长期使用云电脑(SSH/RDP/VNC),本着对新产品的好奇,我也在自己的Mate 9 Pro清库存买的里装了个App。

现阶段华为云电脑只有国服,也就是中国大陆节点。作为国外用户,巨大的延迟显然也是用户体验的一部分。想象一下:短期出国懒得带电脑,用华为手机接上屏幕(没有的同学可以不接)就可以流畅办公,岂不美哉!

试用版本可玩10分钟,配置为 4C8G2M 无公网IP。

开机过程很快,点击试用后15秒桌面加载完成;App有触屏和键鼠模式,连接蓝牙键鼠可以把手机当作云电脑显示器,鼠标右键也能使用;没有蓝牙键鼠的话,App也提供了半透明触屏键盘和长按使用右键功能。

image.png

系统里预装了一些软件,画风大体正常,令我意想不到的是竟然有Eclipse和云更新(网游推广软件),看来是面向不同的消费群体。

很多大学中,即使是计算机专业,头一年也不让学生带电脑,但学生们又有编程上机的需求。华为云电脑无疑给了这群用户一个曲线救国的机会。

App成功连接云电脑后,会将手机自己的文件夹(类似)‘挂载’到云电脑上,供云端访问。所以云电脑上的WPS可以编辑手机里存的文档(只是举个例子)而无需手动进行任何配置,更多只拿手机做不到的事情也成为了可能。

访问文件前需要传送整个文件,笔者曾试图用云电脑播放手机相册里的视频,受限于孱弱的2Mbps宽带,要花掉好几分钟才仅仅能够打开视频;成功打开后也会卡成ppt(5FPS)。

image2

这种卡顿不是只凭用户买个5G手机就能直接解决的,还需要进一步加钱。 笔者在不同网络下使用过 Windows RDP 远程桌面功能,分别是公网买1Mbps带宽和家里百兆内网,想看1080p30的视频请至少买它30Mbps带宽。相信云电脑的技术也不会成倍强于微软(不然鸿蒙OS早就碾压竞品了),建议运营方提供高速网络选装包或加速包,例如:(T1加速包:20Mbps,1GB流量,售价0.8元T2加速包:100Mbps,1GB流量,售价0.8元 等)。

鉴于海外网络延迟很高,下面列出部分操作的延迟或体验;作为对比,连接位于北京的某Minecraft服务器的表显延迟也一并给出:340ms。

操作 响应时间
在“我的电脑”里打开任意文件夹 10秒,每次操作都要等这么久
用wps打开手机里的小型doc文件(长约一页) 1分钟
编辑上述doc文件 基本相当于ssh海外服务器的回显体验(假如你不用mosh)
保存编辑完的doc文件 20秒
打开华为手机拍的照片 两分半后出画面
拖动图片 基本相当于网络延迟,勉强可以拖动的。

云计算是相当贵的商品。华为云电脑只能用官方App连接,并明确说明断连几分钟后会关机,充分回收闲置资源(主要是内存)降低成本,让用户每月只花60RMB就能享受到文中的配置——相近配置的机器(均为CPU实例)在DO要卖到 > 250元/月(在DO买这种配置应该不会只挂探针,还是会有一定负载的,内存超售能力有限)。

对于大众来说,在几十上百公里外跑着一台属于自己的电脑似乎已经很科幻了。然而,公众眼中的未来科技,只是我们数十年来已经〇以为常的过往。总之,华为云电脑仍是云计算,却不是少数人士所钟爱的VPS,更像是个手机虚拟网吧。果然,要做大佬生意或大众生意才能赚钱啊。(再次强调,我不是评测华为云电脑,只是体验,愉快的体验)

我花费499克朗,从瑞典往国内寄了封信

前文提到过,学姐说瑞典续签

持旧卡早回来(指回瑞典后续签,可能要等很久),持新卡早回来(指提前很久去续签)。

但想不到这个“很久”竟然这么久5个月都不算长

于是乎有个同学就被困在国内了,因为居留卡在他瑞典的邮箱里,他又取不到。只好江湖求助了。

经过对方同意,笔者拆开了他的居留卡信件,确认了居留许可正常签发。然而这哥们定的返程机票就在一周之内。

于是乎,我(其实是这哥们自己付的钱)花费足足499克朗,订购了快递公司(红黄色那家)的寄件服务,这可能是我本辈子用过最贵的快递(几百块寄一个信封)。

不过,瑞典是个特别

You always get what you pay for

的国家,只要充够了钱,你就能变得更强。

从快件投出我手(瑞典),到收件人(国内)取到快件,连48小时都没用上。

有钱真好,我要有钱我也这么玩。

不 想 努 力 了(迫真)

你知道吗?

斯德哥尔摩地铁(Tunnelbana)广为人知,车站外面会挂着大大的‘T’字招牌,但同属轨道交通的pendeltåg(Commuter Train, 通勤列车)挂的却是‘J’字招牌,这是为什么呢?

可能是 Järnväg 铁(Iron)(Järn) 路väg