[{"content":"Addressing context dependence in ecology\nAddressing context dependence in ecology: Trends in Ecology \u0026amp; Evolution (cell.com)\n","permalink":"http://localhost:1313/post/addressing_context_dependence_in_ecology/","summary":"Addressing context dependence in ecology\nAddressing context dependence in ecology: Trends in Ecology \u0026amp; Evolution (cell.com)","title":"Addressing_context_dependence_in_ecology"},{"content":"偶然在小红书上刷到一家独立书店即将闭店的消息，决定在五四青年节那晚去逛一逛。\n前往书店的路上非常堵，眼看着打烊的时间就要到了，冒昧地私信店家请求晚点关门。原本不报什么希望，但没想到老板居然回复了，说多晚都可以等我——这一推迟就是一个小时。\n书店在一个旧厂区改造的创意园里，上个世纪五六十年代的厂房在灯火中昏暗。书店位于其中一栋楼两层小楼，在漆黑的园区道路里一眼就能看到这一处灯火通明。店里播放着维克多·崔的《血液型》，老板一个人站在柜台边打包着网购订单。\n店面不大，我把绝大部分的角落都逛了一遍，挑了几本感兴趣的书。有些是准备细读的，有些是为了收藏。\n我并不是书店的常客，一年到头也看不了几本书。但还是会为一家独立书店倒闭的消息动容——这在我心里脱离实际变成了一种符号，关于理想的战斗和倒下。挣扎过的人向理想证明了自己的忠诚。而我为自己的幸运感到惭愧，所以不敢宣称自己是理想主义的。\n购入书目：\n物种起源-上中下三册（商务印书馆，1983年） 高等方程式论（商务印书馆，1951年） 激动人心的年代（四川人民出版社，1983年） 小逻辑（商务印书馆，1982年） П. A. Федотова (Tипогpaфия Издательетва Советёкнй Xyдожник, 1952) ","permalink":"http://localhost:1313/post/leyuanshudian/","summary":"\u003cp\u003e偶然在小红书上刷到一家独立书店即将闭店的消息，决定在五四青年节那晚去逛一逛。\u003c/p\u003e","title":"路过乐园"},{"content":"今天读到了两篇很有意思的关于气候变化的博客，在此分享。\n先说一些新近的背景信息。第29届联合国气候变化大会于去年在阿塞拜疆举行，结果喜忧参半。虽然大会对气候融资形成了一些宽松的约定，但各国未能就如何推进已有的一些共识达成协议，包括摆脱化石燃料转型的关键承诺，而是将决定推迟到明年1。美国新任政府对传统能源的重视也为接下来几年的全球气候行动蒙上了阴影。此外，地球的平均温度在 2024 年首次攀升至比工业化前水平高出 1.5 °C 以上，而后者正是世界各国在《巴黎气候协定》中所设定的限制全球变暖的阈值2。虽然这一阈值是基于多年连续的平均温差而设定的，但是过去一年的突破仍然具有极强的象征意义。很多人对于控制全球变暖的前景感到忧虑，包括科学家们和关心该议题的普通民众，以致于Wikipedia专门为此创立了一个词条climate grief/ecological grief。我们通常会觉得这种压力应该具有一定的积极效果，能够促使全球各国推进减少温室气体排放、应对全球变暖的行动——所谓生于忧患。但其实这种压力也潜藏着危险。\n首先是对于所谓 1.5 ℃ 阈值的错误理解，也是 Kate Yoder 在 Alert fatigue: The phrase that defined our climate in 2024 这篇文章中总结的内容3。这个数值很容易被大众误解成某种系统崩毁与存续的临界点。仿佛只要气温上升超过了这个限度，地球就会进入一个可怕的新阶段，气候变化的危害将发生质的改变；反之只要我们成功地躲在阈值以下，一切就都会没事的。实际上这一阈值的政治象征意义大于其实际的科学价值。《巴黎协定》设立 1.5 ℃ 这个数字（以及早先的 2 ℃ 的承诺）的目的是表明世界各国对于致力于控制气候变化的态度。它可以是 1.5，也可以是 0.5、3.5，具体的数值则是博弈和妥协的结果。越过 1.5 ℃ 之后，一切不会分崩离析；在越过 1.5 ℃ 之前也并非万事大吉。随着观测数据越来越逼近 1.5，这种“最后期限”式的宣传的弊端也会显现。它将人们的注意力从气候变化的具体风险转移到了抽象的读数上，虚假地营造一种恐惧的气氛。当阈值正真被超越的时候，这种被刺激出来的短期热情就会变成毒药。一些人会觉得已经世界已经 game over，控制气候变暖的努力以失败告终，climate grief 会演变成 climate despair。另一些人则会以此作为否认气候变化存在的胜利信号——“看吧，过了这条线后什么也没发生。”无论哪种反应都无利于对气候控制和能源转型的冷静思考，玩弄情绪的终将被情绪玩弄。\nYoder在另一篇文章 Alert fatigue: The phrase that defined our climate in 2024 里提到的问题则更加具有时效性4。过去一年中我们听到了很多创下历史纪录的极端天气新闻：加利福尼亚的山火、斯里兰卡的洪涝、欧洲南部的超高温等等。这些极端气候/天气的警报在未来或许将越来越家常便饭。人们将学会忽视，而这也意味着科学家们关于气候变发出的警告的力量会越来越微弱，因为对于危机的反复刺激感到疲劳。有调查显示近三分之二的美国人明白气候变化正在影响他们的当地社区5，但这并不妨碍他们选举出强力推动传统化石能源的新任政府。过去一年中，大家或许也亲身经历了很多本地罕见的严寒酷暑。但回忆 2023 年，当时的我们同样为各类创下历史记录的天气情况感到震惊。如果未来的每一年都被冠以“史上最极端”的名号，用不了多久人们就会对此感到麻木。逐渐的环境恶化就会犹如温水煮青蛙，慢慢杀死未来的可能性。\n世界正在逐渐透支对于气候变化的危机感。希望我们能在代价来临之前形成更可持续的应对方式，毕竟这是百年大计。\n参考资料\nCOP29: Key outcomes agreed at the UN climate talks in Baku - Carbon Brief\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nEarth breaches 1.5 °C climate limit for the first time: what does it mean? (nature.com)\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nWas the world\u0026rsquo;s most influential climate target doomed from the start? | Grist\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nAlert fatigue: The phrase that defined our climate in 2024 | Grist\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nHow Americans View Climate Change and Policies in 2024 | Pew Research Center\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"http://localhost:1313/post/climate-fatigue/","summary":"今天读到了两篇很有意思的关于气候变化的博客，在此分享。\n先说一些新近的背景信息。第29届联合国气候变化大会于去年在阿塞拜疆举行，结果喜忧参半。虽然大会对气候融资形成了一些宽松的约定，但各国未能就如何推进已有的一些共识达成协议，包括摆脱化石燃料转型的关键承诺，而是将决定推迟到明年1。美国新任政府对传统能源的重视也为接下来几年的全球气候行动蒙上了阴影。此外，地球的平均温度在 2024 年首次攀升至比工业化前水平高出 1.5 °C 以上，而后者正是世界各国在《巴黎气候协定》中所设定的限制全球变暖的阈值2。虽然这一阈值是基于多年连续的平均温差而设定的，但是过去一年的突破仍然具有极强的象征意义。很多人对于控制全球变暖的前景感到忧虑，包括科学家们和关心该议题的普通民众，以致于Wikipedia专门为此创立了一个词条climate grief/ecological grief。我们通常会觉得这种压力应该具有一定的积极效果，能够促使全球各国推进减少温室气体排放、应对全球变暖的行动——所谓生于忧患。但其实这种压力也潜藏着危险。\n首先是对于所谓 1.5 ℃ 阈值的错误理解，也是 Kate Yoder 在 Alert fatigue: The phrase that defined our climate in 2024 这篇文章中总结的内容3。这个数值很容易被大众误解成某种系统崩毁与存续的临界点。仿佛只要气温上升超过了这个限度，地球就会进入一个可怕的新阶段，气候变化的危害将发生质的改变；反之只要我们成功地躲在阈值以下，一切就都会没事的。实际上这一阈值的政治象征意义大于其实际的科学价值。《巴黎协定》设立 1.5 ℃ 这个数字（以及早先的 2 ℃ 的承诺）的目的是表明世界各国对于致力于控制气候变化的态度。它可以是 1.5，也可以是 0.5、3.5，具体的数值则是博弈和妥协的结果。越过 1.5 ℃ 之后，一切不会分崩离析；在越过 1.5 ℃ 之前也并非万事大吉。随着观测数据越来越逼近 1.5，这种“最后期限”式的宣传的弊端也会显现。它将人们的注意力从气候变化的具体风险转移到了抽象的读数上，虚假地营造一种恐惧的气氛。当阈值正真被超越的时候，这种被刺激出来的短期热情就会变成毒药。一些人会觉得已经世界已经 game over，控制气候变暖的努力以失败告终，climate grief 会演变成 climate despair。另一些人则会以此作为否认气候变化存在的胜利信号——“看吧，过了这条线后什么也没发生。”无论哪种反应都无利于对气候控制和能源转型的冷静思考，玩弄情绪的终将被情绪玩弄。\nYoder在另一篇文章 Alert fatigue: The phrase that defined our climate in 2024 里提到的问题则更加具有时效性4。过去一年中我们听到了很多创下历史纪录的极端天气新闻：加利福尼亚的山火、斯里兰卡的洪涝、欧洲南部的超高温等等。这些极端气候/天气的警报在未来或许将越来越家常便饭。人们将学会忽视，而这也意味着科学家们关于气候变发出的警告的力量会越来越微弱，因为对于危机的反复刺激感到疲劳。有调查显示近三分之二的美国人明白气候变化正在影响他们的当地社区5，但这并不妨碍他们选举出强力推动传统化石能源的新任政府。过去一年中，大家或许也亲身经历了很多本地罕见的严寒酷暑。但回忆 2023 年，当时的我们同样为各类创下历史记录的天气情况感到震惊。如果未来的每一年都被冠以“史上最极端”的名号，用不了多久人们就会对此感到麻木。逐渐的环境恶化就会犹如温水煮青蛙，慢慢杀死未来的可能性。\n世界正在逐渐透支对于气候变化的危机感。希望我们能在代价来临之前形成更可持续的应对方式，毕竟这是百年大计。\n参考资料\nCOP29: Key outcomes agreed at the UN climate talks in Baku - Carbon Brief\u0026#160;\u0026#x21a9;\u0026#xfe0e;","title":"关于气候变化的危机疲劳"},{"content":"“这是个常常被人忽略的常识：进化的尽头不是极端，而是恰到好处。”\n在寒假期间读了郝景芳的科幻小说《流浪苍穹》。书中想象了一个火星殖民地革命脱离地球统治之后的世界观。在战争并断交数十年之后，地球与火星开始恢复交流，一群被送往地球留学的火星少年成为两个世界交往的桥梁。主人公洛盈在从地球返回火星之后，逐渐了解关于自己身世和两个星球之间复杂关系的真相。我在高中时读过郝的短篇集《孤独深处》，惊叹于文笔之唯美和内容之深刻，以至于很长一段时间内我到处疯狂推荐。六年后的我对于《流浪苍穹》的感受是，这个故事依然唯美典雅、引人深思，但除了惊叹以外，我还想说更多的东西。\n1. 世界的运行“必然建筑在欲望之上” 全篇小说中最重要的要素是火星和地球这两个社会体系的对比。地球在虚拟经济的加持下空前地娱乐化、商品化。在跨国传媒公司的运营平台上，一切东西可以出售和购买，包括思维和创意。这是一个流动的、繁荣的、混乱的、享乐的，美丽新世界。而火星的一切都在规则和秩序之下，人们推崇科学研究和集体主义。知识、技术和文化产品都托管于一个集中的数据库中。社会生产以“实验室”为基本单位，任何项目落地之前都经过反复的验证计算，并与其他方案竞争。这里的孩子们都醉心于定期举办的科技创意比赛，而大人们都梦想着参与国家的重大项目建设。\n我们可以从小说中的地球社会看见如今互联网时代的影子。郝景芳火星社会的设定对中国大学生来说也简直再熟悉不过。学生们在科技从创意比赛上争奇斗艳的场面像极了我们的本科时代。科研工程项目主导的社会生产体制也能让人分分钟回味在实验室里边蛐蛐导师边做牛做马的无数个夜晚。它也很容易让人联想到冷战格局下的两个对立的体系。星际航行的设定好处在于，一方面加大了两个世界之间的距离感，另一方面给社会结构的形成提供必然性：失去了地球补给的火星据点物资极度匮乏，因而资源必须集中管理，任何方案在实施之前都需要反复验证优化；革命队伍中有庞大的科学家和工程师群体，他们的科学精神、知识共享精神便成为火星社会的底色。\n我迅速熟悉并疲倦于书中对两个世界的对比描述。类似的设定在科幻小说中已经屡见不鲜。作家们构建出一个个乌托邦或者反乌托邦，用于表达自己的观点。你批判集权，我批判娱乐，他批判资本……最终变成自说自话的无尽争吵。但令我惊喜的是《流浪苍穹》后半部分对这一切的本质的揭示。战争和断联使得两个社会在彼此的舆论中妖魔化。主人公洛盈经过两个世界的洗礼，熟悉地球和火星的运转形式，并为此陷入了价值观自相矛盾的苦恼境地。火星社会并非地球人心中的基于蛊惑和盲从的恐怖集中营，而地球也并非像火星人心中那般腐朽堕落、一无是处。作者说，“一个世界能运行，必然建立在欲望之上。”人们追求幸福的欲望，加以特定的环境条件，自然就形成了不同的世界。这或许不是什么惊世骇俗的总结，但是它跳出了对某种极端体系的肤浅批判，在那些五花八门的主义之上总结出了更本质的东西。\n2. 关于玻璃建筑的含义 小说中的火星城市以玻璃为最主要的建材，因为在火星的漫天黄沙之中，砂土是最用之不竭的资源。借助发达的镀膜技术，玻璃建材可以具备调节气温、显示信息等各种功能。人、空气和花草在玻璃笼罩形成微小的生态循环。火星城的玻璃建筑是“沙土里开出的花”，是从粗糙的大地之中凝华出的生命。\n而在敌人眼里，玻璃建筑则成为了另外一种符号。地球人坚信玻璃建筑意味着个人空间的透明和被窥探。“当所有房子都透明，窥探就扩大为集体的注视。”地球乐于将此作为抨击“天上地狱”的证据，借此将火星描述成灭杀人性的、独裁恐怖的机器系统。小说中的地球人将火星比作奥威尔笔下《一九八四》的世界。玻璃房的设定又不由得让人想起扎米亚京的反乌托邦小说《我们》。这样的联想是无稽之谈——火星的玻璃往往被调节成不透明的颜色，建筑材料和窥探隐私之间并没有必然的联系。然而这样的联想又如此强烈，因此成为危险的妄断。在缺乏足够信息的情况下，符号轻易地伪装成实证，唤起情绪和偏见。\n在互联网被分割成一个个信息茧房的时代，符号的危险性尤为明显。广域的互联网提供最基本的信息流通，但没有提供相应规模的讨论空间。这些信息被分发到不同的文化圈层进行加工，变成伪装成实证的符号，于是不但没有起到沟通桥梁的作用，反而变成互相攻讦的武器。或许和平的程度和互相了解的程度之间是个U-shape的关系曲线，这些偏见符号正是潜伏在曲线低点的危机。\n3. 进化的极端是恰到好处 瑞尼时常在幻想画里看到变大变小的动物，就好像它们的实际尺寸只是凑巧，可以随便修改。但瑞尼知道不是这样，进化的尽头是提琴般的完善，大一寸小一分都不可以。不是不能变化，而是变化总会不如现状。这是一个双方进化的过程，生物和环境最终会达成协调，正如飞鸟选择筑巢地，而巢穴选择下一代飞鸟。直到一个高度，选择平衡于被选择。这是个常常被人忽略的常识：进化的尽头不是极端，而是恰到好处。\n这段关于进化和规模的讨论出现在小说的末尾，大概是是全书中我最喜欢的一段话。随着火星人口的增长，整个社会的凝聚力开始下降，关于未来发展的意见分歧也逐渐暴露。一个机体如果强行扩张，往往会走向分裂。人口规模，这也是地球和火星两个社会截然不同的原因之一。火星的几百万人口放在地球上不过是一座普通城市，如此才能实现充分交流和有序管理；而增长则使得规模和秩序失去匹配，如同昆虫的结构决定了其尺度，细胞过大就会分裂。在阅读前半本书时我便在思考，几百万人口和几十亿人口的两个社会，把它们放在天平两端的同等地位上进行比较究竟有没有意义。而书末的这一段总结正杀死了比赛。我们会讨论蚂蚁与大象的异同，自然也可以讨论几百万人和几十亿人的异同；只是这讨论并非要争出孰优孰劣，而是为了加深对生命的理解。\n4. 世界如何变好：显著的小效应 小说的结局是而又好又坏的。好在书中角色打翻了好战派的算盘，将火星从新一轮的危机边缘拉了回来。坏在这代价是一个年轻正直的生命，也坏在老一代火星建设者带着曾经的理想黯然离场。很多科幻小说的结尾都有一种宏大的史诗感，而史诗之间也有不同，例如阿道夫·阿西莫夫的结尾通常恢弘壮丽，并夹带着一些风趣。但郝景芳的结尾则宁静细腻，在金属的质感上蒙了一层唯美、柔和而忧伤的气息。短篇集《孤独深处》中的不少故事也是如此，谢幕的悲伤和危机解除的宁静和平交叠在一起，因而是又好又坏的。世界确乎是变好了，但是又似乎只是变好了一点点。那些牺牲和代价的确没有白费，但我的心里总想着着它们本应该换来更多的东西。这种感受就像做线性回归时得到了一个显著的正效应，但系数却又小得微乎其微。遗憾，但又深知这已经是来之不易的结果。\n六年前读的我非常喜欢这种悲而美的风格。流星什么都做不了，注定燃尽自己，但总归给世界带来了一丝好的变化。但现在的我不再那么喜欢这种情节了。它对我来说变得太柔和，让人觉得无处宣泄。一些情节支线看似暗藏玄机，但其实很快就浅浅地收尾，也并没有对结局产生什么影响。当然这没有错，个人对世界的影响确实微乎其微。小说中清晰地展现了历史的浩浩汤汤，伟大如革命领袖也难以左右。但我更期待看到书中人物的激烈和不甘，让他们去发起轰轰烈烈的行动，哪怕结局是失败的。身处故事之中的人往往难以窥见全局，他们会误判，会幻想。也正是这些误判和幻想让他们不甘顺应历史的潮流，从而展现出颜色鲜明的魅力。由此也引出我不喜欢《流浪苍穹》的一点：人物角色的思考有余而推动力不足。\n5. 脱离的人物 小说的主人公是火星总督的孙女，也是派往地球的少年团中的一名舞蹈生。这样的身份便注定她能近距离观察两个世界，并了解到很多在权力中心不为人知的隐情。而她能做的事情又很少——成长轨迹被精心地安排，舞蹈的专业特长也难以直接推进历史事件的进程。她探索、询问，逐渐解开自己身世的秘密和世界运行的规律，但她从不行动，也不知道应该为什么目标而行动。她既能理解反抗者的热血，又能共情建制派的苦衷，于是永恒地处在尴尬的立场上。她只能是一个脱离于事外的观察者和反思者。另一个重要的角色，瑞安医生，也有类似的特质。他智慧而温润，才华能力受到火星总督的欣赏，但是一直独处于冷僻的角落，静静观察着历史发展。\n相比之下我更喜欢伊格和安卡这两个配角。他们的想法不一定都正确，也会迷茫和怀疑。比如伊格这一角色就经历了数次认知的转变，从单纯的愤青成长为思想更深刻的活动家。我喜欢的是他们的愤怒，以及付诸行动的态度。“野夫怒见不平处，磨损胸中万古刀。”可惜这些角色的篇幅都不长。\n类似的角色形象在其他郝景芳的其他故事里也有，比如《繁华中央》和《弦歌》的女主阿玖（两个短篇小说其实是一个故事的不同人物视角）。阿玖没有直接推动情节的核心——月球计划——的发展，但是通过她的个人经历、思考和情感，读者得以更全面地认识和感受这个故事。某种程度上来说，这一类角色是郝景芳的小说的灵魂，正是他们为整个故事带来了那种细腻、隽永的气质。\n只是我自己的心态和品味在这六年中有了变化。曾经世界在一个青少年的面前展开，而他还不清楚自己何去何从。而现在的他明白自己在追求什么、愤怒什么。或许以后的他还会迷茫，会怀疑自己正在做的事情。但总之现在还没有。\n","permalink":"http://localhost:1313/post/liu-lang-cang-qiong/","summary":"\u003cp\u003e“这是个常常被人忽略的常识：进化的尽头不是极端，而是恰到好处。”\u003c/p\u003e","title":"从《流浪苍穹》想到的"},{"content":"对东京的惊鸿一瞥似乎让刻板印象有增无减。\n落地前，空乘提醒大家可以从左侧舷窗看到富士山。夕阳下有一个锥形的庞然大物拔地而起，耸立云端。黑色的岩体和山尖的积雪都蒙上了一层金黄。直到飞机降落，还是一眼就能在天边看到富士山突兀地站着，显得脚底下的一切高楼和丘陵都与平地无异。以前一直觉得《富士山下》里所谓 “富士山爱情论” 是很烂的比喻1，总觉得这喻体有些莫名其妙。现在总算明白为什么偏要硬扯上富士山——因为它的轮廓真的是一抬头就能看到，如影随形。难怪它成为如此著名的日本的文化符号。\n本想落地后找个好的角度再拍照，可惜夜幕已经完全降临。但又有别的收获。从羽田机场看过去的东京建成区，是一片密密麻麻的红光。我印象里从未见过如此密集的警示灯，将城市的天际线勾勒得如此清晰——似乎所有高的矮的宽的窄的都并非房屋，而是仅仅由红色光点组成的阵列，在黑暗里形成天和地的轮廓。科幻作品里的那个赛博朋克的城市似乎又在向我招手。\n转机的时间只有匆匆几十分钟。机场派了专人在舱门前等待，然后一路引导我赶往下一个登机口。他们对旅客的服务意识很好，但不会很好地回应超出既定流程的问题。一路上行色匆匆，与别人交流之后必恳切鞠躬。人和人之间感觉确实是礼貌恭敬，而又隔着厚壁障的。目光所及都在强化我对于这个社会的文化的刻板印象。这是件坏事，毕竟对服务行业的采样本带有强烈的系统偏差。我不应该拿到这样一个小而偏的样本就大肆演绎。\n今年夏天经首尔转机的经历亦如是。经典的的锅盖头发型，精心打扮的妆容，让人觉得这么多韩剧的服化道诚不欺我。还有各种不遗余力推广韩国传统文化的宣传片、演出、体验中心等。作为中国人，看到变种(?)的汉服、毽子、投壶以“K-Culture”的标签大力宣传，真的很难绷住。看到“请对韩国文化保持尊重，不要有冒犯性言论”的手写标语之后更难绷了，不禁让人联想这里的工作人员经历了什么尴尬的场面。好的坏的刻板印象，同样在短短几小时内不减反增……\n想起高中的几个同窗正在东京读书，可惜转机时间紧迫，也没有办过境签，不能顺道小聚。\n再次起飞后，终于看到了建成区发出暖黄色或白色的灯光，勾勒出道路、建筑、河流和公园。富士山早已隐入夜幕，我也辨别不出东京塔在哪里，现在的夜景倒是似与其他的城市别无二致了。\n从左至右：透过舷窗看到日落时的富士山；东京都市圈夜景俯瞰；仁川机场的文化宣传海报 2024年12月15日，杭州至匹兹堡途中\n你喜欢一个人，就像喜欢富士山。你可以看到它，但是不能搬走它。你有什么方法可以移动一座富士山，回答是，你自己走过去。爱情也如此，逛过就已经足够。\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"http://localhost:1313/post/a-glimpse-at-east-asia/","summary":"\u003cp\u003e对东京的惊鸿一瞥似乎让刻板印象有增无减。\u003c/p\u003e\n\u003cp\u003e落地前，空乘提醒大家可以从左侧舷窗看到富士山。夕阳下有一个锥形的庞然大物拔地而起，耸立云端。黑色的岩体和山尖的积雪都蒙上了一层金黄。直到飞机降落，还是一眼就能在天边看到富士山突兀地站着，显得脚底下的一切高楼和丘陵都与平地无异。以前一直觉得《富士山下》里所谓 “富士山爱情论” 是很烂的比喻\u003csup id=\"fnref:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e，总觉得这喻体有些莫名其妙。现在总算明白为什么偏要硬扯上富士山——因为它的轮廓真的是一抬头就能看到，如影随形。难怪它成为如此著名的日本的文化符号。\u003c/p\u003e\n\u003cp\u003e本想落地后找个好的角度再拍照，可惜夜幕已经完全降临。但又有别的收获。从羽田机场看过去的东京建成区，是一片密密麻麻的红光。我印象里从未见过如此密集的警示灯，将城市的天际线勾勒得如此清晰——似乎所有高的矮的宽的窄的都并非房屋，而是仅仅由红色光点组成的阵列，在黑暗里形成天和地的轮廓。科幻作品里的那个赛博朋克的城市似乎又在向我招手。\u003c/p\u003e\n\u003cp\u003e转机的时间只有匆匆几十分钟。机场派了专人在舱门前等待，然后一路引导我赶往下一个登机口。他们对旅客的服务意识很好，但不会很好地回应超出既定流程的问题。一路上行色匆匆，与别人交流之后必恳切鞠躬。人和人之间感觉确实是礼貌恭敬，而又隔着厚壁障的。目光所及都在强化我对于这个社会的文化的刻板印象。这是件坏事，毕竟对服务行业的采样本带有强烈的系统偏差。我不应该拿到这样一个小而偏的样本就大肆演绎。\u003c/p\u003e\n\u003cp\u003e今年夏天经首尔转机的经历亦如是。经典的的锅盖头发型，精心打扮的妆容，让人觉得这么多韩剧的服化道诚不欺我。还有各种不遗余力推广韩国传统文化的宣传片、演出、体验中心等。作为中国人，看到变种(?)的汉服、毽子、投壶以“K-Culture”的标签大力宣传，真的很难绷住。看到“请对韩国文化保持尊重，不要有冒犯性言论”的手写标语之后更难绷了，不禁让人联想这里的工作人员经历了什么尴尬的场面。好的坏的刻板印象，同样在短短几小时内不减反增……\u003c/p\u003e\n\u003cp\u003e想起高中的几个同窗正在东京读书，可惜转机时间紧迫，也没有办过境签，不能顺道小聚。\u003c/p\u003e\n\u003cp\u003e再次起飞后，终于看到了建成区发出暖黄色或白色的灯光，勾勒出道路、建筑、河流和公园。富士山早已隐入夜幕，我也辨别不出东京塔在哪里，现在的夜景倒是似与其他的城市别无二致了。\u003c/p\u003e\n\u003ccenter\u003e\u003cfigure\u003e\n    \u003cimg src=\"/images/fuji.jpg\" style=\"zoom: 100%;\" /\u003e\n    \u003cfigcaption\u003e从左至右：透过舷窗看到日落时的富士山；东京都市圈夜景俯瞰；仁川机场的文化宣传海报\u003c/figcaption\u003e\n\u003c/figure\u003e\u003c/center\u003e\n\u003cbr\u003e\n\u003cp\u003e2024年12月15日，杭州至匹兹堡途中\u003c/p\u003e","title":"东北亚一瞥"},{"content":"九月发生了两件值得高兴的事情：通过了博士开题答辩，以及进组以来的第一篇论文（综述）见刊了！希望今后再接再厉\u0026#x1f389;\u0026#x1f389;\n","permalink":"http://localhost:1313/post/good_news_sept/","summary":"九月发生了两件值得高兴的事情：通过了博士开题答辩，以及进组以来的第一篇论文（综述）见刊了！希望今后再接再厉\u0026#x1f389;\u0026#x1f389;","title":"九月底的好消息"},{"content":"长滩的早上通常被浓浓的海雾所笼罩，温度很宜人。穿过downtown街道上隐约的甜腻与骚臭气息，一路向南到海边，再一路往西经过成排的度假酒店和棕榈树，就到了2024 Annual Meeting of the Ecological Society of America的会场。然后在数个不同的会议室之间来回穿梭听报告，直到傍晚再滑着滑板回到旅馆，或者在沿途路边的墨西哥餐车买个torta当晚饭。\n这样子听会议的日子重复了接近一个礼拜，笔记本上的潦草记录也飞速增长了好几页。碰到几位课题感兴趣的教授，冲上去提问交流并在会后发了跟进的邮件——属实是没想到身为I人的自己原来也能social至此。会议的规模很大，分会场的主题也很多。我试图在每一个感兴趣的话题上都了解到一些前沿进展，给自己9月份的博士开题积攒些灵感。期间还参观了当地中产社区里的花园农场，走出学术界听了听当地居民在生活中面临着什么食品问题。\n最后一天只有上午有活动，而我预定了夜里的飞机，于是下午到海边的景区逛了逛。不得不说风景确实很美，彩色的小屋​​、游艇​​、草坪和灯塔在午后晴朗的天空下明净艳丽。可惜没能​去逛水族馆和观​鲸，希望以后有机会再见吧！​\n","permalink":"http://localhost:1313/post/longbeach2024/","summary":"长滩的早上通常被浓浓的海雾所笼罩，温度很宜人。穿过downtown街道上隐约的甜腻与骚臭气息，一路向南到海边，再一路往西经过成排的度假酒店和棕榈树，就到了2024 Annual Meeting of the Ecological Society of America的会场。然后在数个不同的会议室之间来回穿梭听报告，直到傍晚再滑着滑板回到旅馆，或者在沿途路边的墨西哥餐车买个torta当晚饭。\n这样子听会议的日子重复了接近一个礼拜，笔记本上的潦草记录也飞速增长了好几页。碰到几位课题感兴趣的教授，冲上去提问交流并在会后发了跟进的邮件——属实是没想到身为I人的自己原来也能social至此。会议的规模很大，分会场的主题也很多。我试图在每一个感兴趣的话题上都了解到一些前沿进展，给自己9月份的博士开题积攒些灵感。期间还参观了当地中产社区里的花园农场，走出学术界听了听当地居民在生活中面临着什么食品问题。\n最后一天只有上午有活动，而我预定了夜里的飞机，于是下午到海边的景区逛了逛。不得不说风景确实很美，彩色的小屋​​、游艇​​、草坪和灯塔在午后晴朗的天空下明净艳丽。可惜没能​去逛水族馆和观​鲸，希望以后有机会再见吧！​","title":"2024年8月，长滩"},{"content":"使用自定义的类别和数据集训练了MMDetection的目标检测模型，需要汇报模型的precision, recall等等各项指标。在MMDetection的官网文档里只找到了生成混淆矩阵的代码，但似乎并不支持直接给出其他常见的评价指标（见Github项目的issue#6212和issue#8791。搜索一番后发现CSDN博客上有人分享了如何通过在tools/analysis_tools/confusion_matrix.py的main()函数末尾添加代码，从而得到precision, recall, F1, AP, AR。然而实际运行后发现其实有bug，并且原理上也有一些问题，所以进行了适当修改。\n总体思路是，先从混淆矩阵中计算出每个分类的真阳性样本量FP、假阳性样本量TP、假阴性样本量FN，然后按照公式计算各分类标签的precision和recall。\n需要注意的是，precision和recall的长度其实比分类数量多1。这是因为前面生成confusion matrix的时候，在已有分类的后边还加了一个“background”的标签。precision和recall的最后一位其实就是“background”的精确率和召回率，并且总是为零。从混淆矩阵里面也可以看出，background的真阳性比例一定是0%。在计算平均precision和recall的时候，我们不需要考虑这一个额外的分类。\nMMDetection官方文档里的normalized confusion matrix，\"background\"分类的真阳性比例一定是0% 需要在main()函数末尾添加的代码为：\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 TP = np.diag(confusion_matrix) FP = np.sum(confusion_matrix, axis=0) - TP FN = np.sum(confusion_matrix, axis=1) - TP precision = TP / (TP + FP) recall = TP / (TP + FN) average_precision = np.mean(precision[:-1]) average_recall = np.mean(recall[:-1]) f1 = 2* (average_precision * average_recall) / (average_precision + average_recall) print(\u0026#39;\\n===Averaging all classes===\u0026#39;) print(\u0026#39;AP:\u0026#39;, average_precision) print(\u0026#39;AR:\u0026#39;, average_recall) print(\u0026#39;F1:\u0026#39;, f1) print(\u0026#39;Classes\u0026#39;, dataset.metainfo[\u0026#39;classes\u0026#39;] + (\u0026#39;background\u0026#39;, )) print(\u0026#39;Precision\u0026#39;, precision) print(\u0026#39;Recall\u0026#39;, recall) 然后按照官方文档的说明，正常运行代码就可以输出结果了。\n1 python tools/analysis_tools/confusion_matrix.py ${CONFIG} ${DETECTION_RESULTS} ${SAVE_DIR} --show 打印内容形如：\n1 2 3 4 5 6 7 8 9 10 11 12 loading annotations into memory... Done (t=0.02s) creating index... index created! [\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;\u0026gt;] 14/14, 62.8 task/s, elapsed: 0s, ETA: 0s ===Averaging all classes=== AP: 0.95018367938121 AR: 0.664406462586606 F1: 0.7820042508816204 Classes (\u0026#39;label1\u0026#39;, \u0026#39;label2\u0026#39;, \u0026#39;label3\u0026#39;, \u0026#39;label4\u0026#39;, \u0026#39;background\u0026#39;) Precision [0.92405063 0.97506925 0.96411483 0.9375 0. ] Recall [0.65765766 0.80182232 0.79019608 0.40794979 0. ] ","permalink":"http://localhost:1313/post/mmdet_object_detection_model_evaluation/","summary":"使用自定义的类别和数据集训练了MMDetection的目标检测模型，需要汇报模型的precision, recall等等各项指标。在MMDetection的官网文档里只找到了生成混淆矩阵的代码，但似乎并不支持直接给出其他常见的评价指标（见Github项目的issue#6212和issue#8791。搜索一番后发现CSDN博客上有人分享了如何通过在tools/analysis_tools/confusion_matrix.py的main()函数末尾添加代码，从而得到precision, recall, F1, AP, AR。然而实际运行后发现其实有bug，并且原理上也有一些问题，所以进行了适当修改。\n总体思路是，先从混淆矩阵中计算出每个分类的真阳性样本量FP、假阳性样本量TP、假阴性样本量FN，然后按照公式计算各分类标签的precision和recall。\n需要注意的是，precision和recall的长度其实比分类数量多1。这是因为前面生成confusion matrix的时候，在已有分类的后边还加了一个“background”的标签。precision和recall的最后一位其实就是“background”的精确率和召回率，并且总是为零。从混淆矩阵里面也可以看出，background的真阳性比例一定是0%。在计算平均precision和recall的时候，我们不需要考虑这一个额外的分类。\nMMDetection官方文档里的normalized confusion matrix，\"background\"分类的真阳性比例一定是0% 需要在main()函数末尾添加的代码为：\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 TP = np.diag(confusion_matrix) FP = np.sum(confusion_matrix, axis=0) - TP FN = np.sum(confusion_matrix, axis=1) - TP precision = TP / (TP + FP) recall = TP / (TP + FN) average_precision = np.mean(precision[:-1]) average_recall = np.mean(recall[:-1]) f1 = 2* (average_precision * average_recall) / (average_precision + average_recall) print(\u0026#39;\\n===Averaging all classes===\u0026#39;) print(\u0026#39;AP:\u0026#39;, average_precision) print(\u0026#39;AR:\u0026#39;, average_recall) print(\u0026#39;F1:\u0026#39;, f1) print(\u0026#39;Classes\u0026#39;, dataset.","title":"自定义计算MMDetection目标检测模型的precision, recall, F1, AP, AR"},{"content":"凭借曾经在E志者学到的功夫，拆开笔记本并添加了一条固态硬盘(SSD)。\n我的第二台笔记本——拯救者Y9000P——是21年9月入手的。当时因为课程需要跑一些仿真模拟和双系统，手头上的小新2019明显性能不足，运行起来卡的要命。于是挑了当时拯救者系列里配置比较好的一款。不过因为图省钱只选了500G的硬盘大小，当时主要想着内存、独显之类的，也不需要太大的存储空间。到现在快了三年了，这500G的空间已经显得捉襟见肘，时不时需要清空回收站，或者把一部分文件拷到移动硬盘里。于是决定给电脑加装个硬盘，拓展拓展空间。\n首先拆开电脑查看一下SSD的插槽在哪里。很快卸掉了笔记本底部(D面)的10颗螺丝，然后把整个底壳撬下来。保险起见，第一步先把电池的供电线断开。打开之后首先注意到的是散热风扇的区域有好多灰尘堆积😂，于是先拿毛刷清理了一下。接着再找SSD的插槽，在电池左上方一个L型金属片的下边。把这个金属片也拆卸下来就可以看到SSD的M.2接口了，也就是下图中红色框的地方。\n在淘宝上买了一块西部数据的1T SSD，从深圳快递过来用了两天时间。没想到还很贴心地附带了散热片。不过我发现之前从Y9000P上拆下来的L型金属片已经占据了散热片的功能和空间位置，所以买硬盘送的散热片就用不上了。\n插上硬盘、螺丝固定之后，再把各种零件复原，开机检查一下。在磁盘管理里找到了新加上去的磁盘，分配一个卷标之后就可以使用啦！原来的C盘和D盘总算迎来了大解放。🎉\n在盘算着电脑年龄的时候，突然感觉很诧异。第一台电脑用了两年后就换了新电脑，而如今新电脑已经快三岁了，早就超过了前辈的服役期。但我总觉得这台Y9000P到手的时间还很短，还是处于崭新的状态。可能一方面是平时保养得比较上心，另一方面质量也确实过硬把。时至今日它性能依然很能打，基本能满足平时的科研工作需求。偶尔有大量计算的任务也会交给实验室里的台式机去做😜，就不为难笔记本了。现在解决了硬盘问题，感觉可以再战斗好几年。\n","permalink":"http://localhost:1313/post/install_ssd/","summary":"\u003cp\u003e凭借曾经在E志者学到的功夫，拆开笔记本并添加了一条固态硬盘(SSD)。\u003c/p\u003e","title":"拆机加硬盘，新电脑已是老油条了"},{"content":"“这欲望的湖泊，很多人都在溺爱它。”\n","permalink":"http://localhost:1313/post/guoweivc-riluo/","summary":"\u003cp\u003e“这欲望的湖泊，很多人都在溺爱它。”\u003c/p\u003e","title":"果味VC-日落(cover)"},{"content":"三月的最后一个周末，西湖大学举办了“可持续发展与环境前沿交叉论坛”，有挺多院士大牛来站台支持，场面还是挺盛大的。尤其是亲眼见到了陶澍等久仰大名的重量级人物。\n不过对我来说最大的收获还是在分会场听报告的时候感受到的。很感叹于学者们之间互相交流的热情。不论是对熟悉的还是陌生的课题，都会有人积极举手、大胆发问，即使是一些令人“尴尬”的问题，也会在坦率的讨论中，以令人愉悦的方式展开。\n我印象最深刻的一幕是，在座谈会环节上教授们对自身领域是否是”夕阳方向“的大胆自嘲——这也是我内心暗怀的疑惑，但从来没有鼓起勇气问出来。还有一幕是，有人问汇报人今后是否计划和某些地方政府开展合作，答“我更想有机会和在座的各位交流合作”；又有问结论中数据指标的现实意义，答“我只是给出这一个数字，至于怎么解读不是我的事情”。可能在别人对这些回答无感，但是我很喜欢这当中透露出的一点知识分子的单纯、坦诚，甚至狂妄。人不轻狂枉少年。\n这让我想继续在科研的道路上跌跌撞撞地尝试下去，为了能永远以一颗热忱的心面对世界，永远被好奇心驱使着，在海滩上寻找下一片贝壳。\n大会向工学院内部征集了学术海报。我到西湖以来并没有什么拿得出手的研究成果，但是出于锻炼自己的目的，也浅做了一份综述的海报，权当走个过程刷刷经验。设计、制作海报的过程还算有趣，但是站到海报边上向别人介绍研究内容属实是有点折磨（尤其是对重度i人而言）。很难不感觉自己仿佛是个房地产销售，得拿出十分甚至九分的热情向别人推销自家的其实不怎样产品（逃😨）。\n开幕式前播放的宣传片，我出镜半秒😜 这里放个海报的PDF版本，顺便测试一下博客内置PDF文档的功能（加载似乎有点慢）。\n[Previous]\u0026nbsp; [Next] \u0026nbsp; \u0026nbsp; / \u0026nbsp; \u0026nbsp; [Download PDF] View the PDF file here. ","permalink":"http://localhost:1313/post/my_1st_poster/","summary":"\u003cp\u003e三月的最后一个周末，西湖大学举办了“可持续发展与环境前沿交叉论坛”，有挺多院士大牛来站台支持，场面还是挺盛大的。尤其是亲眼见到了陶澍等久仰大名的重量级人物。\u003c/p\u003e","title":"记Westlake SEE Annual Meeting"},{"content":"本次阅读的三篇文献都是蜂学方面的新进展。我主要关心的是两方面问题：昆虫生理和行为特征的指标及测量方式（研究方法），以及熊蜂在环境胁迫下的反应机制（研究结论）。\nGlass, J. R., Burnett, N. P., Combes, S. A., Weisman, E., Helbling, A., \u0026amp; Harrison, J. F. (2024). Flying, nectar-loaded honey bees conserve water and improve heat tolerance by reducing wingbeat frequency and metabolic heat production. Proceedings of the National Academy of Sciences, 121(4), e2311025121. https://doi.org/10.1073/pnas.2311025121\nFocus on heat wave effects on honeybees Honeybees avoid overheating by lowering wingbeat frequency Reducing metabolic heat production is the result of lowering wingbeat frequency. Should not be mentioned separately as two mechanisms here. \u0026ldquo;Many flying insects generate aerodynamic force by using a combination of mechanisms, including the sweeping motion of the wing (i.e., wing translation) and by creation of rotational vortices when the wings rotate before reversing direction. Insects that fly with a large stroke amplitude generate the bulk of their force from the wing translation phase, while those that fly with a small stroke amplitude primarily generate significant forces during wing rotation.\u0026rdquo;\nTo measure metabolic rate, they put individual bees in a chamber and sent air flow through the chamber. Evaporation and metabolic levels were measured by comparing the amount of H~2~O and C~2~O at the entrance and the exit of the chamber. Flight muscle temperature is detected by inserting a micropobe into the center of the throax ouch! and then recording temperature data. Kazenel, M. R., Wright, K. W., Griswold, T., Whitney, K. D., \u0026amp; Rudgers, J. A. (2024). Heat and desiccation tolerances predict bee abundance under climate change. Nature. https://doi.org/10.1038/s41586-024-07241-2\n16 years of abundance patterns for a hyper-diverse bee assemblage in a warming and drying region\nLink bee declines with experimentally determined heat and desiccation tolerances, and use climate sensitivity models to project bee communities into the future.\nModel prediction results\nMore homogeneous communities dominated by drought-tolerant taxa Larger-bodied bees also dominated under intermediate to high aridity \u0026ldquo;Climate studies have largely focused on geographical or phenological shifts, particularly potential phenological mismatches between bees and plants, often finding that mismatches are unlikely\u0026rdquo;\nA smart index: the standardized precipitation evapotranspiration index (SPEI), which integrates temperature and precipitation\nWhat climate change scenarios? During 2020–2100 for three Intergovernmental Panel on Climate Change (IPCC) scenarios representing low, moderate and extreme climate change\nClimate sensitivity functions (CSFs) describe how an organism’s abundance tracks the distribution of a climate variable (mean and variance).\nTODO: Check dataset to see if applicable for bumblebee species\nVaudo, A. D., Dyer, L. A., \u0026amp; Leonard, A. S. (2024). Pollen nutrition structures bee and plant community interactions. Proceedings of the National Academy of Sciences, 121(3), e2317228120. https://doi.org/10.1073/pnas.2317228120\nAsked how pollen nutrition (relative protein and lipid content) sampled from 109 co-flowering plant species structured visitation patterns observed among 75 subgenera of pollen-collecting bees in the Great Basin/Eastern Sierra region (USA). Important concept: nutritional niches Bee–flower visitation data across eight sites in the Great Basin/Eastern Sierra region; combined with flower collection, nutrition analysis etc. ","permalink":"http://localhost:1313/post/reading-note-20240403/","summary":"本次阅读的三篇文献都是蜂学方面的新进展。我主要关心的是两方面问题：昆虫生理和行为特征的指标及测量方式（研究方法），以及熊蜂在环境胁迫下的反应机制（研究结论）。\nGlass, J. R., Burnett, N. P., Combes, S. A., Weisman, E., Helbling, A., \u0026amp; Harrison, J. F. (2024). Flying, nectar-loaded honey bees conserve water and improve heat tolerance by reducing wingbeat frequency and metabolic heat production. Proceedings of the National Academy of Sciences, 121(4), e2311025121. https://doi.org/10.1073/pnas.2311025121\nFocus on heat wave effects on honeybees Honeybees avoid overheating by lowering wingbeat frequency Reducing metabolic heat production is the result of lowering wingbeat frequency.","title":"文献阅读 [April 3rd]"},{"content":"这个礼拜潦草地阅读了几篇论文，在这里做一个简单的记录。理工科的学术研究永恒地在追寻新的前沿，我需要时刻和世界的发展保持同步。所以以后也希望能进一步推进文献阅读的深度和广度。\nLiu, Jianguo, Thomas Dietz, et al. “Complexity of Coupled Human and Natural Systems.” Science, vol. 317, no. 5844, Sept. 2007, pp. 1513–16, https://doi.org/10.1126/science.1144004.\nAbstract: Integrated studies of coupled human and natural systems reveal new and complex patterns and processes not evident when studied by social or natural scientists separately. Synthesis of six case studies from around the world shows that couplings between human and natural systems vary across space, time, and organizational units. They also exhibit nonlinear dynamics with thresholds, reciprocal feedback loops, time lags, resilience, heterogeneity, and surprises. Furthermore, past couplings have legacy effects on present conditions and future possibilities.\n通过六个研究案例来说明人类和自然系统是在空间、时间、组织单元等层面上耦合在一起的。这六个案例分别位于：Northern Highland Lake District, US; Central Puget Sound Region, US; Area near Altamira, Brazil; Kristianstads Vattenrike, Sweden; Wolong Nature Reserve, Wolong; Kenyan Highlands, Kenya。\n作者概括了Coupled Human and Natural Systems (CHANS)的六大特点（或者说五大特点），见上述摘要中的粗体部分，并通过案例加以说明。\n关于feedback loops的举例，相对于复杂的人造系统而言还算比较简单，通常只定性/定量地描述了人和自然之间的单个循环链条。但是案例的简单并不是因为CHANS实际上就比人造系统更加简单——恰恰相反，是因为它太过复杂，使得我们的认知还非常有限，依赖于直观的朴素理解，只能从最粗浅的角度进行简略描述。 Threshold是nonlinearity常常会出现的形态，但是并非所有的非线性情形都能找到threshold。并且，文中对threshold的定义是“transition points between alternate states”，而所谓的state本质上是人为划分的东西，所以threshold的存在与否，也可以说是一件比较主观的事情。 关于surprises究竟能不能称之为一种特点，我暂时保留态度。作者自己也承认，这是当“complexity is not understood”的时候才会出现的情况——尽管无知是一种常态——那么surprise本质上就是人的lack of knowledge，而不能被称为CHANS系统的特点。 Liu, Jianguo, Vanessa Hull, et al. “Framing Sustainability in a Telecoupled World.” Ecology and Society, vol. 18, no. 2, 2013, p. art26, https://doi.org/10.5751/ES-05873-180226.\nAbstract: Interactions between distant places are increasingly widespread and influential, often leading to unexpected outcomes with profound implications for sustainability. Numerous sustainability studies have been conducted within a particular place with little attention to the impacts of distant interactions on sustainability in multiple places. Although distant forces have been studied, they are usually treated as exogenous variables and feedbacks have rarely been considered. To understand and integrate various distant interactions better, we propose an integrated framework based on telecoupling, an umbrella concept that refers to socioeconomic and environmental interactions over distances. The concept of telecoupling is a logical extension of research on coupled human and natural systems, in which interactions occur within particular geographic locations. The telecoupling framework contains five major interrelated components, i.e., coupled human and natural systems, flows, agents, causes, and effects. We illustrate the framework using two examples of distant interactions associated with trade of agricultural commodities and invasive species, highlight the implications of the framework, and discuss research needs and approaches to move research on telecouplings forward. The framework can help to analyze system components and their interrelationships, identify research gaps, detect hidden costs and untapped benefits, provide a useful means to incorporate feedbacks as well as trade-offs and synergies across multiple systems (sending, receiving, and spillover systems), and improve the understanding of distant interactions and the effectiveness of policies for socioeconomic and environmental sustainability from local to global levels.\nLiu, Jianguo. “Leveraging the Metacoupling Framework for Sustainability Science and Global Sustainable Development.” National Science Review, vol. 10, no. 7, May 2023, p. nwad090, https://doi.org/10.1093/nsr/nwad090.\nAbstract: Sustainability science seeks to understand human–nature interactions behind sustainability challenges, but has largely been place-based. Traditional sustainability efforts often solved problems in one place at the cost of other places, compromising global sustainability. The metacoupling framework offers a conceptual foundation and a holistic approach to integrating human–nature interactions within a place, as well as between adjacent places and between distant places worldwide. Its applications show broad utilities for advancing sustainability science with profound implications for global sustainable development. They have revealed effects of metacoupling on the performance, synergies, and trade-offs of United Nations Sustainable Development Goals (SDGs) across borders and across local to global scales; untangled complex interactions; identified new network attributes; unveiled spatio-temporal dynamics and effects of metacoupling; uncovered invisible feedbacks across metacoupled systems; expanded the nexus approach; detected and integrated hidden phenomena and overlooked issues; re-examined theories such as Tobler’s First Law of Geography; and unfolded transformations among noncoupling, coupling, decoupling, and recoupling. Results from the applications are also helpful to achieve SDGs across space, amplify benefits of ecosystem restoration across boundaries and across scales, augment transboundary management, broaden spatial planning, boost supply chains, empower small agents in the large world, and shift from place-based to flow-based governance. Key topics for future research include cascading effects of an event in one place on other places both nearby and far away. Operationalizing the framework can benefit from further tracing flows across scales and space, uplifting the rigor of causal attribution, enlarging toolboxes, and elevating financial and human resources. Unleashing the full potential of the framework will generate more important scientific discoveries and more effective solutions for global justice and sustainable development.\n上述两篇文献都主要强调了“远程耦合”的重要性，前者的用词是telecoupling，后者是metacoupling。前后间隔了十六年。这两篇都是老师推荐的课后阅读文献。好奇在这十六年间该方向的研究进度具体如何，是否由于远程耦合的框架难以准确描述，所以进展不尽人意（以至于十多年后还要继续为其重要性奔走高呼）；抑或从tele-到meta-的前缀变化同时也意味着学界对其认知的更上一层楼。希望之后有时间好好学习一下。\nOstrom, Elinor. “A Diagnostic Approach for Going beyond Panaceas.” Proceedings of the National Academy of Sciences, vol. 104, no. 39, Sept. 2007, pp. 15181–87, https://doi.org/10.1073/pnas.0702288104.\nAbstract: The articles in this special feature challenge the presumption that scholars can make simple, predictive models of social– ecological systems (SESs) and deduce universal solutions, panaceas, to problems of overuse or destruction of resources. Moving beyond panaceas to develop cumulative capacities to diagnose the problems and potentialities of linked SESs requires serious study of complex, multivariable, nonlinear, cross-scale, and changing systems. Many variables have been identiﬁed by researchers as affecting the patterns of interactions and outcomes observed in empirical studies of SESs. A step toward developing a diagnostic method is taken by organizing these variables in a nested, multitier framework. The framework enables scholars to organize analyses of how attributes of (i) a resource system (e.g., ﬁshery, lake, grazing area), (ii) the resource units generated by that system (e.g., ﬁsh, water, fodder), (iii) the users of that system, and (iv) the governance system jointly affect and are indirectly affected by interactions and resulting outcomes achieved at a particular time and place. The framework also enables us to organize how these attributes may affect and be affected by larger socioeconomic, political, and ecological settings in which they are embedded, as well as smaller ones. The framework is intended to be a step toward building a strong interdisciplinary science of complex, multilevel systems that will enable future diagnosticians to match governance arrangements to speciﬁc problems embedded in a social– ecological context.\nNaidoo, R., et al. “Evaluating the Impacts of Protected Areas on Human Well-Being across the Developing World.” Science Advances, vol. 5, no. 4, Apr. 2019, p. eaav3006, https://doi.org/10.1126/sciadv.aav3006.\nAbstract: Protected areas (PAs) are fundamental for biodiversity conservation, yet their impacts on nearby residents are contested. We synthesized environmental and socioeconomic conditions of \u0026gt;87,000 children in \u0026gt;60,000 households situated either near or far from \u0026gt;600 PAs within 34 developing countries. We used quasi-experimental hierarchical regression to isolate the impact of living near a PA on several aspects of human well-being. Households near PAs with tourism also had higher wealth levels (by 17%) and a lower likelihood of poverty (by 16%) than similar households living far from PAs. Children under 5 years old living near multiple-use PAs with tourism also had higher height-for-age scores (by 10%) and were less likely to be stunted (by 13%) than similar children living far from PAs. For the largest and most comprehensive socioeconomic-environmental dataset yet assembled, we found no evidence of negative PA impacts and consistent statistical evidence to suggest PAs can positively affect human well-being.\nQuestion (to be raised in class): How does it testify that the positive effects of preserved areas on human well-being are not merely a selection/filtering mechanism, and that PAs bring net benefit to society?\nMy guessing: This may be tested by comparing the total social level of well-being before and after a certain preserved area is established (or canceled). But make sure that other potential factors are removed.\n","permalink":"http://localhost:1313/post/reading-note-20240306/","summary":"这个礼拜潦草地阅读了几篇论文，在这里做一个简单的记录。理工科的学术研究永恒地在追寻新的前沿，我需要时刻和世界的发展保持同步。所以以后也希望能进一步推进文献阅读的深度和广度。\nLiu, Jianguo, Thomas Dietz, et al. “Complexity of Coupled Human and Natural Systems.” Science, vol. 317, no. 5844, Sept. 2007, pp. 1513–16, https://doi.org/10.1126/science.1144004.\nAbstract: Integrated studies of coupled human and natural systems reveal new and complex patterns and processes not evident when studied by social or natural scientists separately. Synthesis of six case studies from around the world shows that couplings between human and natural systems vary across space, time, and organizational units.","title":"文献阅读 [March 6th]——人与自然耦合系统"},{"content":"一晃眼距离上次更新已经过去将近四个月了，我们从2023来到2024，几乎就要跨过了整个冬天。我当然可以为这四个月的断更找出很多理由。比如做实验的工作量和心理压力太大，没有精力来管理博客；比如所有的产出工作都花在了写论文上面，并没有什么适合分享到博客上的内容；又或者，单纯地因为想要偷懒。\n我很难想象应该用什么样的方式进行重启——随着断更的时间越来越长，这种通过某些仪式性的行为来宣告回归的需求就越来越强烈，因而重启的难度似乎也在越来越大。我反复地期待着生活中的“重大新闻”，期待着以它为契机重启一切。而当这些事件真实来临的时候，我又以各种理由错过了它们。有时是因为忙于处理各类意外，有时是觉得自己状态不佳，有时是觉得事件本身平淡如水，并不如我所期待的那般具有足够的震撼力。总之，四个月过去了，我最后甚至都快忘了自己在互联网上还有着这一亩三分地。\n现在回想起来，生命中的很多方面都在以类似的规律荒废。已经很久没有锻炼了，小肚子上似乎日渐积起天然保暖层；总是忘记剃胡子，每天洗脸时也懒得正脸看一看镜子里的自己；家里很久没有好好清扫，各个角落里堆起了灰尘；作息极其不稳定地变化着，有时睡过大半个白天然后半夜起来工作；朋友圈上的动态定格在夏天的末尾……很多地方都需要重启，但是我缺乏全部推翻重来的勇气，往往只从简单处试探着改变，然后又很快地缩回到一路丢盔弃甲的道路上继续下滑。\n“那些东西都是转瞬的，虚无的。只有成果才是会永恒留下来的东西，所以只要不顾一切地为了成果狂奔就可以了。”我有时候会这样说服自己。他们不会在意你在生活中是一个什么样的人，他们只会看到你留下了什么样的东西。但不得不承认，这个冬天的科研工作同样不尽人意。即便考虑到大量的试错是科学探索中必不可少的一部分，我也依然觉得自己并没有做到投入足够的努力和智慧，并因此感到后悔。尽人事后方能坦然听从天命。我因为愧于不曾竭尽自己所能，而不敢将挫折归咎于命运。\n不如先开始好好生活。糟糕的生活或许是理想的绊脚石，但是认真而积极的生活就能变成理想的助推器。打理自己的网站并不是充分条件，但至少是必要条件。尽管我没有利用上什么生活中的”重要新闻“，但是身处这个初春的时节，本就是重启的大好时机不是吗？\n","permalink":"http://localhost:1313/post/diary-2024-02-16/","summary":"一晃眼距离上次更新已经过去将近四个月了，我们从2023来到2024，几乎就要跨过了整个冬天。我当然可以为这四个月的断更找出很多理由。比如做实验的工作量和心理压力太大，没有精力来管理博客；比如所有的产出工作都花在了写论文上面，并没有什么适合分享到博客上的内容；又或者，单纯地因为想要偷懒。\n我很难想象应该用什么样的方式进行重启——随着断更的时间越来越长，这种通过某些仪式性的行为来宣告回归的需求就越来越强烈，因而重启的难度似乎也在越来越大。我反复地期待着生活中的“重大新闻”，期待着以它为契机重启一切。而当这些事件真实来临的时候，我又以各种理由错过了它们。有时是因为忙于处理各类意外，有时是觉得自己状态不佳，有时是觉得事件本身平淡如水，并不如我所期待的那般具有足够的震撼力。总之，四个月过去了，我最后甚至都快忘了自己在互联网上还有着这一亩三分地。\n现在回想起来，生命中的很多方面都在以类似的规律荒废。已经很久没有锻炼了，小肚子上似乎日渐积起天然保暖层；总是忘记剃胡子，每天洗脸时也懒得正脸看一看镜子里的自己；家里很久没有好好清扫，各个角落里堆起了灰尘；作息极其不稳定地变化着，有时睡过大半个白天然后半夜起来工作；朋友圈上的动态定格在夏天的末尾……很多地方都需要重启，但是我缺乏全部推翻重来的勇气，往往只从简单处试探着改变，然后又很快地缩回到一路丢盔弃甲的道路上继续下滑。\n“那些东西都是转瞬的，虚无的。只有成果才是会永恒留下来的东西，所以只要不顾一切地为了成果狂奔就可以了。”我有时候会这样说服自己。他们不会在意你在生活中是一个什么样的人，他们只会看到你留下了什么样的东西。但不得不承认，这个冬天的科研工作同样不尽人意。即便考虑到大量的试错是科学探索中必不可少的一部分，我也依然觉得自己并没有做到投入足够的努力和智慧，并因此感到后悔。尽人事后方能坦然听从天命。我因为愧于不曾竭尽自己所能，而不敢将挫折归咎于命运。\n不如先开始好好生活。糟糕的生活或许是理想的绊脚石，但是认真而积极的生活就能变成理想的助推器。打理自己的网站并不是充分条件，但至少是必要条件。尽管我没有利用上什么生活中的”重要新闻“，但是身处这个初春的时节，本就是重启的大好时机不是吗？","title":"初春的碎碎念"},{"content":"这学期选修了《复杂系统理论》这门课。实际的课程内容完全超出了预料的方向——我本以为是各种复杂系统的数学推演和建模，结果讲了好几个礼拜的还原论、本体论和mind-body problem之类的哲学话题。起初我也并不排斥这样的讨论，但随着课堂进行，我开始有越来越强烈的不适感。\n这种不适感来自于两个方面。\n首先是对于世界观或者哲学观念的冲突——很多冲突。\n比如老师在课上说我们要以一种二元共存的态度来对待mind-body problem，主张物质和灵魂独立存在，守恒不灭。而我觉得这种二元共存听上去像是对唯心主义和唯物主义冲突的一种和稀泥式糅合——只要承认二者各有自己的运行逻辑、互不干扰，仿佛就能解决问题。从个人情感来说，我更愿意相信世界是纯粹物质的，而所谓灵魂是生物电信号等物质过程的涌现。而且我知道以自己的智识水平，无法为这种观念作出完全令人信服的辩护，（甚至怀疑这个问题本质上就无法辨明，所以哲学家们争辩数千年而仍无定论）所以我并不试图说服别人，也并不喜欢别人向我灌输他们对于“灵魂是否存在”的独到见解。所以每当课堂的话题来到诸如“灵魂如何诞生”的领域时，我就会隐隐有些如坐针毡的难受。相比之下，我更感兴趣的是一个人之所以建立起某种世界观的个人动机和结构性因素——这些幕后故事或许也有利于我们剖析并了解自己的内心。\n再比如，我并不热衷于阴阳五行、太极两仪之类的东方古代哲学。不过这里要承认有个人的刻板印象在作祟，因为它们总是让我想到各种装神弄鬼的神秘学甚至伪科学形象……而且道德经和老子的内容出现在一门名为“复杂系统理论”的英文授课课程上，这个画风实在是显得突兀而清奇😑，透露出一股来自东方的神秘气息。相比之下，从德谟克利特到笛卡尔，再到近现代科学发展带来的哲学发展，自成一脉，有着清晰的发展和继承关系。粗暴地说，摒弃东方哲学的部分，对于（到目前为止的）课程体系似乎并不会有太大的影响。\n其次是对于课堂形式/氛围的不适。\n越是像诸如哲学思想之类没有绝对正确答案的课程，越应该接近讨论的形式，而非某一种观念占据主流的声音。但不得不说，我所熟知的典型东亚学生形象（包括我自己）并不适合讨论式的课堂。虽然老师在第一堂课上说过，允许大家有自己的观点和批判，但随着课堂进行下去，老师在台上讲着，学生在台下默默的听着，氛围似乎又慢慢变成了传统课堂的样子。对于事实知识的传授而言，这并无多大坏处——感不感兴趣，听与不听是学生自己的事情。但对于个人化的观点来说就是另一回事儿了。\n前天和导师闲聊时提到到了这门课的经历，我说我很难同意课堂上的很多观点，所以学得有些难受。他说这门课至少刺激了你去思考这些问题，否则在平时的常规科研中我们很少会去反思、质疑科学体系在其本质上的问题，而批判的态度正是我们希望自己能保持的。于是我突然想起来，在第一节课的作业中，我大肆反对了课件上的不少内容，但结果老师却给了这次作业全班最高的分数。或许我的那些粗糙的反驳也正是老师所期待的反馈。\n我并不是一个讨厌哲学的人，尽管上大学之后整个人越来越务实，很少有新的知识摄入了。我觉得自己可以站在一种回顾历史的角度，去旁观并试图理解不同的哲学观，但是我并不喜欢让自己的哲学受到直接的冲击。这也让我意识到，我自己似乎也越来越固执了——固执于自己所坚信的事情，痴迷于在有限的空间内构建逻辑闭环，而忽略了其他的可能性。或许有朝一日会发现自己连对异见的旁观都做不到了，那时候大概人的内心就真的老了。\n冷静下来回想，我并没有觉得是因为自己做错了什么才导致这种不适感，而恰恰这种不适感就是这门课所能带给我的提升。既然反对某些事情，就去想清楚为什么反对，而自己的主张又有什么合法性和漏洞。正因为有异见，才需要争辩，然后才会在冲突的观点之中让人更接近于真理。\n当然，等到时候期末考试出完分，会不会再来大骂这门课是另一回事儿😅——要是真因为固执己见而考砸了肯定还是会不开心的。但那时的想法自然也会因为被情绪蒙蔽而有失公允，所以还是现在记录下来比较客观一些🤣。\n","permalink":"http://localhost:1313/post/science-philosophy/","summary":"\u003cp\u003e这学期选修了《复杂系统理论》这门课。实际的课程内容完全超出了预料的方向——我本以为是各种复杂系统的数学推演和建模，结果讲了好几个礼拜的还原论、本体论和mind-body problem之类的哲学话题。起初我也并不排斥这样的讨论，但随着课堂进行，我开始有越来越强烈的不适感。\u003c/p\u003e","title":"不适"},{"content":"In this note I will give a brief introduction of agent-based modelling (ABM). I was learning ABM from an online tutorial1, in which this method is actually mostly applied in areas of social sciences, for example, economics or sociology.\nI will introduce the topic with four parts. For the first and second part, we will not talk about agriculture. But at last two parts we will talk about why agriculture experts need agent-based modelling. Despite that the previous section are from other domains, I still think they\u0026rsquo;re quite interesting examples and then we can see how it can be applied in ecological related topics.\n1. General introduction We need to start with the term \u0026ldquo;complex systems\u0026rdquo;2. This term it became very popular since the 2000s. However, the term \u0026ldquo;complex\u0026rdquo; almost sounds like an empty term to some degree because the real world is very complex by itself and every system, if it\u0026rsquo;s related to the reality, is complex in its nature. But when we talk about the word \u0026ldquo;complex\u0026rdquo;, there are some unique and particular characteristics.\nA complex system exists \u0026ldquo;on the edge of chaos\u0026rdquo;, which means it has some irregular behaviors or patterns, but still the whole system is very unpredictable and can change quite dramatically with some minor input variations (for example the climate system).\nAnother basic but also important idea is that we need to get rid of the idea of reductionism, which means to breakdown a topic or problem into different parts and by the process of breaking it, we will eventually get a full understanding of the whole picture. People in the past, especially those well trained with a Newtonian framework believed in this idea. But this reductionism idea has been criticized because people realized that when different parts are constructed in a certain way, we will observe some emergent characteristics which can\u0026rsquo;t be deducted from parts of the system.\nThere have been a lot of different theories to describe or study complex systems. By 2021, at least 76 theories3 have been formally constructed to solve complexity problems across different realms. Many of these theories, very sadly, conflicts with each other.\nAgent-based modelling belongs to one type of these different complex systems theories. Agent-based models (ABM) are computer simulations used to study the interactions between people, things, places, and time. They are stochastic models built from the bottom up, meaning individual agents are assigned certain attributes. The agents are programmed to behave and interact with other agents and the environment in certain ways. These interactions produce emergent effects that may differ from effects of individual agents4.\nIn some cases, ABM might be the only practical method when the interaction of the agents is contingent on past experience, and especially when the agents continually adapt to that experience, thus mathematical analysis is typically very limited in its ability to derive the dynamic consequences1.\nSimulation approaches, such as ABM, is regarded as a third way for scientific researches apart from deduction and induction. Scientists use deduction to derive theorems from assumptions, and induction to find patterns in empirical data. Simulation, like deduction, starts with a rigorously specified set of assumptions regarding an actual or proposed system of interest; but, unlike deduction, simulation does not prove theorems with generality. Rather, simulation generates data suitable for analysis by induction. In contrast to typical induction, however, the simulated data comes from controlled experiments rather than from direct measurements of the real world1.\nThere are the four goals that people usually seek when doing ABN researches.\nEmpirical understanding. We want to know why there are so many types of regularities that would occur when we don\u0026rsquo;t have top down control. By conducting ABM researches, we can get some general understanding of the mechanism that leads to these general regulations. Normative understanding. A typical example for this goal is policy making. We cannot take the risk to to conduct every policy option and test it for ten years to see whether the results are good or bad. That\u0026rsquo;s why we need agent-based modelling before actually applying the policies. And we can, at least to some degree, find out what is the best policy or strategies for the good of the society. Heuristic. In this case we we aim to get some greater insights for fundamental mechanisms that would emerge with large scale effects. With limited brain power, we usually cannot see the entire picture of a complex problem. But with the help of agent-based modelling and with the computers, we may get some new perspectives that we can\u0026rsquo;t see by ourselves. Better methods/tools. Researches keep looking for improvements in agent-based models, from methodological principles to programming, visualization, and empirical validation tools. 2. Modelling examples In this section I will talk about several classical (also interesting) modelling examples.\n2.1. The game of life 5 This might not be exactly an agent-based model, but quite similar. This is called \u0026ldquo;the game of life\u0026rdquo;. It was invented by a mathematician, John Conway from Princeton University, in 1970. It\u0026rsquo;s an example of a cellular automation, in which rules are applied to cells and their neighbors in a regular grid. Life is played on a grid of square cells\u0026ndash;like a chess board but extending infinitely in every direction. A cell can be alive or dead. A live cell is shown by putting a marker on its square. A dead cell is shown by leaving the square empty. Each cell in the grid has a neighborhood consisting of the eight cells in every direction including diagonals.\nTo apply one step of the rules, we count the number of live neighbors for each cell. What happens next depends on this number.\nA dead cell with exactly three live neighbors becomes a live cell (birth). A live cell with two or three live neighbors stays alive (survival). In all other cases, a cell dies or remains dead (overcrowding or loneliness). Life is one of the simplest examples of what is sometimes called \u0026ldquo;emergent complexity\u0026rdquo; or \u0026ldquo;self-organizing systems.\u0026rdquo; In Life, as in nature, we observe many fascinating phenomena, including static life patterns, oscillators, gliders, etc.\nstatic life patterns oscillators glider An online laboratory for conducting the game of life experiments can be found at https://playgameoflife.com/.\n2.2. Modelling civil violence 6 Here is another example of agent-based modelling. The model is used to represent civil violence development with different level of police power.\nA central authority uses \u0026ldquo;cops\u0026rdquo; to arrest (remove) actively rebelling citizens from the society for a specified jail term. In each time step, each agent (cop or citizen) randomly moves to a new unoccupied site within its limited vision. A rebelling citizen\u0026rsquo;s estimated arrest probability is assumed to fall as the ratio of actively rebelling citizens to cops that the citizen perceives in its vicinity increases. Each citizen in each time step decides whether to actively rebel or not depending on this perceived ratio.\nIn a multi-ethnic scenario, two different and hostile ethnic groups (blue and green, respectively) are mixed in the community. Red dots in the graph represent active events (violent conflicts between the two groups). When we don\u0026rsquo;t have police power as peace keepers, the mixture of two ethnic groups would lead to mass violent activities and eventually genocide, where one ethnic group is completely wiped out by the other. A peaceful haven is only possible when enough amount of police power (black dots) are deployed in the community and form a protective fence that loosely separates these two hostile groups.\n2.3. Fish emotion systems 7 There are also a lot of ABM researches related to biology and ecology. For instance, there is a research on the phenotype and genotype development of the emotion systems of fish. They constructed a hierarchical model that shows how different genotypes trigger various organismal responses to certain environmental messages, and reacts accordingly. These reactions leads to different survival rates according to natural selection. By conducting modelling experiments, they found that in a given environment, phenotype frequency distributions are predictable while gene pools are not due. This result provides a lot of mechanism information on convergent evolution and the organismal level of selection.\n2.3. BEEHAVE 8 I also found a quite professional and open source software used for honeybee agent based models. BEEHAVE is a computer model to simulate the development of a honeybee colony and its nectar and pollen foraging behavior in different landscapes.\nThe purpose of BEEHAVE is to allow multiple stressors of honeybee colonies within a hive and in the landscape to be represented, either alone or in combination, to understand their potential influence on colony development and survival: e.g. varroa mites transmitting deformed wing virus (DVW) or acute paralysis virus (APV), effects of several beekeeping practices, poor forage availability or even forage gaps in the landscape, and pesticide-induced losses of in-hive bees and foragers, in-hive bees, or brood.\nThe design of BEEHAVE is based on empirical data, expert knowledge, and earlier honeybee models, but BEEHAVE is the first model that integrates within-hive processes with an explicit representation of foraging in heterogeneous and dynamic landscapes.\nAn introduction video from the BEEAHVE website can be found at here.\n3. Constraints and new opportunities 9 The number of scholars who developed or used ABMs has been steadily increasing at an exponential rate since the mid-1990s, reaching a climax in the 2000s. However, this hype faded with time because progress in agent-based modeling has been slower than initially anticipated. Challenges that ABM researches face may be concluded as:\nBasic difficulties in model development, communication, understanding, verification, and validation; Difficulties regarding coherence because of the substantial variation in platforms, programming languages, model details and sophistication, and modeler\u0026rsquo;s preferences; Difficulties in computational efficiency as most ABMs are developed on personal computers; Inadequate model/module transparency and reusability, which partially contributes to the challenge of verifying, validating, and analyzing model outcomes, including model sensitivity; Difficulties in generalizing findings and scaling them across scales. However, recent advances in artificial intelligence, unique new forms of data, and data science will substantially help address these challenges.\n%%{init: {'theme': 'neutral', 'fill': 'white', 'securitylevel': 'loose' } }%% graph LR A{{\"Artificial intelligence\"}} B{{\"Big data\"}} Q{{Qualitative data}} D{{\"Data science\"}} d[Data processing assisted by machine learning] i1[Intelligent agents with neural networks] r[Real-time data incorporation] i2[Improved model structures] c[\"Calibration \u0026 validation\"] A--\u003ed A--\u003ei1 B--\u003ei1 B--\u003er B--\u003ei2 D--\u003ei2 D--\u003ec Q--\u003ei2 Axelrod, R., \u0026amp; Tesfatsion, L. (2023, March 24). On-Line Guide for Newcomers to Agent-Based modelling in the Social Sciences. http://www2.econ.iastate.edu/tesfatsi/abmread.htm\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nVicsek, T. (2002). Complexity: The bigger picture. Nature, 418(6894), 131–131. https://doi.org/10.1038/418131a\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nCastellani, B., \u0026amp; Gerrits, L. (2023, May 10). 2021 Map of the complexity sciences [Https://www.art-sciencefactory.com/complexity-map_feb09.html].\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nColumbia University Irving Medical Center. (n.d.). Agent-Based modelling: Overview. https://www.publichealth.columbia.edu/research/population-health-methods/agent-based-modelling\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nCallahan, P. (n.d.). What is the Game of Life? http://www.math.com/students/wonders/life/life.html\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nEpstein, J. M. (2002). Modeling civil violence: An agent-based computational approach. Proceedings of the National Academy of Sciences, 99(suppl_3), 7243–7250. https://doi.org/10.1073/pnas.092080199\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nGiske, J., Eliassen, S., Fiksen, Ø., Jakobsen, P. J., Aksnes, D. L., Mangel, M., \u0026amp; Jørgensen, C. (2014). The emotion system promotes diversity and evolvability. Proceedings of the Royal Society B: Biological Sciences, 281(1791), 20141096. https://doi.org/10.1098/rspb.2014.1096\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nThe University of Exeter, Matthias Becher. (n.d.). BEEHAVE. https://beehave-model.net/\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nAn, L., Grimm, V., Sullivan, A., Turner II, B. L., Malleson, N., Heppenstall, A., Vincenot, C., Robinson, D., Ye, X., Liu, J., Lindkvist, E., \u0026amp; Tang, W. (2021). Challenges, tasks, and opportunities in modeling agent-based complex systems. Ecological Modelling, 457, 109685. https://doi.org/10.1016/j.ecolmodel.2021.109685\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"http://localhost:1313/post/learning-abm/","summary":"In this note I will give a brief introduction of agent-based modelling (ABM). I was learning ABM from an online tutorial1, in which this method is actually mostly applied in areas of social sciences, for example, economics or sociology.\nI will introduce the topic with four parts. For the first and second part, we will not talk about agriculture. But at last two parts we will talk about why agriculture experts need agent-based modelling.","title":"Learning notes on agent-based modelling (ABM)"},{"content":"本篇是MMDetection学习应用过程中的踩坑记录，随学习情况更新。\n训练报错：CocoDataset缺少update_skip_type_keys属性 运行条件：\npycocotools version: 2.0.7 mmengine version: 0.8.4 使用dataset_type = 'CocoDataset'训练模型，在倒数第15个epoch的时候会报错表示CocoDataset缺少update_skip_type_keys属性。\n一开始以为问题出在pycocotool包上，于是安装卸载了好几轮，还尝试了用mmpycocotools替换pycocotools，但是都不能解决问题。经过调试发现报错发生在mmengine包里，即site-packages/mmdet/engine/hooks/yolox_mode_switch_hook.py的第50行：\n1 train_loader.dataset.update_skip_type_keys(self.skip_type_keys) 神奇的是将这一行直接注释掉之后依然能够正确地将模型训练出来，基本不影响正常的使用。于是就不再去动它了……\u0026#x1f605;\nGPU加速模型训练 核对GPU信息 有独立显卡（GPU）的电脑上可以用GPU来提高模型训练的速度。在使用GPU训练之前需要先安装CUDA。可以用如下代码来查看本机的GPU信息1：\n1 2 3 4 5 import torch torch.cuda.is_available() #cuda是否可用； torch.cuda.device_count() #返回gpu数量； torch.cuda.get_device_name() #返回gpu名字，设备索引默认从0开始； torch.cuda.current_device() #返回当前设备索引； 在本机上打印出来的结果依次为：\n1 2 3 4 True 1 \u0026#39;NVIDIA GeForce RTX 3060 Laptop GPU\u0026#39; 0 启用GPU训练 MMDetection的官方文档里说可以通过CUDA_VISIBLE_DEVICES=$GPU_ID来指定选优单一的GPU进行模型训练2，例如\n1 CUDA_VISIBLE_DEVICES=2 python tools/train.py configs/qdtrack/qdtrack_faster-rcnn_r50_fpn_8xb2-4e_mot17halftrain_test-mot17halfval.py 但是上述命令在Windows平台中无法运行，命令行里会提示'CUDA_VISIBLE_DEVICES' 不是内部或外部命令，也不是可运行的程序 或批处理文件。在Windows中的workaround有很多种方式，其中我个人比较建议在训练脚本tools/train.py里插入：\n1 2 import os os.environ[\u0026#34;CUDA_VISIBLE_DEVICES\u0026#34;]=\u0026#39;0\u0026#39; 相比于其他方案（例如添加系统环境变量、在cmd窗口里临时设置变量等等），直接写进训练代码里具有更好的可迁移性，换到另一台电脑上时不需要重新再麻烦地设置一遍（前提是另一台电脑也有独显和CUDA）。\n查看GPU占用率 打开任务管理器，把GPU的引擎设置为Cuda，就可以查看模型训练时GPU的占用率。如果发现GPU的占用率很低，但是CPU的占用率接近100%，可能是因为数据传输量过大。可以尝试减小num_workers、img_scale等参数来解决CPU相对于GPU的瓶颈问题。\n不同的损失函数含义 训练模型时，每一个epoch会打印出格式如下的信息：\n1 08/28 11:12:40 - mmengine - INFO - Epoch(train) [306][1/1] base_lr: 4.9967e-04 lr: 4.9967e-04 eta: 0:10:33 time: 0.9054 data_time: 0.3816 memory: 3733 loss: 4.1566 loss_cls: 0.6430 loss_bbox: 2.2906 loss_obj: 1.2230 其中涉及到几个不同损失函数，根据网上的资料粗略地区分一下每个函数的特点——\nloss：损失函数用于衡量预测值与真实值之间的差异。\nloss_cls：目标检测算法的分类损失，衡量预测边界框的分类正确性。\nloss_bbox：衡量预测边界框与地面真实对象的“紧密程度”的损失。\nloss_obj：目标对象的损失函数。\npytorch中查看gpu信息_torch_lsh呵呵的博客-CSDN博客\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nLearn to train and test — MMDetection 3.1.0 documentation\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"http://localhost:1313/post/notes-on-mmdet/","summary":"\u003cp\u003e本篇是MMDetection学习应用过程中的踩坑记录，随学习情况更新。\u003c/p\u003e","title":"MMDetection目标检测入门笔记"},{"content":"大学期间我一直没有到长三角以外的地方旅游过。高三的暑假里和同学一起去了成都，大四毕业后又和女朋友一起去了成都——这座城市就这样机缘巧合地将我过去的四年包裹起来，仿佛一段诗句篇章quote。然而我自己也从来说不清为什么偏偏是成都。\n两次成都之行去了截然不同的地方。高三的时候，我们穿过宽窄巷子，到访草堂和武侯祠，看了金沙遗址和大熊猫，在青城山上缺氧。而这一次，我们逛过东郊记忆、芳草街、九眼桥，看了各种演出和展览，从酒吧里溜达出来听街头艺人唱歌。\n四年过去，体能大不如从前了。曾经在青城山上一边缺氧一边还能日行三四万步，现在在芳草街逛一圈都会觉得费劲。但我觉得也有变好的一面——变得比曾经的自己更加热爱生活，会更加主动地去尝试一些新的体验，主动地表达并追求个人的审美。还有就是，学会怎么独立地安排各种出游计划了。\n","permalink":"http://localhost:1313/post/revisit-chengdu/","summary":"\u003cp\u003e大学期间我一直没有到长三角以外的地方旅游过。高三的暑假里和同学一起去了成都，大四毕业后又和女朋友一起去了成都——这座城市就这样机缘巧合地将我过去的四年包裹起来，仿佛一段诗句篇章quote。然而我自己也从来说不清为什么偏偏是成都。\u003c/p\u003e","title":"重访成都"},{"content":"上周发生了一件值得炫耀的事情——我登上了西湖大学官方公众号的推文“中美41名高中生的西湖实验”。虽然并不是什么巨大的荣誉，但以后说起来也是在官推上有过大名的人了，这玩意儿可以拿来吹一年。\n简单来说就是西湖大学举办了一个全球招生的高中生夏令营项目，其中有一项活动是在我们实验室的支持下，到田野里进行生态农业相关课题的体验。其中我主要给他们简单介绍了实验室开发的嵌入式AI监测相机的基本原理、优势以及应用场景。\n参加夏令营的大多数是来自国外的高中生，他们当中很多人会在明年毕业并申请自己的目标大学，其中或许就会包含大洋彼岸的西湖大学。给这些不同肤色、种族的同学们讲知识是一次挺奇妙的体验，他们提出的问题的差异之大也出乎我的意料——从具体的设备运行损耗和效率，到专业方向选择这种很普适的问题都有。我也很高兴自己能够比较游刃有余地把大部分问题都具体地解答了，并且自认为通过问答分享了更多的内容。对于一个准博士生和一群高中生来说，这次讨论的难度和深度或许都恰到好处。\n在田野里参观的时候，一个美国男生熟练地唱起了“蒸馏水”和“一剪梅”。这是我亲身经历的第一次国内文化输出的小小震撼。\n","permalink":"http://localhost:1313/post/summer-camp-2023/","summary":"\u003cp\u003e上周发生了一件值得炫耀的事情——我登上了西湖大学官方公众号的推文\u003ca href=\"https://mp.weixin.qq.com/s/5HF3FwYhY9awbN86IJ1TWA\"\u003e“中美41名高中生的西湖实验”\u003c/a\u003e。虽然并不是什么巨大的荣誉，但以后说起来也是在官推上有过大名的人了，这玩意儿可以拿来吹一年。\u003c/p\u003e","title":"二十分钟的老师"},{"content":"Our bio lab is quite noisy because of a 24-7 working ventilation duct on the ceiling - the room needs to be kept under negative pressure. At some point the noise reached 80 dB, which is quite annoying.\nSo here I am, trying to use my knowledge from environmental physics lessons to track the source of noise pollution.\nThe noise in our bio lab is supposed to be the result of some structures causing standing waves as the ventilation system drives air through the room and into the duct. So the key to solve that noise pollution would be to find the most powerful standing waves, and alter related structures. Once these structures are altered, hopefully we won\u0026rsquo;t have any annoying standing waves.\nSampling To track standing waves we need some noise samples. However, we don\u0026rsquo;t have a proper device to record the noise, and the only thing available at had was my smartphone. Microphones in smartphones are good at recording human voice, but I\u0026rsquo;m not confident at their ability to record low-frequency noises. Sampling accuracy may be influenced by microphone sensitivity and other systematic bias caused by the smartphone structure.\nSo I found a way to (partly) compensate for this unreliability. I used 3 smartphones of different brands (vivo, Honor and iPhone), 2 of which borrowed from my colleagues Marcel \u0026amp; Lin Wei. I recorded 3 pieces of noise samples, each lasting for roughly 15 seconds (sample_A.m4a, sample_B.m4a, sample_C.m4a). sample_A.m4a and sample_B.m4a both had 2 channels, while sample_C.m4a had a single channel. The sampling rates were all 48000 Hz.\nFourier transform In order to find dominant frequencies, I used MATLAB to do Fourier transform. Sample sections (from the 4th second to the 12th second) were used to avoid disturbance at the beginning and end of noise records.\nNoise sample sections (8 seconds) recorded with 3 smartphones.\nChannel 1-2: Honor; Channel 3-4: vivo; Channel 5: iPhone. Then I used fft() function to do fast Fourier transform for these 5 channels. It\u0026rsquo;s clear that the 3 phones showed very different performance in recording noise samples. Channel 1-2 (Hornor) showed a high peak at 320 Hz, and one of its channel had a second peak at 95 Hz. Channel 3-4 (vivo) had their 1st peak at 97 Hz, and 2nd peak at 37 Hz. Channel 5 (iPhone) peaked at 48 Hz.\nPower-frequency curves, zoomed in 20-2000 Hz.\nChannel 1-2: Honor; Channel 3-4: vivo; Channel 5: iPhone. The results were quite a bit mess, but to some degree that\u0026rsquo;s exactly what I had expected. Some of the peaks make a lot of sense, e.g., the 97/95 Hz peaks indicate a wavelenght of 3.5 m, which is exactly the width of our bio lab - so this is a standing wave with its nodes attached to 2 opposite walls of the room.\nConclusion It\u0026rsquo;s fairly simple to remove that standing wave - just put some sound-absorbing cotton on related walls and it will be gone. But it\u0026rsquo;s also not so simple since we have to make sure that these sound-absorbing cotton will not bring other risks to our bio lab, e.g., undesired volatile chemicals or fire-proof/safety standards that are not met. Another pretty simple way is to lower the power of ventilation and thus the energy of vibration will also drop to an acceptable level, hopefully. Let\u0026rsquo;s wait and see what people from construction/decoration departments would suggest.\nMeanwhile, we\u0026rsquo;ve learned from this experience that it is never recommended to analyze frequency spectrums with smartphones - professional vibration meters are expensive for a good reason.\n","permalink":"http://localhost:1313/post/tracking-noise/","summary":"\u003cp\u003eOur bio lab is quite noisy because of a 24-7 working ventilation duct on the ceiling - the room needs to be kept under negative pressure. At some point the noise reached 80 dB, which is quite annoying.\u003c/p\u003e\n\u003cp\u003eSo here I am, trying to use my knowledge from environmental physics lessons to track the source of noise pollution.\u003c/p\u003e","title":"Tracking Noise with Smartphones"},{"content":" 基于Prodi et al (1982)的纤维颗粒空气动力学等效直径计算公式推导出以纤维颗粒的长度、直径为直接测量变量的等效直径误差传递公式。\nProdi et al1给出了纤维状颗粒的空气动力学等效直径计算公式： $$ D=\\frac{3W}{2}\\sqrt{\\frac{\\rho}{\\frac{0.385}{\\ln{2\\beta}-0.5}+\\frac{1.23}{\\ln{2\\beta}+0.5}}} $$ 其中$W$是纤维的直径，$\\beta$是基于投影尺寸的纵横比（长/宽，$L/W$）2。在做文献调研时，需要计算一些已发表实验中采用纤维颗粒的等效直径及误差，但是论文中通常只会给出纤维颗粒的直径和长度测量数据及误差，即$W±\\sigma_W,L±\\sigma_L$。这时虽然可以很方便地计算出$D=f(W,L)$，却不能直接知道$D$的误差是多少。本文给出从长度、直径误差计算出等效直径误差的推导过程和误差传递公式。\n以偏导的形式表达等效直径误差， $$ \\sigma_D^2=\\sigma_W^2\\left(\\frac{\\partial D}{\\partial W}\\right)^2_{\\overline W}+\\sigma_L^2\\left(\\frac{\\partial D}{\\partial L}\\right)^2_{\\overline L} $$ 接下来开始对两个偏导项逐个击破。\n对$W$的偏导 $$ \\frac{\\partial D}{\\partial W}=\\frac32\\cdot\\sqrt{\\frac{\\rho}{\\frac{0.385}{\\ln{2\\beta}-0.5}+\\frac{1.23}{\\ln{2\\beta}+0.5}}} +\\frac{3W}{2}\\cdot\\frac{\\partial g(W,L)}{\\partial W} $$\n$$ \\begin{aligned} {\\rm where~~} g(W,L)\u0026amp;=\\left[ \\frac1\\rho \\left( \\frac{0.385}{\\ln(L/W)+\\ln2-0.5}+\\frac{1.23}{\\ln(L/W)+\\ln2+0.5} \\right) \\right]^{-\\frac12}\\\\ \u0026amp;=\\sqrt\\rho\\cdot h(W,L)^{-\\frac 12}\\\\ {\\rm where~~}h(W,L)\u0026amp;= \\frac{0.385}{\\ln(L/W)+\\ln2-0.5}+\\frac{1.23}{\\ln(L/W)+\\ln2+0.5} \\end{aligned} $$\n$$ \\therefore~ \\frac{\\partial g(W,L)}{\\partial W}=-\\frac{\\sqrt\\rho}2\\cdot h(W,L)^{-\\frac32}\\cdot\\frac{\\partial h(W,L)}{\\partial W} $$\n$$ \\begin{aligned} \\frac{\\partial h(W,L)}{\\partial W}\u0026amp;=\\frac{\\partial}{\\partial W}\\left[ \\frac{0.385}{\\ln(L/W)+\\ln 2-0.5}+\\frac{1.23}{\\ln(L/W)+\\ln2+0.5} \\right]\\\\ \u0026amp;=\\frac{0.385}{\\left[\\ln(L/W)+\\ln 2-0.5\\right]^2}\\cdot\\frac1W +\\frac{1.23}{[\\ln(L/W)+\\ln2+0.5]^2}\\cdot\\frac1W\\\\ \u0026amp;=\\frac{0.385}{\\left[\\ln(2\\beta)-0.5\\right]^2\\cdot W} +\\frac{1.23}{[\\ln(2\\beta)+0.5]^2\\cdot W} \\end{aligned} $$\n$$ \\begin{aligned} \\therefore~\\frac{\\partial g(W,L)}{\\partial W}\u0026amp;=-\\frac{\\sqrt\\rho}{2W}\\cdot \\left( \\frac{0.385}{\\ln(2\\beta)-0.5}+\\frac{1.23}{\\ln(2\\beta)+0.5} \\right)^{-\\frac32}\\cdot\\left( \\frac{0.385}{\\left[\\ln(2\\beta)-0.5\\right]^2\\cdot W} +\\frac{1.23}{[\\ln(2\\beta)+0.5]^2\\cdot W} \\right)\\\\ \u0026amp;=-\\frac{1}{2W}\\sqrt{ \\frac\\rho {\\left[ \\frac{0.385}{\\ln(2\\beta)-0.5}+\\frac{1.23}{\\ln(2\\beta)+0.5} \\right]^3} } \\times\\left( \\frac{0.385}{\\left[\\ln(2\\beta)-0.5\\right]^2} +\\frac{1.23}{[\\ln(2\\beta)+0.5]^2} \\right) \\end{aligned} $$\n$$ \\begin{aligned} \\therefore~\\frac{\\partial D}{\\partial W}\u0026amp;=\\frac32\\cdot\\sqrt{\\frac{\\rho}{\\frac{0.385}{\\ln{2\\beta}-0.5}+\\frac{1.23}{\\ln{2\\beta}+0.5}}} +\\frac{3W}{2}\\cdot\\frac{\\partial g(W,L)}{\\partial W}\\\\ \u0026amp;=\\frac32\\cdot\\sqrt{\\frac{\\rho}{\\frac{0.385}{\\ln{2\\beta}-0.5}+\\frac{1.23}{\\ln{2\\beta}+0.5}}}-\\frac34\\cdot\\sqrt{ \\frac\\rho {\\left[ \\frac{0.385}{\\ln(2\\beta)-0.5}+\\frac{1.23}{\\ln(2\\beta)+0.5} \\right]^3} } \\times\\left( \\frac{0.385}{\\left[\\ln(2\\beta)-0.5\\right]^2} +\\frac{1.23}{[\\ln(2\\beta)+0.5]^2} \\right)\\\\ \u0026amp;=\\frac32\\sqrt{\\frac{\\rho}{\\frac{0.385}{\\ln{2\\beta}-0.5}+\\frac{1.23}{\\ln{2\\beta}+0.5}}} \\left( 1-\\frac12\\frac{ \\frac{0.385}{\\left[\\ln(2\\beta)-0.5\\right]^2} +\\frac{1.23}{[\\ln(2\\beta)+0.5]^2} } {\\frac{0.385}{\\ln(2\\beta)-0.5}+\\frac{1.23}{\\ln(2\\beta)+0.5}} \\right) \\end{aligned} $$\n对$L$的偏导 $$ \\begin{aligned} \\frac{\\partial D}{\\partial L}\u0026amp;=\\frac{3W}{2}\\times\\frac{\\partial g(W,L)}{\\partial L}\\\\ \\frac{\\partial g(W,L)}{\\partial L}\u0026amp;=-\\frac{\\sqrt \\rho}{2}h(W,L)^{-\\frac32}\\frac{\\partial h(W,L)}{\\partial L} \\end{aligned} $$\n由于$W$和$-L$在函数$h(W,L)$里的地位是相同的，所以根据前一节对$h(W,L)$求偏导的计算可以很快得到\n$$ \\begin{aligned} \\frac{\\partial h(W,L)}{\\partial L}\u0026amp;=-\\frac{\\partial h(W,L)}{\\partial W}\\\\ \u0026amp;=-\\frac{0.385}{[\\ln (2\\beta)-0.5]^2\\cdot L}-\\frac{1.23}{[\\ln(2\\beta)+0.5]^2\\cdot L} \\end{aligned} $$\n$$ \\begin{aligned} \\therefore~\\frac{\\partial D}{\\partial L}\u0026amp;=\\frac{3}{4\\beta} \\sqrt{ \\frac{\\rho}{\\frac{0.385}{\\ln2\\beta-0.5}+\\frac{1.23}{\\ln2\\beta+0.5}} } \\left(\\frac{\\frac{0.385}{[\\ln(2\\beta)-0.5]^2}+\\frac{1.23}{[\\ln(2\\beta)+0.5]^2}}{\\frac{0.385}{\\ln2\\beta-0.5}+\\frac{1.23}{\\ln2\\beta+0.5}}\\right) \\end{aligned} $$\nProdi, V., De Zaiacomo, T., Hochrainer, D., \u0026amp; Spurny, K. (1982). Fibre collection and measurement with the inertial spectrometer. Journal of Aerosol Science, 13(1), 49–58. https://doi.org/10.1016/0021-8502(82)90007-6\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nEdo, C., Fernández-Alba, A. R., Vejsnæs, F., van der Steen, J. J. M., Fernández-Piñas, F., \u0026amp; Rosal, R. (2021). Honeybees as active samplers for microplastics. Science of the Total Environment, 767, 144481. https://doi.org/10.1016/j.scitotenv.2020.144481\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"http://localhost:1313/post/equivalent-diameter-error/","summary":"\u003cblockquote\u003e\n\u003cp\u003e基于Prodi et al (1982)的纤维颗粒空气动力学等效直径计算公式推导出以纤维颗粒的长度、直径为直接测量变量的等效直径误差传递公式。\u003c/p\u003e\n\u003c/blockquote\u003e","title":"纤维状颗粒的空气动力学直径误差传递公式"},{"content":"在写一篇综述论文的时候被推荐了BioRender这一作图工具，尝试了一下发现确实很好用，可以让生物领域的插图制作如有神助。\n优点 素材库庞大 | 拥有五万多个素材和模板，覆盖生命科学的三十多个领域(BioRender官网宣传内容)——这意味着素材不仅数量多，而且非常专业对口。在作图过程中，绝大多数需要的素材都能够在BioRender的素材库里找到——从土地剖面到动植物模型，再到各种分子生物结构。不过不能指望总是能找到每一个具体物种的素材，那样的话估计素材的数量得再升几个数量级hhh。实在不行的时候还是得自己制作或者去网上搜索合适的素材。 一键换风格 | 每个素材通常都会提供若干个风格版本，可以选择合适的风格来让插图整体风格统一、对比突出。比如这里的一片叶子就有二十二种预设的风格。要是氪金了的话还可以手动拉设置条自定义更多的颜色(氪金之后可使用的素材也会更多，不过对我而言目前免费版就够用了)。\nGroup icon可拆组合 | BioRender的组合图标(group icon)如果使用得当可以大大拓宽制图的可能性。一些素材是以不同的基础元素组合的形式呈现的，比如河床剖面图、烧杯里的混合液过滤等等。通过将组合图标拆分再重新组合，就可以获得大量“定制”的素材。当心里已经想好插图的大体布局，却发现没有最合适的环境素材时，可以尝试用这样重组的方式来实现设想。\n缺点 网络连接不稳定 | 这或许是所有网页端工作台的通病——一旦网络断开且之前没有点击保存，就可能会丢失之前的很多工作量。加上BioRender不是国内的平台，加载慢、网络连接断开的问题可能更加严重。即使挂了梯子之后断连问题也时有发生。而且似乎加载慢的问题会随着素材数量增加而更加频发(倒似乎也可以理解……)。总之使用的时候要多多记得Ctrl+S，避免悲剧发生。 暂时没有想到其他缺点了……之后遇到再补。 ","permalink":"http://localhost:1313/post/try-biorender/","summary":"\u003cp\u003e在写一篇综述论文的时候被推荐了\u003ca href=\"https://www.biorender.com/\"\u003eBioRender\u003c/a\u003e这一作图工具，尝试了一下发现确实很好用，可以让生物领域的插图制作如有神助。\u003c/p\u003e","title":"浅试Biorender"},{"content":"已经一个多月没有发布新博客了，来更新一下自己的状态。\n六月里围绕毕业发生了很多事情。我完成了毕业论文的答辩，好在没有被评审老师过多刁难，获得了还算不错的成绩。答辩结束之后，和糯米一起去上海迪士尼狂玩了两天（果然是一个氪金就会快乐的地方，就是钱包实在顶不住😂）——也是第一次我们两个人一起出去旅游。最后修改提交了毕业论文，继续填了很多的表格，办了很多手续。吃了几次散伙饭，拍了几张毕业照，和环境科学专业班级、工高班的同学说了再见。\n同学们一个个离开了紫金港。有些人连个月后还会重逢，有些人从今以后江湖再见。朋友圈里别人的合照、留念铺天盖地涌来，又将潮水一样退去。对我个人而言，却并没有切实感受到生活的剧变，而更像是无缝衔接地进入到了下一阶段的工作当中。实验室的工作照常进行，Tom和我商量好了暑假里需要完成的工作内容。我还是像做毕业实验的那段时间一样，在紫金港和云谷之间通勤，一点点推进科研的进度。唯一的区别是现在开车更频繁了，除了往返实验室之外还会到瓶窑接送糯米上下班。\n我很开心暂时摆脱了一些繁琐的程序，可以有更多的时间投入到自己的事情中。不仅仅是在热爱的科研方向中创造一些东西，也是在生活中更好地经营——看看书，玩玩音乐，刷几部电影，拾掇一下房间，和生命中重要的人多聊聊天……\n前一阵子也为了博士期间的规划焦虑过，既不知道自己的研究生涯能有多大成就，也不清楚怎样协调好两个人不同的发展路径。但是后来在交流和反思中逐渐意识到，在没有获取更多信息的情况下，焦虑只能是无意义的内耗。而在竭尽自己所能、努力尝试之前，我便无法获得自己所需要的信息。眼下应该做的，是用心创造、用心生活、用心经营。\n我期待着一个peaceful, joyful, fruitful的夏天。\n","permalink":"http://localhost:1313/post/bsc-graduation/","summary":"\u003cp\u003e已经一个多月没有发布新博客了，来更新一下自己的状态。\u003c/p\u003e","title":"本科毕业了！"},{"content":"提交毕业论文之后的我似乎并没有得到太多喘息和自由的机会。\n原本在导师Tom的建议下，计划5月日和16日到法国Montpelier参加一场cocoa agroforestry的研讨会议。报名、邀请函、护照等等都准备妥当了，结果卡在了签证排队上——国内的法国签证中心处处爆满，最早可以预约到的面签时间都已经是会议举行的大半个月之后了。也不是不能抢一抢大使馆偶尔放出来的近期的预约号，但是当时正在为本科毕业论文忙得焦头烂额，没有更多的精力来和签证官网斗智斗勇了；找人代抢又需要花很多钱（而且不保成功），最终作罢改为线上参会。Tom也试图想办法帮我找捷径（最终失败了），主办会议的大佬Eduardo回复邮件对我不能亲到现场表示了遗憾。我这样一个本科都还没毕业的外行小辈感到很受宠若惊，也很遗憾就这样错失了一次好机会。\n嗯，就是这场研讨会：Cocoa Agroforestry in West and Central Africa: From definition to innovation and implementation pathways\n线上参加学术讨论的参与感显然比线下差了很多。浅层的原因，是面对面交流的互动感更强，更容易集中精神听发言人的观点，而线上总会被各种网络、设备问题所干扰。更深一点的原因，是我没能在研讨会的这几个小时里将现实生活中的各种事务清理出去。虽然毕业论文的初稿已经提交上去了，但是各种毫无预期的事务蜂拥而至。这我感到很心烦意乱，难以充分投入到一场高度集中的专业讨论中。\n毕业季有很多通知、手续，这里签个字，那里提交个文件……很多以前从来没有产生过交集，以后或许也将不再产生交集的学校部门一个个过来找你，让你反复向他们确认你的基本信息、学分情况、毕业去向、组织关系等等，尽管这些东西你早就在很多地方填写过很多遍。\n还有莫名其妙地报了名、莫名其妙地入围了省赛，莫名其妙地被拉去参加各种赛前培训的挑战杯……成为了我这段时间的最大心理阴影。最大的问题还不在于工作量的多和无法预期，而是在于我越来越没法为自己带队参赛找到切实的意义感，不知道反复打磨PPT、修改讲稿的付出究竟产生了什么价值。而与我自己的意义感缺失所形成强烈反差的，是学校和比赛组织方对这件事情所表现出的极大的意义感。他们似乎切切实实地觉得这件事情充满价值，很也苦心积虑地为我们请各路专家，反复指导，反复修改，反复敦促。这些热情“帮助”和“引导”对我而言反而成了不断加码的烦恼，以及对生活安排的打断。\n我没有比一个月前获得更多的精力去提升自己，也没有比那时获得更多的精力去好好生活。晾干没有叠好的衣服堆积成山，地板上和桌子的角落里堆积起了一层灰，早就设想好的家具布局也一直没有落实改造。\n我打开录制的会议回放，却沮丧地发现自己一个字都听不进那些有趣的专业汇报和深入浅出的问答。\n最近的日子就是这样，错过了一些对我而言富有意义的东西，并在试图为眼前事情赋予意义而挣扎。好希望这样的日子可以快点结束。\n更新于5月22日\n今天去医院看病，确诊了中度抑郁和一些伴随的轻度强迫和焦虑。之前还挺不愿意承认自己抑郁的，感觉这意味着承认自己软弱，是对现实困难的妥协认输。不过直面自己的内心或许才是破局的开始。看来最近的精神状态确实有点糟糕，需要好好调整。\n","permalink":"http://localhost:1313/post/rushing-days/","summary":"\u003cp\u003e提交毕业论文之后的我似乎并没有得到太多喘息和自由的机会。\u003c/p\u003e","title":"被驱使的日子"},{"content":"城市和机器是一组被紧密捆绑的意象。\n高中的时候很喜欢郝景芳的《北京折叠》，里边关于城市翻转过程的描写让我印象深刻。“晨光熹微中，一座城市折叠自身，向地面收拢。”\n作者以细腻而严谨的笔触描写了一片钢筋水泥的城市如何如机器般各个零件互相咬合，严丝合缝地折叠、舒展，将自身的不同侧面在大地与天空之间切换。\n在我脑海里，这是将城市描写成一台巨型机器的最精彩的片段之一。作为工业化进程的孪生子，(现代意义上的)“城市”和“机器”这两个词语，在数不尽的文艺作品中被反复关联。\n以前我很痴迷于这一类的描写。尤其是在各种软科幻作品中，城市经常充斥着雾霭、霓虹灯、汹涌的人潮，以及最重要的，一种精确的、冷酷的、机械的氛围。城市总是有一种机器感，和田园风光的乡下形成强烈的对比。这种形象的描写还往往伴随着对社会发展方向的批判反思，对所谓”高科技低生活“的城市发展道路的抗争，或者至少是不满。\n但是最近我突然意识到，自己不再像以前那样强烈地被这类内容所吸引了。或许是因为上大学以来在大城市呆得久了，逐渐看清了杭州这座城的细节。走遍了从市中心CBD到周边郊区再到山村的很多角落，切身地体会到所谓乡村田园和高楼大厦不过是人类社群形式的连续光谱上的两个端点。它们在本质上并没有什么不同。\n如今我们看那些古人类遗址，或许会觉得他们的住所和器皿是如此的粗糙，凹凸不平的陶器表面有一种随机性的美。但其实细看那些错综复杂的立交桥、高耸入云的高楼，也并不难看到水泥墩子上布满了不平整的裂痕，外墙上都是锈迹和雨渍。未来的人看我们今天所留下来的痕迹，同样会觉得原始而粗陋。\n这种人工的粗糙感在社会关系上同样存在。即使是在城市化的环境里，在高度系统化的组织里，同样少不了人情世故，少不了因为隔阂而产生的冲突。在不知道多少次痛骂某些行政官僚系统的不规范和效率低下，多少次吐槽各种评价标准的不合理错位之后，我便很难再将任何社会关系抽离成纯粹的、像书面规章制度一样清晰明了的逻辑结构。作为一个成长在原子化时代的人，一个不太善交际的人，我并不更留恋过去的宗族社会。反而有太多次，我真心希望自己面对的就是一个真正如机器程序一样逻辑严谨、运行稳定的社会系统，不必被无形的传统所推动着冲击有形的规范。\n这都是因为不论什么样的社群形式，其本基本的构成都是不理性的人。城市也好，乡村也罢。即使我们发明了再高效的技术，设计了再复杂的社会系统，只要这还是“人”的社会，就不会变成真正的机器。——这大概也就是所谓“没有人的文明毫无意义”。人永远在为社会注入不确定性。\n再激进一点地说，那些极尽繁华的大都市，和河滩边石头上的一个小小菌落，其实也只是同一类东西。人类最大都市圈——东京——的路网系统花费了工程师们百年的时间进行优化，而黏菌在26小时之内便可完成相似的路网规划1。\n图源：黏菌東京地鐡 | teepr 我之所以这样类比并不是想要消弭人类文明的意义感——相反，恰恰是要通过强化情感、生命本质之类的东西，证明我们所创造的一切都是自身生命的外延。即使机器再复杂，最终都是为了满足人的物质或精神的需求。即使城市再复杂、再工业化，也总有着呼吸和脉搏。\n其实郝景芳并没有将折叠的北京完全描写成无生命的机器——它更像是一头流淌着工业血液的巨兽，引擎便是它的骨骼肌。折叠城市中的人的欲望和情感，赋予这头巨兽以的生命冲动。并不是说城市就必然冷酷，我们只是希望不论什么社群形态，都能对身处其中的生命报以尊重和温暖而已。\n封面由Dream by WOMBO生成。描述：city of machines, 16:9, 风格：Dark Fantasy\nAtsushi Tero et al. Rules for Biologically Inspired Adaptive Network Design.Science, 327,439-442(2010).DOI:10.1126/science.1177894\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"http://localhost:1313/post/city-of-machines/","summary":"\u003cp\u003e城市和机器是一组被紧密捆绑的意象。\u003c/p\u003e\n\u003cp\u003e高中的时候很喜欢郝景芳的《北京折叠》，里边关于城市翻转过程的描写让我印象深刻。“晨光熹微中，一座城市折叠自身，向地面收拢。”\u003c/p\u003e","title":"City of Machines"},{"content":"byd这创赛搞得难受死了，不吐不快。搞不明白为啥要在创业大赛里弄一个学术论文赛道，却又以商业项目的风格来要求参赛作品。更搞不懂我一臭搞科研的大四狗为啥还要掺和这玩意儿。\u0026#x1f620; \u0026#x1f595;\n咱也不嫌得罪人了，索性从头到尾喷个遍。先挖个坑，以后回来填。\n更新于2023.6.19\n创赛结束将近一个月了。最终在省赛上的经历也谈不上有多好——面对一群并不专业也并不尊重的评委，用学术作品讲述了一个并不成熟的“创新创业”故事，拿了一个并不出彩的省赛银奖。自始至终，我们都并没有感受到这场比赛对于我们的研究成果的尊重，我和我的队员们也都因此感到不满。从那以来继续被驱使着经历了很多事情，关于这次经历的情绪和记忆也已经逐渐淡化。\n曾想过是否应该把这篇博客删掉——尽管挖了坑，但是我已经很难再找回当时那么痛苦、气愤的情绪状态——但最终还是觉得应该尊重自己曾经留下的痕迹，用更新补充的方式来做一个交代。\n如果问我参加这次比赛后不后悔，我可能还是会说不后悔。因为这次参赛经历确实带来了一些积极效果。和我一起参赛的两个学弟会因为省赛银奖得到不小的保研加分，算是为后辈们做了一件好事；他们参与发表的论文作为成果之一放进了参赛项目里，因此这也是他们应得的。奖项对于我们的指导老师和学院来说，也算是一点微小的荣誉。我很感激黄老师带我发了本科生涯的唯一一篇研究论文，而且是以第一作者的身份发表于SCI一区期刊。不论是从能力、经验积累，还是从是保研直博的申请过程来看，这一经历对我都至关重要。在毕业设计的校外合作流程中，黄老师也给了很大的帮助。某种程度上，我很想在这次比赛中为我们的论文争得一个好的奖项，也算是对这段科研经历、对老师指导的回报（虽然这可能从功利角度上并不能带来多大效果）。\n当然，如果再来一次，我还是不可避免地会骂骂咧咧，会很痛恨这场比赛的方方面面。时间的推移并没有将那些不合理的合理化，只是逐渐消弭了我的愤怒，让我从长远的角度更多地看到这次经历的正面效果。\n","permalink":"http://localhost:1313/post/shitty-competition/","summary":"byd这创赛搞得难受死了，不吐不快。搞不明白为啥要在创业大赛里弄一个学术论文赛道，却又以商业项目的风格来要求参赛作品。更搞不懂我一臭搞科研的大四狗为啥还要掺和这玩意儿。\u0026#x1f620; \u0026#x1f595;\n咱也不嫌得罪人了，索性从头到尾喷个遍。先挖个坑，以后回来填。\n更新于2023.6.19\n创赛结束将近一个月了。最终在省赛上的经历也谈不上有多好——面对一群并不专业也并不尊重的评委，用学术作品讲述了一个并不成熟的“创新创业”故事，拿了一个并不出彩的省赛银奖。自始至终，我们都并没有感受到这场比赛对于我们的研究成果的尊重，我和我的队员们也都因此感到不满。从那以来继续被驱使着经历了很多事情，关于这次经历的情绪和记忆也已经逐渐淡化。\n曾想过是否应该把这篇博客删掉——尽管挖了坑，但是我已经很难再找回当时那么痛苦、气愤的情绪状态——但最终还是觉得应该尊重自己曾经留下的痕迹，用更新补充的方式来做一个交代。\n如果问我参加这次比赛后不后悔，我可能还是会说不后悔。因为这次参赛经历确实带来了一些积极效果。和我一起参赛的两个学弟会因为省赛银奖得到不小的保研加分，算是为后辈们做了一件好事；他们参与发表的论文作为成果之一放进了参赛项目里，因此这也是他们应得的。奖项对于我们的指导老师和学院来说，也算是一点微小的荣誉。我很感激黄老师带我发了本科生涯的唯一一篇研究论文，而且是以第一作者的身份发表于SCI一区期刊。不论是从能力、经验积累，还是从是保研直博的申请过程来看，这一经历对我都至关重要。在毕业设计的校外合作流程中，黄老师也给了很大的帮助。某种程度上，我很想在这次比赛中为我们的论文争得一个好的奖项，也算是对这段科研经历、对老师指导的回报（虽然这可能从功利角度上并不能带来多大效果）。\n当然，如果再来一次，我还是不可避免地会骂骂咧咧，会很痛恨这场比赛的方方面面。时间的推移并没有将那些不合理的合理化，只是逐渐消弭了我的愤怒，让我从长远的角度更多地看到这次经历的正面效果。","title":"Shitty Competition"},{"content":"SETAR的全称是“Self-Exciting Threshold Auto-Regressive (SETAR) models”，可用于对一个时间序列变量的模式演变进行阶段划分。该模型最早于1977年由Howell Tong提出1。\n考虑如下关于时间序列变量$y_t$的简单自回归模型$AR(p)$： $$ y_t=\\gamma_0 + \\gamma_1 y_{t-1}+\\gamma_2 y_{t-2}+\\dots+\\gamma_py_{t-p}+\\epsilon_t $$ 其中$\\gamma_i(i=1,2,\\dots,p)$是自回归的系数，$\\epsilon_t$~$WN(0;\\sigma^2)$是服从正态分布的白噪音项。、\n改写成向量形式： $$ y_t = {\\bf X_t}\\gamma+\\sigma\\epsilon_t $$ 其中${\\bf X_t}=[1, y_{t-1}, y_{t-2}, \\dots, y_{t-p}]$是时间变量的行向量，$\\gamma=[\\gamma_0, \\gamma_1, \\gamma_2, \\dots, \\gamma_p]^{\\rm T}$是系数列向量，$\\epsilon_t$~$WN(0;1)$是服从标准正态分布的白噪音项。\n在SETAR模型中，将$z_t=y_{t-d}$作为一个弱外源阈值变量(weakly exogenous threshold variable)，本质上就是$y_t$在迟滞项$d$之前的历史数值。SETAR模型的数学表达为： $$ y_t={\\bf X_t}\\gamma^{(j)}+\\sigma^{(j)}\\epsilon_t,~{\\rm if} ~r_{j-1}\u0026lt;z_t\u0026lt;r_j $$ 其中$-\\infty=r_0\u0026lt;r_1\u0026lt;\\dots\u0026lt;r_k=+\\infty$定义了$z_t$可能落入的$k$个区间。\n在R语言中可以通过使用tsDynpackage里的函数setar()来进行SETAR模型分析，用法可以查看官方文档R: Self Threshold Autoregressive model (r-project.org)。另外，Michał Cukrow有一篇博客里给出了比较详细的解读和R例程（Threshold Autoregressive Models — beyond ARIMA + R Code | by Michał Cukrowski | Towards Data Science），以后有空再看。\n参考资料：Wikipedia | SETAR model\nTong, H. (1977) \u0026ldquo;Contribution to the discussion of the paper entitled Stochastic modelling of riverflow time series by A.J.Lawrance and N.T.Kottegoda\u0026rdquo;, Journal of the Royal Statistical Society, Series A, 140, 34-35.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"http://localhost:1313/post/setar-model/","summary":"\u003cp\u003eSETAR的全称是“Self-Exciting Threshold Auto-Regressive (SETAR) models”，可用于对一个时间序列变量的模式演变进行阶段划分。该模型最早于1977年由Howell Tong提出\u003csup id=\"fnref:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e。\u003c/p\u003e","title":"SETAR Model"},{"content":"参照Echarts的官方入门文档，给Hugo框架的博客网站添加使用Echarts渲染的功能（主题为Papermod)。以后需要放图表的时候就不用再傻乎乎地截图了。\n在主题文件夹中，layouts/partials/head.html的文档末尾加上：\n1 2 3 4 {{ if .Params.echarts }} \u0026lt;!-- 引入 echarts.js --\u0026gt; \u0026lt;script src=\u0026#34;https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js\u0026#34;\u0026gt;\u0026lt;/script\u0026gt; {{ end }} 这里使用七牛云提供的CDN加速服务（Staticfile CDN）。\n如果在某篇博客里需要使用echarts渲染，需要在头部使用声明：\n1 2 3 --- echarts: true --- 尝试一下渲染入门文档给的例程（为了避免移动端浏览时容器的宽度溢出，所以把宽度从600px改成了auto）：\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 \u0026lt;!-- 为ECharts准备一个具备大小（宽高）的Dom --\u0026gt; \u0026lt;div id=\u0026#34;main\u0026#34; style=\u0026#34;width: auto; height:400px;\u0026#34;\u0026gt;\u0026lt;/div\u0026gt; \u0026lt;script type=\u0026#34;text/javascript\u0026#34;\u0026gt; // 基于准备好的dom，初始化echarts实例 var myChart = echarts.init(document.getElementById(\u0026#39;main\u0026#39;)); // 指定图表的配置项和数据 var option = { title: { text: \u0026#39;第一个 ECharts 实例\u0026#39; }, tooltip: {}, legend: { data:[\u0026#39;销量\u0026#39;] }, xAxis: { data: [\u0026#34;衬衫\u0026#34;,\u0026#34;羊毛衫\u0026#34;,\u0026#34;雪纺衫\u0026#34;,\u0026#34;裤子\u0026#34;,\u0026#34;高跟鞋\u0026#34;,\u0026#34;袜子\u0026#34;] }, yAxis: {}, series: [{ name: \u0026#39;销量\u0026#39;, type: \u0026#39;bar\u0026#39;, data: [5, 20, 36, 10, 10, 20] }] }; // 使用刚指定的配置项和数据显示图表。 myChart.setOption(option); \u0026lt;/script\u0026gt; ","permalink":"http://localhost:1313/post/learning-echartsjs/","summary":"\u003cp\u003e参照Echarts的\u003ca href=\"https://echarts.apache.org/handbook/zh/get-started/\"\u003e官方入门文档\u003c/a\u003e，给Hugo框架的博客网站添加使用Echarts渲染的功能（主题为\u003ca href=\"https://github.com/adityatelange/hugo-PaperMod\"\u003ePapermod\u003c/a\u003e)。以后需要放图表的时候就不用再傻乎乎地截图了。\u003c/p\u003e","title":"在Hugo + Papermod中添加Echartsjs"},{"content":"这是一年多以前关于深圳碳排放交易所交易数据的一些分析，作为一门经济学课程的作业。分析手段和解读难免肤浅，聊供自娱。\n过去一年来，俄乌冲突以及随之而来的能源危机想必显著地冲击到了欧洲的碳排放权交易市场，后者又在全球碳排放权交易体系中具有举足轻重的地位，因此我也很好奇最新的碳排放市场情况。只是最近都没有时间和精力花在这件事情上面了。\n摘要 碳排放权交易通过市场机制将温室气体排放的外部性内部化，促进经济主体的减排行为。国内碳排放权价格受到价值规律的影响，其影响因素按照供给和需求可分为排放权发放额度、绿色技术发展、传统和清洁能源价格、企业产量、国际碳价等方面，还受到市场调控机制的约束。以深圳排放权交易所为例，采用逐步回归法分析了碳排放权价格和成交量的需求端影响因素，发现国际石油价格和国内经济状况对价格和成交量均有显著正向影响，国内油价则有一定负向影响；国际碳排放权价格与国内价格存在正向关联。\n1.碳排放权交易体系概述 1.1.碳减排背景 碳排放权交易是一种为控制全球温室气体排放所采用的市场机制。1997年12月由联合国气候变化框架公约参加国会议制定了《京都议定书》，规定了各国温室气体减排目标和减排方式。国家之间可以进行排放额度买卖的“排放权交易”，即难以完成削减任务的国家，可以花钱从超额完成任务的国家买进超出的额度1。《京都议定书》在国际的层面上提出了碳排放权交易的基础，并首次将温室气体排放权作为一种虚拟的资产进行交易。同一国家（或多国集团）内部的碳交易市场参与者是持有政府发放碳排配额的企业厂商。环境是一种具有外部性的公共商品，而通过碳交易市场机制则可以将其外部性内部化，提升经济主体碳减排的意愿，避免碳资源的流失2。\n1.2.碳交易体系及价格影响因素 碳交易市场的基本运行原理是：国家制定二氧化碳排放限制额，然后分配给各个商业领域一定的排放许可；排放许可由一个政府权威机构分配，这些排放许可额度可以被出售，各国企业可以在一个公开的市场上进行排放许可交易。企业在进行碳排放交易时，碳排放边际成本较低的企业能够剩余一部分碳排放许可额度并用于交易，从而获得一定的收益；相反，碳排放边际成本较高的企业则不得不支付一部分费用去购买碳排放许可额度2。为了谋求利润最大化，耗能企业将尽力加强节能减排的能力，推动低碳技术和新能源的应用；环保和新能源企业可以在碳交易市场出售其固定的碳资产获利，从而获得行业竞争优势。\n作为一种商品，碳排放权的价格（通常用每吨CO2排放的价格表示）受到价值规律的影响。市场中的供应方是设定碳排放配额的政府机构和碳排放许可额度盈余的企业，需求方是碳排放许可额度不足的耗能企业。影响碳排放权价格的供给因素主要为：\n国际碳排放权配额。根据《京都议定书》，缔约方均获得一定量的碳排放权，该配额将直接影响国内排放权发放情况。 政府制定的排放权发放额度。由于难以准确预计排放量，且希望减少排放企业的压力，排放权额度往往会出现过度分配的问题，导致供给过多3。 绿色技术发展方。新能源企业和发展低碳技术的企业往往具有较低的碳排放量，或者具有固碳效用，故在交易市场中往往成为出售碳排放权的一方。 影响碳排放价格的需求因素主要为：\n能源价格。传统能源和清洁能源之间存在替代关系，而碳排放权需求量则与传统能源需求量正相关（可视为互补商品）。因此，以石油为代表的传统能源市场价格越高，企业越倾向于使用清洁能源，由此带来更少的碳排放量，需求降低导致排放权价格下降。即传统能源价格与碳排放权价格负相关。反之，清洁能源价格越高，企业越倾向于使用传统能源，碳排放权需求量变大，价格上升3。 排放企业的产量。碳排放量和排放企业的产量之间存在正相关关系，产量越高，碳排放权的需求越大。对于水泥、发电、冶金等单位产量碳排高的产业，产量和碳排放权需求之间的正相关尤为强烈。 国际碳交易市场的排放权价格。在我国碳交易市场与国际接轨的大背景下，国际碳排放权需求也将影响我国碳排放权价格。例如，欧盟碳交易市场第一阶段的过度供给问题曾导致全球的碳交易市场几乎停滞3。 %%{init: {'theme': 'neutral', 'fill': 'black', 'securitylevel': 'loose' } }%% flowchart subgraph 需求端 subgraph 国际因素 国际经济情况 国际能源价格 国际碳价 end 国际因素--汇率--\u003eA(需求曲线) subgraph 国内因素 国内经济状况 国内能源价格 end 国内因素--\u003eA end A--\u003eB{{碳排放权价格}} subgraph 供给端 D(供给曲线) 国际排放权配额--\u003e国家年度配额总量 国家年度配额总量--\u003eD 绿色技术发展方--\u003eD end D--\u003eB B-.-C(干预机制) 图 1：供需结构下的碳排放权价格影响因素 1.3.深圳碳排放权交易所的调控机制 为避免碳排放权价格剧烈波动带来的风险，碳交易市场往往设定有一系列调控机制和配套政策。深圳碳排放权交易所是我国第一个启动的试点碳排放权交易市场，为其他碳排放权交易试点和全国碳排放权交易体系的建立提供了有益经验和借鉴。\n深圳碳排放权交易所通过配额总量调节规则4来控制碳排放权价格，例如预留相当于年度配额总量2%的配额用于价格暴涨时定价出售，以增加供应；在价格暴跌时从碳市场回购最高相当于碳市场有效流通配额数量10%的配额，以减少供应稳定碳价。通过设置严格的惩罚机制，确保碳排放权制度得到贯彻：如果排放量超过其提交给政府的配额和核证自愿减排量之和，那么超排企业必须补交等于超额排放量的配额和等于碳市场平均价格三倍乘以超额排放量的罚款。\n2.模型方法 2.1.逐步回归分析法 逐步回归法是一种多元变量线性回归分析的方法。其基本思想在于逐个引入自变量，每次引入影响最显著的自变量，并对方程中已有的变量逐个进行检验，把变为不显著的变量逐个从方程中移出。最终以均方根误差（RMSE）最小为标准选取变量组合，得到的方程中保留且仅保留影响显著的变量。设所有自变量的集合为$X=[x_1,x_2,…,x_n]$，因变量为$Y$，则最终得到的方程可表达为\n$$ \\displaylines{ Y=α+∑{i∈P}β_i⋅x_i\\\\ s.t.{\\rm RMSE}{i∈P}=\\min_{all ~P}{\\rm ⁡RMSE} } $$\n2.2.变量设计 为了尽可能全面地分析深圳排放权交易所的碳排放权成交价格和成交量的影响因素，按照需求端影响因素的分类选取了以下6个方面的指标进行分析：\n国内经济状况。整体的经济状况能反映出国内企业厂商的整体生产量，从而体现企业产量对碳交易市场的影响。通过沪深300指数进行表征。 国内能源价格。风力、水力、太阳能等清洁能源多并入电网，以电力的形式供应。而国内电力市场的价格波动较低，不予考虑，故主要关注传统能源价格。已有研究5表明，国内煤炭和天然气价格对碳价的影响较小，故本研究选取国内油价作为能源价格表征。 国际经济状况。与国际市场中企业产量正相关，可通过法兰克福DAX指数表征。 国际能源价格。用WTI原油期货价格表征。 国际碳价。欧盟碳排放配额市场与核证减排市场存在一定的联动关系和信息传递过程，选择EU ETS中的欧盟排放配额（EUA）作为国际碳资产价格指标。 汇率。汇率是连接国内外贸易、碳资产交易的桥梁。由于这里的国际指标以排放权交易体系成熟的欧洲市场为主，故采用欧元兑人民币即期汇率作为表征。 3.实证分析 3.1.描述性统计分析 选择了自2020.12.8至2021.12.8的深圳排放权交易所成交数据6，以ZSA-2019产品为研究对象，剔除没有成交量的日期，得到159个时间序列数据。图2为收盘价格和成交量的走势图。收盘价格在2020年12月到2021年2月之间从48.3元/吨急剧下降到6.76元/吨，然后在3月到6月持续上升，达到最高值（42.47元/吨）后再次回落，8月到10月期间处大致于25~30元/吨范围内波动，然后回落到10元/吨左右。\n图 2：SZA-2019收盘价与成交量走势图 3.2.数据处理与参数估计 本研究采用的影响因素原始数据如表 1所示。\n表 1：原始数据说明 编码 说明 编码 说明 交易数据 SZA-P SZA-2019收盘价格 SZA-Q SZA-2019成交量 经济发展指标 DAX30 法兰克福DAX指数7 SCI300 沪深300指数8 能源价格 I-OIL WTI原油期货9 D-OIL 国内汽油价格10 国际碳价 EUA 欧盟排放配额价格11 汇率 EUR-USD 欧元兑美元当期汇率12 USD-CNY 美元兑人民币当期汇率13 通过当期汇率将DAX30, I-OIL, EUA换算成以当期人民币为单位表示的形式，对汇率数据缺失值进行线性插值，其余数据缺失值作剔除处理。（数据放在对应的Github 仓库里——“影响因素数据.xlsx”，“SZA交易数据.xlsx”。）由于我国目前碳排放权交易市场的成交量和流动性都相对有限且不稳定因素较大，投资者在投资时都更为谨慎。考虑到信息流动的滞后性，其他市场的信息无法即时传导到碳排放权价格中，当期收益率波动冲击可能在下一期延续14，故分别采用逐步回归法分当期和前一期DAX300, SCI300, I-OIL, D-OIL, EUA对SZA-P的影响，参数估计结果如下。\n表 2：变量对ZSA-P影响的参数估计结果\nIndex 当 期 上 一 期 Coeff. p-val Coeff. p-val DAX30 0.000808354 0.0000 0.000902978 0.0000 SCI300 0.0208637 0.0001 0.0215877 0.0002 I-OIL 0.138116 0.0000 0.129705 0.0001 D-OIL -0.0119801 0.0028 -0.012632 0.0060 EUA 0.0586508 0.0005 0.0697818 0.0005 R2 0.476468 0.499659 截距 -173.329 -183.456 由于SZA-Q变动明显，呈现出数量级上的巨大差异。为获得较好的线性相关性，需要对其进行缩放。用log(SZA-Q) 替代SZA-Q，参数估计结果如下。\n表 3：变量对log(ZSA-Q) 影响的参数估计结果\nIndex 当 期 上 一 期 Coeff. p-val Coeff. p-val DAX30 0.000409093 0.0000 0.000466819 0.0000 SCI300 0.00517 0.0025 0.00414639 0.0089 I-OIL 0.0134441 0.0499 0 - D-OIL 0 - 0 - EUA 0 - 0 - R2 0.289824 0.262692 截距 -75.7945 -71.58 Matlab代码（数据文件位于同级目录下）：\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 %分析no-lag-clean % df = xlsread(\u0026#39;data.xlsx\u0026#39;,\u0026#39;no-lag-clean\u0026#39;); df = xlsread(\u0026#39;data.xlsx\u0026#39;,\u0026#39;lag-1d-clean\u0026#39;); P = df(:,1); %收盘价 Q = df(:,2); %成交量 DAX = df(:,3); %法兰克福DAX30指数 HS = df(:,4); %沪深300指数 IO = df(:,5); %WTI国际原油期货 DO = df(:,6); %国内汽油价格 EP = df(:,7); %ETS-EUA价格 lnQ = log(Q); %成交量取对数 % 分析价格影响因素 X = [DAX, HS, IO, DO, EP, Q]; Y = P; stepwise(X,Y); 图 3：Matlab逐步回归结果 4.结论 由表 2可知SCI300, I-OIL, EUA和ZSA-P有较强的正相关性，D-OIL与SZA-P具有负相关性，而DAX30具有轻微的正相关性。国际石油价格（I-OIL）的影响最为强烈，反映出碳排放权价格易受到传统能源市场波动的影响；EUA和SZA-P之间的正相关性表明了我国碳排放权交易市场与国际碳交易市场的接轨和传递；SCI300对SZA-P有正向影响，表明国内经济状况越好，碳排放权的价格就越高；D-OIL与SZA-P之间呈现出负相关关系，国内和国际能源价格的不同影响可能是国内油价由政府调控、市场性质较弱所导致。通过横向比较当期变量和上一期变量对SZA-P的影响，发现上一期变量对价格影响的参数绝对值更大（除I-OIL外），决定系数R2也更高，表明往期市场信息对排放权交易价格的解释力和影响力比当期更大。\n通过比较表 3中当期和上一期变量对log(SZA-Q) 的影响，发现当期因素的决定系数高于上一期因素，即当期信息对成交量具有更好的解释力。在当期变量中，D-OIL和EUA被移出方程，表明国内油价和国际碳交易市场价格对成交量影响不显著。DAX30, SCI300, I-OIL对log(SZA-Q) 均表现出正向影响，且影响程度为I-OIL \u0026gt; SCI300 \u0026gt; DAX30，可见国际传统能源价格也是国内碳排放权需求量的主要影响因素，国内经济状况次之，国际经济状况影响最弱。\n整体来看，碳交易市场的价格和成交量都最直接地与国际原油价格相关联，石油输出国组织（OPEC）或许也因此而在碳排放权交易中占据相当程度的话语权。不过其中复杂的因果链就是不我的水平所能够填补的了。相比之下，经济发展和碳排需求之间正向关联的因果就显得简单直接得多。\nUnited Nations. Kyoto Protocol to the United Nations Framework Convention on Climate Change[EB/OL]. (1998). [2021-12-09]. https://unfccc.int/resource/docs/convkp/kpeng.pdf\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n姚晓芳, 陈菁. 欧美碳排放交易市场发展对我国的启示与借鉴[J]. 经济问题探索, 2011(4):4.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n王宇露, 林健. 我国碳排放权定价机制研究[J]. 价格理论与实践, 2012(2):2.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n深圳碳排放交易所. 深圳碳排放权交易体系介绍中文版[EB/OL]. (2015-04-17). [2021-12-09]. http://www.cerx.cn/inventorEducation/363.htm\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n丁洋. 基于GEN方法的国内碳价格的影响因素研究——以深圳排放权交易所的碳配额价格为例[J]. 时代金融, 2015(12):291-292.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n深圳排放权交易所-国内碳情 http://www.cerx.cn/dailynewsCN/index.htm\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nGDAXI历史数据 https://cn.investing.com/indices/germany-30-historical-data\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nCSI300历史数据 https://cn.investing.com/indices/csi300-historical-data\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nWTI历史数据 https://cn.investing.com/commodities/crude-oil\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n国内汽油柴油历史调价信息 https://data.eastmoney.com/cjsj/oil_default.html\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nEuropean Union Allowance, https://ember-climate.org/data/carbon-price-viewer/\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nhttps://cn.investing.com/currencies/eur-usd\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nhttps://cn.investing.com/currencies/usd-cny\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n周天芸,许锐翔. 中国碳排放权交易价格的形成及其波动特征——基于深圳碳排放权交易所的数据[J]. 金融发展研究, 2016(1):10.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"http://localhost:1313/post/carbon-price-data/","summary":"\u003cp\u003e这是一年多以前关于深圳碳排放交易所交易数据的一些分析，作为一门经济学课程的作业。分析手段和解读难免肤浅，聊供自娱。\u003c/p\u003e\n\u003cp\u003e过去一年来，俄乌冲突以及随之而来的能源危机想必显著地冲击到了欧洲的碳排放权交易市场，后者又在全球碳排放权交易体系中具有举足轻重的地位，因此我也很好奇最新的碳排放市场情况。只是最近都没有时间和精力花在这件事情上面了。\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003e摘要\u003c/strong\u003e  碳排放权交易通过市场机制将温室气体排放的外部性内部化，促进经济主体的减排行为。国内碳排放权价格受到价值规律的影响，其影响因素按照供给和需求可分为排放权发放额度、绿色技术发展、传统和清洁能源价格、企业产量、国际碳价等方面，还受到市场调控机制的约束。以深圳排放权交易所为例，采用逐步回归法分析了碳排放权价格和成交量的需求端影响因素，发现国际石油价格和国内经济状况对价格和成交量均有显著正向影响，国内油价则有一定负向影响；国际碳排放权价格与国内价格存在正向关联。\u003c/p\u003e\n\u003c/blockquote\u003e","title":"什么在影响着碳排放交易？"},{"content":"全球变暖程度超出《巴黎协定》所设立的1.5℃限度越来越成为一件板上钉钉的事情。推动全球能源产业减排转型本就不是一件易事，其中牵扯到太多的利益纠葛和政治冲突。近年来随着疫情和战争冲击，忙于生存的人们更加无暇顾及未来的福祉。长痛不如短痛，与漫长的产业转型相比，一场人造且可控的“核冬天”看上去是一个更有诱惑力的捷径。\n在核冬天的设想里，大量烟和微尘上升到对流层中上层并截断太阳辐射，引起地面上的漫长寒冷和黑暗。所谓太阳能地球工程，同样是通过各种手段对太阳辐射进行削弱，以期减缓乃至消除温室气体排放带来的全球变暖效应。\n摘要 平流层气溶胶注入工程(SAI)是目前研究得最多的太阳辐射干预手段。SAI工程能够SAI工程可以部分抵消温室气体增加造成的温度上升、降水率增大等气候变化。SAI也存在一定负面效应，包括引起全球温度和降水率变化的分布。通过改进气溶胶注入点的分布或与高层卷云变薄工程混合进行，可以一定程度上改善负面效应。SAI工程实施后再突然终止，会造成快速的气候变化。目前的技术条件已初步具备部署SAI工程的能力，但是开展SAI工程存在较大的自然风险和社会风险。\n1.概念背景 太阳辐射干预(solar radiation modification, SRM)，又称太阳能地球工程(solar geo-engineering)，指的是通过人为方法，大尺度改变地球系统的辐射平衡应对全球变暖。利用太阳辐射干预应对气候变化的基本出发点是通过增加地-气系统的反照率，减少到达大气和地面的太阳辐射（主要为短波辐射），其产生的负辐射强迫可以抵消（或部分抵消）温室气体增加产生的正辐射强迫1。在理想情况下，太阳辐射干预和净负CO2排放共同作用可以显著降低未来的气候风险。\n图 1：不同情景下气候风险随时间变化趋势2\n目前提出的太阳辐射干预方法主要包括向平流层注入气溶胶(stratospheric aerosol injection，SAI)、海洋低云亮化(marine sky brightening，MSB)、增加海洋和陆地表面的反照率(surface albedo enhancement，SAE)、高层卷云变薄(cirrus cloud thinning，CCT)等等。其中，平流层气溶胶注入是研究最多的方案，其基本设想是向平流层注入具有散射性质的气溶胶或气溶胶前提物质，将一部分太阳辐射阻挡在对流层和地表之上，属于短波辐射干预的方法。\n2.气候系统对SAI响应的模式模拟 为全面评估平流层气溶胶注射工程干预气候变化的可能性，IPCC第六次评估报告(AR6)在模式模拟的基础上评估了平流层气溶胶注射工程等太阳辐射干预行为对气候系统和全球碳循环的影响3。基于模式模拟的研究表明，SAI工程可以部分抵消温室气体增加造成的气候变化（高信度）。但由于在全球分布上的差异，SAI工程无法完全抵消温室气体增加引起的气候变化（几乎确定），并表现出一定的负面效应。通过适当的设计，可能改善这一问题，从而同时实现多个温度变化减缓目标（中等信度）。SAI工程实施后再突然终止，会造成快速的气候变化（高信度）。\n2.1.SAI可以部分抵消温室气体增加造成的气候变化 代表性浓度路径(RCPs)是一系列综合的排放情景，用作21世纪不同的人类活动模式影响下气候变化预测模型的输入参数，以描述未来气候系统的情况（表 1）。\n表 1：不同RCPs的人类活动特征和气候系统特征(2100年)4\n类型 人类活动特征 到2100年气候系统特征 RCP8.5 无气候变化政策干预，人口大幅增长，化石燃料消耗变大，耕地面积扩大并压缩林地面积 大气中CO2增至936ppm，CH4增至3751ppb，N2O增至435 ppb RCP6.0 政府干预，控制人口增长，有限程度地减少温室气体排放，耕地增长对林地面积影响较小 总辐射强迫稳定在4.5W/m2，CO2增至538ppm，CH4略减少，N2O增至406ppb RCP4.5 更强的政府干预，人口在控制下达峰并回落，使用可再生能源和碳捕捉系统，化石燃料使用率的不断减少，森林面积增加 2100年总辐射强迫稳定在4.5W/m2，大气中CO2增至538ppm， CH4减少，N2O增至372ppb RCP2.6 全球范围内能源利用类型的改变，温室气体排放极低 辐射强迫降至2.6W/m2，CO2降至421ppm，CH4\u0026lt;2000ppb，N2O降至334ppb 在全球范围内，SAI可以抵消一部分温室气体增加造成的气候变化。通过模式模拟了以RCP8.5为背景，在2020年到2100年间将SO2注射到赤道附近约20km高的一个网格点中所引起的气候系统变化。结果表明，为将人类影响降低到RCP4.5情形，SO2注入量需要持续提升。在2050年、2075年和2100年所需要的注入量分别为5Tg/yr、10Tg/yr和20Tg/yr。5由图 2a可知，通过气溶胶注射工程，可将RCP8.5情形的大气顶层净辐射强度变化保持在与RCP4.5相似的水平上，在2100年减小1.5W/m2左右。图 2b表明，2100年近地面大气层的平均温度在气溶胶注射工程作用下降低了2K以上，尽管相较于RCP4.5情形仍略为温暖。这是因为在采取辐射干预手段之前，RCP8.5和RCP4.5不同的发展路径已经导致前期地球系统热量存储（例如海洋中）的差异，这部分热量差异随着时间推移而逐渐显现出来。除了SAI以外，MSB和CCT也能通过调整参数达到相似的效果。在降水方面，RCP8.5+SAI的情景将带来比RCP4.5更低的全球降水率。图 2d表现出RCP4.5和RCP8.5的温度和降水率逐年表现出线性增加的关系，CCT方案在降低变暖的同时加剧了降水率提升，而SAI和MSB不仅同时降低了温度变动和降水率变动，而且使得这种线性关系不再明显。\n图 2：在2020~2100年应用SRM所引起的全球平均a)大气顶层净辐射强度变化，b)近地面大气温度变化，c)降水率变化，d)温度变动-降水率的变动关系5\n在区域范围内，SAI能够部分缓解温室气体排放造成的影响。通过降低夏季的温度，平流层气溶胶工程将对高山冰川起到保护作用。以亚洲高原地区冰川为例，在RCP4.5的排放基础之上，在2020 ~ 2069期间采用平流层气溶胶注射对冰川分布的影响。研究者考察了两种SAI应用情况：G3是为了实现射入的短波辐射和温室气体强迫的平衡所需的平流层气溶胶注射量，G4则是以5Tg/yr的速率均匀注入。多模式模拟结果表明，在G3情形下，SAI工程尽管抵消了温室气体辐射强迫，从而阻止了气温上升，但是仍然不能完全阻止冰川消融——相较于RCP8.5而言的损失只减小了50%。到2069年时，G3情形的冰川区域还剩下72%，RCP8.5剩下30%。降水率下降对冰川的影响小于温度变化对冰川消融的影响。在2069年停止SAI工程之后，温度的急剧跃升导致冰川在2070 ~ 2089的消融速度高达0.17~1.1%yr-1，相比之下RCP8.5在这期间也仅仅只有0.66%yr-1。6\n图 3：不同情景在2010 ~ 2089年间亚洲高山冰川的(a)总体积变化和(b)覆盖面积变化，实线和阴影是不同模式的平均，虚线是多模式集合平均温度和降水强迫的结果6\n2.2.SAI引起全球温度和降水率变化的分布不均 在同样强度全球降温条件下气溶胶注射工程对温度和降水气候要素的空间分布有异于大气CO2浓度减少产生的气候变化的空间分布。一般而言，SRM工程倾向于使两极地区降温不足，而热带地区降温更多。这是因为硫酸盐气溶胶注射工程所带来的净强迫改变主要集中在热带地区。Crook等人在RCP4.5的基础上，模拟2020 ~ 2059年间以10Tg/yr的速率将SO2输入到赤道附近16 ~ 25km高度的平流层，发现SAI能够对热带地区产生显著的降温效果，而对于高纬度地区降温效果不显著。但是相比于沙漠或作物反照率增强(SAE)、高层卷云变薄(CTT)等工程，SAI已经是一种全球影响较为均匀的太阳辐射干预手段。和RCP4.5相比，全球大部分区域都更加低温（5%的显著水平上）。7\n在降水方面，SAI对赤道附近的降水率分布产生强烈影响，尤其是在海洋区域。赤道南侧降水率大大减少，而赤道北侧则大大增加。这是由哈得莱环流圈的上升支向北移动所导致的。就陆地而言，亚马逊雨林、撒哈拉沙漠等区域将受到这一变化的显著影响。降水量减少的主要地区包括美国东南部、欧亚大陆的大部区域，降水量增加的主要地区包括美国西北部、欧洲西南部、非洲大部区域和澳大利亚等。7\n图 4：SAI的(a)区域地表空气年温度变化和(b)区域降水率变化与全球年平均温度变化的比值，阴影表明与RCP4.5（2040 ~ 2059平均）相比在5%水平下不显著7\n2.3.改进的SAI设计方案 通过适当的太阳辐射干预设计，同时实现多个温度变化减缓目标。例如，GLENS模拟（在RCP8.5背景下）的结果表明，通过调节在不同纬度向平流层注入SO2的速率，可以同时抵消温室气体增加引起的不同方面的温度变化。目前为止讨论到的SAI负面效应包括：热带地区降温过多，两极降温不足；全球降水分布模式改变。为了抵消这些负面影响，将SO2注入点设置成四个： 15°N(25km)、15°S(25km)、30°N(22.8km)和30°S(22.8km)。在每个注入点所需的速率如图 5所示。在这一情形中，可以实现以下三个目标：全球地表平均气温保持不变(T0，288.21K)；南北半球温度梯度保持不变(T1，0.59K)；极地‒热带温度梯度保持不变(T2，-6.01K)。该条件下，全球温度变动分布将变得更加平均。在大多数地区的平均温度变化低于±1℃，最大变化低于±2℃，而在2075年至2095年以及2010年至2030年间，RCP8.5的变化高达10℃。8\n图 5：不同注入点和总体的SO2注入速率8\n图 6：(a)RCP8.5的2075 ~ 95的平均温度和2010 ~ 30年平均温度之差，(b)RCP8.5+SAI的平均温度和RCP8.5的2010 ~ 30年平均温度之差，灰色表示和零无显著差异(p \u0026lt; 0.05)8\n此外，Cao等人的研究^9]表明通过结合两种地球工程方法——SAI（提高短波辐射反射率）和CCT（使长波辐射逃逸到太空），有可能使全球平均（或陆地平均）温度和降水量同时恢复到工业化前的水平。但是在区域尺度上，SAI和CCT混合工程并不能更好地改善SRM气候和工业化前气候的相似性。通过寻找最佳空间非均匀混合方案可能在区域范围内更好地改善这个问题。\n2.4.突然终止SAI工程会引起快速的气候变化 在以上提到的若干模式模拟研究中，均在某一时间点突然终止了太阳辐射干预工程，并对后续若干年内的气候系统响应进行持续模拟。从图 2可以看出，突然结束SAI工程将引起全球平均大气顶层净辐射、地表温度、降水率等气候因素的急剧上升。最终，全球均温和降水率将恢复到RCP8.5的状态。高山冰川的消融速度也将突然上升，甚至比同时期RCP8.5情形下更加迅速。\n依据GeoMIP的G2实验，对SAI工程在50年后突然终止导致的气候变化分析9还表明，在区域范围内，终止SAI工程对于北半球高纬度地区的升温效应最为显著，北极区域的升温\u0026gt; 4℃；对南半球升温效应较小，但在南极区域也有1 ~ 1.5℃。在降水变化方面，终止SAI工程对中低纬度地区的降水量产生的影响尤为显著，并呈现出海陆差异：热带海洋地区降水大大增加，而拉美、巴西、非洲南北部等区域却出现降水率减少的现象。此外，高纬度地区温度上升和降水率增加还会使得极地海冰的数量（尤其是北极）急剧减少。\n图 7：(a)在G2情形下终止SAI工程10后年平均近地表气温变动和(b)降水率变动，(c)1pctCO2情形下70年后的平均近地表气温变动和(d)降水率变动9\n图 8：不同模式模拟下北极海冰的异常变动，实线基于GeoMIP-G2，虚线基于1pctCO2 9\n3.进行SAI工程的成本和可行性 SAI工程被描述为“快速、廉价且不完美”的气候变化应对工具。基于飞行器的运输系统是进行平流层气溶胶注射工程的最合理方案。Smith等人对现有技术条件能否完成这样一项SAI工程进行了分析10：从15年后（基于科学和政治的考虑，过早开始进行SAI工程的可能性较低）开始，通过将材料部署到高达20km的高度，将人为辐射强迫的增加减少一半。设计基本注入点位于赤道南北15°和30°的纬度，第一年注入量为0.1Mt，随后以0.1Mt/yr增加。\n在该目标要求下，以现有的民用和军用飞机性能，即使经过大规模改装，仍然不足以完成该任务。火箭运输虽可行，但是成本过于高昂。经过比较，为此设计开发一种新型的、专用的大载荷高空飞行器(SAI Lofter, SAIL)是一种技术上可行，成本也不昂贵的路线。在15年的早期部署中，平均每年投入的成本成本约为22.5亿美元/年，这包括了包括所有开发和直接运营成本。在开始施行SAI的第一年所需的航班数量约4000架次，随后以4000 yr-1线性增长。10\n每年22.5亿美元究竟算不算多呢？我国2022年的GDP大约是183,212亿美元，假如我国单独行动开展这样的SAI工程，所需开销也只占据GDP的0.01%；这样的成本即使对于一个中等体量的发展中国家来说也并非难事（马来西亚2019年的GDP约3735亿美元，SAI工程所造成的开支不及其百分之一）。\nSAI的低成本以及由此产生的“搭便车”特性通常会引起相当大的争议。导致这种不适的一个潜在问题是部署计划的假定“秘密驱动”属性。尽管SAI不是一种精确武器，但是仍然存在这样一种可能，即某一行动体在不顾及全球溢出效应的情况下，仅为地方利益而动用SAI工程。10几十个国家将拥有启动这样一个项目的专业知识和资金2，但是开展之后全球气候变化将面临巨大的不确定性。考虑到以上有关SAI工程对气候系统影响的不确定性和有效开展SAI工程所需要的大规模航行，由单个行动体擅自进行平流层气溶胶注入的全球风险远远大于其可能具有的正向效益。可能的风险包括：\n气候系统响应方式的不确定性。目前不同的模式对于SAI工程的模拟结果仍然存在诸多差异（例如终止SAI工程后南极海冰面积的变化趋势、SAI对植物处理生产力影响等等）。 没有得到抵消SAI工程负面影响的最佳设计方案。目前已有的改进设计仅能部分抵消SAI的影响，而对于如何解决SAI对降水率等的变动没有确切答案。 行动主体能否在数十年（甚至百年）的跨度内持续推进SAI工程的不确定性。一旦由于自然灾害或社会因素，SAI工程被迫终止，将使得气候系统发生快速变化，包括快速升温等，进而引发一系列气象灾害和次生灾害。 难以解决SAI工程的外部性。推动SAI工程的行动体如何为受到负外部性影响的国家或地区（例如降水率变小会引起一些国家水资源紧缺）做出相应的补偿，仍有待商榷。 尽管我们已经对SAI工程为代表的各种太阳辐射干预手段都做了大量的理论计算模拟，但是真正开展太阳辐射干预还是显得过于冒险、疯狂。我们并不能确定这场人造的”核冬天“是否会像预料的那样完美，会更无法预料计划失控伴随而来的社会动荡和政治冲突——人为的灾难必然会带来指责与仇恨。\n但愿我们最终不会走到不得不亲自遮挡太阳的地步。\n曹龙. IPCC AR6报告解读：气候系统对太阳辐射干预响应[J/OL]. 气候变化研究进展: 1-22 [2021-12-19]. http://kns.cnki.net/kcms/detail/11.5368.P.20210924.2123.002.html.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nElizabeth Kolbert. Under a White Sky: The Nature of the Future[M]. New York: Crown, 2021: 141-172.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nIPCC. Climate change 2021: the physical science basis [M]. Cambridge: Cambridge University Press, 2021.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n气候预测中RCP与SSP之对比[EB/OL]. (2020-03-17) [2021-12-19]. https://zhuanlan.zhihu.com/p/113793570.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nMuri H, Tjiputra J, Helge O, et al. Climate response to aerosol Geoengineering: a multi-method comparison [J]. Journal of Climate, 2018, 31(16): 6319-6340. DOI: 10.1175/jcli-d-17-0620.1\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nZhao L Y, Yang Y, Cheng W, et al. Glacier evolution in high-mountain Asia under stratospheric sulfate aerosol injection geoengineering [J]. Atmospheric Chemistry and Physics, 2017, 17(11): 6547-6564. DOI: 10.5194/acp-17-6547-2017\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nCrook J A, Jackson L S, Osprey S M, et al. A comparison of temperature and precipitation responses to different Earth radiation management geoengineering schemes [J]. Journal of Geophysical Research Atmospheres, 2015, 120: 9352-9373, DOI: 10.1002/2015JD023269\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nTilmes S, Richter J H, Kravitz B, et al. CESM1(WACCM) stratospheric aerosol geoengineering large ensemble project [J]. Bulletin of the American Meteorological Society, 2018, 99(11): 2361-2371. DOI: 10.1175/BAMS-D-17-0267.1\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nJones A, Haywood J M, Alterskjaer K, et al. The impact of abrupt suspension of solar radiation management (termination effect) in experiment G2 of the Geoengineering Model Intercomparison Project (GeoMIP) [J]. Journal of Geophysical Research: Atmospheres, 2013, 118(17): 9743-9752. DOI: 10.1002/jgrd.50762\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nSmith W, Wagner G. Stratospheric aerosol injection tactics and costs in the first 15 years of deployment[J]. Environmental Research Letters, 2018, 13(12):124001 (11pp).\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"http://localhost:1313/post/stratospheric-aerosol-injection/","summary":"\u003cp\u003e全球变暖程度超出《巴黎协定》所设立的1.5℃限度越来越成为一件板上钉钉的事情。推动全球能源产业减排转型本就不是一件易事，其中牵扯到太多的利益纠葛和政治冲突。近年来随着疫情和战争冲击，忙于生存的人们更加无暇顾及未来的福祉。长痛不如短痛，与漫长的产业转型相比，一场人造且可控的“核冬天”看上去是一个更有诱惑力的捷径。\u003c/p\u003e\n\u003cp\u003e在核冬天的设想里，大量烟和微尘上升到对流层中上层并截断太阳辐射，引起地面上的漫长寒冷和黑暗。所谓太阳能地球工程，同样是通过各种手段对太阳辐射进行削弱，以期减缓乃至消除温室气体排放带来的全球变暖效应。\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003e摘要\u003c/strong\u003e  平流层气溶胶注入工程(SAI)是目前研究得最多的太阳辐射干预手段。SAI工程能够SAI工程可以部分抵消温室气体增加造成的温度上升、降水率增大等气候变化。SAI也存在一定负面效应，包括引起全球温度和降水率变化的分布。通过改进气溶胶注入点的分布或与高层卷云变薄工程混合进行，可以一定程度上改善负面效应。SAI工程实施后再突然终止，会造成快速的气候变化。目前的技术条件已初步具备部署SAI工程的能力，但是开展SAI工程存在较大的自然风险和社会风险。\u003c/p\u003e\n\u003c/blockquote\u003e","title":"“可控核冬天”vs全球变暖？"},{"content":"——读《空军飞行员》（圣-埃克絮佩里）。\n像大多数人一样，我对圣-埃克絮佩里的印象来源于他那篇家喻户晓的《小王子》。可惜那时候年龄尚小，理解有限；而各类阅读理解、名著导读等等又早已把《小王子》反复解读，将它的深层含义解剖出来并以标准（却并不诱人）的方式呈现在了面前。因此，我真正为圣-埃克絮佩里的文字所震撼到，是偶然读到他的《夜航》。虽然小说中所描述的航班🛩以死亡作为其失败的结局，但飞行员在坠毁前的最后一刻冲出乌云，在灿烂夜空下宛如流星🌠一般的谢幕，在我的心中留下了无法磨灭的画面。\n起初我其实并不清楚《空军飞行员》的主要内容，仅仅是试图再次寻找多年前《夜航》给我带来的那种震撼。小说的主体情节很简单——以空军上尉的第一人称视角讲述了一趟奔赴阿拉斯地区的侦察任务。这也是为什么小说的英文译名是 Flight to Arras。而中文译作“空军飞行员”更贴近于原标题 Pilote de Guerre，即“战争飞行员”的意思。\n我穿上衣服去侍奉一位死去的神 故事发生在敦刻尔克大撤退之后的法国。此时美国尚未参战，整个欧洲暴露在纳粹的铁蹄之下。残余的法军以一辆坦克对一百辆坦克的悬殊劣势，面对着德军摧枯拉朽一般的推进。许多队伍早已溃不成军，混进拥挤不堪的逃难人群——交通干道因为混乱的人潮而水泄不通。彻底占据制空权的德机只是随意地扔下一些炸弹，宣示对这群待宰羔羊的所有权。一切实物都在变得破碎，一切行为都在变得徒劳。\n“我”所在的空军大队一趟又一趟地执行着参谋部下达的侦察任务，但是由于整体局面的混乱失控，这些任务越来越像是飞蛾扑火——无意义的冒死。空气中充斥着无奈和麻木：\n为了使战争像战争，他们并没明确的目的就拿机组去牺牲。没有人承认：这场战争什么也不像，一切都无意义，哪个图像也对不上号，大家一本正经牵动的是一些已与木偶断了联系的绳线。……他们在敦促五十个机组，给一场没有面目的战争描绘一幅面目。他们找上我们，就像找上用纸牌算命的相士。\n“我”在这样麻木的氛围中接下了前往阿拉斯的侦察任务。沿途有三个德国歼击机队轮流执勤，而“我”的机组需要只身穿过敌机群和高射炮阵地的炮火，带回一份并不重要的情报。可以感受到荒唐的局面让主人公和他的战友们极为不情愿。他们并不是一群贪生怕死的人——军队早已支离破碎，溃逃不过是一念之间的事情。他们所愤怒的，是无意义地死去，是为了一个个无法左右战局、甚至参谋部都毫不在意的任务死去。但是军人的尊严要求“我”接受并完成任务。“我”在山崩地裂中登上飞机，\n穿上衣服去侍奉一位死去的神。\n机组飞过燃烧的村庄、焦黑的田野，穿过炮火和硝烟，看到难民把道路堵得水泄不通。飞行员在高空低寒中艰难地维持飞机的运行，并躲避敌方的攻击。在这过程中，“我”于电光火石间一点点寻找破碎的意义，思考“为谁而死”的答案。\n死者是生者的担保 丧失斗志的士兵曾质问少校，他们赴死的意义是什么。少校比谁都清楚这一切的徒劳——作为传达命令的枢纽，少校清楚参谋部装模作样的抵抗，清楚自己不过是在送士兵去徒劳受死。尽管他自己坦然接受了死亡的结局，但是他并不轻视逃兵，也理解那些顽固的人为什么坚持要求说明死的原因。少校给出了一个合理的回答。\n“你们死了也不会改变什么。失败是铁定了的。但是失败最好用死人来表示。这样会哀痛。辛苦你们，扮演这个角色吧。”\n“好的，我的少校。”\n面对这样的回答，他们似乎也只有坦然接受，只有相信“死者是给生者做担保的”，作为飞赴敌方时的内心慰藉，或者说是内心的麻醉剂。\n“我”的麻醉剂似乎有两支。除了说服自己将少校所给的答案作为信条，“我”还让自己投入到对眼前操控飞机的具体细节之中。在极寒的高空操控飞机是一件艰难的事，除了复杂的仪表结构以外，还需要和各种操纵杆和管线结冰的毛病作斗争。于是，敢死队任务便被拆解成了一个个技术细节，而这些技术细节自带着明确的目标——让飞机保持飞行。破碎感和麻木感似乎也随着这种任务的拆解而不再重要了。\n然而，当子弹击穿机翼和邮箱时，当高射炮的硝烟封住视野时，肾上腺素依然会带来本能的紧张感，让人从肉体和思维的双重麻木中清醒过来。“我”将不得不继续直面究竟为何而死的问题，并迫切地想要在每一次炮弹的轰鸣之前找到答案。\n缄默的树种 “我”最终为失败与牺牲找到了意义。战至最后一刻的意义不再局限于军人的荣誉，甚至也并不局限于民族精神的感召，而是扩大到了文明的精神，乃至“人”这一概念的本质。“种子”，是小说的后半部分反复出现的一个比喻，也可以看成是“我”最终所对于失败的结局的解读——以失败的抵抗唤醒漠然旁观的世界，以自身的腐烂换取他人的奋起抵抗。\n生活总是打破公式的框框。失败者尽有种种丑相，还是显示出是走向新生的唯一途径。我知道，为了使树木破土而出，就要让种子在土里烂掉。 第一个抵抗行动若来得太慢，总要失败的。但是它使抵抗的觉醒。觉醒如同种子，可能从中长出一棵树来。\n这颗种子是孕育抵抗的种子。这棵树维护的是文明的脊梁。\n圣-埃克絮佩里通过对自由和人的本质进行讨论，写下了他所理解的文明的脊梁——对抽象意义上的“人”的尊重。通过人和人之间的互相救助和尊重，人们维护了“人”这一概念的神圣性。在这基础上才有自由的意义：\n它是一棵树种在土壤上生长的自由。它是人的上升的气候。它像一种顺风，帆船靠了顺风才可在大海上自由航行。\n种子具有生长为大树的潜力。人的美德就像种子一样。所谓的自由，便是提供一种这样的环境，在这种环境中人内心深处的美德可以充分的成长，那些勇气、责任、对彼此的爱等潜质得到发展，促使人们互相救助、支持，成为团结的群体。而这个发展的过程便是对抽象意义上的“人”这一概念的完成。“自由”并不是对善和恶的无差别纵容，而是对善的呵护，就像温和的环境条件对种子的呵护一样。\n而作为捍卫这种自由的牺牲者，作为心甘情愿被踏碎的失败者，应该以沉默的行动宣告自己的信仰，将自己化成让“人”再度觉醒的一颗种子。\n失败者应该缄默，像种子。\n写在最后 《空军飞行员》首先冲击了我对二战中法国的刻板印象。在此之前，我的印象仅限于沦为笑柄的马奇诺防线，一个多月的光速崩溃，以及各种“乳法”的梗。虽然《空军飞行员》并没有为当时法军的失策和狼狈相开脱，但是圣-埃克絮佩里让我看到了具有高尚品质的人在这局面中的所做所想，并让我肃然起敬。\n书中所表达的思想，尽管是在西方文化的背景下推演出来的，但是并没有沦为政治立场的无脑宣传品，而是真正上升到对全人类的福祉与意义的探索。其中隐藏着“人之初，性本善”的观念，和我们所熟知的儒家思想异曲同工。而那种基于人的尊严和互助（而非对某一个别的崇拜）所形成的“人”的复数的概念，也折射出了一些共产的理想主义。联想到一百年前正是同一片土地诞生了空想社会主义的童话，似乎也不足为奇了。\n最后，我认为全书的战斗信仰值得被单独地摘录在文末：\n我将为人高于个人——如普遍高于个别——而战斗。","permalink":"http://localhost:1313/post/on-pilote-de-guerre/","summary":"\u003cp\u003e——读《空军飞行员》（圣-埃克絮佩里）。\u003c/p\u003e\n\u003cp\u003e像大多数人一样，我对圣-埃克絮佩里的印象来源于他那篇家喻户晓的《小王子》。可惜那时候年龄尚小，理解有限；而各类阅读理解、名著导读等等又早已把《小王子》反复解读，将它的深层含义解剖出来并以标准（却并不诱人）的方式呈现在了面前。因此，我真正为圣-埃克絮佩里的文字所震撼到，是偶然读到他的《夜航》。虽然小说中所描述的航班🛩以死亡作为其失败的结局，但飞行员在坠毁前的最后一刻冲出乌云，在灿烂夜空下宛如流星🌠一般的谢幕，在我的心中留下了无法磨灭的画面。\u003c/p\u003e","title":"失败者应该缄默，像种子"},{"content":"昨晚气温骤降，徘徊在0℃附近。下午出发去实验室时，发现小龟的挡风被和坐垫上碎散了一层雪花\u0026#x2744;\u0026#xfe0f;，才意识到雪已经若有若无的下了一小阵子了。\n不过第一眼就觉得这一层碎雪和平时的有些不同。从小在杭州看到的雪都是触地即溶，湿漉漉的。即使是鹅毛大雪在地上积起厚厚一层，也总感觉是处在融化的边缘。不过今天的雪却让人感觉特别干燥。上手一刮，碎雪像沙子一样滚落，几乎没有在坐垫上留下一点水痕。\n小时候去哈尔冰旅游所看到的似乎就是这种雪——抓起来后很难捏成雪球，反而沙子般一点点从手指的缝隙之间漏下去。放在江南似乎是一件罕见的事情。\n去实验室的路上风很大。看到柏油马路上有白色的忽聚忽散的幽灵在贴地飞行，是积雪在风吹下浅浅地离地游走。如果是真沙子的话或许很难被这种风吹起来吧，能被这样吹起来的可能是粒径更小的灰尘……于是这场雪在我脑海里的比拟又从沙子变成灰尘了。\n于是接下来的路上一直在琢磨究竟是比拟为沙子比较合适还是灰尘比较合适\u0026#x1f914;。近看的话，从尺径上来看确实应该是像沙子，但是冰的密度小，这被风一吹就游离开来的样子却更像是尘土（按土壤的分类来说应该分别是砂质土和壤土的差别)。想来想去，最后还是觉得算成沙子比较合适，毕竟足够大的风也能把沙子吹起来，而且第一印象往往是在静态下观察雪花外形而得到的，因此尺径应该算是更重要的一个指标……\n虽然不是力学出身，但还是忍不住琢磨起积雪贴地飞行的原理起来。我猜是因为近地面的气流受到地面摩擦减速，形成垂直方向的速度分布差异，进而使得雪颗粒下方气压大于上方气压，压力差超过重力，就把颗粒带离了地面。垂直方向的气流速度梯度随高度减小，随之颗粒受到的升力也很快减小到与重力相同的程度，因此雪花只能游离在贴近地面的一个薄层范围内运动。不过这只是稳态情景的分析，实际观察到的却是非稳态的。\n脑子里一边胡乱想着粒径分布、密度、粘滞系数之类，一边笑自己是不是科研上头以至于失去了一些浪漫的品质——哈哈哈哈，希望不是如此\u0026#x1f92a;。\n","permalink":"http://localhost:1313/post/snow-in-hangzhou/","summary":"\u003cp\u003e昨晚气温骤降，徘徊在0℃附近。下午出发去实验室时，发现小龟的挡风被和坐垫上碎散了一层雪花\u0026#x2744;\u0026#xfe0f;，才意识到雪已经若有若无的下了一小阵子了。\u003c/p\u003e","title":"杭城沙雪"},{"content":" The conceptual evolution of green building is reflected in historical versions of green building rating tools. Computational text analysis on historical versions of LEED revealed changes in the category systems and textual contents, which reflects how LEED’s green building concept has evolved in the 21st century.\nKeywords: green building rating tool (GBRT); conceptual evolution; LEED; computational text analysis\n1. Introduction The concept of green building is constantly evolving ever since Paul Soleri first proposed the idea of “ecological architecture” back in the 1960s [^Chen \u0026amp; Zhao, 2019]. The green building concept have been brought up by various stakeholders, with significant epochal characteristics. The oil crisis back in 1970s triggered a boom in interests in energy-efficient buildings (Wolfson, 2013); health issues like Sick Building Syndrome [^Kibert, 2004) and the COVID-19 pandemic (Ascione et al., 2022) strengthened the importance of occupant health in the green building concept; an interest in resource conservation reemerged in the early 1990s as a consequence of a complex array of effects, e.g., the UN Conference on Sustainable Development in 1992, known as the Rio Conference (Kibert, 2004)… The current definition of green building, provided by World Green Building Council (n.d.), embodies various aspects from environmental impacts to living quality.\nVarious green building rating systems (GBRTs) have been proposed worldwide as a way to encourage and standardize green building designs and constructions. GBRT usually has an authoritative background (Table 1) and represents the country’s official understanding of green buildings. Through official certifications, they provide important legitimacy for “greenness” of buildings, thus shaping the green building concept conversely (He et al., 2018). In conclusion, the green building concept is deeply intertwined with GBRTs.\nTable 1. Authoritative backgrounds of several GBRTs.\nGBRTs Country Organization LEED United States U.S. Green Building Council BREEAM U.K. Building Research Establishment Green Star Australia Green Building Council of Australia CASBEE Japan Japan Sustainable Building Consortium Among world’s leading GBRTs, LEED (Leadership in Energy and Environmental Design) is the most popular (Doan et al., 2017) with 156,914 projects over more than 170 countries/regions1. LEED is also the mostly investigated in current scientific literature (Ascione et al., 2022). Therefore, it can be used as a typical GBRT that reflects the green building concept both in the global industry and academia.\nGBRTs have been updated continuously to always meet the newest demand for green building certification. This process provides a potential aspect to explore the conceptual evolution of green buildings. Since the first launch (LEED v1.0 polit) in 1998, LEED has released several new versions from v2.0 in 2001 to the latest v4.1 in 2019. This updating process provides a window for studying conceptual evolution of green building in the 21st century.\nComputational text analysis (CTA) refers to harness of computational techniques to analyze big (textual) data (Schaffer Library, 2022), which is suitable for analyzing the large texts in historical versions of LEED rating systems. This paper adopts term frequency–inverse document frequency (TF-IDF) and cosine similarity for text analysis.\n2. Material and methods 2.1.Historical LEED rating materials The U.S. Green Building Council offers free access to documents of historical versions2. Considering the integrity and continuity of textual data, a series of documents was selected as research objects (Table 2). Ever since version 2.1, LEED has been providing rating systems for different building types and building phases including new construction, interior fit outs, operations and maintenance and core and shell. The list of rating types has changed several times. To focus on the general green building concept, and to maintain consistency and coherence of textual data, only rating systems for general new constructions (NC) were taken into account.\nTable 2. Selected historical versions of LEED rating system\nVersion Launch Year Selected Rating System Title v2.0 2001 LEED Rating System Version 2.0 v2.1 2002 LEED Green Building Rating System for New Construction \u0026amp; Major Renovations (LEED-NC) Version 2.1 v2.2 2005 LEED for New Construction \u0026amp; Major Renovations Version 2.2 v3 2009 2009 LEED 2009 for New Construction and Major Renovations v4.0 2013 LEED v4 for Building Design and Construction (BD+C): New Construction v4.1 2019 LEED v4.1 – Building Design and Construction (BD+C): New Construction Every rating system was divided into credits according to independent descriptions3 in the document. Total points, credit names, IDs and contents were recorded. To eliminate the interference of text structures, structure-relevant contents (section names like “Intent”, “Requirements”, \u0026hellip;) were removed from textual data.\n2.2.Computational text analysis Term frequency–inverse document frequency (TF-IDF) reflects how important a word is to a document in a collection or corpus. The TF-IDF value of word $\\cal {w}\\in W$ in document $i$ is defined as\n$$ {\\rm TFIDF}_{w,i}=\\frac{L_{w,i}}{L_{all, i}}\\cdot\\log\\left(\\frac{N_{all}}{N_w}+1\\right), $$\nwhere $L_{w,i}$ is the number of $w$ word in $i$ document, $L_{all,i}$ is the total amount of words in $i$, $N_{all}$ is the amount of all documents in the collection, and $N_w$ is the number of documents containing $w$. A TF-IDF vector, ${\\boldsymbol A}^i\\in R^{|{\\cal W}|\\times1}$, was generated for each document, which refers to an independent credit in this paper.\nCosine similarity was used to quantify the similarity between independent credits from adjacent versions. The connection of ${\\boldsymbol A}_{j_1, t}$ credit from $t$ version and ${\\boldsymbol A}_{j_2, t\u0026rsquo;}$ credit from $t\u0026rsquo;$ version is defines as $$ D(j_1, j_2, t, t\u0026rsquo;)=1-\\frac{{\\boldsymbol A}_{j_1, t} \\cdot {\\boldsymbol A}_{j_2, t\u0026rsquo;}}{|{\\boldsymbol A}_{j_1, t}| \\times |{\\boldsymbol A}_{j_2, t\u0026rsquo;}|}. $$ The more similar the contents between the two texts, the closer the value of $D$ is to 1.\nAll computational text analysis was conducted on Python 3.8.3 under Anaconda3 environment. Codes and data can be found at https://github.com/shengdong00/CTA-LEED.\n3. Results 3.1.Changes in independent credit categories The rating systems have significant changes in categories (Fig 1) after each major update. From v2 to v3, the weights of “Sustainable Sites” and “Energy and Atmosphere” had increased, while that of “Materials and Resources” and “Indoor Environmental Quality” had dropped. From v3 to v4, a series of new categories emerged, including “Integrative Process”, “Location and Transportation”, and “Regional Priority”. Integration and separation of independent credits can be found in each update. E.g., “Low-Emitting Materials” in v2.0 was separated into sub-credits of different usage scenarios in v2.1, and then re-integrated from v3 to v4.0.\nFig 1. Independent credits (with names) of historical LEED versions. Block size stands for the percentage of credit points. Credits of the same category have the same color.\n3.2.Content connections 3.2.1 Transition matrices and connection threshold The transition matrices of adjacent LEED versions are created according to the cosine similarities of every two credits (Fig 2). Ideally, a comprehensive, well-classified rating system should divide different aspects of an object into different parts (in this case, credits and categories), and keep its various sub-sections as independent as possible. This is to avoid overlapping of multiple rating processes. Therefore, if a rating system is good and consistent, its credits from a previous version should always be most similar to the corresponding credit in the latter version, with some weaker connections to nearby credits from the same category, and have little connection to credits from a completely different category. This principle is reflected especially in the latest update from v4.0 to v4.1, but not so well-reflected in updates from v2.2 to v3 and from v3 to v4.0. Categories such as environmental quality-related category showed significant change in the 2009 version, and almost everything changed from v3 2009 to v4.0.\nFig 2. Transition matrices of credit connection strengths between adjacent LEED rating systems.\nI counted up all the connections and get the histogram in Fig 3. The number of connections dropped drastically from 0.0 to 0.2, and remained at ~101 per bucket(0.02) afterwards. To make the network simple and only illustrates important connections, I used 0.54 as the threshold above which the connections will be considered as significant and marked in Fig 4.\nFig 3. Histogram of connections strengths between credits from adjacent versions.\n3.2.2 Flow network Fig 4 shows the flow network of credit ID4 and connections[^5]. Generally, credits in older versions are more intertwined with relevant ones, while credits in later versions mainly connect to their own adjacent credits of the same topic, which means less overlap between independent credits. The clear classification and distinct arrangement indicate the connotational improvement in green building concept.\nRelatively, credits have stronger connection with topic-related adjacent credits, with several exceptions. E.g., v3 EA-1 and v4.0 EA-2 both promotes energy performance, but their similarity is only 0.31, which is caused by technical developments in this area. The integration and separation of credits isn’t restricted to “credit/sub-credit” transformations. For example, EA-5 and EA-7 in v4.0 are both loosely connected to EA-5 in v4.1, indicating that green power and carbon offset concerns were merged into renewable energy credit.\nApart from credit-to-credit relations, Fig 4 also reveals content changes at category level. Credits from SS-1 to SS-4 in v3 showed little connection to v4.0 SS, which means the element of transportation and location were basically removed from “Sustainable Site” category. Despite that v4.0 has a new category of “Transportation and Location”, it has no significant connection to v3 SS-1~4. Key word analysis reveals that instead of vehicle management requirements, v4.0 LT focused more on the buildings’ interactions with surrounding facilities and community.\nFig 4. Flow network of independent credits (with IDs). Line width and color stands for cosine similarity.\n4. Discussion There’s a trend of becoming more systematic and multi-dimensional in the update process of LEED rating system. Compared with previous versions, v4 has the biggest change in both category systems and textual contents. The idea of interactions with surroundings and community gets more important in LEED’s green building concept. The connotation of water efficiency, energy, resource conservation and environmental quality had also changed to a great extent to meet with emerging technologies and social-natural backgrounds.\nI\u0026rsquo;m also personally very curious about the socio-economical backgrounds that drastically changed LEED contents in the 3rd version. It would be very interesting to see how the conceptual evolution of green buildings (as well as other environmental topics) was affected by different aspects of the era. By looking into the history, we have the chance to imagine how we are still blinded by the on-going current of times.\nReferences\nAscione, F., De Masi, R. F., Mastellone, M., \u0026amp; Vanoli, G. P. (2022). Building rating systems: A novel review about capabilities, current limits and open issues. Sustainable Cities and Society, 76, 103498. Chen, Y., \u0026amp; Zhao, D. (2019, October). Research and analysis on the development status and prospect of green building materials and green buildings in the new century. In IOP Conference Series. Earth and Environmental Science (Vol. 332, No. 3). IOP Publishing. Doan, D. T., Ghaffarianhoseini, A., Naismith, N., Zhang, T., Ghaffarianhoseini, A., \u0026amp; Tookey, J. (2017). A critical comparison of green building rating systems. Building and Environment, 123, 243-260. Kibert, C. J. (2004). Green buildings: an overview of progress. Journal of Land Use \u0026amp; Environmental Law, 19(2), 491–502. He, Y., Kvan, T., Liu, M., \u0026amp; Li, B. (2018). How green building rating systems affect designing green. Building and Environment, 133, 19-31. Schaffer Library. (2022, June 30). Digital Scholarship: Computational text analysis. Schaffer Library LibGuides, Union College. https://libguides.union.edu/digital-scholarship/cta Wolfson, M. (2013, July 24). Climate Change and Indoor Air Quality: Lessons from the Energy Crisis of the 1970s. Joint Center for Housing Studies of Harvard University. Retrieved October 23, 2022, from https://www.jchs.harvard.edu/blog/climate-change-and-indoor-air-qualitylessons-from-the-energy-crisis-of-the-1970s World Green Building Council. (n.d.). What is green building? Retrieved October 24, 2022, from https://www.worldgbc.org/what-green-building The numbers were retrieved from the official website of LEED on October 24th, 2022.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nDocuments available on U.S. Green Building Council website, retrieved on October 5th, 2022.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nAn independent and complete text, including sections like “Intent”, “Requirements”, “Potential Technologies \u0026amp; Strategies”, etc.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nCorresponding ID of credits can be found /Input_data/LEED_credits.xlsx here.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"http://localhost:1313/post/textual-analysis-on-leed/","summary":"\u003cblockquote\u003e\n\u003cp\u003eThe conceptual evolution of green building is reflected in historical versions of green building rating tools. Computational text analysis on historical versions of LEED revealed changes in the category systems and textual contents, which reflects how LEED’s green building concept has evolved in the 21st century.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003eKeywords:\u003c/strong\u003e green building rating tool (GBRT); conceptual evolution; LEED; computational text analysis\u003c/p\u003e","title":"The conceptual evolution of green building in the 21st century – textual changes in LEED"},{"content":"通过一个图像合成视频的脚本案例测试了一下Python3在单线程、多线程和多进程下的运行速度。发现多线程可以一定程度上提高运行速度（将1个线程拆为4个线程，提速大约83%），但是不能达到完全的并行运算，据说是因为threading模块并不能真正调用多个处理器。在多进程下运行，可以接近完全平行的运算速度。\n例程概述 在相对路径./image_storage/里有四个文件夹，分别是./image_storage/1/, ./image_storage/2/, ./image_storage/3/, ./image_storage/4/。每个文件夹中有300张.bmp图片文件，单个图片的文件大小为14.3MB，尺寸为2448×2048。需要将这四个文件夹中的图片分别合成成四个.mp4视频。此外，由于图片文件中记录了其拍摄时刻，所以还会据此来计算视频的帧率。\n合成视频的函数：\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 def generate_mp4(path, image_list): print(\u0026#39;Generating video... \u0026#39;+path) image_list.sort() # 按时间排序（即按文件名排序） t_steps = [] # 计算帧率，具体命名格式不重要 for i in range(len(image_list)-1): im0_stamp = image_list[i][:-4] t0 = int(im0_stamp.split(\u0026#39;_\u0026#39;)[-1])/1e6 + int(im0_stamp.split(\u0026#39;_\u0026#39;)[-2]) + int(im0_stamp.split(\u0026#39;_\u0026#39;)[-3])*60 + int(im0_stamp.split(\u0026#39;_\u0026#39;)[-4])*60*60 im1_stamp = image_list[i+1][:-4] t1 = int(im1_stamp.split(\u0026#39;_\u0026#39;)[-1])/1e6 + int(im1_stamp.split(\u0026#39;_\u0026#39;)[-2]) + int(im1_stamp.split(\u0026#39;_\u0026#39;)[-3])*60 + int(im1_stamp.split(\u0026#39;_\u0026#39;)[-4])*60*60 t_steps.append(t1-t0) frame_rate = 1/np.mean(t_steps) # 根据相邻帧平均时差得帧率 size = (2448, 2048) #(width, height) four_cc = cv2.VideoWriter_fourcc(*\u0026#39;mp4v\u0026#39;) cam_id = ... video_name = cam_id+image_list[0][-31:-4]+\u0026#39;-\u0026#39;+image_list[-1][-19:-4] videowriter = cv2.VideoWriter(\u0026#39;./saved_video/\u0026#39;+video_name+\u0026#39;.mp4\u0026#39;, four_cc, frame_rate, size) for im in image_list: img = cv2.imread(path+im) videowriter.write(img) videowriter.release() cv2.destroyAllWindows() 测试与结果 线性程序 先测一下单线情况下的运行时长，依次将四个文件夹里的图片合成为视频。\n1 2 3 4 5 6 7 8 paths = [\u0026#39;./image_storage/4/\u0026#39;, \u0026#39;./image_storage/2/\u0026#39;, \u0026#39;./image_storage/3/\u0026#39;, \u0026#39;./image_storage/4/\u0026#39;] start = time.time() for p in paths: raw_list = os.listdir(p) im_list = [i for i in raw_list if i[-4:]==\u0026#39;.bmp\u0026#39;] generate_mp4(p, im_list) end = time.time() print(str(end-start)) Output:\n1 2 3 4 5 Generating video... ./image_storage/1/ Generating video... ./image_storage/2/ Generating video... ./image_storage/3/ Generating video... ./image_storage/4/ 74.97052454948425 分别单独运行的结果：\n1 2 Generating video... ./image_storage/1/ 19.02564239501953 1 2 Generating video... ./image_storage/2/ 19.450006008148193 1 2 Generating video... ./image_storage/3/ 16.513428211212158 1 2 Generating video... ./image_storage/4/ 19.51286506652832 一共用时大约75秒，四个任务的耗时基本上是相似的。\n多线程 用threading模块实现多线程处理，\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 threads = [] paths = [\u0026#39;./image_storage/4/\u0026#39;, \u0026#39;./image_storage/2/\u0026#39;, \u0026#39;./image_storage/3/\u0026#39;, \u0026#39;./image_storage/4/\u0026#39;] start = time.time() for p in paths: raw_list = os.listdir(p) im_list = [i for i in raw_list if i[-4:]==\u0026#39;.bmp\u0026#39;] thread = threading.Thread(name=p, target=generate_mp4, args=(p, im_list), daemon=False) # 创建线程 threads.append(thread) for th in threads: th.start() # 开始线程 while(True): # 监测线程数量，≤1表示除主线程外都已完成 c = threading.active_count() if c\u0026lt;=1: break end = time.time() print(str(end-start)) Output:\n1 2 3 4 5 Generating video... ./image_storage/1/ Generating video... ./image_storage/2/ Generating video... ./image_storage/3/ Generating video... ./image_storage/4/ 40.90414476394653 一共用时大约41秒，比线性的耗时少了45%，速度明显提高，但是并没有达到完全并行的效果。\n多进程 用multiprocessing模块实现多进程处理，\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 if __name__==\u0026#39;__main__\u0026#39;: processes = [] paths = [\u0026#39;./image_storage/4/\u0026#39;, \u0026#39;./image_storage/2/\u0026#39;, \u0026#39;./image_storage/3/\u0026#39;, \u0026#39;./image_storage/4/\u0026#39;] start = time.time() for p in paths: raw_list = os.listdir(p) im_list = [i for i in raw_list if i[-4:]==\u0026#39;.bmp\u0026#39;] process = multiprocessing.Process(name=p, target=generate_mp4, args=(p, im_list), daemon=False) # 创建进程 processes.append(process) for pr in processes: pr.start() # 开始进程 while(True): # 监测子进程数量 c = len(multiprocessing.active_children()) if c\u0026lt;=0: break end = time.time() print(str(end-start)) Output:\n1 2 3 4 5 Generating video... ./image_storage/4/ Generating video... ./image_storage/2/ Generating video... ./image_storage/3/ Generating video... ./image_storage/4/ 22.97856903076172 用时大约23秒，比较接近线性运行用时的四分之一了。\n注意：1\n在Windows中，由于没有fork(Linux中创建进程的机制)，在创建进程的时候会import启动该文件，而在import文件的时候又会再次运行整个文件，如果把Process()放在 if __name__ == '__main__'判断之外，则Process()在被import的时候也会被运行，导致无限递归创建子进程导致报错，所以在Windows系统下，必须把Process()放在 if __name__ == '__main__' 的判断保护之下。 在子进程中不能使用input，因为输入台只显示在主进程中，故如果在子进程中使用input，会导致报错。 Python编程之多进程(multiprocessing)详解 - LoveFishO - 博客园 (cnblogs.com)\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"http://localhost:1313/post/python-threads-processes/","summary":"\u003cp\u003e通过一个图像合成视频的脚本案例测试了一下Python3在单线程、多线程和多进程下的运行速度。发现多线程可以一定程度上提高运行速度（将1个线程拆为4个线程，提速大约83%），但是不能达到完全的并行运算，据说是因为\u003ccode\u003ethreading\u003c/code\u003e模块并不能真正调用多个处理器。在多进程下运行，可以接近完全平行的运算速度。\u003c/p\u003e","title":"Python多线程和多进程的运行速度比较"},{"content":"This post of nonsense is written in English to avoid potential censorship of speech1. I write this post as a personal record of the chaos at the end(?) of the strict COVID regulation \u0026ldquo;era\u0026rdquo;, as well as a witness of an ongoing elimination(?) of public discussion. NOTE: I\u0026rsquo;m not quoting any factual sources here, so all will be my personal opinions.\nSharp turning, good or bad. The major policy for public health is changing from strict, dynamic zero to a more open, tolerant attitude after the 20th national congress.\nAs an undergraduate student I have witnessed tons of chaos in regulation adjustments, and tons of complaints and conflicts between students and administrators. There have been many disagreements and debates on whether things will get better or not in the future. The feelings are rather mixed and complicated - hope, despair, expectation, fear, relief, worry\u0026hellip;\nIt\u0026rsquo;s impossible to have an objective view when you\u0026rsquo;re just a tiny, stupid part of it. So I stepped away from debates and remained silent. But one thing is for sure: people\u0026rsquo;s tolerance to strict regulations have come to near zero - this is proved by multiple bursts of public opinion seething and even a number of protests (I don\u0026rsquo;t need to list those events one by one). The public confidence in dynamic zero policy is dropping, while complaints and doubts on the efficiency and necessity of ever-changing COVID regulations rising.\nMy point is that, regardless of the rise public health threats, it is almost a \u0026ldquo;must\u0026rdquo; to make adjustments on previous strict (and sometimes rigid) regulations. Socio-economic pressure was beginning to (mildly?) challenge the validity and stability of the regime. Adoption of more open, tolerant policies seemed to be necessary.\n\u0026ldquo;Let\u0026rsquo;s look forward!\u0026rdquo; If you pay attention, you would find a funny contrast between official propaganda before and after the 20th national congress. Before that, things went like \u0026ldquo;COVID is terrible\u0026rdquo;, \u0026ldquo;dynamic zero is the best!\u0026rdquo;, \u0026ldquo;we\u0026rsquo;re saving people\u0026rsquo;s lives\u0026rdquo;\u0026hellip; While after that, things go like \u0026ldquo;COVID is just a flu2\u0026rdquo;, \u0026ldquo;\u0026lsquo;I get COVID and recovered soon\u0026rsquo;\u0026rdquo;, \u0026ldquo;we\u0026rsquo;ve done well enough\u0026rdquo;\u0026hellip;\nBut isn\u0026rsquo;t it obvious that simply showing individual cases is NOT representative at all? Is it correct to lower people\u0026rsquo;s awareness of prevention just by showing that several young, strong or rich people recovered quickly? How about the \u0026ldquo;potential side-effects of COVID\u0026rdquo; that used to be so propagated? Doesn\u0026rsquo;t it all look like a schizophrenia?\nIt is true that the COVID is evolving to be way more infective while less harmful, which makes the effort of dynamic zero policy steeping up while the benefit steeping down. I\u0026rsquo;m not a professional guy on medical science so not too much comments on reliability of various popular science posts. But the drastic change in propaganda looks too deliberate and makes me uncomfortable - it\u0026rsquo;s like a huge reminder of how public opinion is shaped, so apparent that you can\u0026rsquo;t ignore it. What I\u0026rsquo;m questioning is not how truthful these propagandas are, but the deliberation (and the way it treats the public as memoryless fools3).\nI was chatting with my gf the other day, and she told me two little story.\nThe Department of Sociology was about to hold an open lecture on topics related to sociological problems under the pandemic. However, before it started, it was changed into a close one, and students weren\u0026rsquo;t allow to attend anymore. A friend of her was about to use pandemic-related social survey data to complete her bachelor\u0026rsquo;s thesis. While applying for access to the database, she was told that the database is under inspection, and those pandemic-related questionaire might be deleted. I wouldn\u0026rsquo;t be surprised if open-public discussions on national policies are restricted, though I\u0026rsquo;m really not a fan of it. However, what does it mean when even the freedom of academic research of social sciences is restricted? I used to think that this is probably the last piece of pure land to discuss sensitive social topics with objectiveness and intellect. It would sound quite unacceptable to me. I believe this is also bad for the authority itself, for restrictions on social sciences limits our understanding of selves, and eventually lowers rationality and efficiency of policies, laws, rules, etc.\nMemory elimination - yes or no? Based on everything above, I have a strong feeling that the official is trying to eliminate (or rewrite) public memory of what had happened for the past, (suspicously) just to make sure that the current regulations are seen as correct, also to avoid criticisms on previous dynamic zero regulations.\nTo eliminate the past 3 years of strict \u0026ldquo;anti-epidemic era\u0026rdquo; sound even more ridiculous than the elimination of discussion on the unrest in 1989. The latter was clearly an opposition to the authority, the suppression on which was sad, but yet common worldwide, like the downfall of the Black Panther Party for Self Defense. But the dynamic zero era used to be something praised highly by the official, yet it seems to be thrown into a trash bin unnecessarily - somehow a negation of oneself.\nHearing about the deletion of pandemic-related data is probably the most shocking moment in my life, and I never felt that Orwell was so insightful to say,\n\u0026ldquo;Who controls the present controls the past.\u0026rdquo;\nI don\u0026rsquo;t want to loose the ability to explain history on my own. So I write this thoughts down as a witness. If, this post managed to survive for the following 5 years, I would like to see the way we tell the story of the past 3 years in comparison to this post.\nDespite that you don\u0026rsquo;t have as crazy censorship as when you post contents on domestic platforms when using foreign ones,, it is still possible to get banned if the official send a request to the platform a request to remove your content, as is the case for github(link). Writing in English doesn\u0026rsquo;t stop them from censoring, but the post gets less \u0026ldquo;harmful\u0026rdquo; in a Chinese language environment (this may sounds stupid and only my wishful thinking though).\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nThis just reminded me of when we were laughing at Trump\u0026rsquo;s claim that COVID is just a small flu.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nwhich sometimes is unfortunately true(?)\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"http://localhost:1313/post/epidemic-memory/","summary":"\u003cp\u003eThis post of \u003cstrong\u003enonsense\u003c/strong\u003e is written in English to avoid potential censorship of speech\u003csup id=\"fnref:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e. I write this post as a personal record of the chaos at the end(?) of the strict COVID regulation \u0026ldquo;era\u0026rdquo;, as well as a witness of an ongoing elimination(?) of public discussion. NOTE: I\u0026rsquo;m not quoting any factual sources here, so all will be my personal opinions.\u003c/p\u003e","title":"Elimination of 3 years?"},{"content":"之前在使用Hexo平台 + NexT主题搭建博客的时候，自带不蒜子1的网站访问统计。现在的这个主题下需要自行添加统计功能。最终还是决定使用不蒜子来实现，便于直接显示在网站页面上2。唯一的缺点就是目前没办法自定义初始值，所以域名更换后数据就从零开始了。\n在.\\themes\\PaperMod\\layouts\\partials\\footer.html的末尾添加：\n1 \u0026lt;script async src=\u0026#34;//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js\u0026#34;\u0026gt;\u0026lt;/script\u0026gt; 并且在\u0026lt;footer\u0026gt;标签中添加访问量和访客数，\n1 2 3 4 5 6 7 8 \u0026lt;footer class=\u0026#34;footer\u0026#34;\u0026gt; ... ... \u0026lt;span id=\u0026#34;busuanzi_container_site_count\u0026#34;\u0026gt; \u0026lt;br\u0026gt;总访问量=\u0026lt;span id=\u0026#34;busuanzi_value_site_pv\u0026#34;\u0026gt;\u0026lt;/span\u0026gt;, 访客数=\u0026lt;span id=\u0026#34;busuanzi_value_site_uv\u0026#34;\u0026gt;\u0026lt;/span\u0026gt;, 本页阅读量=\u0026lt;span id=\u0026#34;busuanzi_value_page_pv\u0026#34;\u0026gt;\u0026lt;/span\u0026gt; \u0026lt;/span\u0026gt; \u0026lt;/footer\u0026gt; 在导入不蒜子的脚本后，已知可以调用的变量有三个：\nbusuanzi_value_site_pv：单个用户连续访问n个页面，记录n次访问量 busuanzi_value_site_uv：单个用户连续点击n篇文章，只记录1次访客数 busuanzi_value_page_pv：单个用户点击1篇文章n次，本篇文章记录n次阅读量 顺便，意识到之后需要修改网站底部的文字的话，都可以在这个\u0026lt;footer\u0026gt;标签里进行编辑。\n不蒜子 - 极简网页计数器 (ibruce.info)\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n不蒜子计数器的使用_zolo_的博客-CSDN博客\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"http://localhost:1313/post/my_web-count/","summary":"\u003cp\u003e之前在使用Hexo平台 + NexT主题搭建博客的时候，自带不蒜子\u003csup id=\"fnref:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e的网站访问统计。现在的这个主题下需要自行添加统计功能。最终还是决定使用不蒜子来实现，便于直接显示在网站页面上\u003csup id=\"fnref:2\"\u003e\u003ca href=\"#fn:2\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e2\u003c/a\u003e\u003c/sup\u003e。唯一的缺点就是目前没办法自定义初始值，所以域名更换后数据就从零开始了。\u003c/p\u003e","title":"在Hugo + PaperMod主题下添加不蒜子网站统计"},{"content":"Barrel distortion(桶形畸变)是一种成像画面呈桶形膨胀的畸变现象，通常在广角镜头下出现。最近在调试生态监测相机时就遇到了非常典型的桶形畸变，会影响到对于监测对象的定位精确性。\n网上找到对Barrel distortion的描述如下。\nBarrel distortion: When straight lines are curved inwards in a shape of a barrel, this type of aberration is called “barrel distortion”. Commonly seen on wide angle lenses, barrel distortion happens because the field of view of the lens is much wider than the size of the image sensor and hence it needs to be “squeezed” to fit. As a result, straight lines are visibly curved inwards, especially towards the extreme edges of the frame.1\n为了便于理解Barrel distortion并尝试自行解决问题，我构建了一个极其简化的理想模型：\n将相机理想化为一个点，其到实物平面的垂足为$O(0,0)$，距离为$h$。平面上某一点相对于$O$的坐标为$P_1(x_1, y_1)$，该点对应的相机视野张角为$\\theta_1$。则 $$ \\tan{\\frac{\\theta_1}{2}}=\\frac{\\sqrt{x_1^2+y_1^2}}{h}. $$\n而在成像端，该点在感光芯片上成像像素点相对于中心点的坐标记为$D_1(x_{1d}, y_{1d})$，单位是px。如果认为成像端的像素坐标和角度是成正比的（这一点存疑），那么 $$ \\frac{\\theta_1/2}{\\sqrt{x_{1d}^2+y_{1d}^2}}\\equiv K\\rm （常数）. $$\n$$ \\therefore ~\\tan{\\left(K\\cdot\\sqrt{x_{1d}^2+y_{1d}^2}\\right)}=\\frac{\\sqrt{x_1^2+y_1^2}}{h}. $$\n在进行图像校正之前，我们先给出参考用的“锚定点”，即成像点像素位置保持不变的点，$P_{0X}(x_0,0)$ ~ $D_{0X}(x_{0d},0)$，$P_{0Y}(0,y_0)$ ~ $D_{0Y}(0,y_{0d})$。经过校正之后，像素点移动到新的位置， $$ \\begin{aligned} D_1(x_{1d},y_{1d})\u0026amp;\\rightarrow C_1(x_{1c},y_{1c}),\\\\ D_{0X}(x_{0d},0)\u0026amp;\\rightarrow C_{0X}(x_{0c},0),\\\\ D_{0Y}(0,y_{0d})\u0026amp;\\rightarrow C_{0Y}(0,y_{0c}). \\end{aligned} $$\n但是“锚定点”事实上位置保持不变，即$x_{0d}=x_{0c},y_{0d}=y_{0c}$。经过校正之后应当满足：$\\triangle C_{0X}C_1C_{0Y}$相似于$\\triangle P_{0X}P_1P_{0Y}$，或者说$(C_{0X}C_1\\parallel{P_{0X}P_1})$且$({C_{0Y}C_1}\\parallel{P_{0Y}P_1})$， $$ \\displaylines{ \\left\\{ \\begin{aligned} \u0026amp;\\frac{x_{1c}-x_{0d}}{y_{1c}-0}=\\frac{x_1-x_0}{y_1-0}\\\\ \u0026amp;\\frac{x_{1c}-0}{y_{1c}-y_{0d}}=\\frac{x_1-0}{y_1-y_0} \\end{aligned} \\right. \\Rightarrow \\left\\{ \\begin{aligned} \u0026amp;x_{1c}=\\frac{(x_1-x_0)y_{0d}+x_{0d}y_1}{x_1y_1-(x_1-x_0)(y_1-y_0)}\\\\ \u0026amp;y_{1c}=\\frac{(y_1-y_0)x_{0d}+x_1y_{0d}}{x_1y_1-(x_1-x_0)(y_1-y_0)} \\end{aligned} \\right. } $$\n通过上述运算，我们现在可以基于给定两个“锚定点”的信息，实现从现实世界中的点坐标到校正后图像坐标的映射$P_1(x_1,y_1)\\leftrightarrow C_1(x_{1c},y_{1c})$。通过解(反)三角函数可以得到$P_1\\leftrightarrow D_1$的映射，从而构建起图像校正的像素点映射关系$D_1\\leftrightarrow C_1$。\n\u0026#x1f4f7;之后有时间的话，希望能够写成代码检验一下这个算法的适用性\u0026#x1f436;\nMansurov, N. (July 5, 2020). What is Lens Distortion? photography life. Retrieved on Nov 16, 2022. Link\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"http://localhost:1313/post/simple_barrel_disto/","summary":"\u003cp\u003eBarrel distortion(桶形畸变)是一种成像画面呈桶形膨胀的畸变现象，通常在广角镜头下出现。最近在调试生态监测相机时就遇到了非常典型的桶形畸变，会影响到对于监测对象的定位精确性。\u003c/p\u003e","title":"简单理想情形下的Barrel distortion"},{"content":"This is a test page 本页面用于测试网站的显示格式，以及不同模块的渲染情况。\nSubtitle 1 aaa bbb ccc put some emoji \u0026#x1f604;\nand some formula $y=x^2$1\n公式块中换行的\\\\要写成\\\\\\ $$ \\begin{aligned} y \u0026amp;= \\int_0^a\\sqrt{x}dx\\\\ z \u0026amp;= x\\cdot\\ln y \\end{aligned} $$\nand some codes\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 package main import ( \u0026#34;fmt\u0026#34; \u0026#34;math/rand\u0026#34; \u0026#34;time\u0026#34; ) type Moo struct { Cow int Sound string Tube chan bool } // A cow will moo until it is being fed func cow(num int, mootube chan Moo) { tube := make(chan bool) for { select { case mootube \u0026lt;- Moo{num, \u0026#34;moo\u0026#34;, tube}: fmt.Println(\u0026#34;Cow number\u0026#34;, num, \u0026#34;mooed through the mootube\u0026#34;) \u0026lt;-tube fmt.Println(\u0026#34;Cow number\u0026#34;, num, \u0026#34;is being fed and stops mooing\u0026#34;) mootube \u0026lt;- Moo{num, \u0026#34;mooh\u0026#34;, nil} fmt.Println(\u0026#34;Cow number\u0026#34;, num, \u0026#34;moos one last time out of happyness\u0026#34;) return default: fmt.Println(\u0026#34;Cow number\u0026#34;, num, \u0026#34;mooed through the mootube and was ignored\u0026#34;) time.Sleep(time.Duration(rand.Int31n(1000)) * time.Millisecond) } } } // The farmer wants to put food in all the mootubes to stop the mooing func farmer(numcows int, mootube chan Moo, farmertube chan string) { fmt.Println(\u0026#34;Farmer starts listening to the mootube\u0026#34;) for hungryCows := numcows; hungryCows \u0026gt; 0; { moo := \u0026lt;-mootube if moo.Sound == \u0026#34;mooh\u0026#34; { fmt.Println(\u0026#34;Farmer heard a moo of relief from cow number\u0026#34;, moo.Cow) hungryCows-- } else { fmt.Println(\u0026#34;Farmer heard a\u0026#34;, moo.Sound, \u0026#34;from cow number\u0026#34;, moo.Cow) time.Sleep(2e9) fmt.Println(\u0026#34;Farmer starts feeding cow number\u0026#34;, moo.Cow) moo.Tube \u0026lt;- true } } fmt.Println(\u0026#34;Farmer doesn\u0026#39;t hear a single moo anymore. All done!\u0026#34;) farmertube \u0026lt;- \u0026#34;yey!\u0026#34; } // The farm starts out with mooing cows that wants to be fed func runFarm(numcows int) { farmertube := make(chan string) mootube := make(chan Moo) for cownum := 0; cownum \u0026lt; numcows; cownum++ { go cow(cownum, mootube) } go farmer(numcows, mootube, farmertube) farmerSaid := \u0026lt;-farmertube if farmerSaid == \u0026#34;yey!\u0026#34; { fmt.Println(\u0026#34;All cows are happy.\u0026#34;) } } func main() { runFarm(4) fmt.Println(\u0026#34;done\u0026#34;) } insert images\n以本地文件的content文件夹作为相对路径的起点，或者直接使用网页外链\nSubtitle 2 表格 A B 000 111 222 0000 1111 2222 try quoting?\nBlahblahblah\u0026hellip;2\n注脚的编号会根据出现的顺序自动生成\nSubtitle 3 mermaid插件的渲染3 在mermaid代码块前后添加：\n1 2 3 4 \u0026lt;div class=\u0026#34;mermaid\u0026#34;\u0026gt; %%{init: {\u0026#39;theme\u0026#39;: \u0026#39;forest\u0026#39;, \u0026#39;fill\u0026#39;: \u0026#39;white\u0026#39;, \u0026#39;securitylevel\u0026#39;: \u0026#39;loose\u0026#39; } }%% ... \u0026lt;/div\u0026gt; %%{init: {'theme': 'forest', 'fill': 'white', 'securitylevel': 'loose' } }%% sequenceDiagram participant Alice participant Bob Alice-\u003e\u003eJohn: Hello John, how are you? loop Healthcheck John-\u003e\u003eJohn: Fight against hypochondria end Note right of John: Rational thoughts prevail! John--\u003e\u003eAlice: Great! John-\u003e\u003eBob: How about you? Bob--\u003e\u003eJohn: Jolly good! %%{init: {'theme': 'dark', 'fill': 'red', 'securitylevel': 'loose' } }%% flowchart LR A--\u003eB--\u003eC--\u003eA 将Hugo部署到到Github Pages4 生成网页静态页面文件\n1 hugo 进入public文件夹，使用git上传文件\n1 2 3 4 5 6 cd public git init ##初始化仓库 git remote add origin https://github.com/username/username.github.io.git ##链接远程仓库 git add . git commit -m \u0026#34;first commit\u0026#34; git push -u origin master 在此之后更新文章，使用hugo生成新的静态页面，并使用git push进行同步\n1 2 3 4 5 cd public git add . git status git commit -m \u0026#34;add blog post\u0026#34; git push html语言标记补充 强制居中 1 \u0026lt;center\u0026gt;需要居中的内容\u0026lt;/center\u0026gt; 需要居中的内容 图片并排 用表格标签\u0026lt;table\u0026gt;来实现多个图片的并排\n1 2 3 4 \u0026lt;table\u0026gt;\u0026lt;tr\u0026gt; \u0026lt;td\u0026gt;\u0026lt;img src=\u0026#34;/images/leaf-styles.jpg\u0026#34; style=\u0026#34;zoom:60%;\u0026#34; /\u0026gt;\u0026lt;/td\u0026gt; \u0026lt;td\u0026gt;\u0026lt;img src=\u0026#34;/images/prime.jpg\u0026#34; style=\u0026#34;zoom:60%;\u0026#34; /\u0026gt;\u0026lt;/td\u0026gt; \u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; 图片注释 在\u0026lt;img\u0026gt;标签之后添加\u0026lt;figcaption\u0026gt;\nPS：在正文里，用\u0026lt;figure\u0026gt;标签将\u0026lt;img\u0026gt;和\u0026lt;figcaption\u0026gt;包裹起来后，PaperMod会图注文字渲染为粗体。\n1 2 3 4 \u0026lt;center\u0026gt;\u0026lt;figure\u0026gt; \u0026lt;img src=\u0026#34;/images/image-20221101202147118.png\u0026#34; style=\u0026#34;zoom: 33%;\u0026#34; /\u0026gt; \u0026lt;figcaption\u0026gt;一张月球照片\u0026lt;/figcaption\u0026gt; \u0026lt;/figure\u0026gt;\u0026lt;/center\u0026gt; 一张月球照片 参考教程：在Hugo中使用MathJax · 零壹軒·笔记 (qidong.name)\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nFrom nobody\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n参考教程：hugo增加mermaidjs的支持 - 木木飞 (mmfei.com)\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n参考教程：使用hugo生成静态博客并部署在GitHub上 - 知乎 (zhihu.com)\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"http://localhost:1313/post/test/","summary":"\u003ch1 id=\"this-is-a-test-page\"\u003eThis is a test page\u003c/h1\u003e\n\u003cp\u003e本页面用于测试网站的显示格式，以及不同模块的渲染情况。\u003c/p\u003e","title":"HugoBlog Test"},{"content":"\u0026#x1f3c3; who I am 一些符合社会规范的角色标签 2023级西湖大学工学院 环境科学与工程专业 博士生\n2019级浙江大学环境与资源学院 本科生，主修环境科学，辅修工程教育高级班\n一些基本符合自我认知的人格标签 Type: Assertive Logician INTP-A 2024 Summer\n\u0026#x1f47b; what I believe 随着成长或有些不一样的感悟，更新中……\n我自认是一个科学主义且功利主义的人，虽然并不能完整地总结出这二者的内涵。或许这两个“主义”在一般意义上并不是个好词，但是我有一些个人化的解读（歪解）。\n科学主义大概来自于从小到大的自然科学教育，以及随之而来的试图拆解问题并做出唯物解读的思考习惯。我很喜欢擅自将这一价值观延伸解读成实事求是、谦逊、冷静、目标明确（或许已经偏离科学主义的本质了啊喂\u0026#x1f605;）。一般来说，scientism被质疑是落入了用科学技术替代价值判断的窠臼，所以用这样带有争议的词也算是一种自嘲和训诫，要时刻反省自己是否在对科技的偏执中丢失了最基本的人之常情，反省自己是否从相信科学变成了迷信科学。\n而至于功利主义，似乎还应该加上两个修饰：群体的、持续的功利主义。可以把这看成生物的趋利避害本能、社会人的道德感和科学理性的混合产物。我不认为所谓“让世界更美好”的信念有多么高尚，但是我为自己抱有这样的想法感到合乎情理。虽然它包含了人类中心主义和擅自定义优劣的傲慢，但从渺小的个体来说，这也已经足够指引我们保持超越自我的视角，足够耗费一生的精力了。\nIf knowledge can create problems, it is not through ignorance that we can solve them.\n继续去做一些让这个世界变得更好的事情\u0026#x1f389;，同时也去寻找所谓“更好”究竟意味着什么吧。\n\u0026#x1f4d6; reading 神们自己 [美]艾萨克·阿西莫夫 空军飞行员 [法]圣·埃克絮佩里 The Open Veins of Latin America. [Uruguay]Eduardo Galeano 永恒的终结 [美]艾萨克·阿西莫夫 变动的城市 [美]阿诺德·汤因比 翦商 李硕 流浪苍穹 郝景芳 这里是建站以来的阅读书目，读完了就会打勾\n\u0026#x1f4bb; website history 2022-03-20 使用Gitee Pages发布，域名https://dongsheng2000.gitee.io[现已失效] 2022-08-22 添加友链页面，参考：北宸 | Hexo NexT主题自定义友链页面 2022-09-08 Next主题从v7.8.0升级到v8.12.0 2022-10-01 将仓库从Gitee迁移到GitHub，域名为https://shengdong00.github.io 2022-10-02 开始使用自定义域名https://dong2000.xyz 2022-10-17 GitHub emoji的调用插件从hexo-filter-emoji更换为hexo-filter-github-emojis 2022-11-01 基于Hugo框架(v0.105.0 extended)重构网站，使用PaperMod主题(v6.0) 2023-01-01 添加友链模板，将目录移到侧边（参考Sulv\u0026rsquo;s blog | 建站） 2023-01-20 为提升国内加载速度，使用图床外链（ImageURL）显示部分文章的图片每次更新图片都到图床上进行操作有些麻烦，并且不便于整体网站的管理，遂放弃 2023-07-02 添加Profile模式，和学术生涯相关的介绍都会放到这里 2024-04-06 添加内嵌pdf功能，基于GitHub - anvithks/hugo-embed-pdf-shortcode项目，略做了本地化修改 2024-04-09 添加B站内嵌视频，参考了如何在hugo生成的网页中插入嵌入式视频 - 知乎 2024-04-11 修复内嵌pdf功能的bug，参考Issue #44 · anvithks/hugo-embed-pdf-shortcode 2024-08-29 在/layouts/partials/svg.html中添加自定义social icon 2025-02-10 Hugo版本更新到v0.123.8。由于v0.124开始常用的命令有所改变，故以后不再更新网站架构（除非整个网站进行重大改版） ","permalink":"http://localhost:1313/about/","summary":"about","title":"About"},{"content":" 糯米正在看机器学习的网课，我在旁边偷学了一点东西来，感觉还挺有意思的（结果自己的文献都没认真看完\u0026#x1f622;）\n定义 马氏距离(Mahalanobis distance)是由印度统计学家马哈拉诺比斯(P. C. Mahalanobis)提出的，表示点与一个分布之间的距离，也可以定义为两个服从同一分布并且其协方差矩阵为$\\Sigma$的随机变量之间的差异程度1。马氏距离独立于数据的测量尺度。\n根据第一种定义给出的公式： $$ d=\\sqrt{ \\left(x-\\mu\\right)\u0026rsquo;\\Sigma^{-1}\\left(x-\\mu\\right) }, $$ 其中$x$是点的向量，$\\mu$是分布的均值，$\\Sigma$是分布的协方差矩阵。\n根据第二种定义给出的公式： $$ d=\\sqrt{ \\left(x_1-x_2\\right)\u0026rsquo;\\Sigma^{-1}\\left(x_1-x_2\\right) }, $$ 其中$x_1,x_2$是服从同一分布的两个点。\n从马氏距离所联想到的 在第一种定义下的马氏距离可以用作“无偏差的假设检验”这么描述好像不太准确——点到不同样本分布的马氏距离可以用于判断该点更可能归属于哪个分布集合。这和假设检验似乎有一些类似的地方，但是不存在对不同假设的偏好差异。\n顺带着就复习自学了一下假设检验……啥都不记得了，我大学三年到底学了些什么东西？？？\n在传统的假设检验中，原假设$H_0$相较于备择假设$H_1$是更加受到保护的（这里并不强求二者必然形成互补的关系）：当$H_0$条件下的小概率事件发生概率超过阈值(显著性水平)$\\alpha$时，$H_0$即被证伪。如果$H_0$和$H_1$分别在这里代表着两种分\n布的话，那么有可能$x$虽然处于$H_0$的置信区间内，但是在$H_1$条件下出现$x$事件的概率(密度)更高。这也就会导致第二类错误的发生。\n但是在进行马氏距离比较时，则不会面临这一问题。为了和以上描述保持一致，我们这里采用一维变量下的马氏距离公式： $$ d_0=\\frac{x-\\mu_0}{\\sigma_0},~~d_1=\\frac{x-\\mu_1}{\\sigma_1}. $$ 选择$H_0$还是$H_1$完全取决于$d_0$和$d_1$的相对大小，二者的地位是等同的。\n但是马氏距离还是不能替代假设检验。即使马氏距离的比较必然能对现有的两个分布做出取舍，但是它并不直接反映出$x$在所选择的分布条件下是否处于置信区间内。马氏距离或许可以用于辅助判断是否发生了第二类错误。\n暴力演算 试图把协方差逆矩阵的元素算出来的二哈行为\n某$m$维分布的协方差矩阵记为$\\Sigma=[c_{ij}]\\in R^{m\\times m}$，$\\Sigma$是对称矩阵，其对角线元素$c_{ii}$是第$i$维上的方差。\n协方差逆矩阵$\\Sigma^{-1}=[b_{ij}]\\in R^{m\\times m}$满足： $$ \\Sigma \\Sigma^{-1}=E_0 $$ 得到约束方程：\n$$ c_{1k}b_{k1}+c_{2k}b_{k2}+\\dots+c_{mk}b_{km}=1,k\\in[1,m] $$\n$$ c_{1i}b_{j1}+c_{2i}b_{j2}+\\dots +c_{mi}b_{jm}=0,i\\neq j,i,j\\in[1,m] $$\n$$ c_{ij}=c_{ji}, i,j\\in[1,m] $$\n在$m=2$的简单情形下， $$ \\begin{aligned} b_{11}\u0026amp;=\\frac{c_{22}}{c_{11}c_{22}-c_{12}^2}\\\\ b_{22}\u0026amp;=\\frac{c_{11}}{c_{11}c_{22}-c_{12}^2}\\\\ b_{12}=b_{21}\u0026amp;=\\frac{c_{12}}{c_{12}^2-c_{11}c_{22}} \\end{aligned} $$ 更高纬度的一般性解还没有搞清楚，待以后有空的时候再来研究吧！\n百度百科: 马氏距离. Retrieved on October 30th, 2022.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"http://localhost:1313/post/mahalanobis-distance/","summary":"\u003cblockquote\u003e\n\u003cp\u003e糯米正在看机器学习的网课，我在旁边偷学了一点东西来，感觉还挺有意思的（结果自己的文献都没认真看完\u0026#x1f622;）\u003c/p\u003e\n\u003c/blockquote\u003e","title":"偶识Mahalanobis Distance"},{"content":"起初我以为这是一场典型的讲座，就像之前在学校里听到的许许多多学术大咖的讲座一样。所以还有些纳闷为什么要跑到一个商业中心来举办……到现场之后发现并不是。事实上如果我事先查一下活动主题中”ESG“这个缩写的含义，或许就会早点搞明白这是一场把企业、学界、NGO等等所有stakeholders聚到一个屋子内进行交流的事情。\nESG: Environmental, social, and governance (ESG) investing refers to a set of standards for a company\u0026rsquo;s behavior used by socially conscious investors to screen potential investments. Environmental criteria consider how a company safeguards the environment, including corporate policies addressing climate change, for example. Social criteria examine how it manages relationships with employees, suppliers, customers, and the communities where it operates. Governance deals with a company’s leadership, executive pay, audits, internal controls, and shareholder rights.1\n虽然我们实验室是ESG杭州会客厅的发起方，张罗场地、邀请嘉宾、主持会议一手全包，但是作为我而言这仍然是一个陌生的活动，仅仅作为一个普通的听众走进了活动举办的房间。报名参加的最初动机是奔着听两位教授的科研报告去的，但是在现场看到、了解到了更多偏向业界的情况。当然从两位教授的分享或许因为是一场面向公众的活动，所以讲得也更加通俗易懂了些中更是学到了很多东西。有一些我自己在闭关遐思瞎想时觉得难以解决的问题，原来恰好也是老师们在自己的研究中遇到的、并且已经或正在想办法克服的难题。这也让我对自己的信心增长了一些：有些时候天马行空的想法未必那么不切实际，说不定此时此刻正在有人朝着这个方向不断地探索着，我要做的就是放开胆子，多问多试。\n后半场分享是来自业界的两位嘉宾作的。我对于NGO和企业说的内容常点带着不信任的偏见，觉得他们多多少少都会带着为自己牟利的心态当然谁不喜欢钱呢，在介绍自己的组织/企业时总会扬长避短乃至于做一些视听上的手脚以夸大所取得的成果在科研中也常这种问题，我自己也总是分不清所谓好的展现和过度展现之间的边界。今天的活动也是如此，在聆听的时候我常常在想这些不能进行标准化的横向比较的光鲜指标背后究竟事实上代表着多大的成就。不过在大部分的时候，可能并不存在这样一个标准化的比较手段和足够数量的真实数据；而各类行业标准本身也不过是在头部的人所主观(尽可能客观)划定的。NGO和企业所承担的角色是纯粹的科研工作者所无法完成的，同时也是至关重要的，即推动新兴技术的落地转化和民众消费观念的转变。没有这些人在各地奔走、牵线搭桥，再完美的设计也只能停留在期刊上，不能走进大地中。\nBang, J. (September 27th, 2022). What Is Environmental, Social, and Governance (ESG) Investing? INVESTOPEDIA. Retrieved on October 28th, 2022.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"http://localhost:1313/post/esg-hangzhou-v5/","summary":"\u003cp\u003e起初我以为这是一场典型的讲座，就像之前在学校里听到的许许多多学术大咖的讲座一样。\u003csub\u003e所以还有些纳闷为什么要跑到一个商业中心来举办……\u003c/sub\u003e到现场之后发现并不是。事实上如果我事先查一下活动主题中”ESG“这个缩写的含义，或许就会早点搞明白这是一场把企业、学界、NGO等等所有stakeholders聚到一个屋子内进行交流的事情。\u003c/p\u003e","title":"ESG杭州会客厅(Vol.5)所见"},{"content":"最近经常要跑一些很耗时的matlab脚本，命令行窗口里又需要不断输出信息，不方便直接看运行进度。需要搞一个独立的进度条来显示告诉我们脚本运行的情况。\n初始化进度条：\n1 2 3 4 5 6 f = waitbar(0, msg, \u0026#39;Name\u0026#39;, Value) %{ x: 0~1的小数，表示进度 msg: 一段文本显示消息，例如\u0026#34;Loading data...\u0026#34; \u0026#39;Name\u0026#39;, Value: 设置对话框的名称，例如\u0026#39;Name\u0026#39;, \u0026#39;Progress\u0026#39; %} 更新进度条：\n1 2 3 4 5 6 waitbar(x,f,msg) %{ x: 0~1的小数，更新后的进度 f: 所更新的对话框的变量名 msg: 一段文本显示消息，例如\u0026#34;Processing data...\u0026#34; %} 关闭进度条：\n1 close(f) 一个应用实例：\n完整的官网文档见 https://ww2.mathworks.cn/help/matlab/ref/waitbar.html\n","permalink":"http://localhost:1313/post/matlab_bar/","summary":"\u003cp\u003e最近经常要跑一些很耗时的matlab脚本，命令行窗口里又需要不断输出信息，不方便直接看运行进度。需要搞一个独立的进度条来显示告诉我们脚本运行的情况。\u003c/p\u003e","title":"在Matlab中使用进度条"},{"content":"在Balzani等人关于微塑料对蜜蜂毒害作用的一篇论文1中，有这样对微塑料污染物的定义：\nMicroplastics (MPs) are a class of ubiquitous pollutants grouping persistent polymeric particles smaller than 5 mm in diameter, regardless of their shape and chemical composition. They include polyester (PL), polystyrene (PS), polyethylene (PE), polypropylene (PP) and polyvinylchloride (PVC) particles, among others (Ng et al., 2018).\n恰好之前一直想了解微塑料污染具体的物理化学特点，于是特意搜了一下这篇Ng等人在18年发表的文章，题目是An overview of microplastic and nanoplastic pollution in agroecosystems。\n文中的这张图恰好是我想要的：\n可生物降解的聚合物包括Cellulose(纤维素), Polycaprolactone(聚己内酯, PCL), Polylactic acid(聚乳酸, PLA让人肃然起敬的缩写), Polyhydroxyalkanoates(聚羟基脂肪酸酯, PHA), Polybutylenesuccinate(聚丁二酸丁二醇酯, PBS)等；\n不可生物降解的聚合物包括Polyethylene(聚乙烯, PE), Polypropylene(聚丙烯, PP), Polystyrene(聚苯乙烯, PS), Polyvinylchloride(聚氯乙烯, PVC), Polyethyleneterenphthalate(聚对苯二甲酸乙二醇酯, PET)。\n我们的实验要进行有/无微塑料污染胁迫的对照设置。为了控制变量，要尽可能减少实验环境中的其他微塑料来源。一些需要警惕的潜在来源：\n502胶水，化学成分以 α－氰基丙烯酸乙酯 为主，结构式是CH2=C(CN)-OO-C2H5，在空气中发生加聚反应迅速固化，成为(C6O2H7N)n。作为氰基化合物有较高的毒性。除了 α－氰基丙烯酸乙酯 外，通常还有丙酮作为溶剂（挥发性），以及其他的增粘剂、稳定剂、增韧剂、阻聚剂等等。需要查一下502胶水产品说明上边的成分表 亚克力，即聚甲基丙烯酸甲酯，(C5O2H8)n，无毒，但是不可降解——是微塑料的来源之一。 热熔胶，即EVA树脂，其聚合物的单体包括乙烯、醋酸乙烯等等。无毒，不可降解。 胶乳制品，包括实验室里常用的乳胶手套等。天然胶乳（天然橡胶）以顺-1,4-聚异戊二烯为主要成分，化学式(C5H8)n，自然降解耗时大约为三个月。合成胶乳包括丁苯胶乳、丁腈胶乳等等。丁腈胶乳可以自然降解。待查询产品成分表 …… 研究微塑料污染的实验的一大难题在于，日常生活中使用各类塑料制品（或者说不可降解有机聚合物的制品）的场合实在是太多了，很难做到完全不适用任何塑料材质的实验环境——甚至实验台本身就是聚合物的材质。从实验材料的获取来看，被试对象的培育过程也很难确保没有受到微塑料污染的影响。\nBalzani, P., Galeotti, G., Scheggi, S., Masoni, A., Santini, G., \u0026amp; Baracchi, D. (2022). Acute and chronic ingestion of polyethylene (PE) microplastics has mild effects on honey bee health and cognition. Environmental Pollution, 305, 119318.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"http://localhost:1313/post/common_microplastics/","summary":"\u003cp\u003e在Balzani等人关于微塑料对蜜蜂毒害作用的一篇论文\u003csup id=\"fnref:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e中，有这样对微塑料污染物的定义：\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eMicroplastics (MPs) are a class of ubiquitous pollutants grouping persistent polymeric particles smaller than 5 mm in diameter, regardless of their shape and chemical composition. They include polyester (PL), polystyrene (PS), polyethylene (PE), polypropylene (PP) and polyvinylchloride (PVC) particles, among others (Ng et al., 2018).\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e恰好之前一直想了解微塑料污染具体的物理化学特点，于是特意搜了一下这篇Ng等人在18年发表的文章，题目是An overview of microplastic and nanoplastic pollution in agroecosystems。\u003c/p\u003e","title":"几种常见的微塑料污染物"},{"content":"看痞子的新曼电影时，瞥到了神永新二留给泷明久的论文（解释了贝塔系统的原理），突发奇想将论文的第一页（影片中有一两秒的特写）给扒了下来。\n所以看了这个东西之后我可以造出变身器吗？\n$\\beta$-system Physics setup The truth is that our world consists of a 10-dimensional warped spacetime, and the compact dimension are controlled roughly by so-called Randall-Sundrum (RS) model. The gravity, as well as the new field $U$ which the human beings have not discovered yet, propagate in the extra dimensions. The fields of the standard model particles live on TeV brane in the terminology of the RS model. The hierarchy is made by the presence of the Planck brane and the warped geometry.\nThe extra dimensions are 6 spatial dimensions spanned as ${y^1,\\cdots,y^6}$, but in effect the largest single extra dimension matters for all the physics at the energy scale low enough for you. So let us introduce conveniently the largest extra dimensional coordinate as $x^4$, which is basically the $\\phi$ coordinate in the RS model. Then at low energy the extra dimensional physics reduces to the 5-dimensional model, whose spacetime is spanned by ${x^0,\\cdots,x^3,x^4}$. The spacetime metric depends affectively only on $x^4$.\nAs I described above, there are two branes parallel to each other, and located at $$ \\phi=0,~~\\phi=\\pi. $$\nIn the dimensionless coordinate $\\phi ≡ x^4/L$, where $L$ is the length scale of the extra dimension. The field content at $\\phi =0$ brane is the standard model fields (and the dark matter fields which will be no use for you). To be precise, the standard model fields are effectively localized. And the field content at $\\phi =\\pi$, our “world of light,” is again no use for you, so I will not describe them here. However, the important is the field content which propagates also in the extra dimensions, $$ U(x^0,\\cdots,x^3,\\phi),~~G_{MN}(x^0,\\cdots,x^3,\\phi). $$\nHere of course the metric field $G$ has the indices $M,N=0,1,2,3,4$.\nAction of the whole higher dimensional universe The most important paint of the 5-dimensional Lagrangian is that the undiscovered field $U$ has a non-minimal coupling to the gravity. It is similar to the Higgs inflation model. Therefore the gravitational effect of the field $U$ is strong at the TeV brane in particular.\nThe mass of the $U$ particle (or more precisely, the lowest Kalnza-Klein mode of the 5-dimensional field $U$) is at 13.8 TeV, whose observation will determine the relation between the 5-dimensional warp factor and the 5-dimensional mass $M$ of the field $U$.\nThe action consists first of the RS model Lagrangian,\n$$ s=\\int d^5x \\sqrt{-G}\\left[\\left(2M^3R-\\Lambda\\right) + \\delta\\left(\\phi-\\pi\\right){\\cal L}_{\\rm SM}+\\delta\\left(\\phi\\right){\\cal L}_{\\rm PL}\\right]. $$\nThe additional field has the following form of the action,\n$$ \\delta S=\\int d^5x\\sqrt{-G} \\left[ G^{MN}D_MUD_N\\overline U -M^2\\left|U\\right|^2 +\\epsilon_0\\left|U\\right|^2R +g\\left|U\\right|^2\\delta\\left(\\phi\\right)H^\\uparrow H +\\overline g\\left|U\\right|^2\\delta\\left(\\phi-\\pi\\right){\\cal L}\u0026rsquo;_{\\rm PL} \\right], $$\nwhich allows indeed the noni-minimal coupling between the 5-dimensional field $U$ and the gravity. $H$ is the Higgs field which, as in the RS model, is written to show the hierarchy structure. The field $U$ is the key field, which strongly couples to the 5-dimensional gravity. The coupling parameter $\\epsilon_0$, once is measured, will now governs the physics of the extra dimensions.\n","permalink":"http://localhost:1313/post/beta-system_shin_ultraman/","summary":"\u003cp\u003e看痞子的新曼电影时，瞥到了神永新二留给泷明久的论文（解释了贝塔系统的原理），突发奇想将论文的第一页（影片中有一两秒的特写）给扒了下来。\u003c/p\u003e\n\u003cp\u003e\u003cs\u003e所以看了这个东西之后我可以造出变身器吗？\u003c/s\u003e\u003c/p\u003e","title":"《新·奥特曼》中关于贝塔系统的论文"},{"content":"如果你曾经访问过我的小网站，你可能会注意到我的域名已经从dongsheng2000.gitee.io变成了shengdong00.github.io。\n搬迁的原因很简单：我的网站内容被Gitee判为违禁违规了。\n当然被判违禁违规也不是第一次了。虽然我认为这个以学习生活记录博客没有任何罪过，但是偶尔因为一两个敏感词语而被ban也完全是可以理解的事情。之前在Sci-Hub + Python爬虫实现文献批量下载这篇记录中因为出现了“非法”一词，曾经被ban过一回。虽然这里并无任何“违反法律”的含义，但是找一个替换词也并不是多大难事。但是前几天的违禁违规问题就没有那么简单了。\n首先，系统提示内容违规的内容是大半个月前就已经发布的再读《社会-经济-自然复合生态系统》，在发布该博客之后我又进行了若干次重新部署，一直没有提示违规，直到国庆前夕的这一次更新才出现问题。其次，我不认为这篇博客内容中有任何暴恐、色情、政治敏感的内容。经过简单排查发现，违规内容来自于后半部分（并且不止一处），只不过是对马世骏先生早年论文的部分引用而已。由此我认为，违规问题的出现，归咎于平台在10月到来之前更新了检测系统，并且新上线的检测系统敏感到了草木皆兵的离谱程度。\n我起初试图修改内容以通过审核。由于平台并不会提示具体是哪一段文本违规，而我凭借自己的直觉、以及网上的各种违禁违规AI检测工具，都无法解决问题，因此我只能在二分法的基本思想下一点点排查。反复检查的结论是，只有几乎将后一半内容完全砍掉，这篇内容才能通过审核，但这是我所不能接受的。我宁可直接将它删掉，也不愿意看到一段被阉割至二分之一的文字。但是，删掉它并不意味着麻烦的结束，因为平台接着判定我的另一篇内容，系统科学与工程复习整理，违禁违规了……\n如果说前一篇内容还和什么社会什么政策扯一些边，违规还算能理解（不合理，但是能解释）的话，后一篇纯纯是课程复习资料的东西都不能幸免，那我是真的无话可说了。即使我搞定了这两篇的违规内容（不论是阉割还是删除），我也有充足的理由相信还会有第三个受害者出现。\n至此，这个问题已经消耗了我大半天的时间和大量的精力。在反复迭代排查的过程中，每一次修改内容、上传部署、审核打回的轮回都需要5~10分钟的时间，整个过程异常枯燥，而我则时时刻刻陷入“难道这玩意儿也是敏感内容”的灵魂拷问之中。最后我放弃修改了，睡觉之前到Gitee官方的页面里提了一个issue，询问部署违禁违规的问题。或许是因为语气冲了一点（当时整个人真的很恼火），用了一些反问句；又或许是因为我复制引用了平台自己的审查规则描述（形如”禁止出现xx内容“之类），从而引入了某些敏感词——总之，第二天醒来的时候，我发现我提的issue也TM的给ban了！\u0026#x1f621;\n于是就有了今天删库跑路，溜到GitHub上边建仓的事情。\n本来这一次更新是为了提交一份微信公众平台JS接口安全域名的认证文件，以便于之后需要分享链接到票圈里。这下被迫从Gitee转移到了GitHub上边。这下要在微信公众平台上通过认证，还需要先完成域名绑定、网站备案等等一系列工作。考虑到时间上的经济性，短期内我也不会再去做这件事情了。虽然都说在境内访问GitHub的稳定性时好时坏，但是相比于其他选项来看，这也是最好的情况了。\n以前一直觉得互联网的一墙之隔并没有多大的影响，只要我自己进出自由，那么它的存在似乎也无可厚非。现在我不这么觉得了。\n","permalink":"http://localhost:1313/post/moving_my_blog/","summary":"如果你曾经访问过我的小网站，你可能会注意到我的域名已经从dongsheng2000.gitee.io变成了shengdong00.github.io。\n搬迁的原因很简单：我的网站内容被Gitee判为违禁违规了。\n当然被判违禁违规也不是第一次了。虽然我认为这个以学习生活记录博客没有任何罪过，但是偶尔因为一两个敏感词语而被ban也完全是可以理解的事情。之前在Sci-Hub + Python爬虫实现文献批量下载这篇记录中因为出现了“非法”一词，曾经被ban过一回。虽然这里并无任何“违反法律”的含义，但是找一个替换词也并不是多大难事。但是前几天的违禁违规问题就没有那么简单了。\n首先，系统提示内容违规的内容是大半个月前就已经发布的再读《社会-经济-自然复合生态系统》，在发布该博客之后我又进行了若干次重新部署，一直没有提示违规，直到国庆前夕的这一次更新才出现问题。其次，我不认为这篇博客内容中有任何暴恐、色情、政治敏感的内容。经过简单排查发现，违规内容来自于后半部分（并且不止一处），只不过是对马世骏先生早年论文的部分引用而已。由此我认为，违规问题的出现，归咎于平台在10月到来之前更新了检测系统，并且新上线的检测系统敏感到了草木皆兵的离谱程度。\n我起初试图修改内容以通过审核。由于平台并不会提示具体是哪一段文本违规，而我凭借自己的直觉、以及网上的各种违禁违规AI检测工具，都无法解决问题，因此我只能在二分法的基本思想下一点点排查。反复检查的结论是，只有几乎将后一半内容完全砍掉，这篇内容才能通过审核，但这是我所不能接受的。我宁可直接将它删掉，也不愿意看到一段被阉割至二分之一的文字。但是，删掉它并不意味着麻烦的结束，因为平台接着判定我的另一篇内容，系统科学与工程复习整理，违禁违规了……\n如果说前一篇内容还和什么社会什么政策扯一些边，违规还算能理解（不合理，但是能解释）的话，后一篇纯纯是课程复习资料的东西都不能幸免，那我是真的无话可说了。即使我搞定了这两篇的违规内容（不论是阉割还是删除），我也有充足的理由相信还会有第三个受害者出现。\n至此，这个问题已经消耗了我大半天的时间和大量的精力。在反复迭代排查的过程中，每一次修改内容、上传部署、审核打回的轮回都需要5~10分钟的时间，整个过程异常枯燥，而我则时时刻刻陷入“难道这玩意儿也是敏感内容”的灵魂拷问之中。最后我放弃修改了，睡觉之前到Gitee官方的页面里提了一个issue，询问部署违禁违规的问题。或许是因为语气冲了一点（当时整个人真的很恼火），用了一些反问句；又或许是因为我复制引用了平台自己的审查规则描述（形如”禁止出现xx内容“之类），从而引入了某些敏感词——总之，第二天醒来的时候，我发现我提的issue也TM的给ban了！\u0026#x1f621;\n于是就有了今天删库跑路，溜到GitHub上边建仓的事情。\n本来这一次更新是为了提交一份微信公众平台JS接口安全域名的认证文件，以便于之后需要分享链接到票圈里。这下被迫从Gitee转移到了GitHub上边。这下要在微信公众平台上通过认证，还需要先完成域名绑定、网站备案等等一系列工作。考虑到时间上的经济性，短期内我也不会再去做这件事情了。虽然都说在境内访问GitHub的稳定性时好时坏，但是相比于其他选项来看，这也是最好的情况了。\n以前一直觉得互联网的一墙之隔并没有多大的影响，只要我自己进出自由，那么它的存在似乎也无可厚非。现在我不这么觉得了。","title":"记一次博客托管迁移经历"},{"content":" 2014年的一篇文章如今又被很多人翻出来讨论。重读了一遍感觉确实挺有意思的，八年前所隐射的事情，如今又有多少终于成为了光天化日之下的常识。有人相信这是当时对真相的隐忍和委婉表达。我不知道在我的有生之年是否会看到见证谜团解开的时刻，亦或者它最终会被某些人带进坟墓永远埋葬。不过从文中可以感受到，如今路人皆知的“凉意”，八年前已然弥散。\n原标题：MH370写给2014年的一封信\n来源：新华网 思客；作者：何帆；人民网转载链接\n我是MH370。不要问我是从哪里给你写信的，有些事情如果需要知道，人们早晚会知道。你也不用担心我是来谴责你的。是的，你已经把我忘了，这我知道。“亲戚或余悲，他人亦已歌。”你并没有比别人做得更好，但也没有比别人做得更差。“尘归尘、土归土”，我们的命运均是如此。\n我没有早一点给你写信，是因为一直沉浸在自己的悲伤之中。事情过去这么久了，慢慢地，我已经可以玩味这场悲剧中的黑色幽默了。飞机出事故的概率大约是20万分之一，而出现多人死亡的空难事故的概率只有三百万分之一。\n我是一架波音777。在这种飞机二十多年的飞行历史上，只出现过9次事故，涉及的死亡人数不过3人而已。马航在40多年的历史里只出过两次重大事故，其中一次还是因为劫机。2013年，马航才刚刚获得世界旅游奖的“亚洲最佳航空公司”奖项。出事的那一天，我是从吉隆坡起飞的，那是一个尽管有点浮夸，但再怎么浮夸也仍然被大家视为二流角色的国家的首都。我要飞往北京，那是一个尽管在迅速强大起来，但总是低调得唯恐不够低调的国家的首都。\n再怎么说，“中大奖”的也不应该是我啊。\n我最近变得有点像哲学家，因为总是在思考灾难这件事。灾难是个哲学问题。它复杂、痛苦，而且无解，特别适合喜欢自虐的哲学家。我是个生活流的哲学家，只能从自己的生活体验来思考灾难问题。\n飞机失事，往往都是在起飞和降落的时候。我还记得第一次起飞的感觉：兴奋、紧张、害怕，觉得有点失控。后来的每一次起飞，对我来说都是一个神圣的仪式，总会有那么点小激动。但降落就是另外一回事了。每一次降落的时候，我已经是风尘仆仆、疲惫不堪。从高贵而洁净的天空回到嘈杂而混乱的地面，心中不免有些莫名的失落。我喜欢在空中平稳飞行的感觉，尽管我知道，油箱里的油总会用完的，飞得再高、飞得再远，总得要着陆。\n你现在就正处在降落的过程中。我这么说你一定会不服气，因为这一路走来有惊无险，逢凶之处，总能化吉。全球经济增长是低落了，但还算平稳；世界油价突然下跌，但也没有触发连锁反应。我的一个兄弟MH17，也是一架波音777，好端端地在乌克兰上空飞着，竟然被打了下来。我本来以为这下糟糕了，可能会引发一场不大也不小的冲突，结果居然又是不了了之。看来，今年唯一倒霉的就是我们马航。\n当然，我是有一点危言耸听，就算是我自己，也不是在降落过程中出事的，我是被欺骗、被劫持、被杀害的。具体的故事我不愿意讲，我的痛苦是属于我自己的，你们的好奇不足以理解我的悲伤。你们和我不一样，你们仍然是踌躇满志的。\n是的，我是被怨气和戾气所害，你并不是凶手，你甚至连凶手是谁都找不着，但是，这股怨气和戾气，难道就与你们的傲慢和偏见一点关系都没有？\n我看到，那个繁花似锦、人人快乐的镀金时代已经结束了——又或许，那个时代原本就是人们的一种幻觉。我看到了纽约世界贸易中心的熊熊黑烟，我看到了世界各地股票交易所的人们在金融危机爆发时的惊恐万状，我看到你的仪表盘上，油箱的指示已经快接近红线。我能听得到你久未修理的发动机发出沙哑的噪音，能预感到你航线前方即将出现空气湍流。\n但是，没有人把前面的风险当成一件值得担忧的事情。我看到，世界上规模最大的国家仍然自以为能够号令天下，其实它连自己国内的骚乱都束手无策。我看到，世界上增长速度最快的国家笼罩在一片雾霾之中，失去了曾经夺人心魄的高速经济增长，我不知道它该怎么应付层出不穷的问题。我看到，有的国家变得越是衰弱，就越是强硬；我也看到，有的国家越是停滞，就越是破罐子破摔。\n我看到，曾经得到的人们不愿意失去，哪怕他们曾经得到的都是特权；而没有得到的人们开始愤怒，尽管他们不知道该怎么去争取、以及该争取什么样的权利。我看到人们都很忙，假装在忙正经的事情：他们有眼睛，却看不到别人；有耳朵，却听不到别人；有心灵，却无法理解别人。\n在经济繁荣的时候，人们变得更加乐观自信，而在经济低迷的时候，人们就变得更加悲观和自私。历史已经在降落了，尽管人们尚未察觉——但我察觉到了，因为我就是受害者之一。想想我真是够窝囊的。有人在街上吵架，那不是我；有人在街上打架，那也不是我；有人在街上掏出了手枪，我只是一个路过的，子弹却打偏了，恰恰打中了我。\n我已经走了。街上愤怒的人们还在。冰山上已经有裂纹，断层线的地质活动比过去更加活跃，气候日益异常。从一个高歌凯进的繁荣时期，到一个长久低迷的萧条时代，发生变化的并不仅仅是经济增长率的高低，很多事情、很多意想不到的风险会等着你们。我祝你们的运气比我更好。\n抱歉占用你这么多的时间。我知道你很忙，人们都要为你送行，各种庆典排都排不开。但我的话又能讲给谁听呢？讲给2015年听吗？他只会比你更志得意满。好歹，你在觥筹交错的盛宴之余，或许会有一丝曲终人散的惆怅。毕竟，你很快也要离开这个世界了。\n匆匆草就，巾短意长。告别的时候到了，送你一首歌德的诗。不长。\n“一切的峰顶\n沉静\n一切的树尖\n全不见\n丝儿风影\n小鸟们在林间无声。\n等待吧：\n俄顷\n你也要安静。”\n——MH370（来源：新华网 思客 作者：何帆）\n","permalink":"http://localhost:1313/post/mh370-to-2014/","summary":"\u003cblockquote\u003e\n\u003cp\u003e2014年的一篇文章如今又被很多人翻出来讨论。重读了一遍感觉确实挺有意思的，八年前所隐射的事情，如今又有多少终于成为了光天化日之下的常识。有人相信这是当时对真相的隐忍和委婉表达。我不知道在我的有生之年是否会看到见证谜团解开的时刻，亦或者它最终会被某些人带进坟墓永远埋葬。不过从文中可以感受到，如今路人皆知的“凉意”，八年前已然弥散。\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cimg src=\"/images/image-20220920235941075.png\" alt=\"image-20220920235941075\" style=\"zoom:33%;\" /\u003e\n\u003cp\u003e\u003cstrong\u003e原标题：MH370写给2014年的一封信\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e来源：新华网 思客；作者：何帆；\u003ca href=\"http://politics.people.com.cn/n/2014/1211/c70731-26188881.html\"\u003e人民网转载链接\u003c/a\u003e\u003c/p\u003e","title":"转-MH370写给2014年的一封信"},{"content":"早在高中的时候就在生物选修课本上读到过马世骏先生的“生态工程”思想和“社会-经济-自然复合生态系统”的理论，虽然只是寥寥数句，读到这一部分课本的时候却有一种茅塞顿开\u0026#x1f4a1;的感觉，体会到以系统的眼光看待人与自然交互的重要性。（回想起几本高中生物必修与选修课本，确实可以发现整个体系从一开始就在逐渐构建起自然环境与人类活动相互影响的世界观，为引出生态工程这一思想做了知识铺垫和价值引导，确实是费了很多内容编排的功夫。）可以说马先生的思想是我对于环境学的启蒙之一了。\n上了大学之后，曾经在一门导论性质的课程论文里特意引用过先生在1984年发表于生态学报的《社会-经济-自然复合生态系统》1，借此机会第一次阅读了这篇论文的全文。然而当时尚缺乏关于环境经济学、生物学、系统科学等等的知识体系，也并没有参与过什么实际的环境社会研究问题，因此对于文中的所谓“衡量复合系统的指标”“多维决策过程”等等概念都不甚了解，只是在作业中仿照着写几句人类活动对自然环境影响如何重大之类人云亦云的套话。\n之后逐渐开始学习学院设置的各个分支学科，也辅修了一些其他理工科的课程，积累了一些科研的经历。忙碌之中也不再记起这篇年龄是我两倍之多的论文。直到最近在写暑期环科院规划所实习报告的时候，梳理解读着绿色发展效率评估的期望产出指标的含义，突然眼前一亮：“这个选取指标的原则不就是马先生的复合系统理论吗！？”\n让我感慨的不单单是从实际的科研应用中rediscover了引我入门的理论概念，也是因为在我们当时挑选指标、构建体系时，可以说是以一种略显随意的、没有系统指导的方式在工作。首先挑选了四个指标，其中三个指标来源于其他人已经发表了的文献，一个指标来源于环科院自己提供的数据；在对所有变量进行共线性分析的时候，发现前三个指标里有两个的线性关系过高，于是又舍弃了一个指标，最终剩下三个指标正好分别体现了经济发展\u0026#x1f4b0;、社会效益\u0026#x1f3e0;和环境保护\u0026#x1f331;。虽然这三个指标并不能完全反映出社会-经济-自然复合生态系统的三个方面，甚至可以说是有一些简陋了，但是无意之中契合了复合系统最基本的理念。\n在旁人看来这或许是一个十分没有意义的感慨，毕竟如今是个人都能想到要综合考虑经济、社会和环境之间的利弊权衡问题。我们在研究分析环境问题、构建评价系统的时候也很少会特意地再去引用马先生的这篇近四十年前的文章了。但是这也恰恰说明了，社会-经济-自然复合生态系统观念已经为人们所普遍接受，并深入人心成为我们思考、研究问题的最基本出发点之一。\n而如今重新阅读这篇文论，才切身认识到当中所说的衡量复合系统所需要关注的问题之关键。\n​\t……一般说来，复合生态系统的研究是一个多维决策过程，是对系统组织性、相关性、有序性、目的性的综合评判、规划和协调。其目标集是由三个亚系统的指标结合衡量的，即:\n1）自然系统是否合理看其是否合乎于自然界物质循环不已、相互补偿的规律，能否达到自然资源供给永续不断，以及人类生活与工作环境是否适宜与稳定；\n2）经济系统是否有利看其是消耗抑或发展，是亏损抑或盈利，是平衡发展抑或失调,是否达到预定的效益；\n3）社会系统是否有效考虑各种社会职能机构的社会效益，看其是否行之有效。并有利于全社会的繁荣昌盛。从现有的物质条件（包括短期内可发掘的潜力)，科学技术水平,以及社会的需求进行衡量，看政策、管理、社会公益，道德风尚是否为社会所满意。\n再结合在系统科学、规划学、经济学等课程的内容，我才意识到我所参与的环境规划类科研项目经历，其实也都可以为以下的数学规划思想所高度概括。任何复杂的数学变化、精巧的模型架构和庞大的数据处理，其最根本的设计原则都可以概括为用更加先进的方法反映出社会和自然的真实情况，使得数学规划的目标与实际需求真正契合。可以说，我们仍然在马世骏先生指出的方向上前行，道阻且长。\n​\t综合上述三个目标，不难看出复合系统的指标，就是在经济生态学原则的指导下，拟定具体的社会吕标、经济国标和生态目标，使系统的综合效益B最高，导致危机的风险R最小，存活进化的机会O最大,用数学规划的语言表示，可以写成： $$ \\begin{aligned} \u0026amp;\\max ~{B(X,Y,Z), -R(X,Y,Z),O(X,Y,Z)}\\ \u0026amp;~s.t.~~~ G(X,Y,Z)\\le 0 \\end{aligned} $$ 式中，$X,Y,Z$分别表示社会变量，经济变量和环境变量（向量形式）。 约束条件集$G$受所研究的地区及所研究的时间范内具体的社会、经济、自然条件及规划者的具体目标所约束，它可以是物质的（如人口、资金、能量、资源等），亦可以是信息的（如政策、科技、文教、满意程度等），但须通过一定的数量化方法转换成标准值。\n我并不是生态学专业的学生，对马老先生钻研数载的昆虫学、蝗灾治理等研究也不甚了解，但是单从这一篇具有开山意义的论文中也能一窥先生的深谋远虑和大局观念，感慨于这四十年来环境学的发展。共勉。\n\u0026#x1f334; \u0026#x1f334; \u0026#x1f334;\n马世骏, 王如松. 社会-经济-自然复合生态系统. 生态学报, 1984, 4(1):1~9.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"http://localhost:1313/post/on_socio_economic_natural_system/","summary":"\u003cp\u003e早在高中的时候就在生物选修课本上读到过马世骏先生的“生态工程”思想和“社会-经济-自然复合生态系统”的理论，虽然只是寥寥数句，读到这一部分课本的时候却有一种茅塞顿开\u0026#x1f4a1;的感觉，体会到以系统的眼光看待人与自然交互的重要性。（回想起几本高中生物必修与选修课本，确实可以发现整个体系从一开始就在逐渐构建起自然环境与人类活动相互影响的世界观，为引出生态工程这一思想做了知识铺垫和价值引导，确实是费了很多内容编排的功夫。）可以说马先生的思想是我对于环境学的启蒙之一了。\u003c/p\u003e\n\u003cimg src=\"/images/image-20220918143620625.png\" alt=\"image-20220918143620625\" style=\"zoom: 50%;\" /\u003e","title":"再读《社会-经济-自然复合生态系统》"},{"content":"\u0026#x1f393;最近有一搭没一搭地在准备着西湖大学工学院2023年博士招生预推免的材料准备工作，虽然按理并不会遇到太大的困难，但是心里还是难免会有一些焦虑——毕竟这是关乎到接下来五年何去何从的事情。在某个焦虑而摸鱼的时刻决定来写一篇博客记录申请直博的经历和心路（实际上是因为personal statement挤牙膏挤不出来了），算是作为这一重时间节点的纪念。\n关于学校和导师选择的问题，其实并没有经历太多的纠结。从去年开始就一直在Tom的SEAE Lab (Sustainable Agricultural Systems \u0026amp; Engineering Lab)做访问学生，对实验室的项目情况基本上都比较熟悉了。对于研究生阶段去哪儿读书的问题，可以说是毫不犹豫地就咬定了非来这里不可了。对我来说，想进西湖大学工学院的机会有两次。第一次是22年夏秋的预推免，也就是正在准备的这一轮，理想情况下应该拿到保研名额并通过西湖大学工学院的考核；如果保研失败或者面试被刷掉的话，23年春天的第三轮招生还会有第一次机会，这一轮招生不需要保研资格，并且只有本科毕业的也符合申请条件，但是不确定性也会更大。\nSept 12th 更新\n昨晚写完了personal statement（真的是挤牙膏一般，断断续续写了整整一周）。statement分成两个部分：研究经历陈述和未来的研究计划。研究经历里我写了在访问学生期间跟着实验室里两位PostDoc前辈做的项目，因此把相关段落的草稿发给他们帮忙检查了一下。今天给在系统里提交了推免生申请。\n其他的申请材料包括个人陈述、在读证明、排名和成绩单、英语水平证明、学术科研成果、获奖成果、教授推荐信等等。在读证明、排名和成绩单、英语水平证明这些不用说，无非各种走流程盖章上传证件。学术科研成果有一篇JCR一区的一作（感谢本科的班主任给我这个机会），把论文原件作为附件上传了。获奖成果具体更看重哪些方面的我并不是很清楚，直接把所有能拿到奖状的荣誉全都贴了上去，从竞赛获奖到奖学金再到各种标兵评选和运动会名次（怀疑大多数奖项可能招生组委会听都没听说过\u0026#x1f923;实在是太小了）。关于推荐信，除了必须要有的两封教授推荐信之外，还请所在西湖大学实验室的导师帮我写了一封，不知道这样是否会增加入选的可能性。听说西湖大学是pro-committee制度的，导师本身在招生过程中并没有太大的决定权。而且预推免期间我的导师还跑回德国去了\u0026#x1f628;，感觉心理支柱少了一丢丢。在其他材料补充部分，我还放上了工高班辅修和伯克利暑校的经历，总之把能放的材料全都放了上去，努力让履历看上去丰富一些。\nSept 18th 更新\n今天收到了通知参加面试的邮件\u0026#x1f4e8;，在9月24号以线上方式进行，要提前准备好介绍学术背景和研究计划的PPT。面试包含10～15分钟的个人介绍和10～15分钟的问答。看上去PPT内容的要求之前的personal statement差不多，打算这几天按照之前提交的personal statement修改一下，提前练一练全英文的展示。\n希望一切顺利！\u0026#x1f64f;\nSept 24th 更新\n过去的几天内在准备着面试的PPT和讲稿，同时也夹杂着准备、提交保研材料，准备毕业设计，参加Delphi meeting等等额外的事情。严格来说，真正用到准备复试的时间也只有三个晚上而已（不过每一个晚上都是超长待机的开夜车老司机\u0026#x1f923;）。前两个晚上做好了PPT，面试前最后一晚过了一遍要讲的内容。\n讲完我的PPT大约需要14分钟，剩下还有大概10分钟的时间留给i。面试是线上进行的，因为担心讲超时特意挑了家里能看到时钟的地方。有前一半时间主要介绍了四段研究经历，其中两段是在访问学生期间的工作，一段是在浙大的班主任指导下发表的SCI期刊的经历，还有一个是暑假到环科院实习的经历。后一半时间讲的是研究计划。本来在personal statement里边提到了不止一个，但是其实我心里真正有谱的只有一个计划，另外都是些八竿子都没影儿的事情，再考虑到面试的时候一方面时长有限，另一方面要做好被面试官盘问的准备，所以还是决定只讲一个计划，其实也是基于访问学生经历中的一个项目，拓展深入形成的课题。核心内容是使用近红外波段相机对野外昆虫\u0026#x1fab2;和蝙蝠\u0026#x1f987;的活动进行监测。由于在这个项目上已经有了一些经验，因此还算比较了解。唯一心虚的地方应该就是参考文献看得实在不多，只草草读过几篇PostDoc推荐给我的文章，自己是没有主动地完整梳理过文献脉络的。\n面试评委们问的问题也都还比较友善，也可以看出比较重视我对研究计划本身的思考深入程度。这也算是我的幸运吧，平时参加组会、和PostDoc交流的次数都比较多，面试官的很多问题都是我们以前就注意到过的，比如在相机监测之前常用的监测手段、相机监测的bias等等。虽然没有全面地读过关于这些问题的文献，但是基于之前的听闻也能大概讲出些道理来。总体来说觉得并没有遇到太大的困难。\n对于全英文的面试还是有一些压力的，在这之前我可是连\u0026quot;agroforestry\u0026quot;这个单词都一点念不利索。不过有趣的是，我的导师让我在20号的一场Delphi meeting上面对着来自全世界各地的农业专家做了一个五分钟左右的文献综述汇报，还需要负责写好会议纪要，真的是一场压力和语言要求都巨大的经历。经过这一次”折磨“，等到在西湖大学的全英文面试的时候反而没有那么紧张了。虽然当时觉得，在准备PhD面试的同时还要准备一场专家会议，真的是压力山大（我导是真的……把我当成超人了啊\u0026#x1f615;），不过放到现在来看，也不算是一件坏事。另外，我一直感觉英文环境的好处是，它不像在母语环境下那样让人感受到强烈的等级和权威差异（不过我所感受到的样本自身也是有偏的，并不具有代表性，暂且按下不表），诸如在中文环境下需要纠结的”老师们/评委们(?)好“ ”恳请批评指正“之类的措辞，在英文环境下都被我以”非母语“、”水平差“之类的理由而选择性地忽略了，转而更加专注与如何将介绍的内容讲清楚。而评委教授们也很平易近人，并没有让我感受到扑面而来的权威感。\n接下来就是复试结果的漫长（心理意义上）等待。\nSept 26th 更新\n今天下午收到邮件通知，通过复试正式被录取为2023年的推免直博生。很兴奋，期待接下来数年在西湖的时光。\n","permalink":"http://localhost:1313/post/applying_phd/","summary":"\u003cp\u003e\u0026#x1f393;最近有一搭没一搭地在准备着西湖大学工学院2023年博士招生预推免的材料准备工作，虽然按理并不会遇到太大的困难，但是心里还是难免会有一些焦虑——毕竟这是关乎到接下来五年何去何从的事情。在某个焦虑而摸鱼的时刻决定来写一篇博客记录申请直博的经历和心路\u003cs\u003e（实际上是因为personal statement挤牙膏挤不出来了）\u003c/s\u003e，算是作为这一重时间节点的纪念。\u003c/p\u003e","title":"申博二三事"},{"content":"在实际应用SBM模型分析绿色发展效率的时候，发现面临着以下两个困难：\n指标实际可取值具有上边界； 不同指标之间存在重要性差异。 于是对经典的非期望产出SBM模型进行了修改，以解决上述问题。\u0026#x1f4d0;\n（传统非期望产出SBM模型见上一篇文章“非期望产出SBM模型的数学推演及Python实现”）\n添加指标取值范围 在工作中，我们把碳储量作为绿色发展的期望产出指标之一，而在一定的区域内，其所能达到的最高碳储量是有限的（最理想的状况是将全部建设用地面积都变成林地，从而实现区域内碳储量最大化，而这在现实中也是不可能的事情）。但是在原始的SBM模型中，所有投入和产出要素是没有上限的。这就导致在一些DMU中，SBM投射(SBM-projection)改进后的碳储量远远超出了该DMU理论上所能达到的碳储量。因此有必要对指标的取值范围添加更为严格的取值范围。\n原始的非期望产出SBM模型：\n$$ \\begin{aligned} \\min \u0026amp;\\rho=\\frac{1-\\frac1m\\sum_{i=1}^m\\left({s^-_i}/{x_{i0}}\\right)} {1+\\frac1{q_1+q_2}\\left[\\sum_{r_1=1}^{q_1}\\left({s^+_r}/{y_{r0}}\\right) + \\sum_{r=1}^{q_2}\\left({s^{+\u0026rsquo;}_r}/{z_{r0}}\\right)\\right]}\\\\ s.t. \u0026amp; \\vec x_0 = X\\vec\\lambda + \\pmb s^- \\\\ \u0026amp; \\vec y_0 = Y\\vec\\lambda - \\pmb s^+\\\\ \u0026amp;\\vec z_0=Z\\vec\\lambda+\\pmb s^{+\u0026rsquo;}\\\\ \u0026amp; \\vec\\lambda\\ge0,~\\pmb s^-\\ge0,\\pmb s^+\\ge 0 \\end{aligned} $$\n决策单元$DMU_0$的期望产出指标上限由向量$\\pmb l_{Y0}\\in R^{q_1\\times 1}$所决定，该决策单元在经过SBM投射优化后的期望产出亦不能超过$\\pmb l_{Y0}$，即 $$ \\pmb y_0 +\\pmb s^+ \\le \\pmb l_{Y0} $$ 由于期望产出在经过SBM投射优化之后是变大的，因此没有必要对其设置下边界。但是，投入和非期望产出指标在优化之后将更小，虽然SBM模型本身设置了大于零的下边界，但是这一边界可能还是不够精确，所以同理可以添加投入指标和非期望产出指标的下边界，满足 $$ \\begin{array} \\pmb x_0 - \\pmb s^- \\ge \\pmb l_{X0}\\\\ \\pmb z_0 - \\pmb s^{+\u0026rsquo;} \\ge \\pmb l_{Z0} \\end{array} $$ 综上，得到对松弛变量的约束条件： $$ \\begin{aligned} \\pmb s^- \u0026amp;\\le \\pmb x_0 - \\pmb l_{X0}\\\\ \\pmb s^+ \u0026amp;\\le -\\pmb y_0 + \\pmb l_{Y0}\\\\ \\pmb s^{+\u0026rsquo;} \u0026amp;\\le \\pmb z_0 - \\pmb l_{Z0} \\end{aligned} $$ 写进规划模型：\n$$ \\begin{aligned} \\min \u0026amp;\\rho=\\frac{1-\\frac1m\\sum_{i=1}^m\\left({s^-_i}/{x_{i0}}\\right)} {1+\\frac1{q_1+q_2}\\left[\\sum_{r_1=1}^{q_1}\\left({s^+_r}/{y_{r0}}\\right) + \\sum_{r=1}^{q_2}\\left({s^{+\u0026rsquo;}_r}/{z_{r0}}\\right)\\right]}\\\\ s.t. \u0026amp; \\pmb x_0 = X\\pmb\\lambda + \\pmb s^- \\\\ \u0026amp; \\pmb y_0 = Y\\pmb\\lambda - \\pmb s^+\\\\ \u0026amp; \\pmb z_0=Z\\pmb\\lambda+\\pmb s^{+\u0026rsquo;}\\\\ \u0026amp; 0\\le \\pmb s^- \\le \\pmb x_0 - \\pmb l_{X0}\\\\ \u0026amp; 0\\le \\pmb s^+ \\le -\\pmb y_0 + \\pmb l_{Y0}\\\\ \u0026amp; 0\\le \\pmb s^{+\u0026rsquo;} \\le \\pmb z_0 - \\pmb l_{Z0}\\\\ \u0026amp; \\pmb\\lambda\\ge0 \\end{aligned} $$\n在后续进行Charnes-Cooper转换的时候，松弛变量的不等式约束只需要在两侧都乘上$t$即可： $$ \\begin{aligned} \\min \u0026amp;\\rho=t-\\frac1m\\sum_{i=1}^m\\frac{S_i^-}{x_{i0}}\\\\ s.t. \u0026amp; 1=t+\\frac1{q_1+q_2}\\left(\\sum_{r=1}^{q_1}\\frac{S_r^+}{y_{r0}}+\\sum_{r=1}^{q_2}\\frac{S_r^{+\u0026rsquo;}}{y_{r0}}\\right)\\\\ \u0026amp; t\\pmb x_0=\\pmb X \\pmb \\Lambda + \\pmb S^-\\\\ \u0026amp; t\\pmb y_0=\\pmb Y \\pmb \\Lambda - \\pmb S^+\\\\ \u0026amp; t\\pmb z_0=\\pmb Z \\pmb \\Lambda + \\pmb S^{+\u0026rsquo;}\\\\ \u0026amp;0\\le \\pmb S^- \\le t(\\pmb x_0 - \\pmb l_{X0})\\\\ \u0026amp;0\\le \\pmb S^+ \\le t(-\\pmb y_0 + \\pmb l_{Y0})\\\\ \u0026amp;0\\le \\pmb S^{+\u0026rsquo;} \\le t(\\pmb z_0 - \\pmb l_{Z0})\\\\ \u0026amp; \\pmb \\Lambda\\ge0, t\\ge 0 \\end{aligned} $$ 在基于Python scipy.optimize库的线性规划中，这一约束体现在添加不等式条件参数A_ub, b_ub。\n添加指标权重 观察原始的目标函数： $$ \\rho=\\frac{1-\\frac1m\\sum_{i=1}^m\\left({s^-_i}/{x_{i0}}\\right)} {1+\\frac1{q_1+q_2}\\left[\\sum_{r_1=1}^{q_1}\\left({s^+_r}/{y_{r0}}\\right) + \\sum_{r=1}^{q_2}\\left({s^{+\u0026rsquo;}_r}/{z_{r0}}\\right)\\right]} $$ 可以看出，最终在分子上影响目标函数的是所有投入指标松弛变量占比的平均值；在分母上影响目标函数的是期望产出和非期望产出指标松弛变量占比的平均值。当指标之间存在重要性差异时，为每个指标添加权重系数$\\pmb w_x, \\pmb w_y, \\pmb w_z$，则目标函数改为\n$$ \\rho=\\frac{1-\\frac1{\\sum_{i=1}^m w_{xi}}\\sum_{i=1}^m (w_{xi}{s^-_i}/{x_{i0}) }} {1+\\frac1{\\sum_{r_1=1}^{q_1} w_{yr_1}+\\sum_{r_2=1}^{q_2} w_{zr_2}} \\left[\\sum_{r_1=1}^{q_1}\\left({w_{yr_1}s^+_r}/{y_{r0}}\\right) + \\sum_{r=1}^{q_2}\\left({w_{zr_2}s^{+\u0026rsquo;}_r}/{z_{r0}}\\right)\\right]} $$\n通过Charnes-Cooper转换后得到线性规划模型： $$ \\begin{aligned} \\min \u0026amp;\\rho=t-\\frac1{\\sum_{i=1}^m w_{xi}}\\sum_{i=1}^m\\frac{w_{xi}S_i^-}{x_{i0}}\\\\ s.t. \u0026amp; 1=t+\\frac1{\\sum_{r=1}^{q_1}w_{yr}+\\sum_{r=1}^{q_2}w_{zr}}\\left(\\sum_{r=1}^{q_1}\\frac{w_{yr}S_r^+}{y_{r0}}+\\sum_{r=1}^{q_2}\\frac{w_{zr}S_r^{+\u0026rsquo;}}{y_{r0}}\\right)\\\\ \u0026amp; t\\pmb x_0=\\pmb X \\pmb \\Lambda + \\pmb S^-\\\\ \u0026amp; t\\pmb y_0=\\pmb Y \\pmb \\Lambda - \\pmb S^+\\\\ \u0026amp; t\\pmb z_0=\\pmb Z \\pmb \\Lambda + \\pmb S^{+\u0026rsquo;}\\\\ \u0026amp; \\pmb \\Lambda\\ge0, t\\ge 0,\\pmb S^-\\ge0,\\pmb S^+\\ge0,\\pmb S^{+\u0026rsquo;}\\ge0 \\end{aligned} $$ 写成矩阵形式， $$ \\begin{aligned} \\min \u0026amp; \\rho=C\\cdot \\pmb X\\\\ s.t. \u0026amp; A\\cdot\\pmb X = b\\\\ \u0026amp; \\pmb X\\ge0 \\end{aligned} $$ 其中自变量为 $$ \\pmb X=\\left[ {\\color{red} \\lambda_1,\\lambda_2,\\dots,\\lambda_n,}t, {\\color{blue} S_1^-,S_2^-,\\dots,S_m^-,} {\\color{green} S_1^+,S_2^+,\\dots,S_{q_1}^+, S_1^{+\u0026rsquo;},S_2^{+\u0026rsquo;},\\dots,S_{q_2}^{+\u0026rsquo;}} \\right]^\\rm T, $$ 目标函数系数矩阵为 $$ C=\\left[ {\\color{red} 0,0,\\dots,0,}1,{\\color{blue} -\\frac{w_{x1}}{\\left(\\sum_{i=1}^m w_{xi}\\right)x_{10}},-\\frac{w_{x2}}{\\left(\\sum_{i=1}^m w_{xi}\\right)x_{20}},\\dots,-\\frac{w_{xm}}{\\left(\\sum_{i=1}^m w_{xi}\\right)x_{m0}}},{\\color{green}0,\\dots,0} \\right], $$ 约束条件方程系数为 $$ \\displaylines{ A=\\left[ \\begin{matrix} \\color{red} 0 \u0026amp; \\color{red}\\cdots \u0026amp; \\color{red}0 \u0026amp; 1 \u0026amp; \\color{blue}0 \u0026amp; \\color{blue}\\cdots \u0026amp; \\color{blue}0 \u0026amp; \\color{green}\\alpha_{1} \u0026amp; \\color{green}\\cdots \u0026amp; \\color{green}\\alpha_{q_1} \u0026amp; \\color{green}\\beta_{1} \u0026amp; \\color{green}\\dots \u0026amp; \\color{green}\\beta_{q_2}\\\\ \\\\ \\\\ \\color{red}x_{11} \u0026amp; \\color{red}\\cdots \u0026amp; \\color{red}x_{1n} \u0026amp; -x_{10} \u0026amp; \\color{blue}1 \u0026amp; \\color{blue}\\cdots \u0026amp; \\color{blue}0 \u0026amp; \\color{green}0 \u0026amp; \\color{green}\\cdots \u0026amp; \\color{green}0 \u0026amp; \\color{green}0 \u0026amp; \\color{green}\\cdots \u0026amp; \\color{green}0\\\\ \u0026amp; \\color{red}\\vdots \u0026amp;\u0026amp;\u0026amp;\u0026amp; \\color{blue}\\ddots \u0026amp;\u0026amp;\u0026amp; \\color{green}\\vdots \u0026amp;\u0026amp;\u0026amp; \\color{green}\\vdots\\\\ \\color{red}x_{m1} \u0026amp; \\color{red}\\cdots \u0026amp; \\color{red}x_{mn} \u0026amp; -x_{m0} \u0026amp; \\color{blue}0 \u0026amp; \\color{blue}\\cdots \u0026amp; \\color{blue}1 \u0026amp; \\color{green}0 \u0026amp; \\color{green}\\cdots \u0026amp; \\color{green}0 \u0026amp; \\color{green}0 \u0026amp; \\color{green}\\cdots \u0026amp; \\color{green}0\\\\ \\\\ \\\\ \\color{red}y_{11} \u0026amp; \\color{red}\\cdots \u0026amp; \\color{red}y_{1n} \u0026amp; -y_{10} \u0026amp; \\color{blue}0 \u0026amp; \\color{blue}\\cdots \u0026amp; \\color{blue}0 \u0026amp; \\color{green}-1 \u0026amp; \\color{green}\\cdots \u0026amp; \\color{green}0 \u0026amp; \\color{green}0 \u0026amp; \\color{green}\\cdots \u0026amp; \\color{green}0\\\\ \u0026amp; \\color{red}\\vdots \u0026amp;\u0026amp;\u0026amp;\u0026amp; \\color{blue}\\vdots \u0026amp;\u0026amp;\u0026amp; \\color{green}\\ddots \u0026amp;\u0026amp;\u0026amp; \\color{green}\\vdots\\\\ \\color{red}y_{q_11} \u0026amp; \\color{red}\\cdots \u0026amp; \\color{red}y_{q_1n} \u0026amp; -y_{q_10} \u0026amp; \\color{blue}0 \u0026amp; \\color{blue}\\cdots \u0026amp; \\color{blue}0 \u0026amp; \\color{green}0 \u0026amp; \\color{green}\\cdots \u0026amp; \\color{green}-1 \u0026amp; \\color{green}0 \u0026amp; \\color{green}\\cdots \u0026amp; \\color{green}0\\\\ \\\\ \\\\ \\color{red}z_{11} \u0026amp; \\color{red}\\cdots \u0026amp; \\color{red}z_{1n} \u0026amp; -z_{10} \u0026amp; \\color{blue}0 \u0026amp; \\color{blue}\\cdots \u0026amp; \\color{blue}0 \u0026amp; \\color{green}0 \u0026amp; \\color{green}\\cdots \u0026amp; \\color{green}0 \u0026amp; \\color{green}1 \u0026amp; \\color{green}\\cdots \u0026amp; \\color{green}0\\\\ \u0026amp; \\color{red}\\vdots \u0026amp;\u0026amp;\u0026amp;\u0026amp; \\color{blue}\\vdots \u0026amp;\u0026amp;\u0026amp; \\color{green}\\vdots \u0026amp;\u0026amp;\u0026amp; \\color{green}\\ddots\\\\ \\color{red}z_{q_21} \u0026amp; \\color{red}\\cdots \u0026amp; \\color{red}z_{q_2n} \u0026amp; -z_{q_20} \u0026amp; \\color{blue}0 \u0026amp; \\color{blue}\\cdots \u0026amp; \\color{blue}0 \u0026amp; \\color{green}0 \u0026amp; \\color{green}\\cdots \u0026amp; \\color{green}0 \u0026amp; \\color{green}0 \u0026amp; \\color{green}\\cdots \u0026amp; \\color{green}1\\\\ \\end{matrix} \\right],\\\\ \\alpha_{r} = \\frac{w_{yr}}{\\left(\\sum_{i=1}^{q_1}w_{yr}+\\sum_{i=1}^{q_2}w_{zr}\\right)y_{r0}}~\\left( r=1,2,\\dots,q_1\\right),\\\\ \\beta_{r} = \\frac{w_{zr}}{\\left(\\sum_{i=1}^{q_1}w_{yr}+\\sum_{i=1}^{q_2}w_{zr}\\right)z_{r0}}~\\left( r=1,2,\\dots,q_2\\right), } $$\n约束条件常数项为 $$ b=\\left[ 1,0,0,\\dots,0 \\right]^\\rm T $$\n","permalink":"http://localhost:1313/post/upper_bounds_and_weights_in_sbm/","summary":"\u003cp\u003e在实际应用SBM模型分析绿色发展效率的时候，发现面临着以下两个困难：\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e指标实际可取值具有上边界；\u003c/li\u003e\n\u003cli\u003e不同指标之间存在重要性差异。\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e于是对经典的非期望产出SBM模型进行了修改，以解决上述问题。\u0026#x1f4d0;\u003c/p\u003e","title":"在SBM模型中引入上边界和指标权重"},{"content":"带有非期望产出的SBM模型(slacks-based measure)可用于处理多个投入和产出变量的效率测度问题，可用于工业经济绿色发展效率的分析。在绿色发展分析中，需要同时考虑经济收益（期望产出）和负面环境效应（非期望产出）的问题，一方面要提高经济收益，另一方面需要减少污染排放，是投入、期望产出和非期望产出三方权衡的问题。1\n这个帖子记录了和非期望产出SBM模型苦苦斗争一个星期的学习成果。\n数学原理 DEA模型/CCR模型 DEA SBM模型是数据包络分析(Data Envelopment Analysis, DEA)的一种。在DEA模型中，假定存在$n$个可比决策单元(decision making units, DMU)，记为$DMU_j(j=1,2,\\dots,n)$；\n每个$DMU$有$m$种投入，记为$X_i(i=1,2,\\dots,m)$，每种投入的权重为$v_i$；\n有$q$种产出，记为$Y_r(r=1,2,\\dots,q)$，每种产出的权重为$u_r$.\n对第$k$个可比决策单元而言，其投入产出比（技术效率）为\n$$ H_k=\\frac{\\sum_{r=1}^qu_rY_{rk}}{\\sum_{i=1}^mv_iX_{ik}}， $$\n限定范围为$H_k\\in[0,1]$. 现要求在所有可比决策单元的效率均不超过$1$的条件下，调节权重$[v_1,v_2,\\dots,v_m]$和$[u_1,u_2,\\dots,u_q]$，使得被评价的单元$DMU_k$效率值最大化。即如下规划模型： $$ \\begin{aligned} \\max\u0026amp;~~ z=\\frac{\\sum_{r=1}^qu_rY_{rk}}{\\sum_{i=1}^mv_iX_{ik}}\\\\ s.t.\u0026amp;~~ \\frac{\\sum_{r=1}^qu_rY_{rj}}{\\sum_{i=1}^mv_iX_{ij}}\\le1~ (v_i\\ge0,u_r\\ge0)\\\\ \u0026amp;~~ i=1,2,\\dots,m;~r=1,2,\\dots,q;~j=1,2,\\dots,n \\end{aligned} $$\n该模型所确定的权重系数组合是对于$DMU_k$最有利的。由于$\\sum_{i=1}^mv_iX_{ik}\u0026gt;0$，模型的规划条件即为 $$ s.t.~~\\sum_{r=1}^qu_rY_{rj}-\\sum_{i=1}^mv_iX_{ij}\\le0; $$\n在上述线性规划模型中，所要求的是投入和产出项目的指标权重，在原始意义上就是$\\vec u$和$\\vec v$。模型指定了一个可比决策单元$DMU_k$，在规划过程中力求这个单元最终的效率评价达到最高。实际应用中，如何选择这个特殊的$DMU$必然会成为问题的关键。或许需要根据决策者的感性判断（或其他手段辅助），选定一个最优的决策单元，或者人为设置一个对照的“理想型”，将其视为效率最高的情形。\n投入导向CCR 令$t=\\left(\\sum_{i=1}^mv_iX_{ik}\\right)^{-1}$，则模型的目标函数为\n$$ \\max ~~ z=t\\sum_{r=1}^qu_rY_{rk}=\\sum_{r=1}^qtu_rY_{rk}, $$\n令$\\mu_{r}=tu_r, \\nu_{i}=tv_i$，根据$t$的定义可知$\\sum_{i=1}^m\\nu_iX_{ik}=1$；将规划条件两边同乘$t$，得到\n$$ s.t. ~~ \\sum_{r=1}^q\\mu_{r}Y_{rj}-\\sum_{i=1}^m\\nu_{i}X_{ij}\\le0. $$\n从而将非线性规划模型转换为线性规划模型：\n$$ \\begin{aligned} \\max \u0026amp;~~ z=\\sum_{r=1}^q\\mu_{r}Y_{rk}\\\\ s.t. \u0026amp;~~ \\sum_{r=1}^q\\mu_{r}Y_{rj}-\\sum_{i=1}^m\\nu_{i}X_{ij}\\le0~(\\mu_r\\ge0, \\nu_i\\ge0)\\\\ \u0026amp;~~ \\sum_{i=1}^m\\nu_iX_{ik}=1\\\\ \u0026amp;~~ i=1,2,\\dots,m;~r=1,2,\\dots,q;~j=1,2,\\dots,n \\end{aligned} $$\n其对偶模型为（对偶模型求解过程见文末）\n$$ \\begin{aligned} \\min \u0026amp; \\theta=\\sum_{j=1}^n\\frac{X_{mj}}{X_{mk}}\\lambda_j+\\lambda_{n+1}\\\\ s.t. \u0026amp; \\sum_{j=1}^n\\lambda_jX_{ij}\\le(\\theta+\\lambda_{n+1}) X_{ik}(\\lambda_j\\ge0)\\\\ \u0026amp; \\sum_{j=1}^n\\lambda_jY_{rj}\\ge Y_{rk}\\\\ \u0026amp; i=1,2,\\dots,m;r=1,2,\\dots,q;j=1,2,\\dots,n \\end{aligned} $$\n以上处理后得到的是投入导向的DEA模型。\n这里与常见的处理方式有点差异，因为在转化为标准形式的时候规划模型的自由度减1。\n产出导向CCR 同理，若在降低自变量自由度时采用$t=\\left(\\sum_{r=1}^qu_rY_{rk}\\right)^{-1}$，则可演算得到产出导向的DEA模型：\n$$ \\begin{aligned} \\min \u0026amp;~~ z=\\sum_{i=1}^m\\nu_{r}X_{ik}\\\\ s.t. \u0026amp;~~ \\sum_{r=1}^q\\mu_{r}Y_{rj}-\\sum_{i=1}^m\\nu_{i}X_{ij}\\le0~(\\mu_r\\ge0, \\nu_i\\ge0)\\\\ \u0026amp;~~ \\sum_{r=1}^q\\mu_rY_{rk}=1\\\\ \u0026amp;~~ i=1,2,\\dots,m;~r=1,2,\\dots,q;~j=1,2,\\dots,n \\end{aligned} $$\n其对偶模型为\n$$ \\begin{aligned} \\min \u0026amp;~~ \\phi=\\sum_{j=1}^n\\frac{Y_{qj}}{Y_{qk}}\\lambda_j+\\lambda_{n+1}\\\\ s.t. \u0026amp;~~ \\sum_{j=1}^n\\lambda_jY_{rj}\\le(\\theta+\\lambda_{n+1}) Y_{rk}~~(\\lambda_j\\ge0)\\\\ \u0026amp;~~ \\sum_{j=1}^n\\lambda_jX_{ij}\\ge X_{rk}\\\\ \u0026amp;~~ i=1,2,\\dots,m;~r=1,2,\\dots,q;~j=1,2,\\dots,n \\end{aligned} $$\nSBM模型 不带非期望产出的情形 在DEA模型中，线性规划的最终目的是使得$H_k$尽可能大，即$DMU_k$的产出效率尽可能高。虽然考虑到了多种产出的情形，但是每一种产出的权重都是正的($u_r\\ge0$) ，所以依然是要尽可能使得每一种产出都越高越好。当产出中存在非期望内容时，我们希望这些非期望的产出尽可能低，同时期望产出尽可能高。Kaoru Tone提出的SBM模型(slacks-based model)2可以处理这类非期望产出的问题。\n我们仍然以$X=(x_{ij})\\in R^{m\\times n}$表示实际投入，$Y=(y_{rj})\\in R^{q\\times n}$表示实际产出。在不带非期望产出的情况下，有可能存在的生产情形必然包括投入更多、产出更低的情况（即效率更低的情况总是能够实现的）：\n$$ P=\\left\\{ \\left(\\vec x,\\vec y\\right) ~|~ \\vec x\\ge X\\vec\\lambda,~\\vec y\\le Y\\vec\\lambda,~\\vec\\lambda\\ge\\vec0 \\right\\} $$\n其中$\\vec\\lambda$是$R^n$上的一个非负向量。\n$X$矩阵的每一列代表了一个可比决策单元，当$X$右乘一个$n$维向量后得到的是一个$m$维向量，$X\\vec\\lambda=\\left[ \\sum_{j=1}^nx_{ij}\\lambda_j \\right]_{m\\times1}$，可以视为由所有$DMU$按照$\\vec \\lambda$所规定的配比混合而成的新的生产投入组合。同理，$Y\\vec\\lambda$代表了所有$DMU$按照$\\vec \\lambda$所规定的配比混合而成的新的产出组合。$\\left(X\\vec\\lambda, Y\\vec\\lambda\\right)$就是所有实际生产情形线性混合而成的“虚拟生产情形”（基于规模报酬不变）。在这个“虚拟生产情形”的基础之上，更加浪费的生产情形必然是可行的，故采用上述形式定义有可能的生产情形。\n在这种定义下，默认了效率最高的生产情形暗含在实际生产情形通过线性组合所形成的参数空间范围之中。即我们不考虑生产效率远远超出现有技术水平的情形。\n具体地，用$(\\vec x_0,\\vec y_0)$来描述某一个$DMU_0$（从实际生产情形$X,Y$中而来）： $$ \\displaylines{ \\vec x_0=X\\vec\\lambda + \\pmb s^-\\ \\vec y_0=Y\\vec\\lambda - \\pmb s^+ } $$ 其中$\\pmb s^-\\ge0,\\pmb s^+\\ge 0$分别称为投入过量(input excess)和产出不足(output shortfall)，统一称为和投入和产出的松弛向量(slacks)。据此定义指标：\n$$ \\rho = \\frac{1-\\frac1m\\sum_{i=1}^m\\left({s^-_i}/{x_{i0}}\\right)}{1+\\frac1q\\sum_{r=1}^q\\left({s^+_r}/{y_{r0}}\\right)} $$\n该指标满足以下特性：\n每个$DMU$都有一个不同的$\\rho$ 随着投入和产出松弛向量$\\pmb s^-,\\pmb s^+$而单调变化 取值范围为$\\rho\\in\\left(0,1\\right]$ 为了表达$(\\vec x_0,\\vec y_0)$的效率，以$\\rho$指标构建SBM模型：\n$$ \\begin{aligned} \\min \u0026amp;~~\\rho=\\frac{1-\\frac1m\\sum_{i=1}^m\\left({s^-_i}/{x_{i0}}\\right)} {1+\\frac1q\\sum_{r=1}^q\\left({s^+_r}/{y_{r0}}\\right)}\\\\ s.t. \u0026amp;~~ \\vec x_0 = X\\vec\\lambda + \\pmb s^- \\\\ \u0026amp;~~ \\vec y_0 = Y\\vec\\lambda - \\pmb s^+\\\\ \u0026amp;~~ \\vec\\lambda\\ge0,~\\pmb s^-\\ge0,~\\pmb s^+\\ge 0 \\end{aligned} $$\n当$DMU_0$达到效率最优(SBM-efficient)时，满足 $$ \\rho^*=1,~\\pmb s^-=0,~\\pmb s^+=0 $$\n如何理解$DMU$效率最优等同于松弛变量均为零？在作者的理解中，认为SBM-efficient意味着该决策单元的任何优化都不会引起投入过量和产出不足。\n若有唯一的$\\vec\\lambda$，则确定唯一的$\\left(\\pmb s^-, \\pmb s^+\\right)\\sim\\left(\\vec x_0,\\vec y_0\\right)$关系。规划自变量为$\\left(\\pmb s^-, \\pmb s^+\\right)$，目的是使得$\\rho$尽可能小，即$\\pmb s^-$和$\\pmb s^+$都要尽可能大。这可以看成是一种对当下生产效率不信任的态度。\n当处于效率最优状态时，生产投入的要素配比恰到好处，此时进行任何调节都无法使得效率进一步提升。\n再将$\\vec\\lambda$也视为自变量，即尝试不同组合情况下的$DMU_0$，通过调整$\\vec\\lambda$可以进一步优化目标函数。\n**Charnes-Cooper transformation: **将目标函数的分子和分母都乘$t$，使得分母变为$1$，即\n$$ t=\\left[1+\\frac1q\\sum_{r=1}^q\\left(\\frac{s^+_r}{y_{r0}}\\right)\\right]^{-1}, $$\n从而目标函数变为\n$$ \\min~\\rho=t-\\frac1m\\sum_{i=1}^m\\frac{ts_i^-}{x_{i0}}. $$\n定义$\\pmb S^-=t\\pmb s^-,\\pmb S^+=t\\pmb s^+,\\pmb \\Lambda=t\\vec\\lambda$，则原非线性规划中的约束条件转换为 $$ \\begin{aligned} s.t. \u0026amp;~~ 1=t+\\frac1q\\sum_{r=1}^q\\frac{S_r^+}{y_{r0}}\\\\ \u0026amp;~~ t\\vec x_0=X\\pmb \\Lambda+\\pmb S^-\\\\ \u0026amp;~~ t\\vec y_0=Y\\pmb \\Lambda-\\pmb S^+\\\\ \u0026amp;~~ \\Lambda\\ge0,\\pmb S^-\\ge0, \\pmb S^+\\ge0,t\\ge0 \\end{aligned} $$ 最后完整地写一下转换后的线性规划（多项式形式）：\n$$ \\begin{aligned} \\min \u0026amp;~~\\rho=t-\\frac1m\\sum_{i=1}^m\\frac{ts_i^-}{x_{i0}}\\\\ s.t. \u0026amp;~~ 1=t+\\frac1q\\sum_{r=1}^q\\frac{S_r^+}{y_{r0}}\\\\ \u0026amp;~~ tx_{i0}=\\sum_{j=1}^nx_{ij}\\Lambda_j + S_i^- \\\\ \u0026amp;~~ ty_{r0}=\\sum_{j=1}^n y_{rj}\\Lambda_j-S_r^+ \\\\ \u0026amp;~~ \\Lambda_j\\ge0,S_i^-\\ge0, S_r^+\\ge0,t\\ge0\\\\ \u0026amp;~~ i=1,2,\\dots,m;r=1,2,\\dots,q;j=1,2,\\dots,n \\end{aligned} $$\n通过线性规划的可行解$\\left(\\rho^*,\\vec\\Lambda^*,t^*,\\pmb S^{-*}, \\pmb S^{+*}\\right)$，可以解出原型的可行解$\\left(\\rho^*,\\vec\\lambda^*,\\pmb s^{-*}, \\pmb s^{+*}\\right)$。\n若$\\rho^*=1$，则称该$DMU$为SBM-efficient，此时$\\pmb s^{-*}=0,\\pmb s^{+*}=0$； 若$\\rho^*\u0026lt;1$，则称该$DMU$为SBM-inefficient，对于一个SBM-inefficient的决策单元（假设为$DMU_k$），其投入和产出满足：\n$$ \\displaylines{ \\vec x_k = X\\vec\\lambda^* + \\pmb s^{-*}\\\\ \\vec y_k = Y\\vec\\lambda^* - \\pmb s^{+*} } $$\n由于得到了投入过量和产出不足的具体数值，因此我们可以对该可比决策单元进行优化，称为SBM投射(SBM-projection)：\n$$ \\displaylines{ \\vec x_k \\leftarrow \\vec x_k - \\pmb s^{-*}\\\\ \\vec y_k \\leftarrow \\vec y_k + \\pmb s^{+*} } $$\n带有非期望产出的情形 如果我们考虑到非期望产出的情形3，这些非期望产出在低效情况下的情形并非产出不足，而是“产出过多”，因此需要引入新的松弛向量$\\pmb s^{+\u0026rsquo;}$以规范非期望产出。记$Y$为实际期望产出，$Z$为实际非期望产出，分别有$q_1,q_2$个。生产可能性中也应区分期望产出和非期望产出，即$(\\vec x_0, \\vec y_0,\\vec z_0)$，其中 $$ \\vec z_0=Z\\vec\\lambda + \\pmb s^{+\u0026rsquo;}. $$ 同理以$\\rho$指标构建SBM模型：\n$$ \\begin{aligned} \\min \u0026amp;~~\\rho=\\frac{1-\\frac1m\\sum_{i=1}^m\\left({s^-_i}/{x_{i0}}\\right)} {1+\\frac1{q_1+q_2}\\left[\\sum_{r_1=1}^{q_1}\\left({s^+_r}/{y_{r0}}\\right) + \\sum_{r=1}^{q_2}\\left({s^{+\u0026rsquo;}_r}/{z_{r0}}\\right)\\right]}\\\\ s.t. \u0026amp;~~ \\vec x_0 = X\\vec\\lambda + \\pmb s^- \\\\ \u0026amp;~~ \\vec y_0 = Y\\vec\\lambda - \\pmb s^+\\\\ \u0026amp;~~\\vec z_0=Z\\vec\\lambda+\\pmb s^{+\u0026rsquo;}\\\\ \u0026amp;~~ \\vec\\lambda\\ge0,~\\pmb s^-\\ge0,~\\pmb s^+\\ge 0 \\end{aligned} $$\n当某一个$DMU$达到效率最优时，\n$$ \\rho^*=1,~\\pmb s^-=0,~\\pmb s^+=0,~\\pmb s^{+\u0026rsquo;}=0. $$\n通过Charnes-Cooper转换，得到线性规划模型： $$ \\begin{aligned} \\min \u0026amp;~~\\rho=t-\\frac1m\\sum_{i=1}^m\\frac{S_i^-}{x_{i0}}\\\\ s.t. \u0026amp;~~ 1=t+\\frac1{q_1+q_2}\\left(\\sum_{r=1}^{q_1}\\frac{S_r^+}{y_{r0}}+\\sum_{r=1}^{q_2}\\frac{S_r^{+\u0026rsquo;}}{y_{r0}}\\right)\\\\ \u0026amp;~~ tx_{i0}=\\sum_{j=1}^nx_{ij}\\Lambda_j + S_i^- ~(i=1,2,\\dots,m)\\\\ \u0026amp;~~ ty_{r0}=\\sum_{j=1}^n y_{rj}\\Lambda_j-S_r^+ ~(r=1,2,\\dots,q_1)\\\\ \u0026amp;~~ tz_{r0}=\\sum_{j=1}^n z_{rj}\\Lambda_j-S_r^+ ~(r=1,2,\\dots,q_2)\\\\ \u0026amp;~~ \\Lambda_j\\ge0,S_i^-\\ge0, S_r^+\\ge0,t\\ge0 \\end{aligned} $$ 由线性规划的可行解$\\left(\\rho^*,\\vec\\Lambda^*,t^*,\\pmb S^{-*}, \\pmb S^{+*}, \\pmb S^{+\u0026rsquo;*}\\right)$，可以解出原始模型的可行解$\\left(\\rho^*,\\vec\\lambda^*,\\pmb s^{-*}, \\pmb s^{+*}, \\pmb s^{+\u0026rsquo;*}\\right)$，\n$$ \\pmbλ^* = \\frac{\\pmbΛ^*}{t^*},~\\pmb s^{-*}=\\frac{\\pmb S^{-*}}{t^*} ,~\\pmb s^{+*}=\\frac{\\pmb S^{+*}}{t^*} ,~\\pmb s^{+\u0026rsquo;*}=\\frac{\\pmb S^{+\u0026rsquo;*}}{t^*} $$\n若$\\rho^*=1$，则称该$DMU$为SBM-efficient，此时$\\pmb s^{-*}=0, \\pmb s^{+*}=0, \\pmb s^{+\u0026rsquo;*}=0$；\n若$\\rho^*\u0026lt;1$，则称该$DMU$为SBM-inefficient，对于一个SBM-inefficient的决策单元（假设为$DMU_k$），其投入和产出满足：\n$$ \\displaylines{ \\vec x_k = X\\vec\\lambda^* + \\pmb s^{-*}\\\\ \\vec y_k = Y\\vec\\lambda^* - \\pmb s^{+*}\\\\ \\vec z_k = Z\\vec\\lambda^* + \\pmb s^{+\u0026rsquo;*} } $$\n由于得到了投入过量和产出不足的具体数值，因此我们可以对该可比决策单元进行优化，称为SBM投射(SBM-projection)： $$ \\displaylines{ \\vec x_k \\leftarrow \\vec x_k - \\pmb s^{-*}\\\\ \\vec y_k \\leftarrow \\vec y_k + \\pmb s^{+*}\\\\ \\vec z_k \\leftarrow \\vec z_k - \\pmb s^{+\u0026rsquo;*} } $$\nPython代码实现 为了便于编程，我们将以上规划问题写成矩阵形式， $$ \\begin{aligned} \\min \u0026amp;~~ \\rho=C\\cdot \\pmb X\\\\ s.t. \u0026amp;~~ A\\cdot\\pmb X = b\\\\ \u0026amp;~~ \\pmb X\\ge0 \\end{aligned} $$ 其中自变量为 $$ \\pmb X=\\left[ {\\color{red} \\lambda_1,\\lambda_2,\\dots,\\lambda_n,}~~t,~~ {\\color{blue} S_1^-,S_2^-,\\dots,S_m^-,}~~ {\\color{green} S_1^+,S_2^+,\\dots,S_{q_1}^+,~~ S_1^{+\u0026rsquo;},S_2^{+\u0026rsquo;},\\dots,S_{q_2}^{+\u0026rsquo;}} \\right]^\\rm T, $$ 目标函数系数矩阵为 $$ C=\\left[ {\\color{red} 0,0,\\dots,0,}~~1,~~{\\color{blue} -\\frac{1}{mx_{10}},-\\frac{1}{mx_{20}},\\dots,-\\frac{1}{mx_{m0}}},~~{\\color{green}0,\\dots,0} \\right], $$ 约束条件方程系数为 $$ \\displaylines{ A=\\left[ \\begin{matrix} \\color{red} 0 \u0026amp; \\color{red}\\cdots \u0026amp; \\color{red}0 \u0026amp; 1 \u0026amp; \\color{blue}0 \u0026amp; \\color{blue}\\cdots \u0026amp; \\color{blue}0 \u0026amp; \\color{green}\\alpha_{1} \u0026amp; \\color{green}\\cdots \u0026amp; \\color{green}\\alpha_{q_1} \u0026amp; \\color{green}\\beta_{1} \u0026amp; \\color{green}\\dots \u0026amp; \\color{green}\\beta_{q_2}\\\\ \\\\ \\\\ \\color{red}x_{11} \u0026amp; \\color{red}\\cdots \u0026amp; \\color{red}x_{1n} \u0026amp; -x_{10} \u0026amp; \\color{blue}1 \u0026amp; \\color{blue}\\cdots \u0026amp; \\color{blue}0 \u0026amp; \\color{green}0 \u0026amp; \\color{green}\\cdots \u0026amp; \\color{green}0 \u0026amp; \\color{green}0 \u0026amp; \\color{green}\\cdots \u0026amp; \\color{green}0\\\\ \u0026amp; \\color{red}\\vdots \u0026amp;\u0026amp;\u0026amp;\u0026amp; \\color{blue}\\ddots \u0026amp;\u0026amp;\u0026amp; \\color{green}\\vdots \u0026amp;\u0026amp;\u0026amp; \\color{green}\\vdots\\\\ \\color{red}x_{m1} \u0026amp; \\color{red}\\cdots \u0026amp; \\color{red}x_{mn} \u0026amp; -x_{m0} \u0026amp; \\color{blue}0 \u0026amp; \\color{blue}\\cdots \u0026amp; \\color{blue}1 \u0026amp; \\color{green}0 \u0026amp; \\color{green}\\cdots \u0026amp; \\color{green}0 \u0026amp; \\color{green}0 \u0026amp; \\color{green}\\cdots \u0026amp; \\color{green}0\\\\ \\\\ \\\\ \\color{red}y_{11} \u0026amp; \\color{red}\\cdots \u0026amp; \\color{red}y_{1n} \u0026amp; -y_{10} \u0026amp; \\color{blue}0 \u0026amp; \\color{blue}\\cdots \u0026amp; \\color{blue}0 \u0026amp; \\color{green}-1 \u0026amp; \\color{green}\\cdots \u0026amp; \\color{green}0 \u0026amp; \\color{green}0 \u0026amp; \\color{green}\\cdots \u0026amp; \\color{green}0\\\\ \u0026amp; \\color{red}\\vdots \u0026amp;\u0026amp;\u0026amp;\u0026amp; \\color{blue}\\vdots \u0026amp;\u0026amp;\u0026amp; \\color{green}\\ddots \u0026amp;\u0026amp;\u0026amp; \\color{green}\\vdots\\\\ \\color{red}y_{q_11} \u0026amp; \\color{red}\\cdots \u0026amp; \\color{red}y_{q_1n} \u0026amp; -y_{q_10} \u0026amp; \\color{blue}0 \u0026amp; \\color{blue}\\cdots \u0026amp; \\color{blue}0 \u0026amp; \\color{green}0 \u0026amp; \\color{green}\\cdots \u0026amp; \\color{green}-1 \u0026amp; \\color{green}0 \u0026amp; \\color{green}\\cdots \u0026amp; \\color{green}0\\\\ \\\\ \\\\ \\color{red}z_{11} \u0026amp; \\color{red}\\cdots \u0026amp; \\color{red}z_{1n} \u0026amp; -z_{10} \u0026amp; \\color{blue}0 \u0026amp; \\color{blue}\\cdots \u0026amp; \\color{blue}0 \u0026amp; \\color{green}0 \u0026amp; \\color{green}\\cdots \u0026amp; \\color{green}0 \u0026amp; \\color{green}1 \u0026amp; \\color{green}\\cdots \u0026amp; \\color{green}0\\\\ \u0026amp; \\color{red}\\vdots \u0026amp;\u0026amp;\u0026amp;\u0026amp; \\color{blue}\\vdots \u0026amp;\u0026amp;\u0026amp; \\color{green}\\vdots \u0026amp;\u0026amp;\u0026amp; \\color{green}\\ddots\\\\ \\color{red}z_{q_21} \u0026amp; \\color{red}\\cdots \u0026amp; \\color{red}z_{q_2n} \u0026amp; -z_{q_20} \u0026amp; \\color{blue}0 \u0026amp; \\color{blue}\\cdots \u0026amp; \\color{blue}0 \u0026amp; \\color{green}0 \u0026amp; \\color{green}\\cdots \u0026amp; \\color{green}0 \u0026amp; \\color{green}0 \u0026amp; \\color{green}\\cdots \u0026amp; \\color{green}1\\\\ \\end{matrix} \\right],\\\\ \\alpha_{r} = \\frac{1}{\\left(q_1+q_2\\right)y_{r0}}~\\left( r=1,2,\\dots,q_1\\right),\\\\ \\beta_{r} = \\frac{1}{\\left(q_1+q_2\\right)z_{r0}}~\\left( r=1,2,\\dots,q_2\\right), } $$\n约束条件常数项为 $$ b=\\left[ 1,~~0,0,\\dots,0 \\right]^\\rm T $$\n代码结构来自wonder1322的博客\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 import pandas as pd import scipy.optimize as op import numpy as np def sbmeff2(input_variable, desirable_output, undesirable_output, dmu, data, method = \u0026#39;revised simplex\u0026#39;): \u0026#34;\u0026#34;\u0026#34;用于求解sbm模型 Parameters: ----------- input_variable: 投入[v1,v2,v3,...] desirable_output: 期望产出[v1,v2,v3,...] undesirable_output: 非期望产出[v1,v2,v3,...] dmu: 决策单元 data: 主数据 method: 求解方法.默认\u0026#39;revised simplex\u0026#39;,可选\u0026#39;interior-point\u0026#39; Return: ------ res : DataFrame 结果数据框[dmu\tTE\tslack...] \u0026#34;\u0026#34;\u0026#34; res = pd.DataFrame(columns = [\u0026#39;dmu\u0026#39;,\u0026#39;TE\u0026#39;], index = data.index) res[\u0026#39;dmu\u0026#39;] = data[dmu] ## lambda有dmu个数个，S有变量个数个 dmu_counts = data.shape[0] ## 投入个数 m = len(input_variable) ## 期望产出个数 s1 = len(desirable_output) ## 非期望产出个数 s2 = len(undesirable_output) ## x[:dmu_counts] 为lambda ## x[dmu_counts : dmu_counts+1] 为 t ## x[dmu_counts+1 : dmu_counts + m + 1] 为投入slack ## x[dmu_counts+ 1 + m : dmu_counts + 1 + m + s1] 为期望产出slack ## x[dmu_counts + 1 + m + s1 :] 为非期望产出slack total = dmu_counts + m + s1 + s2 + 1 cols = input_variable + desirable_output + undesirable_output newcols = [] for j in cols: newcols.append(j+\u0026#39;_slack\u0026#39;) res[j+\u0026#39;_slack\u0026#39;] = np.nan for i in range(dmu_counts): ## 优化目标：目标函数的系数矩阵 c = [0]*dmu_counts + [1] + list(-1 / (m*data.loc[i, input_variable])) + [0] * (s1+s2) ## 约束条件：约束方程的系数矩阵 A_eq = [[0]*dmu_counts + [1] + [0]*m + list(1/((s1+s2)*data.loc[i, desirable_output])) + list(1/((s1+s2)*data.loc[i, undesirable_output]))] ## 约束条件（1）：投入松弛变量为正 for j1 in range(m): list1 = [0] * m list1[j1] = 1 eq1 = list(data[input_variable[j1]]) + [-data.loc[i ,input_variable[j1]]] + list1 + [0]*(s1+s2) A_eq.append(eq1) ## 约束条件（2）：期望产出松弛变量为正 for j2 in range(s1): list2 = [0] * s1 list2[j2] = -1 eq2 = list(data[desirable_output[j2]]) + [-data.loc[i, desirable_output[j2]]] + [0]*m + list2 + [0]*s2 A_eq.append(eq2) ## 约束条件（3）：非期望产出松弛变量为正 for j3 in range(s2): list3 = [0] * s2 list3[j3] = 1 eq3 = list(data[undesirable_output[j3]]) + [-data.loc[i, undesirable_output[j3]]] + [0]*(m+s1) + list3 A_eq.append(eq3) ## 约束条件：常数向量 b_eq = [1] + [0]*(m+s1+s2) bounds = [(0, None)]*total ## 约束边界为零 ## 求解 op1 = op.linprog(c = c,A_eq=A_eq,b_eq=b_eq,bounds=bounds,method = method) res.loc[i, \u0026#39;TE\u0026#39;] = op1.fun res.loc[i, newcols] = op1.x[dmu_counts+1 :] return res 补充：求解对偶模型的过程 线性规划的矩阵形式 学习SBM模型的时候遇到了对偶规划这一步骤，之前没有接触过，在B站上找了一个教程对照着推导了一遍。\n原始的线性规划模型，自变量是$\\vec \\mu=[\\mu_1, \\mu_2, \\dots,\\mu_q],\\vec\\nu=[\\nu_1,\\nu_2,\\dots,\\nu_m]$。\n注意：虽然规划模型中有$X$、$Y$，但是这是代表可比决策单元的投入量和产出量的，是已知的数据，所以并不是变量。 $$ \\begin{aligned} \\max \u0026amp;~~ z=\\sum_{r=1}^q\\mu_{r}Y_{rk}\\\\ s.t. \u0026amp;~~ \\sum_{r=1}^q\\mu_{r}Y_{rj}-\\sum_{i=1}^m\\nu_{i}X_{ij}\\le0~(\\mu_r\\ge0, \\nu_i\\ge0)\\\\ \u0026amp;~~ \\sum_{i=1}^m\\nu_iX_{ik}=1\\\\ \u0026amp;~~ i=1,2,\\dots,m;~r=1,2,\\dots,q;~j=1,2,\\dots,n \\end{aligned} $$ 先转换为矩阵形式，自变量向量记为$\\pmb X$， $$ \\begin{aligned} \\max \u0026amp;~~ Z=C\\cdot \\pmb X\\\\ s.t. \u0026amp;~~ A\\cdot\\pmb X\\le b\\\\ \u0026amp;~~ \\pmb X\\ge0 \\end{aligned} $$ 其中由于等式$\\sum_{i=1}^m\\nu_iX_{ik}=1$，导致自变量的自由度减1，这里剔除$\\nu_m$，即 $$ \\pmb X=\\left[\\mu_1, \\mu_2, \\dots,\\mu_q,\\nu_1,\\nu_2,\\dots,\\nu_{m-1}\\right]^\\rm T. $$ 目标函数的系数向量为 $$ C=\\left[ Y_{1k}, Y_{2k}, \\dots,Y_{qk},0,0,\\dots,0 \\right], $$ 其中有$m-1$个$0$。\n除了要满足$\\pmb X\\ge0$以外，还应保证$\\nu_m\\ge0$，即 $$ \\nu_m=\\frac{1-\\sum_{i=1}^{m-1}\\nu_iX_{ik}}{X_{mk}}\\ge0 \\Leftrightarrow \\sum_{i=1}^{m-1}\\nu_iX_{ik}\\le1. $$ 对于模型中的主要约束条件，消去$\\nu_m$后得到 $$ \\sum_{r=1}^q\\mu_{r}Y_{rj}+ \\sum_{i=1}^{m-1}\\nu_{i}\\left(\\frac{X_{ik}X_{mj}}{X_{mk}} -X_{ij}\\right)\\le \\frac{X_{mj}}{X_{mk}}, j=1,2,\\dots,n. $$ 以上两式整合得到$A\\cdot\\pmb X\\le b$，则\n$$ \\displaylines{ A_{(n+1)\\times (q+m-1)}= \\left[ \\begin{matrix} Y_{11} \u0026amp; Y_{21} \u0026amp; \\cdots \u0026amp; Y_{q1} \u0026amp; \\alpha_{11} \u0026amp; \\alpha_{21} \u0026amp; \\cdots \u0026amp; \\alpha_{m-1,1}\\\\ Y_{12} \u0026amp; Y_{22} \u0026amp; \\cdots \u0026amp; Y_{q2} \u0026amp; \\alpha_{12} \u0026amp; \\alpha_{22} \u0026amp; \\cdots \u0026amp; \\alpha_{m-1,2}\\\\ \u0026amp;\u0026amp;\\vdots\u0026amp;\u0026amp;\u0026amp;\u0026amp;\\vdots\\\\ Y_{1n} \u0026amp; Y_{2n} \u0026amp; \\cdots \u0026amp; Y_{qn} \u0026amp; \\alpha_{1n} \u0026amp; \\alpha_{2n} \u0026amp; \\cdots \u0026amp; \\alpha_{m-1,n}\\\\ 0 \u0026amp; 0 \u0026amp; \\cdots \u0026amp; 0 \u0026amp; X_{1k} \u0026amp; X_{2k} \u0026amp; \\cdots \u0026amp; X_{m-1,k} \\end{matrix} \\right],\\\\ {\\rm where}~\\alpha_{ij} = \\left(\\frac{X_{ik}X_{mj}}{X_{mk}} -X_{ij}\\right),b=\\left[ \\frac{X_{m1}}{X_{mk}}, \\frac{X_{m2}}{X_{mk}}, \\dots, \\frac{X_{mn}}{X_{mk}},1 \\right]^\\rm T } $$\n至此得到矩阵形式的全部系数。\n线性规划的对偶形式 这里补充一下关于线性规划问题转换为其对偶问题的数学推导4。已知有如下线性规划 $$ \\begin{aligned} {\\pmb P:~~}\\max \u0026amp;~~ Z=C\\cdot \\pmb X\\\\ s.t. \u0026amp;~~ A\\cdot\\pmb X\\le b\\\\ \u0026amp;~~ \\pmb X\\ge0 \\end{aligned} $$ 的对偶形式为 $$ \\begin{aligned} {\\pmb D:~~}\\min \u0026amp;~~ W={\\pmb Y}^{\\rm T}\\cdot b\\\\ s.t. \u0026amp;~~ A^{\\rm T}\\cdot {\\pmb Y}\\ge C^{\\rm T}\\\\ \u0026amp;~~ \\pmb Y\\ge0 \\end{aligned} $$ $\\pmb D$问题的自变量为$\\pmb Y=[\\lambda_1,\\lambda_2,\\dots,\\lambda_{n+1}]^\\rm T$，目标函数展开后为 $$ W={\\pmb Y}^{\\rm T}\\cdot b=\\sum_{j=1}^n\\frac{X_{mj}}{X_{mk}}\\lambda_j+\\lambda_{n+1}. $$ 主要约束条件展开后为 $$ \\begin{aligned} \u0026amp; \\sum_{j=1}^n\\lambda_j Y_{rj}\\ge Y_{rk}\\\\ \u0026amp; \\sum_{j=1}^n \\lambda_j \\left( \\frac{X_{ik}X_{mj}}{X_{mk}}-X_{ij} \\right)\\ge0 \\\\ \u0026amp;r=1,2,\\dots,q;~i=1,2,\\dots,m \\end{aligned} $$ 将目标函数代入第二个不等式，得到 $$ \\sum_{j=1}^n\\lambda_jX_{ij}\\le X_{ik}\\left(\\lambda_{n+1}+W\\right). $$ 以上对偶规划模型的多项式形式如下所示： $$ \\begin{aligned} \\min \u0026amp;~~ W=\\sum_{j=1}^n\\frac{X_{mj}}{X_{mk}}\\lambda_j+\\lambda_{n+1} \\\\ s.t. \u0026amp;~~ \\sum_{j=1}^n\\lambda_j Y_{rj}\\ge Y_{rk}~(\\lambda_j\\ge0)\\\\ \u0026amp;~~ \\sum_{j=1}^n\\lambda_jX_{ij}\\le X_{ik}\\left(\\lambda_{n+1}+W\\right)\\\\ \u0026amp;~~ i=1,2,\\dots,m;~r=1,2,\\dots,q;~j=1,2,\\dots,n \\end{aligned} $$\n李成宇. 中国工业绿色发展质量测度及影响因素研究[D]. 山东科技大学, 2020. DOI: 10.27275/d.cnki.gsdku.2020.000319.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nTone, K. (2001). A slacks-based measure of efficiency in data envelopment analysis. European Journal of Operational Research, 130(3), 498-509. DOI: 10.1016/S0377-2217(01)00324-1\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n带有非期望产出的SBM模型（python）wonder1322的博客 - CSDN博客 非期望产出的sbm模型\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n线性规划的对偶模型 hongmofang10的博客 - CSDN博客 对偶模型\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"http://localhost:1313/post/undesirable_sbm_in_python/","summary":"带有非期望产出的SBM模型(slacks-based measure)可用于处理多个投入和产出变量的效率测度问题，可用于工业经济绿色发展效率的分析。在绿色发展分析中，需要同时考虑经济收益（期望产出）和负面环境效应（非期望产出）的问题，一方面要提高经济收益，另一方面需要减少污染排放，是投入、期望产出和非期望产出三方权衡的问题。1\n这个帖子记录了和非期望产出SBM模型苦苦斗争一个星期的学习成果。\n数学原理 DEA模型/CCR模型 DEA SBM模型是数据包络分析(Data Envelopment Analysis, DEA)的一种。在DEA模型中，假定存在$n$个可比决策单元(decision making units, DMU)，记为$DMU_j(j=1,2,\\dots,n)$；\n每个$DMU$有$m$种投入，记为$X_i(i=1,2,\\dots,m)$，每种投入的权重为$v_i$；\n有$q$种产出，记为$Y_r(r=1,2,\\dots,q)$，每种产出的权重为$u_r$.\n对第$k$个可比决策单元而言，其投入产出比（技术效率）为\n$$ H_k=\\frac{\\sum_{r=1}^qu_rY_{rk}}{\\sum_{i=1}^mv_iX_{ik}}， $$\n限定范围为$H_k\\in[0,1]$. 现要求在所有可比决策单元的效率均不超过$1$的条件下，调节权重$[v_1,v_2,\\dots,v_m]$和$[u_1,u_2,\\dots,u_q]$，使得被评价的单元$DMU_k$效率值最大化。即如下规划模型： $$ \\begin{aligned} \\max\u0026amp;~~ z=\\frac{\\sum_{r=1}^qu_rY_{rk}}{\\sum_{i=1}^mv_iX_{ik}}\\\\ s.t.\u0026amp;~~ \\frac{\\sum_{r=1}^qu_rY_{rj}}{\\sum_{i=1}^mv_iX_{ij}}\\le1~ (v_i\\ge0,u_r\\ge0)\\\\ \u0026amp;~~ i=1,2,\\dots,m;~r=1,2,\\dots,q;~j=1,2,\\dots,n \\end{aligned} $$\n该模型所确定的权重系数组合是对于$DMU_k$最有利的。由于$\\sum_{i=1}^mv_iX_{ik}\u0026gt;0$，模型的规划条件即为 $$ s.t.~~\\sum_{r=1}^qu_rY_{rj}-\\sum_{i=1}^mv_iX_{ij}\\le0; $$\n在上述线性规划模型中，所要求的是投入和产出项目的指标权重，在原始意义上就是$\\vec u$和$\\vec v$。模型指定了一个可比决策单元$DMU_k$，在规划过程中力求这个单元最终的效率评价达到最高。实际应用中，如何选择这个特殊的$DMU$必然会成为问题的关键。或许需要根据决策者的感性判断（或其他手段辅助），选定一个最优的决策单元，或者人为设置一个对照的“理想型”，将其视为效率最高的情形。\n投入导向CCR 令$t=\\left(\\sum_{i=1}^mv_iX_{ik}\\right)^{-1}$，则模型的目标函数为\n$$ \\max ~~ z=t\\sum_{r=1}^qu_rY_{rk}=\\sum_{r=1}^qtu_rY_{rk}, $$\n令$\\mu_{r}=tu_r, \\nu_{i}=tv_i$，根据$t$的定义可知$\\sum_{i=1}^m\\nu_iX_{ik}=1$；将规划条件两边同乘$t$，得到\n$$ s.t. ~~ \\sum_{r=1}^q\\mu_{r}Y_{rj}-\\sum_{i=1}^m\\nu_{i}X_{ij}\\le0. $$\n从而将非线性规划模型转换为线性规划模型：\n$$ \\begin{aligned} \\max \u0026amp;~~ z=\\sum_{r=1}^q\\mu_{r}Y_{rk}\\\\ s.t. \u0026amp;~~ \\sum_{r=1}^q\\mu_{r}Y_{rj}-\\sum_{i=1}^m\\nu_{i}X_{ij}\\le0~(\\mu_r\\ge0, \\nu_i\\ge0)\\\\ \u0026amp;~~ \\sum_{i=1}^m\\nu_iX_{ik}=1\\\\ \u0026amp;~~ i=1,2,\\dots,m;~r=1,2,\\dots,q;~j=1,2,\\dots,n \\end{aligned} $$\n其对偶模型为（对偶模型求解过程见文末）","title":"非期望产出SBM模型的数学推演及Python实现"},{"content":"这篇期末小记从建立文章题目到真正开始动笔之间过了一个月之久。考试周那段天天熬夜通宵，昏天黑地的日子，也已经在半个月前随着最后一场考试的交卷而结束了。这一个月里发生了很多变化。完成了本科期间最后一门专业课考试，告别了相伴两年的工高班的同学，半只脚踏进了西湖大学的实验室……虽然没有正式毕业，但是我的本科生活——或者说，那些和同学一起坐在教室里听老师们讲课的生活——似乎真的已经结束了。一个月前我就知道将发生很多变化，那时隐隐或许期待着改变后的焕然新生；一个月后，这些变化都如预期一样地发生了，却是以一种忙碌中略带麻木的方式。\n现在我知道这种麻木的来源了。这是一段丢失了仪式感的变化时期。工高班结课的那个玉泉的星期天，最后一次交卷的那个下午，以及踏进云栖的大门、带着仪器走向田野的那个傍晚……这些曾经一直预期的、值得纪念的时刻，当他们真正来临的时候，我并没有像期待的那样给予他们应有的仪式感。\n记得工高班结课之后，看到同学发在朋友圈里发出工高班两年前后的合照对比。我和糯米开玩笑说，在工高的两年我的发量居然不减反增，真是见了鬼了。糯米问我怎么不也发一条朋友圈纪念一下。我摇摇头说太忙了没有心思。后来发现，和糯米开的这句玩笑是我为自己的工高班经历留下的唯一一场简短的仪式。\n我总是想：“现在太忙了，等之后空下来了就可以了。”但其实那时候的我又何尝不知道，“空下来”是一件多么虚幻的事情。而所谓“太忙了”，或许也只是为自己内心的焦躁和害怕找的借口而已。我害怕自己将永远被困在这种机械的忙碌生活中。而为之后的自由时间预留一些事情，仿佛这种日后的自由就会变得真实一些、可靠一些。我靠着这种幻想来支持自己继续忙碌下去。\n一个月前某一个熬夜的凌晨两点，我打开博客敲下了“期末小记”这一行标题，然后继续埋头到当时正在做的事情当中。同样的事情发生了很多次。我记得我想码一篇关系太阳地球工程的科学幻想，想亲手推算一遍层次分析法的数学原理……在疲于任务的时候，脑子里会反反复复地冒出这些想法，于是我用博客的标题来抓住它们，恳求它们留在身边，等待我“日后空闲”的到来。但是一个月之后，这些想法都不见了，就像那些重要的时间节点一样，不知道在哪一个忙碌的瞬间偷偷离开。我再也想不起关于平流层气溶胶工程和戴森球之间的关联想象，也不再有亲手演算出成对比较矩阵的冲动。\n于是我再次把这些内容空白的博客标题删掉。我希望这仅仅是因为我忘记了那些想法的细节而已。\n一些迟到而仓促的记述罢了。希望明天醒来的我能够更加坦然地忙碌。希望那些出于热情而投身进去的，不会沦陷。\n工高结课那天的玉泉教四（左），考试周刚结束时的紫金港东1门（中），独自进行田野实验的黄昏田埂（右）\n","permalink":"http://localhost:1313/post/at_end_of_term/","summary":"\u003cp\u003e这篇期末小记从建立文章题目到真正开始动笔之间过了一个月之久。考试周那段天天熬夜通宵，昏天黑地的日子，也已经在半个月前随着最后一场考试的交卷而结束了。这一个月里发生了很多变化。完成了本科期间最后一门专业课考试，告别了相伴两年的工高班的同学，半只脚踏进了西湖大学的实验室……虽然没有正式毕业，但是我的本科生活——或者说，那些和同学一起坐在教室里听老师们讲课的生活——似乎真的已经结束了。一个月前我就知道将发生很多变化，那时隐隐或许期待着改变后的焕然新生；一个月后，这些变化都如预期一样地发生了，却是以一种忙碌中略带麻木的方式。\u003c/p\u003e","title":"（伪）期末小记"},{"content":" 来自老师的课程资料，请勿商用\n绪论 系统和系统科学 系统的定义 现代系统研究开创者贝塔朗菲对系统的定义：\n系统是相互作用的多元素的复合体。\n该定义的精确说法是\n如果一个对象集合中至少有两个可以区分的对象，所有对象按照可以辨认的特有方式相互联系在一起，就称该集合为一个系统。集合中包含的对象成为系统的组成部分（组分），最小的、不需要再细分的组分称为系统的元素或要素。\n重点：\n至少两个元素——系统的多元性 组成部分相互作用——矛盾的统一 系统的数学描述 $S=(A,R)$，其中$A$是所有系统元素的集合，$R$是所有相关关系的集合\n有些系统可能无法用数学描述定义，例如元素无法界定清晰，或关系无法明确表达\n关于系统科学 以动态、演化的观点，从整体上并分层次地，采用科学的方法研究系统，就构成了系统科学\n动态、演化 整体、层次 科学的方法 一般，系统学（系统论）=系统哲学+系统科学+系统工程学\n关于系统的其他著名定义 钱学森的系统 定义：\n系统是由相互作用和相互依赖的若干组成部分结合的具有特定功能的有机整体\n美国的《 韦氏（ Webster ）大辞典 》\n有组织的或被组织化的整体；结合着的整体所形成的各种概念和原理的结合；由有规则的相互作用、相互依赖的形式组成的诸要素集合。\n日本的JIS （日本工业标准）中\n许多组成要素保持有机的秩序向同一目的的行动的集合体。\n前苏联大百科全书中：\n一些在相互关联与联系之下的要素组成的集合，形成了一定的整体性、统一性。\n《中国大百科全书 · 自动控制与系统工程 》\n由相互制约、相互作用的一些部分组成的具有某种功能的有机整体。\n系统的本质 形成系统的诸要素的集合永远具有一定的特性 或者表现一定的行为；\n这些特性或行为是它的任何一个部分都不具备的；\n由许多要素所构成的整体 但从系统功能来看 它又是一个不可分割的整体；\n如果硬要把一个系统分割开来 那么它将失去其原来的性质；\n在物质世界中 一个系统中的任何部分可以被看为一个子系统 而每一个系统又可成为一个更大规模系统中的一个部分\n系统的特征 整体性：逻辑统一 涌现性：整体才具有、部分或部分综合不具有的特性 整体大于部分之和 整体不等于部分之和（正加和vs负加和） 集合性：系统要素可以是具体物质也可以是抽象的组织 层次性：层次结构，不同层次子系统之间的从属关系或相互作用欢喜 相关性 目的性 适应性：外界环境引起内部要素变化 系统的结构、子系统 系统的结构包含在关系集合$R$中\n当系统元素数量众多、彼此之间差异较大时，不能按照单一的模式、关系进行整合， 需要划分为不同的部分 ，分别按照各自的模式进行组织整合或分解分析，这些不同的部分称为子系统。每个子系统都有其 独特的、与其他子系统或元素不同 的功能和结构。\n若干子系统、元素的总和构成系统。\n数学描述：给定系统S，如果它的元素集合Si满足以下条件，则称Si为系统S的一个子系统或分系统：\n$S_i$是$S$的一部分（子集），即$S_i\\subset S$ $S_i$本身是一个系统，满足系统的定义条件。 系统的环境和边界 系统之外的一切与它相关联的事物构成的集合，称为该系统的环境。或者说，系统$S$的环境$E$是指 $S$之外一切与之具有不可忽略的联系的事物集合。\n把系统与环境分开的，称为系统的边界。所有系统都有边界。\n系统的开放性与封闭性 系统能够与环境进行物质、能量、信息交换的属性称为开放性\n系统阻止自身同环境进行这种交换的属性称为封闭性。\n开放性与封闭性的适当统一\n系统的行为和功能 系统相对于它的环境所表现出来的任何变化，或系统可以从外部探知的一切变化，称为系统的行为。\n通过系统行为对环境所产生的影响，且这些影响一般对环境产生有利作用的表现，称为系统的功能。被作用的环境中的外部事物，称为功能对象。\n系统的状态、演化、过程 系统状态用来刻画系统的状况、态势、特征等等，是对系统的定性表征。为了对系统进行定量表征，往往引进状态变量。\n温度，压强，体积，流量等可以作为状态变量\n为了全面刻画系统的定量特征，状态变量一般要选择多个 ，选择原则是\n完备性：足够多，能够全面描述系统 独立性：任意两两状态变量间是相互独立的 所有有效的状态变量张成一个多维空间，称为状态空间，系统的运动可以看成是在状态空间中的状态转移\n系统的结构、状态、特性、行为、功能等随着时间推移而发生的变化，称为系统的演化。\n演化是系统的普遍特性 。\n系统的演化如果按时间坐标展开，就形成过程。\n系统的发生过程、发展过程、老化过程、消亡过程\n凡是系统都应作为过程来研究，其中时间是关键因素\n过程都有过程结构：每个过程都由若干子过程（阶段、步骤、程序等）组成，子过程还可以细分 。\n系统的分类 自然系统与人造系统（对自然加工） 实体系统（实体要素）与概念系统 动态系统与静态系统（数学模型中不含有时间因素，动态系统的稳定极限） 开放系统（物质、能量与信息交换）与封闭系统 简单系统、简单巨系统（子系统数量多，但是关系较为简单）和复杂巨系统（多子系统，复杂层次结构） 系统方法论 还原论和整体论相结合\n整体论：强调整体地把握和研究对象\\。古代科学技术受当时发展水平的限制，无法对细节精确地了解，所以古代科学的方法论本质上是整体论，但是一种朴素的、直观的、粗糙的整体论。 “只见森林，不见树木”\n还原论：把整体分解为部分，将系统从高层次还原到低层次，注重局部，强调把握细节的研究方法 ，称为还原论。\n从400 多年以前兴起的现代科学到近代，由于科学水平的提高和研究工具、仪器的大力发展，人们有能力开始研究以前无法研究的细节问题和更深刻机理，于是人们以极大热情对各领域的具体细节开展研究，整体性质的探讨受到冷落。 “只见树木，不见树林”\n系统科学方法强调整体论和还原论的相结合：在了解系统元素细节的基础上，再从整体上认识和处理问题， 真正科学地把握全局 。当然，这里的整体论已经 超越了古代朴素的整体论 ，这里的还原论也 超越了近代片面的还原论\n定性研究和定量研究相结合\n由于缺乏数学理论和计算工具以前相当长时间内定性描述占据统治地位，难以令人信服，被认为缺乏科学依据\n近代，定量研究备受推崇，获得迅速发展，定性方法受到冷落。然而，现在出现的许多复杂系统和复杂现象使得单纯定量化方法力不从心， 缺乏理性指导\n综合采用定量方法和定性方法，充分发挥各自优势才是最佳选择\n局部研究和整体研究相结合\n整体由局部构成并支配局部；局部支撑总体并受到整体约束。\n在系统整体的对照下建立对局部的研究，同时综合所有对局部的研究结果并在总体观的协调下，建立对系统整体的研究。\n确定性研究和不确定性研究相结合\n传统的以牛顿力学 为代表的研究体系是 确定性研究方法\n以统计力学和量子力学 为代表的研究体系是 不确定性研究方法\n在系统科学及其相关领域内：\n一般系统论、非线性动力学确定性研究 信息论完全建立在概率论的不确定性 研究框架下 运筹学和控制论则首先把问题归类于确定性问题或是不确定性问题，然后分别用确定性方法或不确定性方法加以研究， 两种方法之间并无融会贯通 现代科学的总体发展趋势：越来越要求将确定性方法和不确定性方法加以融合，形成一个统一的研究框架，自组织理论就是一个典型代表\n其他的系统论方法：\n系统分析与系统综合相结合\n静力学方法与动力学方法相结合\n理论方法与经验方法相结合\n精确方法与近似方法相结合\n科学理性与艺术直觉相结合\n关于系统工程 主要特点：\n系统工程脱胎于系统科学 一门不断发展的新兴交叉学科 面向工程技术领域 与其他工程技术学科有很大差别 解决工程技术中的共性问题 应用的领域十分广阔 宗旨：从系统观点出发 解决总体最优问题，并进行决策\n系统工程的定义 钱学森\n系统工程是组织管理系统的规划、研究、设计、制造、试验和使用的科学方法 是一种对所有系统都具有普遍意义的科学方法 。\n系统工程是一门组织管理的技术\nH.切斯特\n系统工程认为虽然每个系统都由许多不同的特殊功能部分所组成，而这些功能部分之间又存在着相互关系，但是每一个系统都是完整的整体，每一个系统都要求有一个或若干个目标。系统工程则是按照各个目标进行权衡，全面求得最优解或满意解的方法，并使各部分能够最大限度地互相适应。\n日本学者三浦武雄\n系统工程与其它工程学不同之处在于它是跨越许多学科的科学 而且是填补这些学科边界空白的边缘科学 。 因为系统工程的目的是研究系统 而系统不仅涉及到工程学的领域 还涉及到社会 、经济和政治等领域 为了圆满解决这些交叉领域的问题 除了需要某些纵向的专门技术以外 还要有一种技术从横向把它们组织起来 这种横向技术就是系统工程 。 也就是研究系统所需的思想 、 技术和理论等体系化的总称 。\n《 中国大百科全书 · 自动控制与系统工程卷 》\n系统工程是从整体出发合理开发、设计、实施和运用系统的工程技术。它是系统科学中直接改造世界的工程技术。\n……\n综合定义\n以研究大规模复杂系统为对象的一门交叉学科\n把自然科学和社会科学的某些思想、 理论 、 方法 、 策略和手段等根据总体协调的需要 有机地 联系起来 把人们的生产 、 科研或经济活动有效地 组织起来\n应用定量分析 和 定性分析 相结合的方法和计算机等技术工具 对系统的构成要素 、 组成结构 、 信息交换和反馈控制等功能进行分析 、 设计 、 制造和服务\n从而达到最优设计、 最优控制和最优管理的目的 以便最充分地发挥人力 、 物力的潜力 通过各种组织管理技术 使局部和整体之间的关系协调配合以实现系统的 综合最优化 。\n有些学者认为系统工程是一门软科学 soft science\n研究内容 系统工程的主要内容包括：系统分析、 系统设计 、 系统模型化 、 系统的最优化 、 系统的组织管理 、 系统评价 、 系统预测 、 系统决策 等 。\n常用的系统工程技术有：系统辨识技术、 系统组织管理技术 、 系统模型化技术、 系统优化技术 、 系统评价技术 、 系统预测技术 、 大系统的分解协调技术、系统决策技术 等等 。\n主要理论基础 系统工程的主要理论基础是由一般系统科学 、 运筹学 、 控制论 、 信息论 等学\n系统优化方法 系统优化方法：\n系统优化方法主要来源于 《 运筹学 》 ，主要包括 线性规划、非线性规化、整数规划、动态规划 等内容， 如果考虑到最优化技术在不同应用领域中的拓展，还应包括 排队论、对策论、决策论 等，这些也都属于运筹学的研究范畴。 线性规划 线性规划问题的提法 求取线性函数在线性等式或不等式约束下达到最小或最大值的问题。\n三个基本要素：\n决策变量：问题中要确定的未知量 目标函数：“何为最优”的准则和目标 约束条件：$s.t.$部分，等式或不等式方程 如果决策变量的取值是连续的，且目标函数和约束条件都是决策变量的线性函数，则称为线性规划问题。\n如果决策变量的取值为整数点，则称为整数规划问题\n如果部分决策变量取值连续而其余取值为整数，则称为混合整数规划问题\n如果目标函数和约束条件中存在任何的非线性因子，则称为非线性规划问题。\n线性规划问题的标准方程形式： $$ \\displaylines{ \\begin{aligned} \\min~ \u0026amp;c_1x_1+c_2x_2+\\cdots+c_nx_n\\\\ s.t.~\u0026amp; a_{11}x_1+a_{12}x_2+\\cdots+a_{1n}x_n=b_1\\\\ \u0026amp; a_{21}x_1+a_{22}x_2+\\cdots+a_{2n}x_n=b_2\\\\ \u0026amp; \\cdots \\cdots\\\\ \u0026amp; a_{m1}x_1+a_{m2}x_2+\\cdots+a_{mn}x_n=b_m\\\\ \u0026amp; x_1,x_2,\\cdots,x_n\\ge0 \\end{aligned} } $$ 简化为 $$ \\displaylines{ \\begin{aligned} \\min~ \u0026amp;C^TX\\\\ s.t.~\u0026amp; AX=b\\\\ \u0026amp; X\\ge0\\\\ 其中 \u0026amp;C:系数向量,\\\\ \u0026amp;X:决策向量,\\\\ \u0026amp;b:常数向量,\\\\ \u0026amp;A:约束方程组的系数矩阵 \\end{aligned} } $$\n线性规划问题的求解 低维线性规划（如两个决策变量）问题的图解求法\n高维线性规划（三个决策变量以上）问题的单纯形求法\n解的可行域：满足约束条件的决策变量向量 在 n 维空间中构成的点的集合\n最优解：可行域中使目标函数达到最优的解点\n最优值：相应于最优解的目标函数值\n图解法举例：\n特殊情况：多重解、无界解、无解（可行域为空）\n线性规划的标准数学模型 任何形式的线性规划模型都可以转化为标准型 $$ \\displaylines{ \\begin{aligned} \\min~ \u0026amp;C^TX\\ s.t.~\u0026amp; AX=b\\ \u0026amp; X\\ge0\\ \\end{aligned} } $$ 标准化方法：\n目标函数变为最小化问题 不等式约束加上（或减去）非负变量（松弛变量）变为等式 非正的决策变量取负号，无约束决策变量变为两个变量的差值 基本概念与基本理论 解 - 可行解、可行域、最优解\n基 - 系数矩阵$A_[a_{ij}]_{m\\times n}$的某个奇异子矩阵$B_{m\\times m}$为一个基。基向量、非基向量、基变量、非基变量\n基解 - 与基对应的解向量$X=[x_1,x_2,\\cdots,x_m,0,0,\\cdots,0]^T$。基可行解（满足非负约束）、可行基\n基于凸集、凸组合和顶点的概念\n线性规划所有可行解构成的集合为凸集，也可能是无界域； 线性规划的可行域有有限个顶点； 线性规划的每个基可行解对应可行域的一个顶点； 若线性规划有最优解，必定在某个顶点上达到，但并非只能在顶点上达到。 ——单纯形法的理论基础\n单纯形法 由于最优解在顶点上达到，而线性规划的每个基可行解对应可行域的一个顶点\n所以，求解线性规划问题可采用下面的方法：\n求一个基可行解（即对应可行域的一个顶点 检查该基可行解是否为最优解 如果不是，则设法再求另一个没有检查过的基可行解（可行域的另一个顶点） 如此进行下去，直到得到某一个基可行解为最优解为止。 现在要解决的问题：\n如何求出第一个基可行解 如何判断基可行解是否为最优解 如何由一个基可行解过渡到另一个基可行解 解决这些问题的方法称为单纯形法 。\n初始基可行解的确定 寻找另一个基可行解（基变换法） 最优性检验 一般用软件完成（MATLAB，Lingo）\n整数规划 整数规划的提法 许多实际问题的求解中，都要求部分甚至全部决策变量取整数值，这类数学规划问题称为整数规划\n其中，要求全部决策变量都必须取整数值的称为纯整数规划，部分决策变量取整数值的称为混合整数规划。有时，要求决策变量为只能取0 或 1 的逻辑变量，则称为0-1 规划。\n整数规划的求解 分枝定界法\n最大化整数规划问题A，对应线性规划问题B 若B最优解$Z_B^*$符合A的整数条件，则解出$Z_A^*$ 若不符合，则B最优解对应A最优解的上界$\\overline Z$，而A的某一任一可行解作为下界$\\underline Z$，即$\\underline Z\\le Z_A^*\\le \\overline{Z}$ 不断将B的可行域分成子区域（分枝的时候去除掉不满足整数要求的中间区域），在每个子区域中定界，保留范围最大的边界值，逐步缩小区间，最终得到$Z_A^*$ 分枝定界法的要点\n分枝：不断分为多个更小的空间 定界：确定每个小空间的上、下限和总的上、下界 剪枝：根据每个小空间的上、下限和总的上、下界，删掉那些明显低于总下界和无可行解的小空间。 0-1规划及其求解方法 显枚举法（又称为穷举法） 是把所有可能的组合情况（共2n种组合）列举出后进行比较，找到所需要的解。这种方法对于变量个数较多时，易产生“组合爆炸”，计算量非常巨大。\n隐枚举法是从实际出发，从所有可能的组合取值中利用过滤条件排除一些不可能是最优解的情况，只需考查一部分的组合就可以得到最优解。因此，隐枚举法又称为部分枚举法。\n非线性规划 非线性规划的提法 如果目标函数或约束条件方程中存在任何非线性因子 ，则问题为 非线性规划 。\n基本性质 非线性规划问题的求解一般通过两种途径 来实现，\n一种是基于目标函数和约束条件的函数分析性质直接加以求解的解析解法，多适用于具有良好函数解析性质的少数非线性规划问题；\n另一种是基于循环迭代算法的数值求解法，适用于大部分非线性规划问题。\n全局最优解最小值\n局部最优解极小值\n梯度、Hesse矩阵\n无约束非线性规划问题的求解 数值迭代的关键在于确定搜索方向$p^{(k)}$和沿搜索方向的搜索步长$\\lambda_k$\n最速下降法\n每次迭代沿着最速下降方向（负梯度方向） 步长为该方向上使得目标函数下降最多的移动值 缺点是接近极值点的时候步长小，要走弯路 广义牛顿迭代算法\n若二次可微，利用二次可微条件（Hesse矩阵） 收敛快 但是不一定每一点都有牛顿方向，或牛顿方向不是下降方向 有约束非线性规划问题的求解 第一种方法是将迭代点序列严格控制在可行域内 ，从而执行的迭代过程实际上为无约束优化过程；\n第二种方法称为序列无约束优化方法 ，简称 SUMT 方法。该方法通过 将约束项处理成制约函数项加入到目标函数中形成新的广义目标函数 ，从而将有约束问题化为广义目标函数下的无约束问题，再利用前述的无约束优化迭代算法求解。拉格朗日乘子法就是这类方法的一个特例。\n第三种是在迭代点附近的序列线性化或序列二次函数逼近方法 ，通过运用迭代点附近的台劳展开，将有约束的非线性规划近似为极易求解的线性规划或二次规化以实现迭代求解。\n序列无约束优化方法中常用的制约函数基本上有两类 ，一类为罚函数，又称为外点法 ，一类为障碍函数，又称为内点法 。\n罚函数：目标函数+约束函数=广义目标函数\n动态规划 动态规划是解决多阶段最优决策过程的方法， 20 世纪 50 年代由美国数学家贝尔曼等创立。\n在其后的五十多年中，动态规划在工程技术、经济和军事等众多领域得到了广泛应用并取得了迅速发展，成为解决多阶段决策问题的主要方法。\n动态规划基于著名的“最优性原理”，根据多阶段决策问题的特点，把多阶段决策问题变换为一系列互相联系的单阶段问题，然后逐个加以解决。\n动态规划问题的分类：\n根据多阶段决策过程的时间参量是离散的还是连续的变量，过程分为离散决策过程和连续决策过程； 根据决策过程的演变是确定性的还是随机性的，过程又可分为确定性决策过程和随机性决策过程。 组合起来就有离散确定性、离散随机性、 连续确定性、 连续随机性四种。 基本概念和定义 多阶段决策过程（序贯决策过程）：把一个问题可看作是前后关联、具有链状结构的多阶段过程，并对其进行决策\n在多阶段决策问题中，各个阶段采取的决策一般与时间有关，故有“动态”的含义。但是，一些与时间没有关系的静态规划 （如线性规划、非线性规划等）问题，只要人为地引进“时间”因素，也可把它视为多阶段决策问题，用动态规划方法去处理。\n阶段：一个阶段有若干个状态，第k个阶段所有始点的集合\n状态：每个阶段开始所处的自然状况或客观条件，状态变量\n决策：决定下一阶段的状态，决策变量（允许决策集合）\n策略：有序的决策集合，子过程策略、允许策略集合、最优策略\n状态转移方程：从k到k+1的转移规律\n指标函数和最优值函数：指标函数具有可分离性，满足递推关系\n求解方法 逆序方法\n顺序方法\n目标规划 线性规划、非线性规划、整数规划等处理的都是单目标函数的最优化问题。然而，许多实际问题都有多个优化目标，而且有些目标函数之间是相互矛盾的，因此常需要处理多目标规划\n多目标优化的方法：\n多个目标函数加权处理得到单一目标函数 保留一个主目标函数，其他目标函数处理为可接受值的约束条件 目标规划 目标规划的方法思想：\n目标规划在处理多目标决策问题时，并不是直接寻找满足这些目标的最优解，而是通过引入“偏差变量” 将目标转化为约束处理 ，以 “各个目标的偏差量尽可能小”为原则构造一个新的目标函数 ，继而求解基于这个新目标函数的单目标规划问题。\n本质上，目标规划在“寻求最大限度地满足所有目标的解\n目标规划与一般线性规划的区别：\n能处理多个目标函数的最优问题 目标规划可在相互矛盾的约束条件下，找到满意解 目标规划找到的不是绝对的最优解，而是 与“人为指定目标相比较”的相对最优解 目标规划对约束条件的处理不是“不分主次”，而是 有“轻重缓急” 一般概念 单目标的目标规划——偏差量\n多目标的目标规划：优先因子区分重要性\n一般模型 优先因子排出等级\n加权系数决定同级别的主次\n软约束\n系统预测方法 德尔菲定性预测方法 关于系统预测 系统预测是系统工程理论的重要组成部分，它把系统作为预测对象\n分析系统发展变化的规律性； 预测系统未来发展变化趋势； 为系统规划设计、经营管理和决测提供科学依据。 所谓系统预测，就是：根据系统发展变化的实际情况和历史数据 、资料，运用现代的科学理论方法，以及对系统的各种经验、判断和知识，对系统在未来的可能变化情况，进行推测、统计和分析，并得到有价值的系统预测结论。\n系统预测方法分为三类：\n定性预测方法\n定性预测方法依据人们对系统发展变化规律的把握、判断，用经验和直觉作出预测，如专家打分、主观评价、市场调查。常见的定性预测方法是特尔斐（Delphi）法。\n因果关系预测方法\n因果关系预测方法以若干系统变量为分析对象，以样本数据为分析基础，建立系统变量之间因果数学模型。根据因果数学模型，预测某些系统变量的变化对其它系统变量的定量影响。因果关系预测方法主要有回归分析预测、状态空间预测等。\n时间序列分析预测方法\n时间序列分析预测主要考察系统变量随时间变化的定量关系，给出系统的演变发展规律，并对未来作出预测。\n第一类为定性方法，第二、三类为定量方法 。\n系统预测的步骤\n确定预测目标 选择预测方案 收集、整理资料和数据 建立预测模型 利用模型预测 预测结果分析 菲尔德定性预测方法 选择熟悉与所预测问题相关的领域的专家 10到 15 人 （对于重大预测问题，可适当增加人数 采用 通信往来的方式 与专家们建立联系，将预测问题的目标和任务告诉专家并提供所掌握的初步资料和数据 然后将专家关于预测分析的意见进行整理、综合、归纳 再以 第一轮预测结果 的形式匿名反映至各位专家 进行第二轮征求意见 ，供他们分析判断提出新的论证结果 如此经过多轮反复论证 调查， 各专家的意见逐轮趋向一致 ，结论的可信性也大大增加。\n德尔菲法是专家会议调查法的一种发展，但其效果往往比专家会议法要好，其原因在于\n克服了专家会议中常见的随大流或由某些权威一言定调的缺点，专家与专家之间 互不见面 ，各专家的意见完全独立作出，消除了心理影响； 为保证预测结果的可靠性，德尔菲法一般 要经过多轮并且在下一轮开始时让专家充分参考本轮甚至以前各轮的预测分析结果，不仅能保证过程和结果的客观性和公正性，而且能逐渐消弥个别固持已见的结论； 尽管德尔菲法本质上是一类定性预测的方法，但其非常注重 定性向定量的转化 工作，使方法不仅具有定性的优点，同时也具有部分的定量优点。 一元线性回归分析预测 回归原理 对于回归方程，人们难免会产生如下疑问：\n它是否符合x和y之间的客观规律，或所拟合的回归直线在多大程度上能反映出x和y之间的真实因果关系? 预测的精度如何？ 为回答第一个问题，需要构造一个能反映变量x和y之间线性关系密切程度的统计量，以便进行统计检验。通常，人们采用相关系数检验法和F检验法进行回归方程检验。\n一元线性回归预测的精度分析 建立一元线性回归方程的目的是根据变量x的值来预测相关变量y的值，因此其预测精度就是衡量所建一元线性回归方程有效性的一个重要指标，直接影响到对其能否作为预测模型的取舍。\n为此，采用类似于区间估计的方法，给定置信度，求出预测变量y的可能取值范围。\n步骤 略\n一元非线性回归分析预测 常用的非线性回归分析主要有以下两类处理方法：\n将复杂的非线性关系通过某种数学变换化为线性关系，然后采用线性回归分析方法，称为线性化方法。函数变换线性化、多项式变换线性化和分段线性化均属于此类； 直接进行非线性回归分析的方法。 函数变化线性化方法 函数变换线性化处理的一般步骤是：\n根据机理或测点图形判断，选择一种易于线性化的非线性函数 将自变量和因变量 通过适当的数学变换得到线性关系 对变换后的自变量和因变量数据作线性回归分析 将得到的线性回归方程通过逆变换得出自变量和因变量间的非线性关系。 幂函数、指数函数、双曲函数\n多项式变换线性化方法 当已知变量间存在某种非线性函数关系、但这种非线性函数形式又无法确定时，运用非线性函数的函数逼近论原理，可以采用多项式作为近似模型\n分段线性化方法 对于许多应用场合，尽管在总体的变量变化范围内呈现较复杂的非线性特征，但在若干局部区域却具有明显的线性特征\n直接非线性回归方法 对于更一般的非线性对应关系，应进行直接非线性回归分析。设变量x和y服从如下的非线性函数模型： $$ y=f(x) $$ 基于非线性回归模型的因变量预测值： $$ \\hat y_i=f(x_i,\\hat\\theta),\\hat\\theta=[\\theta_1,\\theta_2,\\cdots,\\theta_k] $$ 最小二乘估计\n多元线性回归分析预测 一元线性回归是多元线性回归的特例\n表达为矩阵的形式 $$ Y=X\\beta+\\epsilon $$\n时间序列分析模型 回归分析预测方法本质上是一种与时间因素无关的建模方法 。例如，对于满足独立采样条件而得到的n 个样本， 不论如何打乱其样本顺序，采用回归分析所建立的预测模型总是相同的，有时称这类方法是基于稳态数据的建模方法。\n实际中还有这样一大类系统，其数据与系统演变的过程本身有关或者说时间是样本数据的一个重要特征，预测模型的构造中必须包含时间因素在内，这类方法称之为基于动态数据的建模方法。\n时间序列分析就是一类典型的动态建模方法，在自然、工程、经济、金融、天文气象、社会等许多领域有广泛的应用。\n例如，雨季时长江的水位观测、企业的月产值、人体24 小时体温变化等等，都是时间序列的例子。\n平稳时间序列与白噪声 时间序列中的每一个$x_i$均为随机变量，有均值函数$E\\lbrace x_i\\rbrace$，自协方差函数$\\gamma_{ij}=E\\lbrace (x_i-M_i)(x_j-M_j)\\rbrace, M_i=\\overline x_i=E\\lbrace x_i\\rbrace$\n如果一个时间序列的期望和方差取常值且其相关函数只是时间间隔的函数，与时间起点无关 则该序列是平稳序列 。在统计理论上，平稳时间序列能保证统计指标的可估计性。\n时间序列的含义非常广泛，平稳序列只是其中的一种特殊类型 ，但是，由于平稳序列具有非常普遍的实际背景，而且又有比较完善的理论基础，这使得平稳序列在时间序列分析中占有重要地位，或者说，迄今为止具有应用价值的时间序列分析方法中， 绝大多数直接或间接地与平稳序列有联系 。\n在平稳序列中，最简单而又最基本的是白噪声序列，或简称白噪声$\\lbrace \\epsilon_i\\rbrace$，满足 $$ \\displaylines{ E\\lbrace \\epsilon_i\\rbrace=0\\ E\\lbrace \\epsilon_i^2\\rbrace=\\sigma^2 } $$\n自回归滑动平均模型 对于零均值平稳时间序列，满足线性差分方程： $$ x_i-\\phi_1x_{i-1}-\\phi_2x_{i-2}-\\cdots-\\phi_px_{1-p}=\\epsilon_i-\\theta_1\\epsilon_{i-1}=\\theta_2\\epsilon_{i-2}-\\cdots-\\theta_q\\epsilon_{1-q} $$ 其中$\\epsilon_i$为白噪声，满足$E\\lbrace x_i\\epsilon_j\\rbrace=0,i\u0026lt;j$\n$q=0$：自回归模型$AR(p)$\n$p=0$：滑动平均模型$MA(q)$\n自回归滑动平均模型$AEMA(p,q)$\n参数估计方法：最小二乘估法、矩估计法\n时间序列分析预测 对样本数据进行时间序列分析、建模的主要目的之一，就是解决时间序列的预测问题。\nStep1：根据观测数据估计出$ARMA(p,q)$模型的参数；\nStep2：再利用相应模型进行预测。\n系统评价与决策方法 系统评价的基本问题 系统评价：对系统开发提供的各种可行方案，从社会、政治、经济、技术的观点予以综合考察，全面权衡利弊得失，从而为系统决策选择最优方案提供科学的依据。\n具体地说：系统评价就是评定系统可行方案的价值\n一般情况下，指标和方案越多，评价问题就越复杂。\n系统的价值是一个综合的概念，指的是系统的效果或目标能达到的程度。一般有如下两方面的特点：\n一是相对性。这是由于系统总是存在于一定的环境条件下，而价值概念也只有在一定的条件下才有意义，也就是说价值都是相对的。 二是可分性。系统价值包括许多组成要素（或称价值要素），它们共同决定着系统的总价值。 系统评价的原则 保证评价的客观性。评价是决策的前提，评价的质量影响着决策的正确性。因此，必须注意 评价资料 的全面性和可靠性，同时要防止评价人员的倾向性，注意 评价人员 的代表性和各类专家的组成。 保证方案的可比性。替代方案在实现系统的基本功能上要有可比性和一致性 评价指标也应基本相同。 评价指标要成体系。评价指标应能全面反映被评价问题的主要方面。在基本能满足评价要求和给出决策所需信息的前提下应尽量减少指标个数在可能的情况下 尽量定量化 以减少评价过程中的主观性和片面性 。 评价方法和手段的综合性。 系统评价要对系统的各个侧面 运用 多种方法和工具 进行全面综合评价 充分发挥各种方法和手段的综合优势 为系统的综合评价提供全面分析的手段 。 系统评价的步骤 对各个评价方案做出简要说明 ，使方案的特点清晰明了，便于评价人员掌握； 确定由所有单项和大类指标组成的评价指标体系； 确定各大类及单项评价指标的权重 并从整体上调整； 进行单项评价 查明各项评价指标的实现程度； 进行综合评价 综合各大类指标的价值和系统整体价值 。 评价指标体系的要求 系统评价的指标体系是由若干个单项评价指标所组成的整体，它反映了系统所要解决问题的各项目标要求。指标体系要实际、完整、合理、科学，并基本上能为有关人员和部门所接受。指标体系通常可考虑如下方面\n政策性指标。包括政府的方针、政策、法令、法律及发展规划等方面的要求，它对国防或国计民生方面的重大项目或大型系统尤为重要。 技术性指标。包括产品的性能、寿命、可靠性、安全性等工程项目的地质条件 、 设备、设施、建筑物、运输等技术指标要求 。 经济性指标。包括方案成本、利润和税金、投资额、流动资金占有量、回收期、建设周期等。 社会性指标。包括社会福利、社会节约、综合发展、就业机会、污染、生态环境等。 资源性指标。包括人、财、物等资源的保证程度。如工程项目中的物质、人力、能源、水源、土地条件等。 时间性指标。如工程进度、时间节约、试制周期等。 评价指标体系的组成是随具体问题而异的不同的系统其组成的指标因素是大不一样的 。\n评价指标的数量化 排队打分法 如果指标（例如汽车的时速 、 油耗 工厂的产值 、 利润 、 能耗等等）已有明确的数量表示，就可以采用排队打分法 。\n设有m 种方案 则可采取 m 级记分制：最优者记 m 分，最劣者记 1 分，中间各方案可以等步长记分（步长为 1 分），也可以不等步长记分，灵活掌握；或者各项指标均采用 10 分制，最优者满分为 10 分 。\n体操评分法 体育比赛中许多计分方法也可以用到系统评价工作中来。例如 体操计分法是请 6 位裁判员各自独立地对表演者按 10 分制评分 然后舍去最高分和最低分 将中间的 4 个分数取平均 就得到表演者最后的得分数 。\n专家评分法 这是一种利用专家经验的感觉评分法。 例如 要对多台设备操作性进行评价可以请若干专家 即有经验的实际操作者来试车 专家们根据主观感觉和经验对每台设备按一定的记分制来打分 再将每台设备的得分相加 最后将和数除以操作者的人数 就得到了各台设备的平均得分数 。\n两两比较法 这也是一种感觉（经验）评分法。它是将方案两两比较而打分，然后对每一方案的得分求和，并进行百分化等处理。打分时可以采用 0-1 打分法， 0-4 打分法或多比例打分法等等。\n0-1 打分法\n设有n 种方案 我们排成一个方阵\n当方案i 比 j 优时； $a_{ij}=1$ 当方案i 比 j 劣时； $a_{ij}=0$ 若第i 方案与第 j 方案相当 分不出优劣时 则令 $a_{ij}=a_{ji}=0.5$ 空白，当方案 i =j 时 $a_{ij}$求和表示第i方案得到的分数\n0-4打分法 $a_{ij}=0,1,2,3,4$\n多比例打分法\n系统评价的主要方法 在各种系统评价理论的基础上，形成了众多的系统综合评价方法，如：加权平均法、功率系数法、主次兼顾法、效益成本法、分层序列法、层次分析法、模糊评价法……\n另外，有些评价对象的数学模型本身可能就包含评价函数 ，如各种优化模型：线性规划、非线性规划、动态规划、多目标规划……\n系统层析分析法 经常碰到这样的情况：有些问题难以或根本不可能建立数学模型进行定量分析， 但我们又非常需要一个定量化的分析结果以帮助决策 。\n层次分析法（Analytical Hierarchy Process 简称 AHP ）是将决策有关的元素分解成目标 、 准则 、 方案等层次，在此基础之上进行 定性分析和定量分析相结合 的系统评价方法 。\n层次分析法的步骤:\n通过对系统的深刻认识，确定该系统的总目标，弄清规划决策所涉及的范围、所要采取的措施方案和政策、实现目标的准则、策略和各种约束条件等，广泛地收集信息。 建立一个多层次的递阶结构，按目标的不同、实现功能的差异，将系统分为几个等级层次。（方案层-准则层-目标层） 确定以上递阶结构中相邻层次元素间相关程度。通过构造两两比较判断矩阵及矩阵运算的数学方法，确定对于上一层次的某个元素而言，本层次中与其相关元素的重要性排序—相对权值。进行层次单排序。 计算各层元素对系统目标的合成权重，进行总排序，以确定递阶结构图中最底层各个元素的总目标中的重要程度。 根据分析计算结果，考虑相应的决策。 模糊综合评价法 对某一事物进行评价，若评价的指标因素为n个，记为$u_i$，构成评价因素的有限集合$U=\\lbrace u_1,u_2,\\dots,u_n\\rbrace$\n根据实际需要将评语划分为m个等级，又得到评语的有限集合$V=\\lbrace v_1,v_2,\\dots,v_m\\rbrace$\n评价因素集合实际上是U上面的一个模糊集合A，$A=[a_1,a_2,\\dots,a_n],a_i\\in[0,1]$\n模糊综合评价问题：就是将评价因素集合 U 这一论域上的一个模糊集合A 经过模糊关系 R变换为评语集合 V 这一论域上的模糊集合 B，即模糊综合评价的数学模型 $$ \\displaylines{ B=A\\cdot R\\ b_j=\\bigcup_{i=1}^n (a_i\\cap r_{ij}) } $$ 其中$B_{1\\times m}$为模糊综合评价的结果，$A_{1\\times n}$为模糊评价因素权重集合，$R_{n\\times m}$为从U到V的一个模糊关系，$r_{ij}$表示从第i个因素来看，做出第j种评语的可能性\n模糊运算：\n并运算$c = a\\cup b=\\max\\lbrace a,b\\rbrace$ 交运算$c=a\\cap b=\\min\\lbrace a,b\\rbrace$ 模糊矩阵乘积$\\cdot$，先交后并 系统决策的分类 从不同的的角度分析决策问题，可以得出不同的决策分类\n按决策的重要性可将其分为战略决策、策略决策和执行决策，或称为战略规划、管理控制和运行控制三个层次。\n根据人们对自然状态规律的认识和掌握程度，决策问题通常可分为确定型决策、风险型决策（统计决策）以及非确定型（完全不确定型）决策三种。\n如果决策者能完全确切地知道将发生怎样的自然状态，那么就可在既定的自然状态下选择最佳行动方案，这就是确定型决策问题，如资源的分配优化、配置等。总之，用数学规划解决的问题都属于确定型决策问题。\n如果一个决策问题对未来出现哪种自然状态决策者不能准确给定，但却对其出现的概率可以估计出来，这种决策问题就称为风险型决策。\n如果决策者不但不能确定未来将出现哪一种自然状态，甚至对于各种自然状态出现的概率也一无所知，也没有任何统计数据可循，全凭决策者的经验、态度和打算，这类决策问题就是非确定型决策问题。\n按决策的性质可将其分为程序化决策和非程序化决策\n程序化决策是一种有章可循的决策，具体体现为可以重复出现，制定固定程序，如订单标价、核定工资、生产调度等。\n非程序化决策问题新颖、无结构，处理这类问题无固定答案，需要灵活处理，如开辟新的市场、作战指挥决策等。\n这类决策问题还可分为结构化决策、半结构化决策以及非结构化决策。所谓结构化是指问题的影响变量之间的相互关系可用数学形式表达，问题的结构可用数学模型表示;非结构化问题比较复杂，一般也不能建立数学模型;介于二者之间的称为半结构化决策。\n按决策的目标数量可将其分为单目标决策和多目标决策。\n仅有一个目标的决策问题是单目标决策，有两个或更多的目标称为多目标决策问题。\n按决策的阶段可将其分为单阶段决策和多阶段决策，也可称为单项决策和序贯决策。\n单阶段决策是指整个决策过程只作一次决策就能得到结果\n多阶段决策是指整个决策过程由一系列决策组成，而其中若干关键决 策环节又可分别看成是单阶段决策。\n风险型决策方法 风险型决策是指决策者在作决策时对客观情况不甚了解，但可能通过调查，根据过去的统计资料，凭借经验或主观估计获得各种自然状态发生的概率。\n期望值准则：如果将每个行动方案看成是离散型随机变量，随机变量的取值是每个行动方案在不同自然状态下的益损值，其概率等于自然状态的概率，则每个方案的期望值都可以计算出来。期望值准则是指计算出每个方案的收益和损失的期望值，并且以该期望值为标准，选择收益最大或损失最小的行动方案为最优方案。\n决策树方法 应用决策树来作决策的过程，是从右向左逐步后退进行分析。根据右端的收益值和概率枝的概率，计算出期望值的大小，确定方案的期望结果。然后根据不同方案的期望结果作出选择。方案的舍弃叫做修枝，被舍弃的方案在方案枝上做“≠”的记号表示（即修剪的意思)。\n贝叶斯决策方法 风险型决策问题的典型特点是信息不充分，在决策分析过程中，需要对各种客观状态出现的概率进行事先判断和估计。这种**主观概率(先验概率)**判断往往依赖于个人的知识状况，判断结果因人而异。\n在系统分析过程中，根据试验或者调查获得了一定的资料，利用这些资料对先验概率进行修正，得到新的概率叫后验概率，通常比先验概率更加可靠。\n由于这种修正作用是通过贝叶斯定理完成的，因此该类决策方法被称为贝叶斯决策。\n实质为条件概率\n多目标决策 多目标决策问题的特点\n决策问题的目标多于一个 目标间的不可公度 各目标间的矛盾性 多目标决策问题分类\n有限方案多目标决策：决策变量是离散型，被选方案数量为有限个，求解的核心是对各备选方案进行评价后排定各方案的优劣次序，再从中择优； 无限方案多目标决策问题：决策变量是连续型，被选方案数量有无数多个，求解这类问题的关键是向量优化，即数学规划问题 非劣解和最佳调和解\n多目标决策问题通常不存在使各目标都达到最优的方案 最优解 非劣解（假设为 A）：再也找不到另一个方案 B ，方案 B 的各个目标值都不劣于方案 A 的相应目标值，而且 B 至少有一个目标值比 A 优。 多目标问题如果没有最优解，就有一个以上非劣解。 最佳调和解： 在非劣解中按照某种原则（即决策规则）来说是最好的方案，这个方案称为最佳调和解； 有限方案多目标决策\n决策矩阵：设问题可供选择的n个方案的集合为$X$，用向量$y_i$表示方案$x_i$的 n 个属性，当目标函数为 $f_j$ 时，$y_{ij}=f_j(x_i),i=1,2,\u0026hellip;,m,j=1,2,\u0026hellip;,n$，则各方案的属性值可列成决策矩阵（或称为属性值表）$[y_{ij}]_{m\\times n}$ 非线性动态系统 线性系统和非线性系统的描述 线性动态系统 用线性数学模型描述的系统\n满足叠加原理：$f(ax_1+bx_2)=af(x_1)+bf(x_2)$\n连续线性动态系统的数学模型： $$ \\displaylines{ {\\cases{ x_1\u0026rsquo;=a_{11}x_1+\u0026hellip;+a_{1n}x_n\\\\ \u0026hellip; \u0026hellip;\\\\ x\u0026rsquo;_n=a_{n1}x_1+\u0026hellip;+a_{nn}x_n\\\\ }\\\\ \\Leftrightarrow X\u0026rsquo;=AX} } $$\nA不随时间变化：定常系统（常系数系统） A为时间函数，时变系统（变系数系统） 线性模型的来源：\n许多非线性系统的非线性因素较微弱，允许忽略不计; 尽管非线性因素很强，不能忽略，但如果只关心局部性质，就可以在局部区域线性化，得到线性模型; 非线性因素很强，也不满足线性化的条件（只关心局部性质），但限于条件，非线性模型无法建立（太过复杂），或即便能建立非线性模型，也无法求解，则只好采用线性模型。 非线性动态系统 不满足叠加原理（加和性和齐次性），则为非线性的 $$ x_i\u0026rsquo;=f_i(x_1,\u0026hellip;,x_n;c_1,\u0026hellip;,c_m),i=1,2,\u0026hellip;,n $$ 至少有一个函数是非线性函数\n向量形式：$X\u0026rsquo;=F(X,C)$\n非线性系统的演化方程\n几类特殊的非线性模型：\n自有系统与强迫系统（有外加作用项） 自治系统（不明显包含时间）与非自治系统（明显包含时间） 求解方法：解析方法、几何方法、数值计算\n局部线性化：在连续可微处泰勒展开得到局部线性方程，将忽略的非线性项作为扰动因素（线性化+微扰）\n状态空间与参数空间\n状态空间：所有状态构成的集合，又称相空间，空间中每个点又称状态点或相点\n状态变量：能够完整表征系统演化状态的 n 个独立变量$x_1,x_2,…,x_n$\n以状态变量为坐标轴支撑起来的集合空间 ，是状态空间，状态变量的个数 n 是状态空间的维数\n演化方程的每个解代表状态空间的一个点集合，称为一条相轨道；由于演化方程可以过不同的“初始点”，因此演化方程有无穷解，亦即有无穷相轨道\n系统科学从系统演化角度考虑问题，不是分别研究某条具体的相轨道而是考察全部相轨道及其分布，从而整体把握系统\n演化方程的参数向量也对演化行为产生重大影响，因而应严重关注\n参数空间：以参数量$c_1,c_2,…,c_m$为坐标轴支撑起来的集合空间，是参数空间，参数量的个数 m 是参数空间的维数 参量空间的每个点对应一个确定的系统\n在参数空间研究的是：演化方程结构相同的无穷多系统构成的系统簇\n乘积空间：有时特别需要同时在状态空间和参数空间中研究系统，即以全部状态变量和全部参数量为坐标轴支撑起来的高维空间，称为乘积空间，\nS× C，S 是状态空间， C 是参数空间\n系统演化过程中的定态和暂态\n暂态：系统在某个时刻可能到达，但不借助外力就不能保持或不能回归的状态或状态集合 定态：系统到达后若无外部作用将保持不变的状态，或 反复回归 的状态集合系统的定性性质由定态决定，暂态不能表现系统的本质特征 状态空间几乎充满暂态点，定态点极少，但系统的定性性质却由定态点决定，不同的定态代表不同的定性性质\n动态系统的定态点类型：\n平衡态：数学上的不动点（所有导数为零）\n周期态：演化方程的“终态”解 是一个以 T 为周期的周期函数 ，代表状态空间中的一条封闭曲线\n拟周期态：多个不同周期、且周期比为无理数的周期运动叠加而成的复杂运动形式，往往产生于3 维以上非线性系统\n混沌态：非周期定态，极其复杂的一种演化定态，往往产生于3 维以上非线性系统\n维数 定态类型 一维空间 只有不动点 二维空间 不动点和极限环 三维及以上空间 4 种定态都有可能，也可能同时有几种 初态和终态：初态→演化轨道→终态（状态转移规律）\n根据微分方程的存在唯一性定理：\n每个初态出发，有且只有一条轨道 状态空间中的每一点都可以作为初态，所以 经过状态空间中的每个点都有且只有一条轨道 状态空间充满轨道，不同轨道互不相交 定态轨道\n暂态轨道：发散或以某个定态轨道为极限\n系统的稳定性和判别方法 系统稳定性的定义 表征系统在干扰影响下的抗干扰能力\n稳定性指的是系统的结构、状态、行为的恒定性，即系统结构、状态、行为的抗干扰能力。\n李雅普诺夫Liapunov稳定性定义：原有轨道$\\Phi(t)$受到扰动$X_0$，对任一$\\epsilon\u0026gt;0$，存在$\\delta(\\epsilon)\u0026gt;0$使得 $$ \\left|X_0-\\Phi(t_0) \\right|\u0026lt;\\delta\\Rightarrow \\left|X(t)-\\Phi(t) \\right|\u0026lt;\\epsilon,t\\ge t_0 $$ 李雅普诺夫渐进稳定：$\\lim \\left|X(t)-\\Phi(t) \\right|=0$\n李雅普诺夫稳定的含义:\n只要初态的偏离足够小，两个轨道（含终态）的偏离就足够小，即小扰动只能引起小偏离 渐近稳定更严格，它要求随着演化过程走向结束，解的偏离将逐步消失，回到扰动前状态，例如单摆运动，最终回到垂直平衡点 上述定义中暗含两个初态XO和(tO)偏离的“有限”，在一定范围内，称为“局部稳定性质”；假若两个初态任意大的偏离都不影响系统的稳定性，称为“大范围稳定性质” 稳定定态的类型 焦点型不动点\n结点型不动点\n鞍点型不动点：两条轨道从相反方向向不动点收敛，同时另外两条轨道沿相反方向从不动点向外发散。相平面（2 维时）被分割为四部分， 每条轨道都先向鞍点逼近，后又远离鞍点而去。鞍点在整体上是不稳定的\n中心点型不动点：不动点周围布满周期不同的闭合轨道。以附近任何点为初态，系统都将围绕不动点做周期运动；局部区域内，只要初态偏离足够小，周期轨道对中心点的偏离也足够小。所以，中心点是稳定的，但不是渐近稳定的\n极限环\n系统稳定性判别方法 线性系统的稳定性判别\n非线性系统的稳定性判别\n同一系统既有稳定态，又有不稳定态 基于局部线性化方法的非线性系统稳定性判别 李雅普诺夫直接方法 状态空间（相空间）中的吸引子 什么是吸引子 相空间中有一类点集合 （含 1 个点或多个点或无穷个点）称为动态系统的“吸引子”，只要点集合满足三个条件\n终极性 ：吸引子代表系统演化行为要达到的终极状态，处于非吸引子态的系统 “不安于现状 ”，力求离之远去；处于吸引子态的系统 “安于现状”，不再力图改变这种状态 稳定性 ：吸引子态具有抵制干扰、保持自身特性的能力，具有稳定性 吸引性 ：作为吸引子态的状态集合对于周围的其他状态或轨道具有吸引性， 牵引着系统向吸引子态运动 哪些状态点可能是吸引子？ 稳定而有吸引性的定态\n吸引性是吸引子的根本性质\n常见吸引子：\n稳定的焦点和结点：代表系统的 平衡运动 稳定的极限环：代表系统的 周期运动 稳定的环面：代表系统的 拟周期运动 奇怪吸引子：代表系统的 混沌运动， 后面介绍 混沌边缘：代表介于有序（前三类）和混沌 之间的 一类运动性状 系统的目的性 系统的“目的性”体现在“吸引子”上\n凡存在吸引子的系统， 均为有目的 的系统；凡有目的的系统， 必存在吸引子\n吸引域、排斥子、系统指标 每个吸引子在相空间都有自己的 “势力范围 凡是在这个范围内的轨道都趋向该吸引子 ，这个“势力范围”内点的集合称为吸引子的 “吸引域”\n相空间还存在一类特殊点或点集合，他们 对于周围的所有轨道都是排斥的 ，附近任何轨道的演化随时间展开将 离开该点或点集合而远去 ，称为排斥子\n复杂非线性系统的吸引子理论 对于复杂非线性系统的研究，重点不是刻画每一条具体演化轨道，而在于研究一切轨道的集合、类型、分布和运动趋势，整体上把握动态系统的运动规律和特性\n非线性系统的相图轨道非常复杂，有以下特点:\n各种定态均可能出现，不动点、极限环、环面、奇怪吸引子、混沌边缘 多个吸引子并存，各自有吸引域 并存的吸引子之间存在竞争关系，导致系统演化具有多种可能前途 周期振荡与极限环 van der Pol方程\n非线性动态方程的分岔现象 分岔的定义 在参量空间中，参量改变引起动态系统定性性质的改变，称为分岔\n所谓定性性质的改变，是指\n定态的 创生 （从无到有）或 消失 （从有到无 稳定性的改变（原本 稳定的失稳 ，原本 不稳定的变稳 原稳定态失稳后 变生出一个或多个新的稳定态 ，新旧定态属于同一类型 从一类定态 变生出 不同类型 新定态 相空间 定态分布的改变上 典型分岔类型 一维系统的典型分岔\n鞍结分岔\n跨临界分岔\n叉式分岔\n多维系统的典型分岔类型\n单焦点分岔为极限环（Hopf分岔）\n单极限环分岔为两个极限环\n平面极限环分岔为高维空间极限环\n环面分岔：极限环分岔出环面，环面分岔处另一环面，低维环面分岔出高维环面\n有序吸引子分岔出奇怪吸引子\n不动点、极限环、环面都是简单有序吸引子，或称为平庸吸引子\n控制参量的进一步变化可能导致所有平庸吸引子都失稳，出现奇怪吸引子，即混沌\n逐级分岔\n非线性动态方程的混沌现象 由逻辑斯蒂（Logistic ）方程产生的倍周期分岔混沌 由洛伦茨（Lorenz ）方程产生的分岔混沌 关于混沌的系统学认识 非周期定态\n混沌具有非周期性，它不是一种瞬态行为（之前一直认为非周期运动是瞬态行为，直到混沌被发现），而是一种新被确认的可能定态，是一种可以与平衡点、周期运动、拟周期运动（多个周期运动的叠加)相提并论的定态。\n换句话说，非线性系统可以稳定地运动在混沌中。\n奇怪吸引子上的动力学行为\n混沌都发生在奇怪吸引子这种分形结构上（只有在相空间中具有某种自相似结构的分形点集才能描述这种复杂运动）。\n对初值的极度敏感依赖性\n对于给定数学方程的非线性系统，运动轨道由初值决定，称为轨道对初值的依赖性。\n对于具有混沌现象的系统，轨道不仅依赖初值，而且往往极度敏感依赖，初值的微小差别在后来的运动中被不断放大，最后导致运动轨道的显著不同。\n既是稳定的，又是不稳定的\n奇怪吸引子对外部轨道有吸引力，进入吸引子就不可能再走出，因而 整体上是稳定的\n但吸引子内部的不同轨道相互排斥，极不稳定 。\n确定性随机性\n一般，确定性方程产生确定性解，不确定性解则由不确定性（随机性）产生。\n但是，混沌现象中，确定性的方程（如Logistic 方程、洛伦茨方程） 却因分岔、混沌，产生了无法预知的不确定性结果 。\n这种不确定性完全由确定性系统自身的非线性因素引起，与随机因素无关 ，称为 确定性随机性\n或者说，是一种随机性，但是是由确定性系统产生的 。\n长期行为的不可预测性\n一方面，由于是确定性系统，短期行为可预测；另一方面，由于对初值的敏感依赖性，只要初值稍有误差，通过混沌运动的逐步非线性放大、积累，系统走向何方不得而知，因而 长期行为同随机运动一样无法（精确）预测 。\n这是混沌运动既不同于简单有序运动 （短期行为和长期行为都可预测）， 又不同于随机运动 （短期行为和长期行为都无法预测）的一个主要特征。\n但简单宣布混沌运动不可预测也是不全面的，它具有某种统计学意义上的可预见性。\n“蝴蝶效应”\n耗散结构和协同学 系统的自组织现象 贝纳德对流：两个恒温差薄平板之间的薄流体中形成稳定的对流循环，达到一种新的有序结构\n产生贝纳德对流的原因分析\n当两板间的温差 小于临界值 Δ Tc 时 ，流体分子实际上仍在各个方向上 做杂乱无章的热运动 通过相互间无规则的碰撞而传递能量 ，显示出整体的对称性，表现为宏观上的“静止”， 即平衡态 但当两板间的温差 大于临界值 Δ Tc 时 ，系统性质 发生突变 ：为完成与大温差相适应的大的热量传递任务， 大量的分子被组织起来，共同参加了统一的、规则的传热工作 ，形成了 贝纳德对流 。 自组织的概念、形式和主要研究分支 自组织的概念 所谓自组织，就是系统通过自身力量自发地增加它的活动组织性和结构有序度的进化过程，它是在系统不需要外界环境和其他外界系统的干预或控制下进行的，由此而形成的有序、较为复杂的系统称为自组织系统。\n相反，所谓他组织（又称为被组织 ）是在外界环境施加决定性影响的情况下或作用下形成的。\n也就是说，一个系统在无外界强迫时，系统内部自发形成的有序行为称为自组织。反之，一个系统在外界强迫下形成有序行为称为他组织或被组织。\n不同现代科学分支的视角\n系统科学的观点：自组织是指一个系统在内在机制驱动下，自行从简单向复杂、从粗糙向细致方向发展，不断提高自身复杂度和精细度的过程。 热力学的观点：自组织是指一个热力学系统通过与外界交换物质、能量、信息，不断降低自身熵含量、提高有序度的过程。 进化论的观点：自组织是指一个系统在“遗传”、“变异”和“优胜劣汰”机制的作用下，其组织结构和运行模式不断自我完善，从而不断提高对于环境的适应能力的过程。 自组织形式 系统的自创生：在没有特定外力干预下，系统从无到有 地自我创造、自我产生、自我形成。\n系统的自生长：自组织有两方面含义：一是组织的从无到有，二是组织的从小到大、从差到好 ，后者就称为“自生长”。\n系统的自适应、自校正：\n自适应和自校正含义相近，自适应广义一些，自校正狭义一些。\n系统的“适应性”用来刻画系统与环境的相互关系 ，有两个方面的含义：从外部看，适应是指系统与环境之间的物质、能量、信息交换是以一种稳定而有序的方式进行；从内部看，适应是指系统各组分之间以一种稳定而有序的方式彼此合作与竞争、互动与互应。\n一旦这种稳定而有序的关系被破坏，系统就处于不适应环境的状态，需要变革自身重新适应环境，或者被迫解体。\n如果系统对环境的适应靠自己的力量建立和维持，就是自适应。\n系统的自复制：系统在没有特定外作用下产生与自身结构相同的子代 ，称为自复制或自繁殖。\n系统的自修复：在没有特定外部力量干预下，系统靠自身力量得以修复（在发生故障或伤害后恢复到正常），称为“自修复” 。\n主要分支（新三论） 耗散结构理论\n以比利时化学家普里高津为代表的布鲁塞尔学派创立了耗散结构理论 ：以化学、物理过程中的不可逆现象为研究背景，探索出从化学、物理的平衡态中产生出有序结构的途径，也即从无序状态中产生出有序结构的一种形式，最大的贡献是使人们认识到了结构产生的自组织途径。\n协同学理论\n“协同学”是德国物理学家哈肯创立的一种解释自组织 形成机理、或从简单到复杂机制的理论，提出了一套分析与描述自组织问题的方法。\n突变论\n托姆、齐曼、阿尔诺特等人，从数学描述的角度 研究结构突变的机制问题，形成了突变论，成为描述自组织过程的有利工具。\n耗散结构理论简介 耗散结构理论是指用热力学和统计物理学的方法，研究耗散结构形成的条件、机理和规律的理论 。\n耗散结构理论研究一个系统从 混沌无序向有序转化 的机理、条件和规律 的科学 作为以揭示复杂系统中 自组织运动规律 的一门 具有强烈方法论功能 的新兴学科，其理论、概念和方法不仅适用于自然现象，同时也适用于解释社会现象。\n熵的概念 熵最初是热力学的一个概念，用来描述热力系统的 “状态、态势 ”，是热力学系统的“态函数”，称为热力学熵\n之后，统计物理学建立了熵与“系统可存在的微观态数”之间的关系，称为统计物理学熵\n再后来，信息论的创立者将熵引入到信息论中，用来对信息量进行定量度量 ，称为信息熵\n现在，数学家和系统科学家又将其进一步扩展和规范，用熵描述“一般系统内部各子系统分布的均匀性”，是研究复杂系统状态的重要变量 $$ S=k\\ln W $$ 与一个宏观态对应的微观态的数目越多，熵值就越大，这个宏观态就越均匀、越无序\n系统演化方向与熵值变化的关系\n处于平衡态的系统具有最大的热力学几率和熵值 一个系统的状态偏离平衡态越远，这个状态熵值就越小 系统从非平衡态向平衡态转移的过程 ，就是一个 熵由小增大 的过程。 最小熵原理 线性区的非平衡定态是熵产生率最小的状态\n其物理意义是：线性非平衡体系内不可逆过程的熵产生率 P 随时间的进行总是朝着熵产生率减小的方向进行，直到 熵产生率达到极小值，体系达到非平衡的定态，这时熵产生率不再随时间变化，这就是最小熵产生原理 。\n最小熵产生原理保证了非平衡体系线性区内各点性质不随时间变化的定态是稳定的。\n耗散结构的发现与自组织现象 对于孤立系统或近平衡态的开放系统，演化总是朝着平衡态或尽可能接近平衡态的方向发展，即：演化指向均匀、无序、低级和简单的方向。\n当开放系统处于远离平衡态的非线性区时，形成新的有序结构（耗散结构）\n不管是什么系统，欲维持有序结构 ，都必须不断地对系统作某种形式的功（即 输入 “负熵流 系统需要不断地“耗散”能量 ，故将这种通过自组织“进化”而产生的有序结构称为 “耗散结构 。\n耗散结构的主要贡献是：对远离平衡态的有序结构现象，找到了一种合理的科学解释。\n协同学简介 协同学是研究协同系统 从无序到有序 的演化规律的综合性学科。\n协同系统 是指由 许多子系统组成 的、能以 自组织 方式形成宏观的空间、时间或功能有序结构 的开放系统。\n基本概念：竞争、协同，序参量和支配 （役使）\n由众多子系统组成的大系统总有一个相对稳定的宏观结构，这个宏观结构是由各个子系统相互竞争、协同作用而形成的模式，正是由于各个子系统之间的 协同作用与竞争 决定着系统从无序到有序的演化进程。\n研究对象：协同学的研究对象是由大量子系统组成的系统，只要它是一个开放系统，而且具有一定的非线性\n序和对称性 系统科学中的序：系统内部元素与元素、子系统与元素、子系统与子系统之间 相互联系、相互作用的规则 。\n在子系统之间可以比较有序程度的联系称为有序关系 。\n所谓“有序”，指事物之间和事物内部的诸要素之间有规则的联系或有规律的转化； 所谓“无序”，指事物之间和事物内部的诸要素之间混乱无规则的组合其转化亦无规律。 系统科学中关心的序有两种：结构排列上的 结构序 （空间序、时间序、时空序）和实现不同功能时有一定先后的 功能序 。\n对称性：除了空间结构对称性之外，常见的还有标度变换对称性、时间平移对称性、时间反演对称性，等等。\n一般，具有对称性的系统更容易描述、分析，更直观地了解系统的演化机制，更深刻地把握系统的性质。\n在系统科学中，可以采用对称性作为复杂事物有序程度的比较标准。\n若系统演化过程中的状态发生了变化，原本具有某种对称性，后来丧失了这种对称性 称这种对称性降低的情况为对称性破缺。对称性破缺标志着系统状态有序程度的增加。\n协同学的主要结论：哈肯 耗散结构理论认为，一个开放系统由无序状态转变为有序状态，远离平衡态是其必要条件。但是哈肯发现，不光处于非平衡态的系统可以从无序变为有序，处在平衡态的系统同样可以从无序变为有序。\n一个开放系统能否从无序转变为有序，关键不在于是不是处于非平衡态，也不在于距离平衡态多远， 而在于系统内部是否存在着大量子系统的协同作用 （即子系统之间通过交换物质、能量、信息等方式相互作用）， 在此作用下最终能否形成一种整体效应或一种新型结构。 在系统这个层次，这种整体效应或新型结构可能具有某种全新性质，而这种性质通常在子系统层次是不具备的。\n序参量：有序性的度量 在系统发生非平衡相变时，序参量的变化不仅决定了系统相变的形式和特点，同时还决定了其他快变量的变化情况。 换句话说， 序参量起着支配众多快变量变化的作用 。所以，序参量又称为命令变量。（英文 order 同时具有“命令”和“秩序”的含义）\n序参量的确定：\n一些系统中，可以直接找出那些明显慢于其他变量的作为序参量； 在另一些复杂系统中，往往无法区分序参量和一般状态变量，但有时通过变量变换，可以找出系统序参量 。 协同学的支配原理 在系统自发地向有序结构演化的过程中，少数变量形成了序参量，他们的变化要明显慢于系统的其他变量，同时，序参量在系统接近发生显著质变的临界点时，支配、役使其他状态变量。正是这些 序参量确定了系统的宏观行为，表征了系统的有序程度，决定了相变的形式和速度。\n哈肯将系统在相变过程中，为数众多的快变量由序参量支配、主宰的现象称为支配原理，又称 役使原理。\n协同学的方法论意义 善于从矛盾的个性中把握共性\n巧妙运用类比的研究方法\n紧抓住系统演化过程中的主要矛盾\n正确处理统一性和斗争性的关系\n","permalink":"http://localhost:1313/post/system_sci_review/","summary":"\u003cblockquote\u003e\n\u003cp\u003e来自老师的课程资料，请勿商用\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch1 id=\"绪论\"\u003e绪论\u003c/h1\u003e\n\u003ch2 id=\"系统和系统科学\"\u003e系统和系统科学\u003c/h2\u003e\n\u003ch3 id=\"系统的定义\"\u003e系统的定义\u003c/h3\u003e\n\u003cp\u003e现代系统研究开创者贝塔朗菲对系统的定义：\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e系统是\u003cstrong\u003e相互作用\u003c/strong\u003e的\u003cstrong\u003e多元素\u003c/strong\u003e的复合体。\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e该定义的精确说法是\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e如果一个对象集合中至少有两个可以区分的对象，所有对象按照可以辨认的特有方式相互联系在一起，就称该集合为一个系统。集合中包含的对象成为系统的组成部分（组分），最小的、不需要再细分的组分称为系统的元素或要素。\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e重点：\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e至少两个元素——系统的多元性\u003c/li\u003e\n\u003cli\u003e组成部分相互作用——矛盾的统一\u003c/li\u003e\n\u003c/ol\u003e","title":"系统科学与工程复习整理"},{"content":" 操作思路 在Web of Science或者其他学术搜索引擎上查找所需要的文献，然后将全体检索结果的信息导出成Excel（包括作者、标题、出版年份、期刊、DOI号等等） 以DOI号为检索条件，到Sci-Hub下载文献，将这一过程写成爬虫进行批量处理 导出DOI号序列，写成循环来逐个爬取 以DOI号检索文献，进入下载页面，查找到保存按钮对应的元素，下载到本地 将下载的PDF文件按照自己的标准重命名 手动补全无法在Sci-Hub上得到的文献 注意事项 自动下载覆盖率 这个方法不可能自动获得100%的文献，因为：\nSci-Hub据说对主要出版商的文献覆盖率超过90%，右——这些数据都只是道听途说，总之就是说在批量下载百篇以上文献的时候，肯定会遇到Sci-Hub未收录的情况，实际覆盖率还和学科领域、发表年份、文献语种之类的因素有关（实际操作中发现，Sci-Hub对西班牙语之类的小语种文献覆盖率没有英语文献那么高） Web of Science检索结果不一定包含DOI号（抑或PMID号），这些文章自然也就没无法在Sci-Hub上检索 除了上述硬性的限制，一些文献还可能因为其他原因下载失败：\n网络条件不好，下载时间过长 频繁请求导致本机IP被Sci-Hub给ban了 解决思路如下。\n下载时间过长 打开网页之后，点击save按钮就会自动开始下载PDF文件，通常在几秒内就能完成，但偶尔也会遇到下载特别久的情况（比如网卡了）。但是网页端保持打开的时长是确定的，我经过调整设置成了20秒。也就是说，点击save按钮20秒之后，不管文件有没有下载完成，下载过程都会中断。只下了一半的文件就会破损。在使用Chrome Driver的时候，在下载文件夹里可能会残留一个后缀为.crdownload的临时性文件。\n对于这些临时性文件，可以通过检查文件名后缀的方式来辨别——只有后缀为.pdf的文件，我们才把它视为下载成功的完整文献，并进入到重命名保存的工作；否则就删除文件并标记为下载失败。\n为了减少以上情况出现的概率，需要设置一个足够长的等待时间，具体根据文件大小和网络速度而定。但是也没有必要等得太长，不然也会降低爬虫的运行速度。建议在开始正式运行之前可以先下载两到三个文献尝试一下，然后确定适合的时长。\nIP被Sci-Hub拒绝 因为高频率重复相同的访问和下载请求，Sci-Hub有可能将我判定为机器人（事实上我也确实是一个机器人），并禁止我的IP访问其网站。想到了3个解决办法：\n用sleep()控制爬虫的暂停时间，适当延长两次访问之间的时间间隔。但是这样做的代价就是牺牲爬虫的工作速度，需要做好二者的权衡。我这里设置成了5秒。\n切换访问域名。Sci-Hub本身拥有多个域名，目前有https://sci-hub.ru、https://sci-hub.st、https://sci-hub.se这三个。在每次访问的时候切换到不同的域名。\n如果Ke Xue上网的话，频频被Sci-Hub禁的时候可以换一条线路。（只要我改IP，你就ban不到我）\n这个问题也在提醒我们，频繁用爬虫确实会给网站服务器带来过大的负担。我们在用爬虫给自己省力气的同时也还要体谅体谅网站。更何况是Sci-Hub这种在学术出版商的围堵中坚持为爱发电的伟大工程（呜呜呜不说了，给他们捐钱去了）\n重复运行提高覆盖率 在我的实际操作中，网络条件良好的情况下，第一次全部爬取，得到了60%左右的文献；\n第二次针对缺失的文献爬取，将文献覆盖率提高到了80%左右；\n第三次爬取之后，覆盖率接近90%，可以确定剩下的文献都是Sci-Hub没有收录的，或者在检索的时DOI号就缺失的。对于这些文献，只能写一段代码输出其DOI号或者文章标题，手动补全。\n整体代码 A crawler to do mass downloading based on reference table (from Web of Science) and Sci-Hub database.\n1 2 3 4 5 import pandas as pd from selenium import webdriver import time import os import random 1 2 3 4 5 6 7 8 9 10 11 12 13 table = pd.read_excel(\u0026#39;Full record.xlsx\u0026#39;,sheet_name=\u0026#39;savedrecs\u0026#39;) dois = table[\u0026#39;DOI\u0026#39;].copy(deep=True) for i in dois.index: dois[i] = str(dois[i]) finished = [0 for i in range(len(dois))] auths = table[\u0026#39;Authors\u0026#39;].copy(deep=True) for i in auths.index: name = auths[i].split(\u0026#39;;\u0026#39;)[0] auths[i] = name.split(\u0026#39;,\u0026#39;)[0] years = table[\u0026#39;Publication Year\u0026#39;] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 def scihub_get(dois, i): chromeOptions = webdriver.ChromeOptions() prefs = {\u0026#34;download.default_directory\u0026#34; : \u0026#34;D:/Chrome Downloads/Articles\u0026#34;} chromeOptions.add_experimental_option(\u0026#34;prefs\u0026#34;,prefs) chrome_driver_path = \u0026#34;D:/Chrome Downloads/chromedriver.exe\u0026#34; wd = webdriver.Chrome(executable_path=chrome_driver_path) #, options=chromeOptions) scihub = [\u0026#39;https://sci-hub.ru/\u0026#39;, \u0026#39;https://sci-hub.st/\u0026#39;, \u0026#39;https://sci-hub.se/\u0026#39;] root = scihub[random.randint(0,2)] # search by doi doi = dois[i] wd.get(root+doi) time.sleep(1) try: b = wd.find_element_by_xpath(\u0026#39;//*[@id=\u0026#34;buttons\u0026#34;]/button\u0026#39;) b.click() flag = True time.sleep(20) except: print(\u0026#39;access failed. index = \u0026#39;+str(i)+\u0026#39; doi = \u0026#39;+doi) flag = False time.sleep(5) wd.quit() return flag 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 def rename_file(dois, finished, auths, years, i): time.sleep(1) path = \u0026#39;C:/Users/86158/Downloads/\u0026#39; dir_list = os.listdir(path) if len(dir_list)\u0026gt;0: found = 0 for file in dir_list: if file[0:3]!=\u0026#39;No_\u0026#39;: found = 1 break if found==0: #when didn\u0026#39;t get the \u0026#34;save\u0026#34; button print(\u0026#39;download failed. index = \u0026#39;+str(i)+\u0026#39; doi = \u0026#39;+dois[i]) else: #when we get a new file l = file.split(\u0026#39;.\u0026#39;) if l[len(l)-1] != \u0026#34;pdf\u0026#34;: #when the file was half downloaded print(\u0026#39;download incomplete. index = \u0026#39;+str(i)+\u0026#39; doi = \u0026#39;+dois[i]) else: old = path+ file auth = str(auths[i]) try: year = str(int(years[i])) except: year = str(years[i]) index = [str(i//100), str((i%100)//10), str(i%10)] new = path+ \u0026#39;No_\u0026#39; +index[0]+index[1]+index[2]+\u0026#39;_\u0026#39; +auth+\u0026#39;_\u0026#39;+year+\u0026#39;.pdf\u0026#39; os.rename(old, new) finished[i] = 1 1 2 3 4 5 6 7 8 def article_get(dois, finished, auths, years, i): # visit scihub if dois[i]==\u0026#39;nan\u0026#39;: print(\u0026#39;doi missing. index = \u0026#39;+str(i)) else: if scihub_get(dois, i): # rename rename_file(dois, finished, auths, years, i) 1 2 for i in range(0,3): #len(dois)): article_get(dois, finished, auths, years, i) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 # try a new round for missing articles path = \u0026#39;C:/Users/86158/Downloads/\u0026#39; dir_list = os.listdir(path) for i in range(0,len(dois)): auth = str(auths[i]) try: year = str(int(years[i])) except: year = str(years[i]) index = [str(i//100), str((i%100)//10), str(i%10)] filename = \u0026#39;No_\u0026#39; +index[0]+index[1]+index[2]+\u0026#39;_\u0026#39; +auth+\u0026#39;_\u0026#39;+year+\u0026#39;.pdf\u0026#39; if filename in dir_list: continue else: article_get(dois, finished, auths, years, i) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 # output information of all missing articles path = \u0026#39;C:/Users/86158/Downloads/\u0026#39; dir_list = os.listdir(path) count = 0 for i in range(0,len(dois)): auth = str(auths[i]) try: year = str(int(years[i])) except: year = str(years[i]) index = [str(i//100), str((i%100)//10), str(i%10)] filename = \u0026#39;No_\u0026#39; +index[0]+index[1]+index[2]+\u0026#39;_\u0026#39; +auth+\u0026#39;_\u0026#39;+year+\u0026#39;.pdf\u0026#39; if filename in dir_list: continue else: print(filename+\u0026#34; doi: \u0026#34;+dois[i]) if dois[i]==\u0026#34;nan\u0026#34;: print(\u0026#34; title: \u0026#34;+table[\u0026#34;Article Title\u0026#34;][i]) count+=1 print(str(count)+\u0026#34; articles missing in total.\u0026#34;) 60% downloaded after first round. Many failures were caused by webserver block. Our IP address may be identified as a robot or DDoS attacker due to regular, frequent visit to the website.\nI used sleep command to lower the visiting frequency, and switched randomly between different sites, as methods to deal with webserver block.\n80% downloaded after second round. Those that remained unfinished were mostly not in the database of sci-hub or lacked DOI numbers.\nHowever, when an article is half downloaded, and the webdriver reached time limit and closed, it is possible that we get a broken file. This means that the file is correctly named, hiding in the group. Yet if we try to open the PDF file it won\u0026rsquo;t work. At present I don\u0026rsquo;t know how to do automatic check on these errors. The only solution is longer time period before the webdriver closes, but the whole process will be slower as a sacrifice.x\n","permalink":"http://localhost:1313/post/crawl_papers_from_scihub/","summary":"\u003ccenter\u003e\n\u003cimg src=\"/images/image-20220518230710288.png\" alt=\"image-20220518230710288\" style=\"zoom:50%;\" /\u003e\n\u003c/center\u003e\n\u003ch1 id=\"操作思路\"\u003e操作思路\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e在Web of Science或者其他学术搜索引擎上查找所需要的文献，然后将全体检索结果的信息导出成Excel（包括作者、标题、出版年份、期刊、DOI号等等）\u003c/li\u003e\n\u003cli\u003e以DOI号为检索条件，到Sci-Hub下载文献，将这一过程写成爬虫进行批量处理\n\u003cul\u003e\n\u003cli\u003e导出DOI号序列，写成循环来逐个爬取\u003c/li\u003e\n\u003cli\u003e以DOI号检索文献，进入下载页面，查找到保存按钮对应的元素，下载到本地\u003c/li\u003e\n\u003cli\u003e将下载的PDF文件按照自己的标准重命名\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e手动补全无法在Sci-Hub上得到的文献\u003c/li\u003e\n\u003c/ul\u003e","title":"Sci-Hub + Python爬虫实现文献批量下载"},{"content":"前天中午得知美赛开奖，怀着忐忑的心态赶紧查了一下。得到了一张Honorable Mention的奖状。虽然算不上什么大奖，但终于给本科阶段的数学建模经历留下了一个印记。之前就一直想着，等到美赛彻底结束之后要开一个纪念帖。几经拖延，现在终于画上了句号。\u0026#x1f436;\n想起比赛交稿截止的前几个小时，北街咖啡的落地窗外面的天已经黑了又白，邻桌同样参赛的小组也已经纷纷交稿离开。而我们却还面临着模型输出结果不能复现的窘境，一遍一遍焦急地等着代码跑出曲线。前有队友等待着给出最终结论的压力，后有DDL步步紧逼，让人心态爆炸——这还不是一般的爆炸，而是当你把一个摔炮丢进水里，闷着“崩”一声的爆炸。等到论文写完，邮件发送成功，人已经累得没有任何释放情绪的压差了，只有残余的压力和咖啡因还仍然迫使神经保持着清醒。回去睡了一觉醒来后仍然恍惚，还在慌张地自言自语“我是不是应该赶紧写introduction了……”\n继续顺着时间往回溯，会发现更多原本可以做得更好的地方。比如本可以早一些学会LATEX的复杂排版，不必在最后关键时刻还纠结于如何调节图表的布局；比如可以在设计模型的初期阶段更加果断一些，早那么一天开始修改、完善模型，给写代码和论文留出更多时间……\n但其实，正是因为有了这一次不完美的比赛，这些“本可以”才能成为我的经验教训。如果时光倒流三个月，一脸茫然的我，或许并不会准备得更好。该踩的坑，或许还会再一次踩进去。\n数学建模主要是在谈神的课堂上。说来奇怪，当年听谈神的课从来云里雾里，陷入对自己学习能力和态度的怀疑当中；但在别的课程中，精妙的数学模型总能让我眼前一亮。印象最深的是上学期的一门专业课上，偶然找到课本上简略提到的第一代 Regional Acid Deposition Model (Chang et al., 1987) 的论文，然后一头栽进去啃了大半个月，终于彻底理解模型结构时的痛快。\n对我来说，数学建模的吸引力在于，它能够把复杂的、模糊的甚至是感性的东西，变得清晰、可触摸。尽管任何事物被抽象成模型之后必然损失了很多的丰富细节，但通过不断地改进，模型与真实世界越来越接近（不论模型是否能完全达到真实）。借助这些模型，我们寻求对世界的改变，寻求对万物运行规律的参与。说得虚一点儿，似乎是在与神对话，尝试理解并代入神的位置（什么渎神的快感hhhh）。\n仔细回溯的话，在高中参加物理竞赛的时候，连续问题的数学建模思想已经在各种牛顿力学和电磁学题目中无处不在了。记得当时班主任给我们布置的很多物理问题，并不在初始就告诉我们要求解什么参数，而是一点点从情景中抽象出物理模型，探索模型的不同状态以及边界。当时的我是在这种探索的过程中第一次感受到了物理的魅力。而大学以来，随着对其他学科的了解，发现这种魅力其实无处不在。作为学生的幸福之一就是贪婪地、放肆地享受这份魅力。\n视线拉回到当下，这一次数学建模比赛已经成了过去的一场小邂逅。今年学校从学科竞赛认定名单上删去了MCM/ICM，从功利的角度而言，少了一些好处。也只有在这样的情况下，我们得以放下很多斤斤计较，更真实地体验、感受、经历，尝试赋予这场比赛别的价值：一次自我考验、自我审视的机会。当创造出来的东西所回报甚少的时候，它们在精神层面上的意义可能拥有更多自由空间。\n关于2022年ICM的E题，我们小组的论文和代码等等材料都上传到了Gitee，如果有需要参考的话可以在这里获取。最后放上我们组的小奖状~ 未来的路上，继续加油！\n","permalink":"http://localhost:1313/post/on_icm_2022/","summary":"\u003cp\u003e前天中午得知美赛开奖，怀着忐忑的心态赶紧查了一下。得到了一张Honorable Mention的奖状。虽然算不上什么大奖，但终于给本科阶段的数学建模经历留下了一个印记。之前就一直想着，等到美赛彻底结束之后要开一个纪念帖。几经拖延，现在终于画上了句号。\u0026#x1f436;\u003c/p\u003e","title":"2022美赛纪念"},{"content":"自回归滑动平均模型（Autoregressive moving average model，ARMA）是研究时间序列的重要方法，以由自回归模型（简称AR模型）与移动平均模型（简称MA模型）为基础“混合”构成。用AMRA模型预测了在当前趋势下，未来二十年内全球二氧化碳浓度的变化趋势。\n分析过程 数据集：NOAA Earth System Research Laboratories下属的Global Monitoring Laboratory提供的1969年-2022年逐月的二氧化碳浓度变化数据\n数据来源网址\n用ARMA模型进行分析，估计出模型参数，并预测未来10年内的二氧化碳浓度变化。由于前7年数据有缺失，从1976年开始才有逐月连续的数据，所以时间序列上从1976年开始。\n对数据取一阶差分，通过ADF检验和KPSS检验，认为数据平稳。\n根据自相关函数ACF和偏自相关函数PACF，估计模型参数为$(p,q)=(10,16)$。\n这里实际上并没有做到最后一个超出阈值的nLag，但是在二阶差分的条件下不管取多大的nLag都没法保证autoclrrelation小于阈值。随着差分阶数增大，ACF收敛得越来越快，但是PACF收敛得越来越慢，两者也没有办法兼顾。\n对未来20年的二氧化碳浓度数据进行预测。\nMATLAB脚本 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 Data = xlsread(\u0026#39;历年CO2数据.xlsx\u0026#39;); % 读入数据 Y0 = Data(25:length(Data),3); % 前7年数据有缺失，从976年开始逐月连续。前两列是年-月，第三列数据是CO2浓度 figure(1) plot(Y0); xlim([0,527]); ylabel(\u0026#39;CO_2浓度 μmol·mol^{-1}\u0026#39;); xlabel(\u0026#39;时间序列\u0026#39;); title(\u0026#39;CO_2浓度原始数据\u0026#39;); n = 2; % 差分阶数 Y = Y0; for i = 1:n Y = diff(Y); end y_h_adf = adftest(Y) % ADF检验 y_h_kpss = kpsstest(Y) % KPSS检验 figure(2) plot(Y); xlim([0,527]); ylabel(\u0026#39;CO_2浓度差分 μmol·mol^{-1}\u0026#39;); xlabel(\u0026#39;时间序列\u0026#39;); title(\u0026#39;CO_2浓度差分数 据\u0026#39;); figure(3) autocorr(Y,10); figure(4) parcorr(Y,16); Mdl = arima(10, 2, 16); % p, n, q EstMdl = estimate(Mdl,Y0); step = 12*20; %预测范围为20年 [forData,YMSE] = forecast(EstMdl,step,\u0026#39;Y0\u0026#39;,Y0); lower = forData - 1.96*sqrt(YMSE); %95置信区间下限 upper = forData + 1.96*sqrt(YMSE); %95置信区间上限 figure(5) h0 = plot(Y0); hold on; h1 = plot(length(Y0):length(Y0)+step,[Y0(end);lower],\u0026#39;r:\u0026#39;); plot(length(Y0):length(Y0)+step,[Y0(end);upper],\u0026#39;r:\u0026#39;); h2 = plot(length(Y0):length(Y0)+step,[Y0(end);forData]); legend([h0, h1 h2],\u0026#39;历史数据\u0026#39;,\u0026#39;95% 置信区间\u0026#39;,\u0026#39;预测值\u0026#39;,...\u0026#39;Location\u0026#39;,\u0026#39;NorthWest\u0026#39;) title(\u0026#39;CO_2浓度变化预测\u0026#39;); ylabel(\u0026#39;CO_2浓度差分 μmol·mol^{-1}\u0026#39;); xlabel(\u0026#39;时间序 列\u0026#39;); hold off; 参考资料 使用ARMA做时间序列预测全流程（附MATLAB代码，ARIMA法） - 知乎 (zhihu.com)\n","permalink":"http://localhost:1313/post/amra_co2/","summary":"\u003cp\u003e自回归滑动平均模型（Autoregressive moving average model，ARMA）是研究时间序列的重要方法，以由自回归模型（简称AR模型）与移动平均模型（简称MA模型）为基础“混合”构成。用AMRA模型预测了在当前趋势下，未来二十年内全球二氧化碳浓度的变化趋势。\u003c/p\u003e\n\u003cimg src=\"/images/image-20220427030941064.png\" alt=\"image-20220427030941064\" style=\"zoom: 33%;\" /\u003e\n\u003ch1 id=\"分析过程\"\u003e分析过程\u003c/h1\u003e\n\u003cp\u003e数据集：NOAA Earth System Research Laboratories下属的Global Monitoring Laboratory提供的1969年-2022年逐月的二氧化碳浓度变化数据\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://gml.noaa.gov/dv/iadv/graph.php?code=MLO\u0026program=ccgg\u0026type=ts\"\u003e数据来源网址\u003c/a\u003e\u003c/p\u003e","title":"自回归滑动平均模型预测全球CO2浓度变化"},{"content":"环境数据分析课程的大作业，主要目的应用一下课上学到的一些数据分析方法。\n通过爬虫获取我国沿海海水水质的监测数据； 以散点图直观反映水质类别的分布和随时间变化情况； 将化学需氧量数据转换为正态分布，以海区/省份为分类变量进行单因素方差分析； 将无机氮数据转换为正态分布，用Pearson分析和线性回归分析考察化学需氧量和无机氮数据的相关性； 利用机器学习，从多个污染指标数据预测海区分类。 数据获取 爬虫 来源：生态环境部的海水水质监测信息公开系统。网址：http://ep.nmemc.org.cn:8888/Water/\n1 2 3 4 5 from selenium import webdriver import pandas as pd wd = webdriver.Chrome() wd.get(\u0026#39;http://ep.nmemc.org.cn:8888/Water/\u0026#39;) 对动态网页的表格设置过滤属性。这里先筛选获取2020年的数据。\n1 2 3 4 5 6 7 8 9 10 11 12 year = wd.find_element_by_id(\u0026#39;ddl_year\u0026#39;) sea = wd.find_element_by_id(\u0026#39;ddl_sea\u0026#39;) province = wd.find_element_by_id(\u0026#39;ddl_province\u0026#39;) city = wd.find_element_by_id(\u0026#39;ddl_city\u0026#39;) year.send_keys(\u0026#39;2020\u0026#39;) sea.send_keys(\u0026#39;全部\u0026#39;) province.send_keys(\u0026#39;全部\u0026#39;) city.send_keys(\u0026#39;全部\u0026#39;) botton = wd.find_element_by_id(\u0026#39;btn\u0026#39;) botton.click() 获取表头和数据，并整理成二维数组的类型。\n1 2 3 4 5 6 7 8 9 10 11 header = wd.find_element_by_id(\u0026#39;gridHd\u0026#39;) heads = header.text.replace(\u0026#39;\\n\u0026#39;,\u0026#39;\u0026#39;).split(\u0026#39; \u0026#39;) body = wd.find_element_by_id(\u0026#39;gridDatas\u0026#39;) predatas = body.text.split(\u0026#39;\\n\u0026#39;) total = int(len(predatas)/2) data = [] for i in range(total): row = predatas[2*i].split(\u0026#39; \u0026#39;) row.append(predatas[2*i+1]) data.append(row) 把2021年的数据也添加到数组里，转换成data frame。\n1 2 3 4 5 6 7 8 9 10 11 12 year.send_keys(\u0026#39;2021\u0026#39;) botton.click() body = wd.find_element_by_id(\u0026#39;gridDatas\u0026#39;) predatas = body.text.split(\u0026#39;\\n\u0026#39;) total = int(len(predatas)/2) for i in range(total): row = predatas[2*i].split(\u0026#39; \u0026#39;) row.append(predatas[2*i+1]) data.append(row) df = pd.DataFrame(data, columns=heads) 数据整理和保存 发现部分监测点数据位移，原因是部分监测点的溶解氧数据缺失，还有一些数据点的溶解氧和石油类数据都缺失。对这些监测点的信息进行修正，缺失的地方用None标记。\n1 2 3 4 5 6 7 8 9 for i in range(len(df)): if df[\u0026#39;水质类别\u0026#39;][i]==None: for j in range(13,8,-1): df.iloc[i,j] = df.iloc[i,j-1] df.iloc[i,8] = None for i in range(len(df)): if df[\u0026#39;水质类别\u0026#39;][i]==None: df.iloc[i,13] = df.iloc[i,12] df.iloc[i,12] = None 保存数据到本地。此时数据全都以字符串保存。缺失值标记为“None”，低于检出限的数据标记为“未检出”，或根据检出限的值标记为“\u0026lt;0.01”或“\u0026lt;0.1”。\n1 2 wd.quit() df.to_pickle(\u0026#39;./Data.pkl\u0026#39;) 水质类别动态变化 根据每个月水质监测数据的经纬度信息和水质类别作图。\n1 2 3 4 5 import pandas as pd import matplotlib.pyplot as plt from matplotlib.pyplot import MultipleLocator data = pd.read_pickle(\u0026#39;./Data.pkl\u0026#39;) 查看一下水质类别有哪些分类，执行data['水质类别'].value_counts()，输出：\n1 2 3 4 5 6 一类 4082 二类 1343 劣四类 1154 三类 514 四类 476 Name: 水质类别, dtype: int64 将经纬度数据转换成浮点型。\n1 2 data[\u0026#39;实测经度\u0026#39;] = pd.to_numeric(data[\u0026#39;实测经度\u0026#39;]) data[\u0026#39;实测纬度\u0026#39;] = pd.to_numeric(data[\u0026#39;实测纬度\u0026#39;]) 定义返回某年某月所有监测点坐标的函数。\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 def getlongitude(dataframe,year,month): longitude_by_level = [] a = dataframe[(dataframe[\u0026#39;监测时间\u0026#39;]==year+\u0026#39;-\u0026#39;+month)\u0026amp;(dataframe[\u0026#39;水质类别\u0026#39;]==\u0026#39;一类\u0026#39;)][\u0026#39;实测经度\u0026#39;] b = dataframe[(dataframe[\u0026#39;监测时间\u0026#39;]==year+\u0026#39;-\u0026#39;+month)\u0026amp;(dataframe[\u0026#39;水质类别\u0026#39;]==\u0026#39;二类\u0026#39;)][\u0026#39;实测经度\u0026#39;] c = dataframe[(dataframe[\u0026#39;监测时间\u0026#39;]==year+\u0026#39;-\u0026#39;+month)\u0026amp;(dataframe[\u0026#39;水质类别\u0026#39;]==\u0026#39;三类\u0026#39;)][\u0026#39;实测经度\u0026#39;] d = dataframe[(dataframe[\u0026#39;监测时间\u0026#39;]==year+\u0026#39;-\u0026#39;+month)\u0026amp;(dataframe[\u0026#39;水质类别\u0026#39;]==\u0026#39;四类\u0026#39;)][\u0026#39;实测经度\u0026#39;] e = dataframe[(dataframe[\u0026#39;监测时间\u0026#39;]==year+\u0026#39;-\u0026#39;+month)\u0026amp;(dataframe[\u0026#39;水质类别\u0026#39;]==\u0026#39;劣四类\u0026#39;)][\u0026#39;实测经度\u0026#39;] longitude_by_level.append(a) longitude_by_level.append(b) longitude_by_level.append(c) longitude_by_level.append(d) longitude_by_level.append(e) return longitude_by_level def getlatitude(dataframe,year,month): latitude_by_level = [] a = dataframe[(dataframe[\u0026#39;监测时间\u0026#39;]==year+\u0026#39;-\u0026#39;+month)\u0026amp;(dataframe[\u0026#39;水质类别\u0026#39;]==\u0026#39;一类\u0026#39;)][\u0026#39;实测纬度\u0026#39;] b = dataframe[(dataframe[\u0026#39;监测时间\u0026#39;]==year+\u0026#39;-\u0026#39;+month)\u0026amp;(dataframe[\u0026#39;水质类别\u0026#39;]==\u0026#39;二类\u0026#39;)][\u0026#39;实测纬度\u0026#39;] c = dataframe[(dataframe[\u0026#39;监测时间\u0026#39;]==year+\u0026#39;-\u0026#39;+month)\u0026amp;(dataframe[\u0026#39;水质类别\u0026#39;]==\u0026#39;三类\u0026#39;)][\u0026#39;实测纬度\u0026#39;] d = dataframe[(dataframe[\u0026#39;监测时间\u0026#39;]==year+\u0026#39;-\u0026#39;+month)\u0026amp;(dataframe[\u0026#39;水质类别\u0026#39;]==\u0026#39;四类\u0026#39;)][\u0026#39;实测纬度\u0026#39;] e = dataframe[(dataframe[\u0026#39;监测时间\u0026#39;]==year+\u0026#39;-\u0026#39;+month)\u0026amp;(dataframe[\u0026#39;水质类别\u0026#39;]==\u0026#39;劣四类\u0026#39;)][\u0026#39;实测纬度\u0026#39;] latitude_by_level.append(a) latitude_by_level.append(b) latitude_by_level.append(c) latitude_by_level.append(d) latitude_by_level.append(e) return latitude_by_level 定义画出某年某月水质类别分布图的函数。将网上找的我国海岸线轮廓作为底图（网上下载下来是shp格式的，但是找到了一个很好的网站，可以将shp图层文件转换成位图 https://mapshaper.org/）。\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 def draw_plot(year,month,longitude_by_level,latitude_by_level): fig, ax = plt.subplots(figsize=((128-106),(42-14))) ax.scatter(longitude_by_level[0], latitude_by_level[0], c=\u0026#39;paleturquoise\u0026#39;, s=100, EdgeColor=\u0026#39;k\u0026#39;) ax.scatter(longitude_by_level[1], latitude_by_level[1], c=\u0026#39;c\u0026#39;, s=100, EdgeColor=\u0026#39;k\u0026#39;) ax.scatter(longitude_by_level[2], latitude_by_level[2], c=\u0026#39;cadetblue\u0026#39;, s=100, EdgeColor=\u0026#39;k\u0026#39;) ax.scatter(longitude_by_level[3], latitude_by_level[3], c=\u0026#39;teal\u0026#39;, s=100, EdgeColor=\u0026#39;k\u0026#39;) ax.scatter(longitude_by_level[4], latitude_by_level[4], c=\u0026#39;darkslategrey\u0026#39;, s=100, EdgeColor=\u0026#39;k\u0026#39;) plt.rcParams[\u0026#39;font.sans-serif\u0026#39;]=[\u0026#39;SimHei\u0026#39;]###解决中文乱码 plt.rcParams[\u0026#39;axes.unicode_minus\u0026#39;]=False ax.legend([\u0026#39;一类\u0026#39;,\u0026#39;二类\u0026#39;,\u0026#39;三类\u0026#39;,\u0026#39;四类\u0026#39;,\u0026#39;劣四类\u0026#39;],fontsize=30,loc=\u0026#39;upper left\u0026#39;) ax.axis([106,128,14,42]) major_locator=MultipleLocator(5) ax.xaxis.set_major_locator(major_locator) ax.grid() plt.xticks(fontsize=30) plt.yticks(fontsize=30) plt.xlabel(\u0026#39;经度(E°)\u0026#39;,fontsize=30) plt.ylabel(\u0026#39;纬度(N°)\u0026#39;,fontsize=30) plt.title(str(year)+\u0026#39;年\u0026#39;+str(month)+\u0026#39;月我国沿海监测点水质类别情况\u0026#39;,fontsize=40) img = plt.imread(\u0026#34;land-sea.jpg\u0026#34;) zoom = 0.0221 height,width = len(img)*zoom,len(img[0])*zoom x,y = 121.0,22.1 ax.imshow(img,extent=[x-width/2,x+width/2,y-height/2,y+height/2]) plt.savefig(\u0026#39;../沿海检测点水质类别变化/\u0026#39;+year+\u0026#39;-\u0026#39;+month+\u0026#39;.jpg\u0026#39;, dpi=200) 生成2020-2021年每月的水质分布图。\n1 2 3 4 5 6 for year in [\u0026#39;2020\u0026#39;,\u0026#39;2021\u0026#39;]: for month in [\u0026#39;01\u0026#39;,\u0026#39;02\u0026#39;,\u0026#39;03\u0026#39;,\u0026#39;04\u0026#39;,\u0026#39;05\u0026#39;,\u0026#39;06\u0026#39;,\u0026#39;07\u0026#39;,\u0026#39;08\u0026#39;,\u0026#39;09\u0026#39;,\u0026#39;10\u0026#39;,\u0026#39;11\u0026#39;,\u0026#39;12\u0026#39;]: print(\u0026#39;Drawing \u0026#39;+year+\u0026#39;-\u0026#39;+month) longitude_by_level = getlongitude(data,year,month) latitude_by_level = getlatitude(data,year,month) draw_plot(year,month,longitude_by_level,latitude_by_level) 将图片拼接成GIF动图。\n1 2 3 4 5 6 import imageio, os, sys jpg_lst = os.listdir(\u0026#39;../沿海检测点水质类别变化/\u0026#39;) frames = [] for img in jpg_lst: frames.append(imageio.imread(\u0026#39;../沿海检测点水质类别变化/\u0026#39; + img)) imageio.mimsave(\u0026#34;../沿海检测点水质类别变化/result.gif\u0026#34;, frames, \u0026#39;GIF\u0026#39;, duration=0.5) 简单数据分析：正态性检验、方差分析、Pearson分析和线性回归 以“化学需氧量(mg/L)”为研究数据，考察不同海区/省份之间的海水COD差异性。首先将数据转换为数值类型，标记为“未检出”的数据记为0。由于方差分析适用于正态分布的样本，因此先对数据进行分布检验，变换为接近正态分布的形式后再进行方差分析。\n1 2 3 4 5 6 7 8 9 10 11 import pandas as pd import matplotlib.pyplot as plt from scipy import stats import numpy as np import random import seaborn as sns from statsmodels.formula.api import ols from statsmodels.stats.anova import anova_lm from sklearn.linear_model import LinearRegression plt.rcParams[\u0026#39;font.sans-serif\u0026#39;]=[\u0026#39;SimHei\u0026#39;]###解决中文乱码 plt.rcParams[\u0026#39;axes.unicode_minus\u0026#39;]=False 数据清理和转换 首先读取数据，转换成浮点型。\n1 2 3 4 5 data = pd.read_pickle(\u0026#39;./Data.pkl\u0026#39;) for i in cod.index: if cod[i] == \u0026#39;未检出\u0026#39;: cod[i] = \u0026#39;0\u0026#39; cod = pd.to_numeric(cod) 从原始数据的直方图大致看一下分布情况。\n1 2 3 4 5 fig, ax = plt.subplots(figsize=(15,5)) sns.histplot(cod, bins=150) plt.xlim(min(cod), max(cod)) plt.xlabel(\u0026#39;COD(mg/L)\u0026#39;) plt.ylabel(\u0026#39;Frequency\u0026#39;) 可以看出样本是明显有偏的，计算样本的偏度（Skewness）和峰度（Kurtosis）。\n1 2 3 s = cod.skew() k = cod.kurt() print(\u0026#39;偏度 = \u0026#39;+str(s)+\u0026#39;, 峰度 = \u0026#39;+str(k)) 1 偏度 = 4.58614227400281, 峰度 = 43.47585104239013 偏度$S\u0026gt;0$，表明样本正偏，数据出现右侧长尾；峰度$K\u0026gt;6$，表明分布陡峭。尝试通过取对数得到接近正态的分布。这里考虑到0的数据比较多，若采用$x\u0026rsquo;=\\lg(x+10^{-n})$的转换方法，会在$x=-n$的地方出现一个异常峰，所以决定舍弃0数据。\n1 2 3 4 5 6 cod2 = pd.Series.copy(cod,deep=True) for i in cod2.index: if cod[i] == 0: del cod2[i] else: cod2[i] = np.log10(cod[i]) 1 2 3 4 5 fig, ax = plt.subplots(figsize=(7,5)) sns.histplot(cod2, bins=100) plt.xlim(min(cod2), max(cod2)) plt.xlabel(\u0026#39;log10(COD)\u0026#39;) plt.ylabel(\u0026#39;Frequency\u0026#39;) 1 2 3 s = cod2.skew() k = cod2.kurt() print(\u0026#39;偏度 = \u0026#39;+str(s)+\u0026#39;, 峰度 = \u0026#39;+str(k)) 1 偏度 = 0.08821022006460341, 峰度 = 0.6118708597667646 转换后的样本偏度约等于零，可以近似认为样本是无偏的。考虑到样本量\u0026gt;7500，根据大数定理认为样本总体符合正态分布。\n事实上如果用K-S检验，还是会发现不能通过正态性检验的。可能是因为数据的差异性大，所以样本数量还远远不够；也有可能是因为数据本身的采样有偏，事实上水质监测数据确实不是完全随机时刻和取点的，会受到采样点设置偏好的影响。这里只是凭借大数定理和Q-Q图，定性地认为服从正态分布。\n用Q-Q图辅助判断，处理后的数据点更好地分布在对角线上。\n1 2 3 4 5 fig, ax = plt.subplots(1,2,figsize=(12,5)) stats.probplot(cod, dist=\u0026#34;norm\u0026#34;, plot=ax[0]) stats.probplot(cod2, dist=\u0026#34;norm\u0026#34;, plot=ax[1]) ax[0].set_title(\u0026#39;Original Data\u0026#39;) ax[1].set_title(\u0026#39;Logarithmic Data\u0026#39;) 方差分析 获取海区和省份的数据（定类数据），和对数化的COD一起合成data frame。\n1 2 3 4 5 anova_data = pd.DataFrame(columns=[\u0026#39;海区\u0026#39;,\u0026#39;省份\u0026#39;,\u0026#39;logCOD\u0026#39;]) for i in cod2.index: sea = data[\u0026#39;海区\u0026#39;][i] province = data[\u0026#39;省份\u0026#39;][i] anova_data.loc[i] = [sea, province, cod2[i]] 先用箱型图看一下四大海区的分布差异。\n1 2 fig, ax = plt.subplots(figsize=(7,5)) sns.boxplot(x=\u0026#39;海区\u0026#39;,y=\u0026#39;logCOD\u0026#39;,data = anova_data) 单因素方差分析。\n1 2 3 model = ols(\u0026#39;logCOD ~ 海区\u0026#39;,data=anova_data).fit() anova_table = anova_lm(model, typ = 2) print(anova_table) 1 2 3 sum_sq df F PR(\u0026gt;F) 海区 73.816704 3.0 390.048152 1.941560e-235 Residual 473.062501 7499.0 NaN NaN 省份分布差异同理。\n1 2 fig, ax = plt.subplots(figsize=(10,5)) sns.boxplot(x=\u0026#39;省份\u0026#39;,y=\u0026#39;logCOD\u0026#39;,data = anova_data) 1 2 3 model = ols(\u0026#39;logCOD ~ 省份\u0026#39;,data=anova_data).fit() anova_table = anova_lm(model, typ = 2) print(anova_table) 1 2 3 sum_sq df F PR(\u0026gt;F) 省份 102.311302 11.0 156.722959 0.0 Residual 444.567902 7491.0 NaN NaN 单因素方差分析P值均低于0.01，表明海区和省份因素都会使得COD数据产生显著差异。\nPearson相关分析 上面的分析是针对COD（定序变量）和海区/省份（定类变量）之间关系的分析。接下来选取“无机氮(mg/L)”数据，与COD数据进行定序变量的相关性分析。由于Pearson相关性分析要求两个变量均服从正态分布，因此对无机氮数据也要先进行数据清理和转换，取以10为底的对数。Q-Q图依然可以反映出处理前后的正态性变化。\n1 2 3 4 5 ni = data[\u0026#39;无机氮(mg/L)\u0026#39;] ni = pd.to_numeric(ni) ni2 = ni.copy(deep=True) for i in ni.index: ni2[i] = np.log10(np.sqrt(ni[i])) 1 2 3 4 5 fig, ax = plt.subplots(1,2,figsize=(12,5)) stats.probplot(ni, dist=\u0026#34;norm\u0026#34;, plot=ax[0]) stats.probplot(ni2, dist=\u0026#34;norm\u0026#34;, plot=ax[1]) ax[0].set_title(\u0026#39;Original Data\u0026#39;) ax[1].set_title(\u0026#39;Logarithmic Data\u0026#39;) 由于有些监测点只有化学需氧量数据，没有无机氮数据，因此需要进行数据清理，将这些监测点删除。\n1 2 3 for i in range(len(data)): if i not in cod2.index: del ni2[i] 进行Pearson检验。\n1 2 r,p = stats.pearsonr(ni2,cod2) print(\u0026#39;Pearson检验，相关系数 = %f, P值 = %f\u0026#39;%(r,p)) 1 Pearson检验，相关系数 = 0.446809, P值 = 0.000000 $r\\in(0.4,0.6)$，认为$\\lg(\\rm COD)$和$\\lg(\\rm N)$之间为中等程度正相关。通过散点图分布情况也可以感性判断出这一规律。\n线性回归 1 2 3 4 5 6 7 model = LinearRegression() model.fit(ni.values.reshape((-1, 1)), cod.values) predict_y = model.predict(ni2.values.reshape((-1, 1))) print(\u0026#39;线性回归斜率：\u0026#39;,model.coef_, \u0026#39;\\n截距：\u0026#39;,model.intercept_, \u0026#39;\\nR方：\u0026#39;,model.score(ni.values.reshape((-1, 1)),cod.values)) 1 2 3 线性回归斜率： [1.10361078] 截距： 0.7039567080504857 R方： 0.24820547860780384 1 2 3 4 5 fig, ax = plt.subplots(figsize=(5,5)) plt.scatter(ni2,cod2,s=1) plt.plot(ni2,predict_y,c=\u0026#39;k\u0026#39;) plt.xlabel(\u0026#39;logN\u0026#39;) plt.ylabel(\u0026#39;logCOD\u0026#39;) 考虑到海水地理位置对相关性的影响，再分海区绘制散点图和回归曲线。\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 sl_data = pd.DataFrame(columns=[\u0026#39;海区\u0026#39;,\u0026#39;logN\u0026#39;,\u0026#39;logCOD\u0026#39;]) for i in cod2.index: sea = data[\u0026#39;海区\u0026#39;][i] sl_data.loc[i] = [sea, ni2[i], cod2[i]] seas = [\u0026#39;黄海\u0026#39;,\u0026#39;渤海\u0026#39;,\u0026#39;东海\u0026#39;,\u0026#39;南海\u0026#39;] predicts = [] for i in range(4): model = LinearRegression() model.fit(sl_data[sl_data[\u0026#39;海区\u0026#39;]==seas[i]][\u0026#39;logN\u0026#39;].values.reshape((-1, 1)), sl_data[sl_data[\u0026#39;海区\u0026#39;]==seas[i]][\u0026#39;logCOD\u0026#39;].values) predict_y = model.predict(sl_data[sl_data[\u0026#39;海区\u0026#39;]==seas[i]][\u0026#39;logN\u0026#39;].values.reshape((-1, 1))) predicts.append(predict_y) print(seas[i], \u0026#39;\\n线性回归斜率：\u0026#39;,model.coef_, \u0026#39;\\n截距：\u0026#39;,model.intercept_, \u0026#39;\\nR方：\u0026#39;,model.score(sl_data[sl_data[\u0026#39;海区\u0026#39;]==seas[i]][\u0026#39;logN\u0026#39;].values.reshape((-1, 1)), sl_data[sl_data[\u0026#39;海区\u0026#39;]==seas[i]][\u0026#39;logCOD\u0026#39;].values) ) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 黄海 线性回归斜率： [0.26539399] 截距： 0.081372330354296 R方： 0.14307643170710227 渤海 线性回归斜率： [0.27080498] 截距： 0.20731753294507865 R方： 0.1352474744941149 东海 线性回归斜率： [0.63405663] 截距： 0.0898058817788494 R方： 0.3550328969220925 南海 线性回归斜率： [0.36912331] 截距： 0.012211050912901922 R方： 0.1838150602146984 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 fig, ax = plt.subplots(2,2,figsize=(10,10)) ax[0,0].scatter(sl_data[sl_data[\u0026#39;海区\u0026#39;]==\u0026#39;黄海\u0026#39;][\u0026#39;logN\u0026#39;], sl_data[sl_data[\u0026#39;海区\u0026#39;]==\u0026#39;黄海\u0026#39;][\u0026#39;logCOD\u0026#39;], s=3, c=\u0026#39;g\u0026#39;) ax[0,0].plot(sl_data[sl_data[\u0026#39;海区\u0026#39;]==\u0026#39;黄海\u0026#39;][\u0026#39;logN\u0026#39;], predicts[0], c=\u0026#39;k\u0026#39;) ax[0,0].set_title(\u0026#39;黄 海\u0026#39;) ax[0,0].set_xlabel(\u0026#39;logN\u0026#39;) ax[0,0].set_ylabel(\u0026#39;logCOD\u0026#39;) ax[0,0].set_xlim(-1.52, 0.5) ax[0,0].set_ylim(-1.2,1.3) ax[0,1].scatter(sl_data[sl_data[\u0026#39;海区\u0026#39;]==\u0026#39;渤海\u0026#39;][\u0026#39;logN\u0026#39;], sl_data[sl_data[\u0026#39;海区\u0026#39;]==\u0026#39;渤海\u0026#39;][\u0026#39;logCOD\u0026#39;], s=3, c=\u0026#39;y\u0026#39;) ax[0,1].plot(sl_data[sl_data[\u0026#39;海区\u0026#39;]==\u0026#39;渤海\u0026#39;][\u0026#39;logN\u0026#39;], predicts[1], c=\u0026#39;k\u0026#39;) ax[0,1].set_title(\u0026#39;渤 海\u0026#39;) ax[0,1].set_xlabel(\u0026#39;logN\u0026#39;) ax[0,1].set_ylabel(\u0026#39;logCOD\u0026#39;) ax[0,1].set_xlim(-1.52, 0.5) ax[0,1].set_ylim(-1.2,1.3) ax[1,0].scatter(sl_data[sl_data[\u0026#39;海区\u0026#39;]==\u0026#39;东海\u0026#39;][\u0026#39;logN\u0026#39;], sl_data[sl_data[\u0026#39;海区\u0026#39;]==\u0026#39;东海\u0026#39;][\u0026#39;logCOD\u0026#39;], s=3, c=\u0026#39;purple\u0026#39;) ax[1,0].plot(sl_data[sl_data[\u0026#39;海区\u0026#39;]==\u0026#39;东海\u0026#39;][\u0026#39;logN\u0026#39;], predicts[2], c=\u0026#39;k\u0026#39;) ax[1,0].set_title(\u0026#39;东 海\u0026#39;) ax[1,0].set_xlabel(\u0026#39;logN\u0026#39;) ax[1,0].set_ylabel(\u0026#39;logCOD\u0026#39;) ax[1,0].set_xlim(-1.52, 0.5) ax[1,0].set_ylim(-1.2,1.3) ax[1,1].scatter(sl_data[sl_data[\u0026#39;海区\u0026#39;]==\u0026#39;南海\u0026#39;][\u0026#39;logN\u0026#39;], sl_data[sl_data[\u0026#39;海区\u0026#39;]==\u0026#39;南海\u0026#39;][\u0026#39;logCOD\u0026#39;], s=3, c=\u0026#39;brown\u0026#39;) ax[1,1].plot(sl_data[sl_data[\u0026#39;海区\u0026#39;]==\u0026#39;南海\u0026#39;][\u0026#39;logN\u0026#39;], predicts[3], c=\u0026#39;k\u0026#39;) ax[1,1].set_title(\u0026#39;南 海\u0026#39;) ax[1,1].set_xlabel(\u0026#39;logN\u0026#39;) ax[1,1].set_ylabel(\u0026#39;logCOD\u0026#39;) ax[1,1].set_xlim(-1.52, 0.5) ax[1,1].set_ylim(-1.2,1.3) 机器学习 为了从多个污染指标的层面上对不同海区的差异进行分析，以“化学需氧量(mg/L)”、“无机氮(mg/L)”、“活性磷酸盐(mg/L)”、“石油类(mg/L)”这四个指标作为自变量，将“海区”作为因变量，尝试用5种不同的模型进行机器学习，并找出预测准确度最高的模型进行进一步分析。\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 import pandas as pd import matplotlib.pyplot as plt import numpy as np import seaborn as sns plt.rcParams[\u0026#39;font.sans-serif\u0026#39;]=[\u0026#39;SimHei\u0026#39;]###解决中文乱码 plt.rcParams[\u0026#39;axes.unicode_minus\u0026#39;]=False from sklearn import model_selection from sklearn.preprocessing import StandardScaler from sklearn.tree import DecisionTreeClassifier from sklearn.neighbors import KNeighborsClassifier from sklearn.linear_model import LogisticRegression from sklearn.svm import SVC from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import cross_val_score from sklearn.metrics import classification_report, confusion_matrix, f1_score, roc_curve, roc_auc_score, precision_score, accuracy_score, recall_score, explained_variance_score, mean_absolute_error, mean_squared_error, r2_score 数据清理 首先把数据转换为数值类型。将标记为“未检出”、“\u0026lt;0.01”、“\u0026lt;0.1”的数据转换为0。将因变量（海区）数值化，标记成0~3。\n海区 数值化 黄海 0 渤海 1 东海 2 南海 3 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 for i in range(len(data)): if data[\u0026#39;海区\u0026#39;][i]==\u0026#39;黄海\u0026#39;: data[\u0026#39;海区\u0026#39;][i] = 0 elif data[\u0026#39;海区\u0026#39;][i]==\u0026#39;渤海\u0026#39;: data[\u0026#39;海区\u0026#39;][i] = 1 elif data[\u0026#39;海区\u0026#39;][i]==\u0026#39;东海\u0026#39;: data[\u0026#39;海区\u0026#39;][i] = 2 else: data[\u0026#39;海区\u0026#39;][i] = 3 for item in [\u0026#39;化学需氧量(mg/L)\u0026#39;,\u0026#39;无机氮(mg/L)\u0026#39;,\u0026#39;活性磷酸盐(mg/L)\u0026#39;,\u0026#39;石油类(mg/L)\u0026#39;]: if type(data[item][i])==str and (data[item][i] == \u0026#39;未检出\u0026#39; or data[item][i][0] == \u0026#39;\u0026lt;\u0026#39;): data[item][i] = \u0026#39;0\u0026#39; D = data.loc[:,[\u0026#39;海区\u0026#39;,\u0026#39;化学需氧量(mg/L)\u0026#39;,\u0026#39;无机氮(mg/L)\u0026#39;,\u0026#39;活性磷酸盐(mg/L)\u0026#39;,\u0026#39;石油类(mg/L)\u0026#39;]] for item in D.columns: D[item] = pd.to_numeric(D[item]) 其中任何一项数据缺失的监测点都删除，最后把清理后的因变量保存为一维数组Y，自变量保存为四维数组X。\n1 2 3 4 5 6 nanlist = [] for i in range(len(D.values)): if True in np.isnan(D.values[i]): nanlist.append(i) X = np.delete(D.iloc[:,1:5].values, nanlist, axis=0) Y = np.delete(D.iloc[:,0].values, nanlist, axis=0) 多模型比较 划分训练集和测试机，特征缩放。\n1 2 3 4 x_train,x_test, y_train,y_test = model_selection.train_test_split(X, Y, test_size=0.2, random_state=1) sc = StandardScaler() x_train = sc.fit_transform(x_train) x_test = sc.transform(x_test) 用于对比的5种模型分别是：Decision Tree决策树、K-Nearest Neighbors K-最近邻（KNN）、Logistic Regression 逻辑回归、SVM支持向量机 (SVM)、Random Forest Tree随机森林。\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 # 1. Decision Tree 决策树 tree_model = DecisionTreeClassifier(max_depth = 10, criterion = \u0026#39;entropy\u0026#39;) tree_model.fit(x_train, y_train) tree_yhat = tree_model.predict(x_test) # 2. K-Nearest Neighbors K-最近邻 (KNN) n = 20 knn = KNeighborsClassifier(n_neighbors = n) knn.fit(x_train, y_train) knn_yhat = knn.predict(x_test) # 3. Logistic Regression 逻辑回归 lr = LogisticRegression() lr.fit(x_train, y_train) lr_yhat = lr.predict(x_test) # 4. SVM 支持向量机 (SVM) svm = SVC(probability=True) #SVM要制作ROC曲线，必须probability=True，默认值False svm.fit(x_train, y_train) svm_yhat = svm.predict(x_test) # 5. Random Forest Tree 随机森林 rf = RandomForestClassifier(max_depth = 10) rf.fit(x_train, y_train) rf_yhat = rf.predict(x_test) 分别用accuracy score和F1-score来衡量不同模型的效果。\n1 2 3 4 5 6 7 8 9 10 11 12 pd.DataFrame({ \u0026#39;Model\u0026#39;: [\u0026#39;Decision Tree model\u0026#39;, \u0026#39;KNN model\u0026#39;, \u0026#39;Logistic Regression model\u0026#39;, \u0026#39;SVM model\u0026#39;, \u0026#39;Random Forest Tree model\u0026#39;], \u0026#39;Accuracy score\u0026#39;:[accuracy_score(y_test, tree_yhat), accuracy_score(y_test, knn_yhat), accuracy_score(y_test, lr_yhat), accuracy_score(y_test, svm_yhat), accuracy_score(y_test, rf_yhat)] }) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 pd.DataFrame({ \u0026#39;Model\u0026#39;: [\u0026#39;Decision Tree model\u0026#39;, \u0026#39;KNN model\u0026#39;, \u0026#39;Logistic Regression model\u0026#39;, \u0026#39;SVM model\u0026#39;, \u0026#39;Random Forest Tree model\u0026#39;], \u0026#39;黄海(0)\u0026#39;:[f1_score(y_test, tree_yhat, average=None)[0], f1_score(y_test, knn_yhat, average=None)[0], f1_score(y_test, lr_yhat, average=None)[0], f1_score(y_test, svm_yhat,average=None)[0], f1_score(y_test, rf_yhat, average=None)[0]], \u0026#39;渤海(1)\u0026#39;: [f1_score(y_test, tree_yhat, average=None)[1], f1_score(y_test, knn_yhat, average=None)[1], f1_score(y_test, lr_yhat, average=None)[1], f1_score(y_test, svm_yhat,average=None)[1], f1_score(y_test, rf_yhat, average=None)[1]], \u0026#39;东海(2)\u0026#39;:[f1_score(y_test, tree_yhat, average=None)[2], f1_score(y_test, knn_yhat, average=None)[2], f1_score(y_test, lr_yhat, average=None)[2], f1_score(y_test, svm_yhat,average=None)[2], f1_score(y_test, rf_yhat, average=None)[2]], \u0026#39;南海(3)\u0026#39;: [f1_score(y_test, tree_yhat, average=None)[3], f1_score(y_test, knn_yhat, average=None)[3], f1_score(y_test, lr_yhat, average=None)[3], f1_score(y_test, svm_yhat,average=None)[3], f1_score(y_test, rf_yhat, average=None)[3]], }) 通过混淆矩阵也可以判断不同模型的预测能力，并且比较不同海区的数据被正确判断或误判为其他海区的可能性。\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 tree_matrix = confusion_matrix(y_test, tree_yhat, labels = [0, 1, 2, 3]) # Decision Tree knn_matrix = confusion_matrix(y_test, knn_yhat, labels = [0, 1, 2, 3]) # K-Nearest Neighbors lr_matrix = confusion_matrix(y_test, lr_yhat, labels = [0, 1, 2, 3]) # Logistic Regression svm_matrix = confusion_matrix(y_test, svm_yhat, labels = [0, 1, 2, 3]) # Support Vector Machine rf_matrix = confusion_matrix(y_test, rf_yhat, labels = [0, 1, 2, 3]) # Random Forest Tree def plot_confusion_matrix(ax, cm, classes, title): plot = ax.imshow(cm, interpolation=\u0026#39;nearest\u0026#39;, cmap=plt.cm.Blues) ax.set_title(title) ax.set_xticks([0,1,2,3]) ax.set_xticklabels(classes) ax.set_yticks([0,1,2,3]) ax.set_yticklabels(classes) ax.set_ylabel(\u0026#39;真实海区\u0026#39;) ax.set_xlabel(\u0026#39;预测海区\u0026#39;) return plot classes = [\u0026#39;黄海(0)\u0026#39;,\u0026#39;渤海(1)\u0026#39;,\u0026#39;东海(2)\u0026#39;,\u0026#39;南海(3)\u0026#39;] fig, ax = plt.subplots(2,3,figsize=(16,8)) a = plot_confusion_matrix(ax[0][0], tree_matrix, classes=classes, title=\u0026#39;Decision Tree\u0026#39;) b = plot_confusion_matrix(ax[0][1], knn_matrix, classes=classes, title=\u0026#39;KNN\u0026#39;) c = plot_confusion_matrix(ax[0][2], lr_matrix, classes=classes, title=\u0026#39;Logistic Regression\u0026#39;) d = plot_confusion_matrix(ax[1][0], svm_matrix, classes=classes, title=\u0026#39;SVM\u0026#39;) e = plot_confusion_matrix(ax[1][1], rf_matrix, classes=classes, title=\u0026#39;Random Forest Tree\u0026#39;) fig.colorbar(a, ax = ax[0][0]) fig.colorbar(b, ax = ax[0][1]) fig.colorbar(c, ax = ax[0][2]) fig.colorbar(d, ax = ax[1][0]) fig.colorbar(e, ax = ax[1][1]) fig.delaxes(ax[1][2]) plt.tight_layout() plt.show() KNN模型 综合以上，认为在当前的参数设置下KNN模型具有最好的解释力。输出KNN模型的分类报告。\n1 print(classification_report(y_test, knn_yhat)) 1 2 3 4 5 6 7 8 9 10 precision recall f1-score support 0 0.52 0.62 0.57 370 1 0.56 0.61 0.59 295 2 0.71 0.70 0.70 446 3 0.59 0.46 0.52 398 accuracy 0.60 1509 macro avg 0.60 0.60 0.59 1509 weighted avg 0.60 0.60 0.60 1509 本模型采用的是多分类模型，但是传统的ROC曲线和AUC只能用于描述不同于“0-1”分类模型。首先需要将因变量的测试集转换成类似于0-1分类的多维矩阵。\n1 2 y_test0 = np.array([[ 1 if y_test[i]==j else 0 for j in range(4) ] for i in range(len(y_test))], dtype=float) y_test0 1 2 3 4 5 6 7 array([[0., 0., 1., 0.], [0., 0., 1., 0.], [0., 1., 0., 0.], ..., [1., 0., 0., 0.], [0., 1., 0., 0.], [0., 0., 1., 0.]]) 将转换后的因变量测试集和自变量测试集都按行展开，例如\n1 y_test0.ravel() 1 array([0., 0., 1., ..., 0., 1., 0.]) 采用macro方法对多分类数据进行处理，然后再计算ROC曲线和AUC值。\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 y_pred=knn.predict_proba(x_test)[:,:] roc_score = roc_auc_score(y_test, y_pred, multi_class=\u0026#39;ovo\u0026#39;, average=\u0026#39;macro\u0026#39;) y_test0 = np.array([[ 1 if y_test[i]==j else 0 for j in range(4) ] for i in range(len(y_test))], dtype=float) fpr,tpr, thresholds = roc_curve(y_test0.ravel(), y_pred.ravel(), pos_label=True) fig, ax = plt.subplots(1,1,figsize=(8,6)) ax.plot(fpr,tpr,\u0026#34;r\u0026#34;,linewidth = 3) ax.set_title(\u0026#34;多分类ROC曲线\u0026#34;) ax.plot([0, 1], [0, 1], \u0026#39;k--\u0026#39;) ax.grid() ax.set_xlabel(\u0026#34;假正率\u0026#34;) ax.set_ylabel(\u0026#34;真正率\u0026#34;) ax.set_xlim(0, 1) ax.set_ylim(0, 1) ax.text(0.15,0.9,\u0026#34;AUC = \u0026#34;+str(round(roc_score,4))) plt.show() 限制本模型预测能力的可能原因有：分类精细度和依据不合适；没有找到最关键的自变量；数据采集有偏；模型训练迭代次数不足。\n","permalink":"http://localhost:1313/post/china_sea_water_data/","summary":"\u003cp\u003e环境数据分析课程的大作业，主要目的应用一下课上学到的一些数据分析方法。\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e通过爬虫获取我国沿海海水水质的监测数据；\u003c/li\u003e\n\u003cli\u003e以散点图直观反映水质类别的分布和随时间变化情况；\u003c/li\u003e\n\u003cli\u003e将化学需氧量数据转换为正态分布，以海区/省份为分类变量进行单因素方差分析；\u003c/li\u003e\n\u003cli\u003e将无机氮数据转换为正态分布，用Pearson分析和线性回归分析考察化学需氧量和无机氮数据的相关性；\u003c/li\u003e\n\u003cli\u003e利用机器学习，从多个污染指标数据预测海区分类。\u003c/li\u003e\n\u003c/ol\u003e\n\u003cimg src=\"/images/image-20220424023106157.png\" alt=\"image-20220424023106157\" style=\"zoom:25%;\" /\u003e","title":"我国海水水质数据分析"},{"content":"在很多支持Markdown语法的编辑器（例如Typora, 印象笔记）中，可以通过mermaid代码块的方式，实现流程图、时序图等图表的绘制。它是一种基于 Javascript 的图表和图表工具，提供标记启发的文本定义，以动态创建和修改图表。\n以下是除了普通的graph流程图以外，常用的一些mermaid功能。\nflowchart绘制流程图 在绘制流程图的时候，将graph替换成flowchart，可以呈现节点之间的曲线连接。比之前生硬的折线段美观很多。同时，flowchart还可以实现不同子图(subgraph)之间的连通，并且允许箭头逆向。相比之下，graph就只能在节点和节点之间按照既定方向相连。\n不过官网上显示flowchart仍然是测试版本，功能上可能会有一些欠缺。\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 flowchart TD c1--标注--\u0026gt;a2 subgraph one a1-.-\u0026gt;a2 end subgraph two b1 b2 end subgraph three c1--\u0026gt;c2 end one --\u0026gt; b2 three --\u0026gt; two two --\u0026gt; c2 这是在graph格式下的图表。图表之间的连线是刚性的，并且仅支持节点的链接。\ngantt甘特图 甘特图可以在时间轴上记录不同的事件名称、时长跨度和状态。\n1 2 3 4 5 6 7 8 9 10 11 12 13 gantt dateFormat YYYY-MM-DD title 甘特图名称 section 类别A 已经完成的任务 : done, des1, 2014-01-06, 2014-01-08 进行中的任务 : active, des2, 2014-01-07, 2d 未来的任务 : des3, after des2, 2d section 类别B 完成的关键任务 :crit, done, 2014-01-06, 36h 进行中的关键任务 :crit, active, 2d 将来的关键任务 :crit, 1d gantt dateFormat YYYY-MM-DD title 甘特图名称 section 类别A 已经完成的任务 : done, des1, 2014-01-06, 2014-01-08 进行中的任务 : active, des2, 2014-01-07, 2d 未来的任务 : des3, after des2, 2d section 类别B 完成的关键任务 :crit, done, 2014-01-06, 36h 进行中的关键任务 :crit, active, 2d 将来的关键任务 :crit, 1d 第二行的YYYY-MM-DD是日期格式，也可以尝试MM-DD-YYYY，YYYY等等不同的格式。\n每一项任务的描述格式均为： 任务名称: 是否关键(crit/缺省), 状态(done/active/缺省), 任务代号(代号/缺省), 开始时间(YYYY-MM-DD/after 其他代号/缺省), 结束时间(YYYY-MM-DD/持续时长/缺省) 每一栏的缺省含义依次是\n非关键任务 任务未开始 任务没有代号 紧接上一任务的结束时间开始 没有持续时长（即为一个点事件） pie饼图 pie可以按照类别占比有小到大的顺序，从12点开始顺时针排列并饼块，并计算出各部分的百分比。语法结构也很简单：\n1 2 3 4 5 pie title 饼图名称 \u0026#34;类别A\u0026#34; : 42.96 \u0026#34;类别B\u0026#34; : 50.05 \u0026#34;类别C\u0026#34; : 10.01 pie title 饼图名称 \"类别A\" : 42.96 \"类别B\" : 50.05 \"类别C\" : 10.01 但是遗憾的是，mermaid在统计图表这方面并不能提供更多的选项。如果需要做折线图、柱状图等等各种丰富的内容，肯定还是得移步Python, MATLAB或者其他专业工具。\n其他 mermaid还有绘制其他图表的功能，比如Sequence Diagram，Class Diagram，User Journey等等。对于流程图的文本内容、边框形状、连接线等等也有更多的自定义内容，本文没有再细究。所有内容都可以在开发者的教程（https://mermaid-js.github.io/mermaid）上找到！\n除了mermaid之外，Typora的代码块还能渲染其他模块。比如分析程序的时候经常会用到flow模块来画流程图，留待以后整理。这里先贴一张之前写过的flow图，立一个日后整理的flag~\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 st=\u0026gt;start: call DWA function in2=\u0026gt;inputoutput: input x,goal,ob sub4=\u0026gt;subroutine: dw = calc_window_range(x) cond3=\u0026gt;condition: (vx, vw) in dw ? sub3=\u0026gt;subroutine: (h_cost, d_cost, v_cost) op1=\u0026gt;operation: next (vx,vw) cond2=\u0026gt;condition: item in table ? op4=\u0026gt;operation: normalized total_cost op5=\u0026gt;operation: find smallest total_cost, best_u = (vx, vw) op6=\u0026gt;operation: next item sub1=\u0026gt;subroutine: predict_trajectory(vx,vw) out2=\u0026gt;inputoutput: return best_u en=\u0026gt;end: end st()-\u0026gt;in2(left)-\u0026gt;sub4-\u0026gt;cond3(yes)-\u0026gt;sub1-\u0026gt;sub3-\u0026gt;op1(left)-\u0026gt;cond3 cond3(no)-\u0026gt;cond2(yes)-\u0026gt;op4-\u0026gt;op6 op6(left)-\u0026gt;cond2(no)-\u0026gt;op5 op5-\u0026gt;out2()-\u0026gt;en ","permalink":"http://localhost:1313/post/markdown-mermaid/","summary":"\u003cp\u003e在很多支持Markdown语法的编辑器（例如Typora, 印象笔记）中，可以通过mermaid代码块的方式，实现流程图、时序图等图表的绘制。它是一种基于 Javascript 的图表和图表工具，提供标记启发的文本定义，以动态创建和修改图表。\u003c/p\u003e\n\u003cp\u003e以下是除了普通的\u003ccode\u003egraph\u003c/code\u003e流程图以外，常用的一些mermaid功能。\u003c/p\u003e","title":"Markdown-mermaid画流程图、甘特图和饼图"},{"content":"This is a draft version of course essay from Berkeley Summer Session 2021 (EPS-80).\nIntroduction Huge environmental changes in my hometown have taken place for the past two decades of fast economic growth and industrialization, which is seen as a rough miniature of entering the Anthropocene. Using examples from class materials, my own experience and the book Under a White Sky, several key aspects of anthropogenic actions are analyzed briefly, including land use, agriculture, soil remediation and green house gas management. Finally some personal insights and preparations are mentioned.\nMain Body A glimpse of Anthropocene — a localized point of view While I was going through the class, I kept thinking about what happened to my hometown located in the southeastern part of China. The past two decades had witnessed rapid economic growth, industrialization and urbanization. When I recalled on how the landscapes looked like at the beginning and what it had become, I figured that this process could be seen as a miniature of what we\u0026rsquo;ve been through while entering the Anthropocene, which was believed to have been for just a century or two1. This miniature might not be accurate enough, because no trans-regional effect was involved in the narrative, and the time period is not long enough to verify the geological traces of anthropogenic impacts. Yet we can still find the relations to what we\u0026rsquo;ve discussed in class and what I\u0026rsquo;ve read in the book Under the White Sky.\nIn the early 2000\u0026rsquo;s I used to spend time in the tiny farm of my grandparents, probably the size of half a tennis court. They grew common vegetables like Chinese cabbages and green vegetables, and in spring dug bamboo shoots from a bamboo forest next to the farmland. The agricultural methods were rather old-fashioned and manual — they used a small plough to loosen the soil, sowed seeds by hand, and used animal excrement as fertilizers. I still remember playing with a small hoe while the adults were busy hoeing to get rid of annoying weeds (I tried to do weeding by myself, but it turned out that all I could do was digging holes in bare soils). There was almost no sign of industrialization and machinery, and even the fence was built out of bamboo strips and wires tied together. This tiny farm provided us with lots of cooking ingredients, and was abandoned after my grandparents moved from the old house.\nMore and more factories showed up as the economic developed. What used to be villages and fields has become industrial parks with building materials factories, hardware factories and chemical plants. There\u0026rsquo;s a trend that has been around before I was born that the children of farmers became workers, managers and businessmen. Many of the plants didn\u0026rsquo;t have anything like a sewage treatment system or an air cleaner. Harmful substances first polluted the workshops where they were created, then infiltrated into the atmosphere and soils, found their ways into the river that flows through the village. The river quickly changed from crystal-clear green to a turbid yellow. Its ecosystem waned as the number of ducks and egrets reduced to zero. At first dead fish could be seen drifting down the river occasionally, later there was nothing left.\nSince fields were occupied by various factories, some farmers decided to reclaim lands from less preferable areas, the riverbanks, for example. Trees and bushes were replaced by vegetables with shallow root systems, which increased the speed of soil loss — without strong roots to hold the soil, it was washed away by the river at a faster pace. Some buildings close to the riverbanks were faced with the threat of ground subsidence. One of the houses along the river even collapsed, and half of its walls and bricks fell into water. Luckily nobody get hurt in that accident.\nWith the public attention to environmental issues, policies were introduced to control industrial sewage and flue gas. Since around 2015, chemical plants were shut down and moved to industry zones with standardized, strict management. These policies soon had their effect as the river became clear again, with fish and ducks coming back to their habitats. Wetlands once used for development are now under remediation, some have turned out to be wetland parks and urban green lands. Though it seems like some toddler steps forward, at least I think we\u0026rsquo;re heading on the right direction.\nInteracting with nature The ways we\u0026rsquo;re interacting with nature have multiple and complex effects. These different interactions always tend to create a tangled situation where problems and solutions are not one to one. In this part I\u0026rsquo;d like to talk about some topics that really impressed me in class, and explore both the merits and downsides of anthropogenic intervention.\nAdditionally, there\u0026rsquo;s a kind of paradox in the phrase \u0026ldquo;interacting with nature\u0026rdquo;, since most of us agree that human is part of nature. It is odd to think about the idea that the parts can interact with the whole. So to be rigorous, the expression \u0026ldquo;nature\u0026rdquo; should be redefined as \u0026ldquo;the totality of parts other than humanity\u0026rdquo;.\nProper land use Land use is more than planning social productive activities. It\u0026rsquo;s also about planning anthropogenic impacts on nature. Improper land use brings numerous problems including soil degradation, extinction events and green house gas emission. On the other hand, proper land use has tremendous potential to ameliorate these issues.\nOne of the reasons why land use has such a huge impact lies in its complex structure. As we\u0026rsquo;ve learned in class, soil consists of different components including 25% of air, 45% of mineral particles, 25% of water and 5% of organic matter (on average level). Of all the organic matter, 80% of it is humus, 10% plant roots and 10% organisms. This staggered structure shows that soil is the the zone where the biosphere, the hydrosphere, the atmosphere and the lithosphere intersect and interact with each other, and we call it \u0026ldquo;pedosphere\u0026rdquo;.2 As a result, any changes in soil functions will affect all the these earth systems at the same time, and different systems are able to connect each other via pedosphere. This particular role of soil indicates that how we deal with our lands will have multiple impacts on various issues like climate change, extinct events, extreme weather, etc.\nOur casual decisions on land use has led to many crises and threats to both human beings and the natural systems. In Under a White Sky Kolbert talked about a bunch of such lessons. When people tried to grow plants and expand cities in Nevada deserts, the balance of hydrosphere was broken and the water levels in nearby pools began to sink rapidly, and the existence of rare species like the Devils Hole Pupfish was threatened. The land-loss-crisis in New Orleans is also example of obsessive tinkering in which \u0026ldquo;control is the problem\u0026rdquo; — the attempts to keep southern Louisiana dry turned out to be the very reason why the Mississippi delta is disintegrating.3 I never went to New Orleans before, but I looked at Google Map and then I realized what it means to be \u0026ldquo;in tatters\u0026rdquo;. This reminds me of the little land collapse event near my old home, and warns us the consequence of casual land use and self-righteous tinkering.\nI think we don\u0026rsquo;t know what it exactly means to \u0026ldquo;solve environmental problems\u0026rdquo;. In cases like the Mississippi delta, we\u0026rsquo;re solving environmental problems not for the nature, but for our own benefits. Unexpected results occur when we mistakenly think that we\u0026rsquo;ve mastered and controlled all the mechanisms in one ecosystem, and that we can use lands for whatever purpose we want. What\u0026rsquo;s good for human isn\u0026rsquo;t always good for the ecosystem.\nSoil diversity is another things that\u0026rsquo;s often overlooked in land use planning. As biogeo-chemically dynamic bodies, soil supports terrestrial ecosystems.4 Soil diversity stands for biodiversity to a large extent. Therefore, keeping soil diversity is an important way to control human changes to ecosystems and soil functions.\nHow we arrange land use indicates our understanding the relationship between human and the earth. A soil that \u0026ldquo;lives\u0026rdquo; is what keeps the world rolling. If we neglect the importance of diverse, living soils, we misunderstand our own survival. Before land use planning, consideration should be given to whether the regional soil diversity will be threatened, and whether the soil functions will be maintained. Only after that should we consider how to meet with the social and economical needs.\nAgriculture Agriculture is the part of land use that has a specific impact on soil degradation and green house gas management. Our complete dependence on agriculture makes this issue even more complex. In the US, 6 to 10 times as much land is used for intensive agriculture as for urban areas.5 Food, agriculture and land use counts for 24% of all the green house gas emissions of anthropogenic actions.6\nIn this class, we\u0026rsquo;ve been talking about the downsides of industrialized agriculture — how uncovered surface leads to soil nutrient loss, how monoculture lowers biodiversity, etc. Now the curious thing is that if you search \u0026ldquo;agriculture in US\u0026rdquo; on the Internet in China, you\u0026rsquo;ll find many people envy this highly mechanized way of farming. One of the reasons is that China has a shortage of cultivated land, and is in need of higher yields. By 2011, the per capita cultivated land area of China is about 0.083 ha, while that of US is 0.514 ha.7 (As comparison, the average level globally is 0.206 ha per capita.) Secondly, 66% of China\u0026rsquo;s croplands are located in mountains, hills, and plateaus. Therefore, many of our scientists are engaged in tackling the challenge to mechanize farming and increase output.\nBut there might be another way out. I realized that regenerative agriculture is more promising in China than I thought. Many of the methods mentioned in class can be found in traditional farming patterns. Take inter-cropping for example, the ancestors have found multiple combinations of crops that would help maintain soil fertility and increase output, like peanuts and cottons, garlic and cabbages, grapes and cucumbers, etc. As I recall my grandparents\u0026rsquo; practice in that little farm, I realized that they were conventional experts in regenerative agriculture. With modern technology and knowledges about soils, we can figure out their interactive mechanisms and optimize these summaries of experience.\nTurbulence in the biosphere Biological factor is one of the most powerful among all the elements of earth. Take pedosphere for example, the approximately 5% of organic matter is more than a component that\u0026rsquo;s passively affected by inorganic environment. Researches have shown that the bio-chemical process of soil microbes influences soil texture such as size of particles. They form a self-organized soil-microbe system, making soil the most diverse ecosystem on the planet.8\nDespite the powerfulness of biosphere, it can still be vulnerable when we introduce anthropogenic biological factors. By bringing invasive species, excessive hunting and modern techniques like genetic engineering, we\u0026rsquo;re using a weapon that\u0026rsquo;s no less powerful than the natural biosphere.\nWhat we\u0026rsquo;ve been doing to the biosphere is more like stirring a stick into a still pool, causing turbulence and muddying the water. Once the turbulence is formed, it starts to feed on itself. In the book Under a White Sky, Kolbert mentioned a number of ecosystem disasters caused by human beings carrying species around, including species invasions of Asian carps in Mississippi River and cane toads in Australia.\nThe story of cane toads is especially dramatic — before these toads conquer the east coast of Australia, it has traveled a long way around the globe. Its story begins when colonists in the Caribbean introduced sugar can from New Guinea as their cash crop. When their cash cows were plagued by beetle grubs, they introduced cane toads from South America and Central America as predators. From there they were shipped to Hawaii and from there to northeast Australia.3 Once they settled down in Australia, they began their horrible march across the continent. People were fooled by the illusion of peace when cane toads invaded the Caribbean and Hawaii, and it was taken for granted that the Australian ecosystem would be able to withstand the cane toads.\nThere\u0026rsquo;s a touch of irony in the name \u0026ldquo;cane toad\u0026rdquo;, whose official name being \u0026ldquo;Rhinella marina\u0026rdquo;. By calling them \u0026ldquo;cane toads\u0026rdquo;, we presumed that none of their living habits are really important except that they protect sugar cane. Cane toads were seen as nothing else but a cash-making tool subordinate to sugar cane. This implied an attitude of arrogance which contributed to the disaster in Australia. People find cane toads to be ugly and \u0026ldquo;hated\u0026rdquo;. However, it was the error we made that\u0026rsquo;s truly ugly.\nWhile the power of biology could bring disasters, it can also bring hope to solve some of the biggest ecological challenges, like coral reef bleaching. Scientists studying the Great Barrier Reef were taking attempts to cultivate heat-resistant microbes from the native microbes dwelling in the Great Barrier Reef. By adjusting with the native, we can minimize the risk of bringing disruption to the ecosystem. Assisted evolution and gene drives3 are the main weapons for this mission. However, we still need to be careful not to follow the same old disastrous road of cane toad invasion.\nUnder a blue sky The last part of Under a White Sky talked about our role in green house emission and climate change. This part is the highlight of the whole book because climate change is the issue that has been hiding behind most of our topics. We found all the environmental issues — like soil degradation — related to climate change in some way or other. This is also the ultimate issue that links the fates of all human beings and natural systems.\nThe green house gas we\u0026rsquo;ve emitted to the atmosphere has been so much that simply cutting down the carbon emission is not enough to stop global warming. Carbon sequestration has become inevitable. Injecting sulfur aerosols into the atmosphere is another proposal which blocks out the electromagnetic radiation heat from the sun. This leads to the title \u0026ldquo;Under a White Sky\u0026rdquo;. Kolbert concerned that if someone decided to send out SAILs (Sulfur Aerosol Injection Lofters) into the atmosphere and this plan turned out to be a failure, the result would be a scene of doom to all of us.\nI think what Kolbert is trying to say is not that we ought to be freaked out by those terrible possibilities, and simply give up on ourselves. On the contrary, we should be fully aware of the consequences, face the reality, and do the best we can. We have come to a situation with the obligation to help adjust the natural systems. We have learned from history about the terrible consequences of obsessive tinkering. Now we\u0026rsquo;re dealing with the \u0026ldquo;ultimate\u0026rdquo; issue of climate change. In a sense, it feels like the final battle after many encounters.\nIt is not the earth that we\u0026rsquo;re fighting for — the blue marble will evolve on its own way regardless of the existence of humanity. Yet there\u0026rsquo;s only one earth that holds the delicate diversity of lives that we have for now. And there\u0026rsquo;s one and the only one humanity. When I gets old, I want to tell our next generation with proud, that we\u0026rsquo;re living in a balanced, regenerative epoch called the Anthropocene.\nWhat to do This part is some of my personal insights and reflections as a student majoring in environmental science.\nChoice of career I guess part of the reasons that I decided to study environmental science comes from my personal experience — I\u0026rsquo;ve seen people making vast changes to the landscapes of our hometown, replacing natural lands with industry zones and urban districts, turning waste lands into artificial parks and green belts. Of course I understand that such rapid changes lifted a large population out of poverty, and finally ensured people\u0026rsquo;s basic needs after centuries of hardship. But I\u0026rsquo;m still not sure it\u0026rsquo;s okay for us to design and change the environment, in a seemingly casual manner sometimes.\nDecisions of land use are made by the government and land developers, and I can\u0026rsquo;t make rational comments without detailed information. But having read Under the White Sky, I figure it must be right to keep skeptical and cautious with our interactions with nature. We still don\u0026rsquo;t know much about the environment surrounding us, and our so-called good deeds often end up being obsessive tinkering. Will these districts, artificial parks and riverbanks become another piece of failed remediation? Will they bring further troubles for the next generation? We have to keep a close eye on that and continue on our search for better, regenerative ways.\nGenerally speaking, I want to know why we\u0026rsquo;re in such a situation, and know how to deal with it. I think I\u0026rsquo;m on the right way to solve these two problems.\nReady for coming crisis The main challenge of environmental problems will change according to different social-natural conditions. In China, the most concerned topic used to be various pollutions of air and water. But for the coming years I guess we should pay more focus on clean energy, climate change and green city technologies. In many ways, China is about a decade or so behind the US, including urbanization. Therefore, some of America\u0026rsquo;s environmental concerns might be repeated in China afterwards. Many cities in the US have been big, modern cities for more than a century. However, the general industrialization of many cities in China began only about forty years ago. Contaminated urban soils in these cities may not yet be layered to form a profile, but as time goes by it may well be worth studying. It is important to stay forward-looking and be prepared for possible environmental issues. We\u0026rsquo;re not supposed to only deal with what is already there.\nKolbert, Elizabeth. \u0026ldquo;Enter the Anthropocene – Age of Man.\u0026rdquo; National Geographic. 219 (2011): 60-85.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nLindbo, David, Kozlowski, Deb and Robinson, Clay. Know Soil, Know Life. Madison: Soil Science Society of America, 2012. 1st Edition\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nKolbert, Elizabeth. Under a White Sky. New York: Penguin Random House LLC, 2021. 1st Edition.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nAmundson, Ronald, Y. Guo, and P. Gong. \u0026ldquo;Soil Diversity and Land Use in the United States.\u0026rdquo; Ecosystems 6.5 (2003): 470-82.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nPennisi, E. \u0026ldquo;The Secret Life of Fungi.\u0026rdquo; Science 304.5677 (2004): 1620-22.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nPrimer, A. Drawdown. \u0026ldquo;Farming Our Way Out of the Climate Crisis.\u0026rdquo; (2020).\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n“Countries Compared by Agriculture \u0026gt; Arable Land \u0026gt; Hectares per Capita. International Statistics.” NationMaster.com, NationMaster. Link.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nYoung, I. M. \u0026ldquo;Interactions and Self-Organization in the Soil-Microbe Complex.\u0026rdquo; Science 304.5677 (2004): 1634-37.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"http://localhost:1313/post/outlook-on-a-balanced-regenerative-anthropocene/","summary":"\u003cp\u003eThis is a draft version of course essay from Berkeley Summer Session 2021 (EPS-80).\u003c/p\u003e\n\u003ch1 id=\"introduction\"\u003eIntroduction\u003c/h1\u003e\n\u003cp\u003eHuge environmental changes in my hometown have taken place for the past two decades of fast economic growth and industrialization, which is seen as a rough miniature of entering the Anthropocene. Using examples from class materials, my own experience and the book \u003cem\u003eUnder a White Sky\u003c/em\u003e, several key aspects of anthropogenic actions are analyzed briefly, including land use, agriculture, soil remediation and green house gas management. Finally some personal insights and preparations are mentioned.\u003c/p\u003e\n\u003cimg src=\"/images/image-20210811000322522.png\" alt=\"Trajectory of cane toad invasion\" style=\"zoom: 33%;\" /\u003e","title":"Outlook on a balanced \u0026 regenerative Anthropocene"},{"content":"最近在做的一个科研训练项目需要向某一交叉领域的专家们发送问卷调查。于是想到通过爬虫爬取国内各大高校在环境、建筑、能源等专业的教授的信息（姓名、邮箱、研究领域等等），再根据研究方向初步筛选，得到待定的专家组名单。\u0026#x1f577;\u0026#xfe0f;\n预先准备 安装python第三方库：requests，re，csv（必要）\n正则表达式在线测试工具：在线正则表达式测试 (oschina.net)（非必要）\n分析源码 教师名录 以上交的环境科学与工程系为例，先找到教师名录的网页。然后F12查看源码，找到转向教师个人主页的链接。可以看到个人主页的链接在源码里统一格式为\u0026lt;a href=\u0026quot;/faculty/view/XX\u0026quot; target=\u0026quot;_blank\u0026quot;\u0026gt;，其中XX是编号或者姓名缩写。点进链接后发现网址的格式为https://sese.sjtu.edu.cn/faculty/view/XX，可见/faculty之前的内容被省略了。与之相对应，用来匹配个人主页链接的正则表达式为\n1 \u0026lt;a href=\u0026#34;/faculty/view[^\u0026#34;]* 得到匹配的结果后需要拼接成正确的链接。\n1 2 3 4 5 ... match_person = re.compile(r\u0026#39;\u0026lt;a href=\u0026#34;/faculty/view[^\u0026#34;]*\u0026#39;) #匹配列表的老师们的个人主页网址 person_list = match_person.findall(root.text) ... url = \u0026#39;https://sese.sjtu.edu.cn/\u0026#39; + person_list[i].split(\u0026#39;=\u0026#34;\u0026#39;)[1] #拼接得到完整的个人主页网址 查看教师名录网页\n个人主页 在个人主页上继续分析源码，姓名、邮箱、研究方向在源码里的统一格式分别为\u0026lt;h5 class=\u0026quot;media-name\u0026quot;\u0026gt;老师的姓名XXX\u0026lt;/h5\u0026gt;，电子邮件：XXXX@XXXX.edu.cn，\u0026lt;h2\u0026gt;研究方向\u0026lt;/h2\u0026gt;\u0026lt;p\u0026gt;对主要研究方向的简单概括XXXX\u0026lt;/p\u0026gt; 。其中研究方向这一栏被注释掉了，替以更详细的介绍。但是我们只需要这个简单版本就可以了，所以采用注释部分的内容。用于正则表达式匹配和字符串清理的代码：\n1 2 3 4 5 6 7 match_name = re.compile(r\u0026#39;\u0026lt;h5 class=\u0026#34;media-name\u0026#34;\u0026gt;[\\u4E00-\\u9FFF\\.]*\u0026#39;) #匹配姓名 match_email = re.compile(r\u0026#39;电子邮件[：: ]*[\\w\\.]*@[\\w\\.]*\u0026#39;) #匹配电子邮箱 match_research = re.compile(r\u0026#39;研究方向\u0026lt;/h2\u0026gt;[^\u0026lt;]*\u0026lt;p\u0026gt;[^\u0026lt;\\u200b\\u200d]*\u0026#39;) #匹配研究领域 name = match_name.findall(person.text)[0].split(\u0026#39;\u0026gt;\u0026#39;)[1] email = match_email.findall(person.text)[0].split(\u0026#39;：\u0026#39;)[1] research = match_research.findall(person.text)[0].split(\u0026#39;\u0026lt;p\u0026gt;\u0026#39;)[1] 整个爬虫的代码 由于高校的教师主页一般不会采用反爬虫技术，因此不需要采取Header设置之类额外的操作。\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 import requests import re import csv f = open(\u0026#39;教师列表.csv\u0026#39;, \u0026#39;w\u0026#39;) #创建文件 writer = csv.writer(f) writer.writerow([\u0026#34;index\u0026#34;,\u0026#34;name\u0026#34;,\u0026#34;email\u0026#34;,\u0026#34;researches\u0026#34;,\u0026#34;website\u0026#34;]) #列表的标题行 root_url = \u0026#39;https://sese.sjtu.edu.cn/faculty/all\u0026#39; #教职工列表的网址 root = requests.get(root_url, timeout=30) root.raise_for_status() root.encoding = root.apparent_encoding match_person = re.compile(r\u0026#39;\u0026lt;a href=\u0026#34;/faculty/view[^\u0026#34;]*\u0026#39;) #匹配列表的老师们的个人主页网址 person_list = match_person.findall(root.text) for i in range(len(person_list)): #遍历所有教师 url = \u0026#39;https://sese.sjtu.edu.cn/\u0026#39; + person_list[i].split(\u0026#39;=\u0026#34;\u0026#39;)[1] #拼接得到完整的个人主页网址 person = requests.get(url, timeout=30) person.raise_for_status() person.encoding = person.apparent_encoding match_name = re.compile(r\u0026#39;\u0026lt;h5 class=\u0026#34;media-name\u0026#34;\u0026gt;[\\u4E00-\\u9FFF\\.]*\u0026#39;) #匹配姓名 match_email = re.compile(r\u0026#39;电子邮件[：: ]*[\\w\\.]*@[\\w\\.]*\u0026#39;) #匹配电子邮箱 match_research = re.compile(r\u0026#39;研究方向\u0026lt;/h2\u0026gt;[^\u0026lt;]*\u0026lt;p\u0026gt;[^\u0026lt;\\u200b\\u200d]*\u0026#39;) #匹配研究领域 try: name = match_name.findall(person.text)[0].split(\u0026#39;\u0026gt;\u0026#39;)[1] except: name = \u0026#39;?\u0026#39; try: email = match_email.findall(person.text)[0].split(\u0026#39;：\u0026#39;)[1] except: email = \u0026#39;?\u0026#39; try: research = match_research.findall(person.text)[0].split(\u0026#39;\u0026lt;p\u0026gt;\u0026#39;)[1] except: research = \u0026#39;?\u0026#39; row = [i+1, name, email, research, url] writer.writerow(row) #写入文件 print(row) f.close() 爬取效果 这一方法的问题在于，写爬虫的工作量和爬取成功率非常取决于院校网页源码的标准程度。一些个人网站做得不太好的院校，不同老师的个人主页格式非常不统一，字体、排版、内容顺序等等各有千秋，使得我们很难从网页源码上识别出想要的信息。有时候适用于教师A主页的正则表达式，在教师B的主页上可能什么都匹配不到。这也是为什么我在写个人主页的findall命令时用了try语句——如果爬取失败了就用“?”替代，避免报错中断。\n在尝试了不同学校的网站之后，发现“研究领域”的信息是格式最不统一的，因此也是爬取失败率最高的。如果个人主页没有专门给邮箱地址设栏，那么邮箱地址也很可能爬取失败。写一个适用情况较广的正则表达式是很重要的，可以多查看几位教师的主页源码，找一找共同的规律。作为第一次听说正则表达式这一概念的新手，我都是先将源码复制到在线测试工具里，确认自己写的正则表达式能够成功之后再放进代码当中。\n教师姓名和个人主页网址一般情况下不会爬取失败，因为在职教师列表的页面通常有规律可循。因此非常建议记录每位老师的个人主页网址，便于有需要的情况下手动访问查阅。\n同样发表于简书：爬虫记录：尝试用Python爬取教授邮箱 - 简书 (jianshu.com)\n","permalink":"http://localhost:1313/post/get_email_by_python_crawler/","summary":"\u003cp\u003e最近在做的一个科研训练项目需要向某一交叉领域的专家们发送问卷调查。于是想到通过爬虫爬取国内各大高校在环境、建筑、能源等专业的教授的信息（姓名、邮箱、研究领域等等），再根据研究方向初步筛选，得到待定的专家组名单。\u0026#x1f577;\u0026#xfe0f;\u003c/p\u003e\n\u003ch1 id=\"预先准备\"\u003e预先准备\u003c/h1\u003e\n\u003cp\u003e安装python第三方库：\u003ccode\u003erequests\u003c/code\u003e，\u003ccode\u003ere\u003c/code\u003e，\u003ccode\u003ecsv\u003c/code\u003e（必要）\u003c/p\u003e\n\u003cp\u003e正则表达式在线测试工具：\u003ca href=\"https://tool.oschina.net/regex\"\u003e在线正则表达式测试 (oschina.net)\u003c/a\u003e（非必要）\u003c/p\u003e","title":"用Python爬虫爬取高校教师邮箱"},{"content":"系统问题的提出 关于系统、组织和复杂性的性质的问题并不是现代所特有的。正如国际系统工程委员会 (INCOSE) 的先驱和前国际系统科学学会 （ISSS）主席约翰·沃菲尔德所说，\nVirtually every important concept that backs up the key ideas emergent in systems literature is found in ancient literature and in the centuries that follow.\n然而，直到20世纪中叶，人们才越来越意识到采用一种科学方法来解决“系统科学”中的组织和复杂性问题的必要性和可能性。1\n18世纪和19世纪自然科学和物理科学知识的爆炸式增长使得专业学科的创建成为必然：为了科学的进步，科学家需要成为一个狭窄研究领域的专家。专业化的教育体系使得这种狭窄领域的知识传递给下一代专家，从而使碎片的知识结构永久化2。事实证明，对于实验分离和分析还原的流行科学方法而言，这种日益专业化的知识和教育是解决问题的优势而不是劣势。然而，基础科学和应用科学的某些领域仅靠这些方法并不能充分发挥作用。\n系统科学运动起源于两个这样的科学领域：生物-社会科学，以及最初源于控制论和运筹学，后来源于组织理论的数学-管理基础。\n生物学家Ludwig von Bertalanffy是最早主张和开发基于开放系统理论的广泛适用的科学研究方法的人之一3。他从科学分析流程的局限性角度解释了系统研究的科学需求。这种局限性通常表现为“整体大于部分之和”，其前提观点是认为一个实体可以分解为它的部分并从其部分重构，无论是物质的还是概念的。\nThis is the basic principle of \u0026ldquo;classical\u0026rdquo; science, which can be circumscribed in different ways: resolution into isolable causal trains or seeking for \u0026ldquo;atomic\u0026rdquo; units in the various fields of science, etc.\nBertalanffy指出，尽管这些最初由伽利略和笛卡尔阐明的原理在各个领域中的应用都非常成功，但是这些原理的应用有两个前提条件：第一，“部分”之间的相互作用不存在或弱到足以被某些研究目的忽略。只有在这种条件下，才能真正地、逻辑地、数学地“计算出”各个部分，然后才能“加和”起来。第二个条件是描述零件行为的关系是线性的；只有这样才能给出求和条件，即描述整体行为的方程与描述部分行为的方程具有相同的形式。\n在很多系统中，这些条件不能得到满足，即“系统”由相互作用的部分和非线性数学描述组成。这种复杂的系统实体描述了许多现实世界的情况：人口、生态系统、组织和复杂的人造技术。系统论的方法论问题是提供超越经典科学的分析总结性问题的问题。4\n另一位对系统问题的提出起到关键作用的科学家是Weaver，二战期间曾担任美国科学研究与发展办公室应用数学小组的负责人。基于这些经验，他提出了一项他称之为新的“有组织的复杂性问题的科学”的议程。他认为解决这些复杂问题需要分析作为有机整体的系统，而非像传统方法一样寻求简化假设。5\nAn advance that must be even greater than the nineteenth-century conquest of problems of simplicity or the twentieth-century victory over problems of disorganized complexity. Science must, over the next 50 years, learn to deal with these problems of organized complexity [problems for which complexity “emerges” from the coordinated interaction between its parts].\nWeaver认为攻克复杂有机整体系统的时机已经成熟，因为在当时1)数学建模和数字模拟技术的发展；2)二战期间“混合团队”操作分析方法得到成功运用，来自不同学科的人带来了他们的技能和洞察力共同解决关键、复杂的问题。\n系统研究的发展 开放系统和一般系统理论 一般系统理论（Genreal system theory, GST）试图制定与所有开放系统相关的原则。Bertalanffy认为不同学科的知识系统之间存在同源性，因此关于一个系统的知识应该允许我们对其他系统进行推理。\n1954年，Bertalanffy与Kenneth Boulding（经济学家）、Ralph Gerard（生理学家）和Anatol Rapoport（数学家）共同创立了通用系统理论学会（1956年更名为通用系统研究学会，1988年更名为通用系统研究学会）。该学会的最初目的是“鼓励发展适用于多个传统知识部门的理论体系……并通过改善专家之间的交流来促进科学的统一”。许多人认为这个群体是系统时代思维的创始人6。\n耗散结构理论 耗散结构理论（Dissipative Structure Theory）由Ilya Prigogine提出，以开放系统为研究对象，着重阐明开放系统如何从无序走向有序的过程。发展耗散结构理论主要原因之一在于，对生物体秩序的物理化学基础的研究。人们不仅想解释维持低熵情况和微妙的代谢调节过程，而且还想为向复杂性增加的结构进化提供物理化学基础。7耗散结构理论认同并延用了一般系统论中的开放系统思维，并进一步指出只有在系统远离平衡且系统内的不同元素之间存在着非线性机制的条件下，才能实现稳定的宏观有序耗散结构。\n控制论 控制论（Cybernetics）的主要奠基人是Wiener和Ashby。控制论起初是一门关于系统中通信、调节和控制的研究和建模的学科8 9。控制论研究通过系统的信息流以及系统如何使用信息通过反馈机制来控制自身。1940 年代控制论的早期工作被应用于电子和机械网络，是形成早期系统理论的学科之一。此后，它被用作所有重要系统学科的一套基本原则。\n运筹学 运筹学（Operation research, OR）考虑组织对技术的使用。它基于使用数学建模和统计分析来优化组织控制下的资源部署决策。源于二战期间开发的军事规划技术。1950年，Ackoff和Churchman将OR的思想和技术应用于组织和组织决策，这被视为运筹学和管理科学的正式开端10。运筹学发展出了规划论、库存论、图论、决策论等等分支方向。\n系统分析 系统分析理论由RAND公司于1948年开发。它借鉴并扩展了OR，包括使用控制论中的黑盒和反馈回路来构建框图和流程图。1961 年，肯尼迪政府下令在整个政府中使用系统分析技术，为广泛的决策问题提供定量基础，将OR与成本分析相结合11。\n突变论 突变论（Catastrophe Theory）是动力系统研究中分岔理论的一个分支，它起源于数学家René Thom的工作12。非线性系统某些参数的微小变化会导致平衡出现或消失，或从吸引变为排斥，反之亦然，从而导致系统行为发生巨大而突然的变化。\n协同论 协同论（Synergetics）主要研究远离平衡态的开放系统在与外界有物质或能量交换的情况下，如何通过自己内部协同作用，自发地出现时间、空间和功能上的有序结构。协同论首先由物理学家Hermann Haken系统地论述。13协同论结合了控制论、耗散结构理论、突变论等分支的理论。\n自组织理论 自组织理论（Self-organization）是关于在没有外部指令条件下，系统内部各子系统之间能自行按照某种规则形成一定的结构或功能的自组织现象的一种理论。控制论者Ashby在 1947 年制定了自组织的原始原理——任何确定性动态系统都会自动演变为平衡状态14。后续的系统科学家，如Foerster、Ilya Prigogine、Stafford Beer、Wiener、Hacker等人也对自组织问题进行了研究，并提出自组织过程实现的机制。从1960 年开始，系统科学家们进行了一系列关于自组织原理的会议15。这一概念在宇宙学、社会学、生物学等领域均得到了广泛的应用。\n混沌论 混沌理论（Chaos theory）专注于对初始条件高度敏感的模式演变，其最大的贡献是用简单的模型获得明确的非周期结果。系统状态测量中的一个小误差会导致可预测性以指数速率下降，因此任何方法的预测在长期内都是徒劳的，但非线性预测方法可以在混沌或其他情况下很好地进行短期预测存在非线性。16混沌理论向前可追溯到19世纪庞加莱等人对天体力学的研究。20世纪80年代中期开始，混沌理论迅速吸引了数学、物理、工程、生态学、经济学、气象学、情报学等诸多领域学者有关注，引发了全球对混沌理论研究的热潮。\n组织控制论 Stafford Beer是最早采取组织控制论（Organizational Cybernetics, OC）方法的人之一。Beer认为运筹学的技术在理解整个系统结构的情况下才能得到最好的运用17。Beer 还开发了可行系统模型（Viable Systems Model），它总结了系统可行（在其环境中生存和适应） 所需的有效组织18。\n控制论和运筹学方面的工作考虑了复杂系统中的通信和控制机制，特别是在组织和管理科学中。它们为处理系统内部的操作和战术问题提供了有用的方法，但无法考虑更具战略性的组织问题6。\n硬系统和软系统思维 Peter Checkland在80年代提出了一种基于解释的系统理论，该理论认为，为了理解组织的行为，我们不仅需要观察人们的行为，还需要建立对文化背景、行为意图和看法的理解。Checkland从系统工程的角度出发，发现将系统工程方法应用于社会和政治领域一些模糊的、定义不明确的问题时遇到的困难19。因此，他引入了硬系统和软系统之间的区别：\n硬系统（hard systems）类型的特点是能够定义目的、目标和任务，可以通过工程方法来尝试优化解决方案20。在硬系统中，问题可能是复杂和困难的，但它们是已知的，并且可以充分描述。可以通过从一系列方案中选择最佳解决方案来解决此类问题（可能进行一些修改或集成以创建最佳解决方案）。在这种情况下，“系统”一词用于描述现实世界的事物；在这些问题中，往往需要选择、创建并实施一个问题的解决方案。\n软系统（soft systems）的特点是复杂的、不明确的现象，软系统无法确定具体的目标，需要通过学习才能改进。此类系统不仅限于社会和政治领域，还存在于企业内部和企业之间，在这些领域中，复杂的、通常不明确的行为模式限制了企业的改进能力。软系统方法不以单一的问题或目标作为其核心。不同的人会根据自己的观点和经验感知不同而对问题情形做出不同的解读。软系统不寻求“解决”这些问题，而是通过减少参与者“不适感”的干预措施进行管理。在软系统情形下，“系统”一词用于描述指导我们理解情况或帮助选择干预策略的思想系统、概念系统。\n以下三个概念的辨析概括了硬系统和软系统之间的差异21：1)问题 VS 问题情境（problem vs. problematic situation）；2)解决方案 VS 减少不适感（solution vs. discomfort reduction）；3)系统 VS 系统理解（the system vs. systems understanding）。\n批判性系统思维 一系列硬系统和软系统方法的发展引起这样一个问题：在什么情况下应用哪种方法？批判性系统思维（Critical Systems Thinking, CST）或批判性管理科学（Critical Management Sciences）试图解决这个问题22。在这里“Critical”一词有两种使用方式。首先，批判性思维考虑到知识本身的限制，并对硬系统和软系统的限制和假设提出质疑。其次，批判性思维考虑了伦理、政治和强制执行的因素，以及系统思维在社会中的作用。\n系统科学分支发展网络 系统科学在发展的过程中不断与其他学科和领域交叉融合，包括生命科学、物理学、化学、社会学、宇宙学、热学、军事、企业组织、行政管理等等。系统科学的衍生学科之间互相影响、促进，即有逐渐细化的分支结构，又有融合了若干分支的综合性理论；既有对知识边界的拓宽，又有对已有学说适用性的反思。这些关系使得系统科学的历史不是简单的线性发展，而是复杂的、互相作用的网络结构（见下图）——这种对线性变化发展叙事的打破，某种程度上也印证了Bertalanffy等先驱者呼吁发展系统科学的初衷。从结构图中隐约可以看出两条脉络：即以一般系统理论为发端的自然科学中的系统科学，和以运筹学为发端的社会管理问题中的系统思维。而控制论的后续发展则分别融入到了这两条支路当中，成为系统科学体系中不可或缺的一环。\n参考资料\n这篇是本学期的一份课程作业，知识水平有限难免存在纰漏 一些资料转引自History of Systems Science - SEBoK (sebokwiki.org)和Wikipedia 同样发表于简书：梳理系统科学发展史 - 简书 (jianshu.com) Rick Adcock et al. History of Systems Science [EB/OL]. (https://www.sebokwiki.org/wiki/History_of_Systems_Science)[https://www.sebokwiki.org/wiki/History_of_Systems_Science]. 2021-10-11/2022-03-11.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nM\u0026rsquo;pherson P K. A perspective on systems science and systems philosophy[J]. Futures, 1974, 6(3): 219-239.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nVon Bertalanffy L. The theory of open systems in physics and biology[J]. Science, 1950, 111(2872): 23-29.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nVon Bertalanffy L. General system theory: foundations, development, applications. George Braziller[J]. Inc., New York, 1968.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nWeaver W. Science and complexity[M]//Facets of systems science. Springer, Boston, MA, 1991: 449-456.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nFlood R L. Rethinking the Fifth Discipline: Learning Within the Unknowable[M]. Psychology Press, 1999.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nPrigogine I, Lefever R. Theory of dissipative structures[M]//Synergetics. Vieweg+ Teubner Verlag, Wiesbaden, 1973: 124-135.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nAshby W R. An introduction to cybernetics[M]. Chapman \u0026amp; Hall Ltd, 1961.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nWiener N. Cybernetics or Control and Communication in the Animal and the Machine[M]. MIT press, 2019.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nC.W. Churchman, R.L. Ackoff. and E.L. Arnoff. Introduction to Operations Research[M]. New York, NY, USA, Wiley and Sons: 1950.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nRyan A. What is a Systems Approach?[J]. Arxiv Cornell University Library, 2008, 13(4): 537-542.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nThom, Rene. Structural stability and morphogenesis: an outline of a general theory of models[M]. Benjamin, 1975.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nHaken H. Synergetics. An introduction. Nonequilibrium phase transitions and self- organization in physics, chemistry and biology. Berlin New York: Springer-Verlag, 1983.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nWR A. Principles of the self-organizing dynamic system[J]. The Journal of General Psychology, 1947, 37(2): 125-128.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nAsaro, P. Heinz von Foerster and the Bio-Computing Movements of the 1960s.[C]. Albert Müller, Karl H. Müller. An Unfinished Revolution? Heinz von Foerster and the Biological Computer Laboratory. Vienna, Austria, Edition Echoraum, 2007: 1958–1976.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nW.A. Brock. Chaos Theory[C]. International Encyclopedia of the Social \u0026amp; Behavioral Sciences. N. J. Smelser \u0026amp; P. B. Baltes (Eds.). Amsterdam: Elsevier, 2001.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nBeer S. Cybernetics and management[J]. Journal of Symbolic Logic, 1960, 25(3).\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nBeer, S. The Heart of the Enterprise[M]. Chichester, UK, Wiley: 1979.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nCheckland P B. The origins and nature of ‘hard’ systems thinking[J]. Journal of applied systems analysis, 1978, 5(2): 99-110.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nCheckland, P. B. Systems Thinking, Systems Practice[M]. Chichester, UK: John Wiley \u0026amp; Sons Ltd, 1999.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nFlood, R.L. and E.R. Carson. Dealing with Complexity: An Introduction to the Theory and Application of Systems Science[M]. 2nd ed. New York, NY, USA: Plenum Press, 1993.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nJackson M C. Social systems theory and practice: The need for a critical approach[J]. International Journal of General System, 1985, 10(2-3): 135-151.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"http://localhost:1313/post/hostory_of_system_sci/","summary":"\u003ch1 id=\"系统问题的提出\"\u003e系统问题的提出\u003c/h1\u003e\n\u003cp\u003e关于系统、组织和复杂性的性质的问题并不是现代所特有的。正如国际系统工程委员会 (INCOSE) 的先驱和前国际系统科学学会 （ISSS）主席约翰·沃菲尔德所说，\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eVirtually every important concept that backs up the key ideas emergent in systems literature is found in ancient literature and in the centuries that follow.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e然而，直到20世纪中叶，人们才越来越意识到采用一种科学方法来解决“系统科学”中的组织和复杂性问题的必要性和可能性。\u003csup id=\"fnref:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e\u003c/p\u003e","title":"梳理系统科学发展历程"},{"content":"Complete list of github markdown emoji markup\nPeople :bowtie: :bowtie: \u0026#x1f604; :smile: \u0026#x1f606; :laughing: \u0026#x1f60a; :blush: \u0026#x1f603; :smiley: \u0026#x263a;\u0026#xfe0f; :relaxed: \u0026#x1f60f; :smirk: \u0026#x1f60d; :heart_eyes: \u0026#x1f618; :kissing_heart: \u0026#x1f61a; :kissing_closed_eyes: \u0026#x1f633; :flushed: \u0026#x1f60c; :relieved: \u0026#x1f606; :satisfied: \u0026#x1f601; :grin: \u0026#x1f609; :wink: \u0026#x1f61c; :stuck_out_tongue_winking_eye: \u0026#x1f61d; :stuck_out_tongue_closed_eyes: \u0026#x1f600; :grinning: \u0026#x1f617; :kissing: \u0026#x1f619; :kissing_smiling_eyes: \u0026#x1f61b; :stuck_out_tongue: \u0026#x1f634; :sleeping: \u0026#x1f61f; :worried: \u0026#x1f626; :frowning: \u0026#x1f627; :anguished: \u0026#x1f62e; :open_mouth: \u0026#x1f62c; :grimacing: \u0026#x1f615; :confused: \u0026#x1f62f; :hushed: \u0026#x1f611; :expressionless: \u0026#x1f612; :unamused: \u0026#x1f605; :sweat_smile: \u0026#x1f613; :sweat: \u0026#x1f625; :disappointed_relieved: \u0026#x1f629; :weary: \u0026#x1f614; :pensive: \u0026#x1f61e; :disappointed: \u0026#x1f616; :confounded: \u0026#x1f628; :fearful: \u0026#x1f630; :cold_sweat: \u0026#x1f623; :persevere: \u0026#x1f622; :cry: \u0026#x1f62d; :sob: \u0026#x1f602; :joy: \u0026#x1f632; :astonished: \u0026#x1f631; :scream: :neckbeard: :neckbeard: \u0026#x1f62b; :tired_face: \u0026#x1f620; :angry: \u0026#x1f621; :rage: \u0026#x1f624; :triumph: \u0026#x1f62a; :sleepy: \u0026#x1f60b; :yum: \u0026#x1f637; :mask: \u0026#x1f60e; :sunglasses: \u0026#x1f635; :dizzy_face: \u0026#x1f47f; :imp: \u0026#x1f608; :smiling_imp: \u0026#x1f610; :neutral_face: \u0026#x1f636; :no_mouth: \u0026#x1f607; :innocent: \u0026#x1f47d; :alien: \u0026#x1f49b; :yellow_heart: \u0026#x1f499; :blue_heart: \u0026#x1f49c; :purple_heart: \u0026#x2764;\u0026#xfe0f; :heart: \u0026#x1f49a; :green_heart: \u0026#x1f494; :broken_heart: \u0026#x1f493; :heartbeat: \u0026#x1f497; :heartpulse: \u0026#x1f495; :two_hearts: \u0026#x1f49e; :revolving_hearts: \u0026#x1f498; :cupid: \u0026#x1f496; :sparkling_heart: \u0026#x2728; :sparkles: \u0026#x2b50; :star: \u0026#x1f31f; :star2: \u0026#x1f4ab; :dizzy: \u0026#x1f4a5; :boom: \u0026#x1f4a5; :collision: \u0026#x1f4a2; :anger: \u0026#x2757; :exclamation: \u0026#x2753; :question: \u0026#x2755; :grey_exclamation: \u0026#x2754; :grey_question: \u0026#x1f4a4; :zzz: \u0026#x1f4a8; :dash: \u0026#x1f4a6; :sweat_drops: \u0026#x1f3b6; :notes: \u0026#x1f3b5; :musical_note: \u0026#x1f525; :fire: \u0026#x1f4a9; :hankey: \u0026#x1f4a9; :poop: \u0026#x1f4a9; :shit: \u0026#x1f44d; :+1: \u0026#x1f44d; :thumbsup: \u0026#x1f44e; :-1: \u0026#x1f44e; :thumbsdown: \u0026#x1f44c; :ok_hand: \u0026#x1f44a; :punch: \u0026#x1f44a; :facepunch: \u0026#x270a; :fist: \u0026#x270c;\u0026#xfe0f; :v: \u0026#x1f44b; :wave: \u0026#x270b; :hand: \u0026#x270b; :raised_hand: \u0026#x1f450; :open_hands: \u0026#x261d;\u0026#xfe0f; :point_up: \u0026#x1f447; :point_down: \u0026#x1f448; :point_left: \u0026#x1f449; :point_right: \u0026#x1f64c; :raised_hands: \u0026#x1f64f; :pray: \u0026#x1f446; :point_up_2: \u0026#x1f44f; :clap: \u0026#x1f4aa; :muscle: \u0026#x1f918; :metal: \u0026#x1f595; :fu: \u0026#x1f6b6; :walking: \u0026#x1f3c3; :runner: \u0026#x1f3c3; :running: \u0026#x1f46b; :couple: \u0026#x1f46a; :family: \u0026#x1f46c; :two_men_holding_hands: \u0026#x1f46d; :two_women_holding_hands: \u0026#x1f483; :dancer: \u0026#x1f46f; :dancers: \u0026#x1f646;\u0026zwj;\u0026#x2640;\u0026#xfe0f; :ok_woman: \u0026#x1f645; :no_good: \u0026#x1f481; :information_desk_person: \u0026#x1f64b; :raising_hand: \u0026#x1f470;\u0026zwj;\u0026#x2640;\u0026#xfe0f; :bride_with_veil: :person_with_pouting_face: :person_with_pouting_face: :person_frowning: :person_frowning: \u0026#x1f647; :bow: \u0026#x1f48f; :couplekiss: \u0026#x1f491; :couple_with_heart: \u0026#x1f486; :massage: \u0026#x1f487; :haircut: \u0026#x1f485; :nail_care: \u0026#x1f466; :boy: \u0026#x1f467; :girl: \u0026#x1f469; :woman: \u0026#x1f468; :man: \u0026#x1f476; :baby: \u0026#x1f475; :older_woman: \u0026#x1f474; :older_man: :person_with_blond_hair: :person_with_blond_hair: \u0026#x1f472; :man_with_gua_pi_mao: \u0026#x1f473;\u0026zwj;\u0026#x2642;\u0026#xfe0f; :man_with_turban: \u0026#x1f477; :construction_worker: \u0026#x1f46e; :cop: \u0026#x1f47c; :angel: \u0026#x1f478; :princess: \u0026#x1f63a; :smiley_cat: \u0026#x1f638; :smile_cat: \u0026#x1f63b; :heart_eyes_cat: \u0026#x1f63d; :kissing_cat: \u0026#x1f63c; :smirk_cat: \u0026#x1f640; :scream_cat: \u0026#x1f63f; :crying_cat_face: \u0026#x1f639; :joy_cat: \u0026#x1f63e; :pouting_cat: \u0026#x1f479; :japanese_ogre: \u0026#x1f47a; :japanese_goblin: \u0026#x1f648; :see_no_evil: \u0026#x1f649; :hear_no_evil: \u0026#x1f64a; :speak_no_evil: \u0026#x1f482;\u0026zwj;\u0026#x2642;\u0026#xfe0f; :guardsman: \u0026#x1f480; :skull: \u0026#x1f43e; :feet: \u0026#x1f444; :lips: \u0026#x1f48b; :kiss: \u0026#x1f4a7; :droplet: \u0026#x1f442; :ear: \u0026#x1f440; :eyes: \u0026#x1f443; :nose: \u0026#x1f445; :tongue: \u0026#x1f48c; :love_letter: \u0026#x1f464; :bust_in_silhouette: \u0026#x1f465; :busts_in_silhouette: \u0026#x1f4ac; :speech_balloon: \u0026#x1f4ad; :thought_balloon: :feelsgood: :feelsgood: :finnadie: :finnadie: :goberserk: :goberserk: :godmode: :godmode: :hurtrealbad: :hurtrealbad: :rage1: :rage1: :rage2: :rage2: :rage3: :rage3: :rage4: :rage4: :suspect: :suspect: :trollface: :trollface: Nature \u0026#x2600;\u0026#xfe0f; :sunny: \u0026#x2614; :umbrella: \u0026#x2601;\u0026#xfe0f; :cloud: \u0026#x2744;\u0026#xfe0f; :snowflake: \u0026#x26c4; :snowman: \u0026#x26a1; :zap: \u0026#x1f300; :cyclone: \u0026#x1f301; :foggy: \u0026#x1f30a; :ocean: \u0026#x1f431; :cat: \u0026#x1f436; :dog: \u0026#x1f42d; :mouse: \u0026#x1f439; :hamster: \u0026#x1f430; :rabbit: \u0026#x1f43a; :wolf: \u0026#x1f438; :frog: \u0026#x1f42f; :tiger: \u0026#x1f428; :koala: \u0026#x1f43b; :bear: \u0026#x1f437; :pig: \u0026#x1f43d; :pig_nose: \u0026#x1f42e; :cow: \u0026#x1f417; :boar: \u0026#x1f435; :monkey_face: \u0026#x1f412; :monkey: \u0026#x1f434; :horse: \u0026#x1f40e; :racehorse: \u0026#x1f42b; :camel: \u0026#x1f411; :sheep: \u0026#x1f418; :elephant: \u0026#x1f43c; :panda_face: \u0026#x1f40d; :snake: \u0026#x1f426; :bird: \u0026#x1f424; :baby_chick: \u0026#x1f425; :hatched_chick: \u0026#x1f423; :hatching_chick: \u0026#x1f414; :chicken: \u0026#x1f427; :penguin: \u0026#x1f422; :turtle: \u0026#x1f41b; :bug: \u0026#x1f41d; :honeybee: \u0026#x1f41c; :ant: \u0026#x1fab2; :beetle: \u0026#x1f40c; :snail: \u0026#x1f419; :octopus: \u0026#x1f420; :tropical_fish: \u0026#x1f41f; :fish: \u0026#x1f433; :whale: \u0026#x1f40b; :whale2: \u0026#x1f42c; :dolphin: \u0026#x1f404; :cow2: \u0026#x1f40f; :ram: \u0026#x1f400; :rat: \u0026#x1f403; :water_buffalo: \u0026#x1f405; :tiger2: \u0026#x1f407; :rabbit2: \u0026#x1f409; :dragon: \u0026#x1f410; :goat: \u0026#x1f413; :rooster: \u0026#x1f415; :dog2: \u0026#x1f416; :pig2: \u0026#x1f401; :mouse2: \u0026#x1f402; :ox: \u0026#x1f432; :dragon_face: \u0026#x1f421; :blowfish: \u0026#x1f40a; :crocodile: \u0026#x1f42a; :dromedary_camel: \u0026#x1f406; :leopard: \u0026#x1f408; :cat2: \u0026#x1f429; :poodle: \u0026#x1f43e; :paw_prints: \u0026#x1f490; :bouquet: \u0026#x1f338; :cherry_blossom: \u0026#x1f337; :tulip: \u0026#x1f340; :four_leaf_clover: \u0026#x1f339; :rose: \u0026#x1f33b; :sunflower: \u0026#x1f33a; :hibiscus: \u0026#x1f341; :maple_leaf: \u0026#x1f343; :leaves: \u0026#x1f342; :fallen_leaf: \u0026#x1f33f; :herb: \u0026#x1f344; :mushroom: \u0026#x1f335; :cactus: \u0026#x1f334; :palm_tree: \u0026#x1f332; :evergreen_tree: \u0026#x1f333; :deciduous_tree: \u0026#x1f330; :chestnut: \u0026#x1f331; :seedling: \u0026#x1f33c; :blossom: \u0026#x1f33e; :ear_of_rice: \u0026#x1f41a; :shell: \u0026#x1f310; :globe_with_meridians: \u0026#x1f31e; :sun_with_face: \u0026#x1f31d; :full_moon_with_face: \u0026#x1f31a; :new_moon_with_face: \u0026#x1f311; :new_moon: \u0026#x1f312; :waxing_crescent_moon: \u0026#x1f313; :first_quarter_moon: \u0026#x1f314; :waxing_gibbous_moon: \u0026#x1f315; :full_moon: \u0026#x1f316; :waning_gibbous_moon: \u0026#x1f317; :last_quarter_moon: \u0026#x1f318; :waning_crescent_moon: \u0026#x1f31c; :last_quarter_moon_with_face: \u0026#x1f31b; :first_quarter_moon_with_face: \u0026#x1f314; :moon: \u0026#x1f30d; :earth_africa: \u0026#x1f30e; :earth_americas: \u0026#x1f30f; :earth_asia: \u0026#x1f30b; :volcano: \u0026#x1f30c; :milky_way: \u0026#x26c5; :partly_sunny: :octocat: :octocat: :squirrel: :squirrel: Objects \u0026#x1f38d; :bamboo: \u0026#x1f49d; :gift_heart: \u0026#x1f38e; :dolls: \u0026#x1f392; :school_satchel: \u0026#x1f393; :mortar_board: \u0026#x1f38f; :flags: \u0026#x1f386; :fireworks: \u0026#x1f387; :sparkler: \u0026#x1f390; :wind_chime: \u0026#x1f391; :rice_scene: \u0026#x1f383; :jack_o_lantern: \u0026#x1f47b; :ghost: \u0026#x1f385; :santa: \u0026#x1f384; :christmas_tree: \u0026#x1f381; :gift: \u0026#x1f514; :bell: \u0026#x1f515; :no_bell: \u0026#x1f38b; :tanabata_tree: \u0026#x1f389; :tada: \u0026#x1f38a; :confetti_ball: \u0026#x1f388; :balloon: \u0026#x1f52e; :crystal_ball: \u0026#x1f4bf; :cd: \u0026#x1f4c0; :dvd: \u0026#x1f4be; :floppy_disk: \u0026#x1f4f7; :camera: \u0026#x1f4f9; :video_camera: \u0026#x1f3a5; :movie_camera: \u0026#x1f4bb; :computer: \u0026#x1f4fa; :tv: \u0026#x1f4f1; :iphone: \u0026#x260e;\u0026#xfe0f; :phone: \u0026#x260e;\u0026#xfe0f; :telephone: \u0026#x1f4de; :telephone_receiver: \u0026#x1f4df; :pager: \u0026#x1f4e0; :fax: \u0026#x1f4bd; :minidisc: \u0026#x1f4fc; :vhs: \u0026#x1f509; :sound: \u0026#x1f508; :speaker: \u0026#x1f507; :mute: \u0026#x1f4e2; :loudspeaker: \u0026#x1f4e3; :mega: \u0026#x231b; :hourglass: \u0026#x23f3; :hourglass_flowing_sand: \u0026#x23f0; :alarm_clock: \u0026#x231a; :watch: \u0026#x1f4fb; :radio: \u0026#x1f4e1; :satellite: \u0026#x27bf; :loop: \u0026#x1f50d; :mag: \u0026#x1f50e; :mag_right: \u0026#x1f513; :unlock: \u0026#x1f512; :lock: \u0026#x1f50f; :lock_with_ink_pen: \u0026#x1f510; :closed_lock_with_key: \u0026#x1f511; :key: \u0026#x1f4a1; :bulb: \u0026#x1f526; :flashlight: \u0026#x1f506; :high_brightness: \u0026#x1f505; :low_brightness: \u0026#x1f50c; :electric_plug: \u0026#x1f50b; :battery: \u0026#x1f4f2; :calling: \u0026#x1f4e7; :email: \u0026#x1f4eb; :mailbox: \u0026#x1f4ee; :postbox: \u0026#x1f6c0; :bath: \u0026#x1f6c1; :bathtub: \u0026#x1f6bf; :shower: \u0026#x1f6bd; :toilet: \u0026#x1f527; :wrench: \u0026#x1f529; :nut_and_bolt: \u0026#x1f528; :hammer: \u0026#x1f4ba; :seat: \u0026#x1f4b0; :moneybag: \u0026#x1f4b4; :yen: \u0026#x1f4b5; :dollar: \u0026#x1f4b7; :pound: \u0026#x1f4b6; :euro: \u0026#x1f4b3; :credit_card: \u0026#x1f4b8; :money_with_wings: \u0026#x1f4e7; :e-mail: \u0026#x1f4e5; :inbox_tray: \u0026#x1f4e4; :outbox_tray: \u0026#x2709;\u0026#xfe0f; :envelope: \u0026#x1f4e8; :incoming_envelope: \u0026#x1f4ef; :postal_horn: \u0026#x1f4ea; :mailbox_closed: \u0026#x1f4ec; :mailbox_with_mail: \u0026#x1f4ed; :mailbox_with_no_mail: \u0026#x1f6aa; :door: \u0026#x1f6ac; :smoking: \u0026#x1f4a3; :bomb: \u0026#x1f52b; :gun: \u0026#x1f52a; :hocho: \u0026#x1f48a; :pill: \u0026#x1f489; :syringe: \u0026#x1f4c4; :page_facing_up: \u0026#x1f4c3; :page_with_curl: \u0026#x1f4d1; :bookmark_tabs: \u0026#x1f4ca; :bar_chart: \u0026#x1f4c8; :chart_with_upwards_trend: \u0026#x1f4c9; :chart_with_downwards_trend: \u0026#x1f4dc; :scroll: \u0026#x1f4cb; :clipboard: \u0026#x1f4c6; :calendar: \u0026#x1f4c5; :date: \u0026#x1f4c7; :card_index: \u0026#x1f4c1; :file_folder: \u0026#x1f4c2; :open_file_folder: \u0026#x2702;\u0026#xfe0f; :scissors: \u0026#x1f4cc; :pushpin: \u0026#x1f4ce; :paperclip: \u0026#x2712;\u0026#xfe0f; :black_nib: \u0026#x270f;\u0026#xfe0f; :pencil2: \u0026#x1f4cf; :straight_ruler: \u0026#x1f4d0; :triangular_ruler: \u0026#x1f4d5; :closed_book: \u0026#x1f4d7; :green_book: \u0026#x1f4d8; :blue_book: \u0026#x1f4d9; :orange_book: \u0026#x1f4d3; :notebook: \u0026#x1f4d4; :notebook_with_decorative_cover: \u0026#x1f4d2; :ledger: \u0026#x1f4da; :books: \u0026#x1f516; :bookmark: \u0026#x1f4db; :name_badge: \u0026#x1f52c; :microscope: \u0026#x1f52d; :telescope: \u0026#x1f4f0; :newspaper: \u0026#x1f3c8; :football: \u0026#x1f3c0; :basketball: \u0026#x26bd; :soccer: \u0026#x26be; :baseball: \u0026#x1f3be; :tennis: \u0026#x1f3b1; :8ball: \u0026#x1f3c9; :rugby_football: \u0026#x1f3b3; :bowling: \u0026#x26f3; :golf: \u0026#x1f6b5; :mountain_bicyclist: \u0026#x1f6b4; :bicyclist: \u0026#x1f3c7; :horse_racing: \u0026#x1f3c2; :snowboarder: \u0026#x1f3ca; :swimmer: \u0026#x1f3c4; :surfer: \u0026#x1f3bf; :ski: \u0026#x2660;\u0026#xfe0f; :spades: \u0026#x2665;\u0026#xfe0f; :hearts: \u0026#x2663;\u0026#xfe0f; :clubs: \u0026#x2666;\u0026#xfe0f; :diamonds: \u0026#x1f48e; :gem: \u0026#x1f48d; :ring: \u0026#x1f3c6; :trophy: \u0026#x1f3bc; :musical_score: \u0026#x1f3b9; :musical_keyboard: \u0026#x1f3bb; :violin: \u0026#x1f47e; :space_invader: \u0026#x1f3ae; :video_game: \u0026#x1f0cf; :black_joker: \u0026#x1f3b4; :flower_playing_cards: \u0026#x1f3b2; :game_die: \u0026#x1f3af; :dart: \u0026#x1f004; :mahjong: \u0026#x1f3ac; :clapper: \u0026#x1f4dd; :memo: \u0026#x1f4dd; :pencil: \u0026#x1f4d6; :book: \u0026#x1f3a8; :art: \u0026#x1f3a4; :microphone: \u0026#x1f3a7; :headphones: \u0026#x1f3ba; :trumpet: \u0026#x1f3b7; :saxophone: \u0026#x1f3b8; :guitar: \u0026#x1f45e; :shoe: \u0026#x1f461; :sandal: \u0026#x1f460; :high_heel: \u0026#x1f484; :lipstick: \u0026#x1f462; :boot: \u0026#x1f455; :shirt: \u0026#x1f455; :tshirt: \u0026#x1f454; :necktie: \u0026#x1f45a; :womans_clothes: \u0026#x1f457; :dress: \u0026#x1f3bd; :running_shirt_with_sash: \u0026#x1f456; :jeans: \u0026#x1f458; :kimono: \u0026#x1f459; :bikini: \u0026#x1f380; :ribbon: \u0026#x1f3a9; :tophat: \u0026#x1f451; :crown: \u0026#x1f452; :womans_hat: \u0026#x1f45e; :mans_shoe: \u0026#x1f302; :closed_umbrella: \u0026#x1f4bc; :briefcase: \u0026#x1f45c; :handbag: \u0026#x1f45d; :pouch: \u0026#x1f45b; :purse: \u0026#x1f453; :eyeglasses: \u0026#x1f3a3; :fishing_pole_and_fish: \u0026#x2615; :coffee: \u0026#x1f375; :tea: \u0026#x1f376; :sake: \u0026#x1f37c; :baby_bottle: \u0026#x1f37a; :beer: \u0026#x1f37b; :beers: \u0026#x1f378; :cocktail: \u0026#x1f379; :tropical_drink: \u0026#x1f377; :wine_glass: \u0026#x1f374; :fork_and_knife: \u0026#x1f355; :pizza: \u0026#x1f354; :hamburger: \u0026#x1f35f; :fries: \u0026#x1f357; :poultry_leg: \u0026#x1f356; :meat_on_bone: \u0026#x1f35d; :spaghetti: \u0026#x1f35b; :curry: \u0026#x1f364; :fried_shrimp: \u0026#x1f371; :bento: \u0026#x1f363; :sushi: \u0026#x1f365; :fish_cake: \u0026#x1f359; :rice_ball: \u0026#x1f358; :rice_cracker: \u0026#x1f35a; :rice: \u0026#x1f35c; :ramen: \u0026#x1f372; :stew: \u0026#x1f362; :oden: \u0026#x1f361; :dango: \u0026#x1f95a; :egg: \u0026#x1f35e; :bread: \u0026#x1f369; :doughnut: \u0026#x1f36e; :custard: \u0026#x1f366; :icecream: \u0026#x1f368; :ice_cream: \u0026#x1f367; :shaved_ice: \u0026#x1f382; :birthday: \u0026#x1f370; :cake: \u0026#x1f36a; :cookie: \u0026#x1f36b; :chocolate_bar: \u0026#x1f36c; :candy: \u0026#x1f36d; :lollipop: \u0026#x1f36f; :honey_pot: \u0026#x1f34e; :apple: \u0026#x1f34f; :green_apple: \u0026#x1f34a; :tangerine: \u0026#x1f34b; :lemon: \u0026#x1f352; :cherries: \u0026#x1f347; :grapes: \u0026#x1f349; :watermelon: \u0026#x1f353; :strawberry: \u0026#x1f351; :peach: \u0026#x1f348; :melon: \u0026#x1f34c; :banana: \u0026#x1f350; :pear: \u0026#x1f34d; :pineapple: \u0026#x1f360; :sweet_potato: \u0026#x1f346; :eggplant: \u0026#x1f345; :tomato: \u0026#x1f33d; :corn: Places \u0026#x1f3e0; :house: \u0026#x1f3e1; :house_with_garden: \u0026#x1f3eb; :school: \u0026#x1f3e2; :office: \u0026#x1f3e3; :post_office: \u0026#x1f3e5; :hospital: \u0026#x1f3e6; :bank: \u0026#x1f3ea; :convenience_store: \u0026#x1f3e9; :love_hotel: \u0026#x1f3e8; :hotel: \u0026#x1f492; :wedding: \u0026#x26ea; :church: \u0026#x1f3ec; :department_store: \u0026#x1f3e4; :european_post_office: \u0026#x1f307; :city_sunrise: \u0026#x1f306; :city_sunset: \u0026#x1f3ef; :japanese_castle: \u0026#x1f3f0; :european_castle: \u0026#x26fa; :tent: \u0026#x1f3ed; :factory: \u0026#x1f5fc; :tokyo_tower: \u0026#x1f5fe; :japan: \u0026#x1f5fb; :mount_fuji: \u0026#x1f304; :sunrise_over_mountains: \u0026#x1f305; :sunrise: \u0026#x1f320; :stars: \u0026#x1f5fd; :statue_of_liberty: \u0026#x1f309; :bridge_at_night: \u0026#x1f3a0; :carousel_horse: \u0026#x1f308; :rainbow: \u0026#x1f3a1; :ferris_wheel: \u0026#x26f2; :fountain: \u0026#x1f3a2; :roller_coaster: \u0026#x1f6a2; :ship: \u0026#x1f6a4; :speedboat: \u0026#x26f5; :boat: \u0026#x26f5; :sailboat: \u0026#x1f6a3; :rowboat: \u0026#x2693; :anchor: \u0026#x1f680; :rocket: \u0026#x2708;\u0026#xfe0f; :airplane: \u0026#x1f681; :helicopter: \u0026#x1f682; :steam_locomotive: \u0026#x1f68a; :tram: \u0026#x1f69e; :mountain_railway: \u0026#x1f6b2; :bike: \u0026#x1f6a1; :aerial_tramway: \u0026#x1f69f; :suspension_railway: \u0026#x1f6a0; :mountain_cableway: \u0026#x1f69c; :tractor: \u0026#x1f699; :blue_car: \u0026#x1f698; :oncoming_automobile: \u0026#x1f697; :car: \u0026#x1f697; :red_car: \u0026#x1f695; :taxi: \u0026#x1f696; :oncoming_taxi: \u0026#x1f69b; :articulated_lorry: \u0026#x1f68c; :bus: \u0026#x1f68d; :oncoming_bus: \u0026#x1f6a8; :rotating_light: \u0026#x1f693; :police_car: \u0026#x1f694; :oncoming_police_car: \u0026#x1f692; :fire_engine: \u0026#x1f691; :ambulance: \u0026#x1f690; :minibus: \u0026#x1f69a; :truck: \u0026#x1f68b; :train: \u0026#x1f689; :station: \u0026#x1f686; :train2: \u0026#x1f685; :bullettrain_front: \u0026#x1f684; :bullettrain_side: \u0026#x1f688; :light_rail: \u0026#x1f69d; :monorail: \u0026#x1f683; :railway_car: \u0026#x1f68e; :trolleybus: \u0026#x1f3ab; :ticket: \u0026#x26fd; :fuelpump: \u0026#x1f6a6; :vertical_traffic_light: \u0026#x1f6a5; :traffic_light: \u0026#x26a0;\u0026#xfe0f; :warning: \u0026#x1f6a7; :construction: \u0026#x1f530; :beginner: \u0026#x1f3e7; :atm: \u0026#x1f3b0; :slot_machine: \u0026#x1f68f; :busstop: \u0026#x1f488; :barber: \u0026#x2668;\u0026#xfe0f; :hotsprings: \u0026#x1f3c1; :checkered_flag: \u0026#x1f38c; :crossed_flags: \u0026#x1f3ee; :izakaya_lantern: \u0026#x1f5ff; :moyai: \u0026#x1f3aa; :circus_tent: \u0026#x1f3ad; :performing_arts: \u0026#x1f4cd; :round_pushpin: \u0026#x1f6a9; :triangular_flag_on_post: \u0026#x1f1ef;\u0026#x1f1f5; :jp: \u0026#x1f1f0;\u0026#x1f1f7; :kr: \u0026#x1f1e8;\u0026#x1f1f3; :cn: \u0026#x1f1fa;\u0026#x1f1f8; :us: \u0026#x1f1eb;\u0026#x1f1f7; :fr: \u0026#x1f1ea;\u0026#x1f1f8; :es: \u0026#x1f1ee;\u0026#x1f1f9; :it: \u0026#x1f1f7;\u0026#x1f1fa; :ru: \u0026#x1f1ec;\u0026#x1f1e7; :gb: \u0026#x1f1ec;\u0026#x1f1e7; :uk: \u0026#x1f1e9;\u0026#x1f1ea; :de: Symbols \u0026#x31;\u0026#xfe0f;\u0026#x20e3; :one: \u0026#x32;\u0026#xfe0f;\u0026#x20e3; :two: \u0026#x33;\u0026#xfe0f;\u0026#x20e3; :three: \u0026#x34;\u0026#xfe0f;\u0026#x20e3; :four: \u0026#x35;\u0026#xfe0f;\u0026#x20e3; :five: \u0026#x36;\u0026#xfe0f;\u0026#x20e3; :six: \u0026#x37;\u0026#xfe0f;\u0026#x20e3; :seven: \u0026#x38;\u0026#xfe0f;\u0026#x20e3; :eight: \u0026#x39;\u0026#xfe0f;\u0026#x20e3; :nine: \u0026#x1f51f; :keycap_ten: \u0026#x1f522; :1234: \u0026#x30;\u0026#xfe0f;\u0026#x20e3; :zero: \u0026#x23;\u0026#xfe0f;\u0026#x20e3; :hash: \u0026#x1f523; :symbols: \u0026#x25c0;\u0026#xfe0f; :arrow_backward: \u0026#x2b07;\u0026#xfe0f; :arrow_down: \u0026#x25b6;\u0026#xfe0f; :arrow_forward: \u0026#x2b05;\u0026#xfe0f; :arrow_left: \u0026#x1f520; :capital_abcd: \u0026#x1f521; :abcd: \u0026#x1f524; :abc: \u0026#x2199;\u0026#xfe0f; :arrow_lower_left: \u0026#x2198;\u0026#xfe0f; :arrow_lower_right: \u0026#x27a1;\u0026#xfe0f; :arrow_right: \u0026#x2b06;\u0026#xfe0f; :arrow_up: \u0026#x2196;\u0026#xfe0f; :arrow_upper_left: \u0026#x2197;\u0026#xfe0f; :arrow_upper_right: \u0026#x23ec; :arrow_double_down: \u0026#x23eb; :arrow_double_up: \u0026#x1f53d; :arrow_down_small: \u0026#x2935;\u0026#xfe0f; :arrow_heading_down: \u0026#x2934;\u0026#xfe0f; :arrow_heading_up: \u0026#x21a9;\u0026#xfe0f; :leftwards_arrow_with_hook: \u0026#x21aa;\u0026#xfe0f; :arrow_right_hook: \u0026#x2194;\u0026#xfe0f; :left_right_arrow: \u0026#x2195;\u0026#xfe0f; :arrow_up_down: \u0026#x1f53c; :arrow_up_small: \u0026#x1f503; :arrows_clockwise: \u0026#x1f504; :arrows_counterclockwise: \u0026#x23ea; :rewind: \u0026#x23e9; :fast_forward: \u0026#x2139;\u0026#xfe0f; :information_source: \u0026#x1f197; :ok: \u0026#x1f500; :twisted_rightwards_arrows: \u0026#x1f501; :repeat: \u0026#x1f502; :repeat_one: \u0026#x1f195; :new: \u0026#x1f51d; :top: \u0026#x1f199; :up: \u0026#x1f192; :cool: \u0026#x1f193; :free: \u0026#x1f196; :ng: \u0026#x1f3a6; :cinema: \u0026#x1f201; :koko: \u0026#x1f4f6; :signal_strength: \u0026#x1f239; :u5272: \u0026#x1f234; :u5408: \u0026#x1f23a; :u55b6: \u0026#x1f22f; :u6307: \u0026#x1f237;\u0026#xfe0f; :u6708: \u0026#x1f236; :u6709: \u0026#x1f235; :u6e80: \u0026#x1f21a; :u7121: \u0026#x1f238; :u7533: \u0026#x1f233; :u7a7a: \u0026#x1f232; :u7981: \u0026#x1f202;\u0026#xfe0f; :sa: \u0026#x1f6bb; :restroom: \u0026#x1f6b9; :mens: \u0026#x1f6ba; :womens: \u0026#x1f6bc; :baby_symbol: \u0026#x1f6ad; :no_smoking: \u0026#x1f17f;\u0026#xfe0f; :parking: \u0026#x267f; :wheelchair: \u0026#x1f687; :metro: \u0026#x1f6c4; :baggage_claim: \u0026#x1f251; :accept: \u0026#x1f6be; :wc: \u0026#x1f6b0; :potable_water: \u0026#x1f6ae; :put_litter_in_its_place: \u0026#x3299;\u0026#xfe0f; :secret: \u0026#x3297;\u0026#xfe0f; :congratulations: \u0026#x24c2;\u0026#xfe0f; :m: \u0026#x1f6c2; :passport_control: \u0026#x1f6c5; :left_luggage: \u0026#x1f6c3; :customs: \u0026#x1f250; :ideograph_advantage: \u0026#x1f191; :cl: \u0026#x1f198; :sos: \u0026#x1f194; :id: \u0026#x1f6ab; :no_entry_sign: \u0026#x1f51e; :underage: \u0026#x1f4f5; :no_mobile_phones: \u0026#x1f6af; :do_not_litter: \u0026#x1f6b1; :non-potable_water: \u0026#x1f6b3; :no_bicycles: \u0026#x1f6b7; :no_pedestrians: \u0026#x1f6b8; :children_crossing: \u0026#x26d4; :no_entry: \u0026#x2733;\u0026#xfe0f; :eight_spoked_asterisk: \u0026#x2734;\u0026#xfe0f; :eight_pointed_black_star: \u0026#x1f49f; :heart_decoration: \u0026#x1f19a; :vs: \u0026#x1f4f3; :vibration_mode: \u0026#x1f4f4; :mobile_phone_off: \u0026#x1f4b9; :chart: \u0026#x1f4b1; :currency_exchange: \u0026#x2648; :aries: \u0026#x2649; :taurus: \u0026#x264a; :gemini: \u0026#x264b; :cancer: \u0026#x264c; :leo: \u0026#x264d; :virgo: \u0026#x264e; :libra: \u0026#x264f; :scorpius: \u0026#x2650; :sagittarius: \u0026#x2651; :capricorn: \u0026#x2652; :aquarius: \u0026#x2653; :pisces: \u0026#x26ce; :ophiuchus: \u0026#x1f52f; :six_pointed_star: \u0026#x274e; :negative_squared_cross_mark: \u0026#x1f170;\u0026#xfe0f; :a: \u0026#x1f171;\u0026#xfe0f; :b: \u0026#x1f18e; :ab: \u0026#x1f17e;\u0026#xfe0f; :o2: \u0026#x1f4a0; :diamond_shape_with_a_dot_inside: \u0026#x267b;\u0026#xfe0f; :recycle: \u0026#x1f51a; :end: \u0026#x1f51b; :on: \u0026#x1f51c; :soon: \u0026#x1f550; :clock1: \u0026#x1f55c; :clock130: \u0026#x1f559; :clock10: \u0026#x1f565; :clock1030: \u0026#x1f55a; :clock11: \u0026#x1f566; :clock1130: \u0026#x1f55b; :clock12: \u0026#x1f567; :clock1230: \u0026#x1f551; :clock2: \u0026#x1f55d; :clock230: \u0026#x1f552; :clock3: \u0026#x1f55e; :clock330: \u0026#x1f553; :clock4: \u0026#x1f55f; :clock430: \u0026#x1f554; :clock5: \u0026#x1f560; :clock530: \u0026#x1f555; :clock6: \u0026#x1f561; :clock630: \u0026#x1f556; :clock7: \u0026#x1f562; :clock730: \u0026#x1f557; :clock8: \u0026#x1f563; :clock830: \u0026#x1f558; :clock9: \u0026#x1f564; :clock930: \u0026#x1f4b2; :heavy_dollar_sign: \u0026#xa9;\u0026#xfe0f; :copyright: \u0026#xae;\u0026#xfe0f; :registered: \u0026#x2122;\u0026#xfe0f; :tm: \u0026#x274c; :x: \u0026#x2757; :heavy_exclamation_mark: \u0026#x203c;\u0026#xfe0f; :bangbang: \u0026#x2049;\u0026#xfe0f; :interrobang: \u0026#x2b55; :o: \u0026#x2716;\u0026#xfe0f; :heavy_multiplication_x: \u0026#x2795; :heavy_plus_sign: \u0026#x2796; :heavy_minus_sign: \u0026#x2797; :heavy_division_sign: \u0026#x1f4ae; :white_flower: \u0026#x1f4af; :100: \u0026#x2714;\u0026#xfe0f; :heavy_check_mark: \u0026#x2611;\u0026#xfe0f; :ballot_box_with_check: \u0026#x1f518; :radio_button: \u0026#x1f517; :link: \u0026#x27b0; :curly_loop: \u0026#x3030;\u0026#xfe0f; :wavy_dash: \u0026#x303d;\u0026#xfe0f; :part_alternation_mark: \u0026#x1f531; :trident: :black_square: :black_square: :white_square: :white_square: \u0026#x2705; :white_check_mark: \u0026#x1f532; :black_square_button: \u0026#x1f533; :white_square_button: \u0026#x26ab; :black_circle: \u0026#x26aa; :white_circle: \u0026#x1f534; :red_circle: \u0026#x1f535; :large_blue_circle: \u0026#x1f537; :large_blue_diamond: \u0026#x1f536; :large_orange_diamond: \u0026#x1f539; :small_blue_diamond: \u0026#x1f538; :small_orange_diamond: \u0026#x1f53a; :small_red_triangle: \u0026#x1f53b; :small_red_triangle_down: :shipit: :shipit: ","permalink":"http://localhost:1313/emoji_cheating_sheet/","summary":"Complete list of github markdown emoji markup\nPeople :bowtie: :bowtie: \u0026#x1f604; :smile: \u0026#x1f606; :laughing: \u0026#x1f60a; :blush: \u0026#x1f603; :smiley: \u0026#x263a;\u0026#xfe0f; :relaxed: \u0026#x1f60f; :smirk: \u0026#x1f60d; :heart_eyes: \u0026#x1f618; :kissing_heart: \u0026#x1f61a; :kissing_closed_eyes: \u0026#x1f633; :flushed: \u0026#x1f60c; :relieved: \u0026#x1f606; :satisfied: \u0026#x1f601; :grin: \u0026#x1f609; :wink: \u0026#x1f61c; :stuck_out_tongue_winking_eye: \u0026#x1f61d; :stuck_out_tongue_closed_eyes: \u0026#x1f600; :grinning: \u0026#x1f617; :kissing: \u0026#x1f619; :kissing_smiling_eyes: \u0026#x1f61b; :stuck_out_tongue: \u0026#x1f634; :sleeping: \u0026#x1f61f; :worried: \u0026#x1f626; :frowning: \u0026#x1f627; :anguished: \u0026#x1f62e; :open_mouth: \u0026#x1f62c; :grimacing: \u0026#x1f615; :confused: \u0026#x1f62f; :hushed: \u0026#x1f611; :expressionless: \u0026#x1f612; :unamused: \u0026#x1f605; :sweat_smile: \u0026#x1f613; :sweat: \u0026#x1f625; :disappointed_relieved: \u0026#x1f629; :weary: \u0026#x1f614; :pensive: \u0026#x1f61e; :disappointed: \u0026#x1f616; :confounded: \u0026#x1f628; :fearful: \u0026#x1f630; :cold_sweat: \u0026#x1f623; :persevere: \u0026#x1f622; :cry: \u0026#x1f62d; :sob: \u0026#x1f602; :joy: \u0026#x1f632; :astonished: \u0026#x1f631; :scream: :neckbeard: :neckbeard: \u0026#x1f62b; :tired_face: \u0026#x1f620; :angry: \u0026#x1f621; :rage: \u0026#x1f624; :triumph: \u0026#x1f62a; :sleepy: \u0026#x1f60b; :yum: \u0026#x1f637; :mask: \u0026#x1f60e; :sunglasses: \u0026#x1f635; :dizzy_face: \u0026#x1f47f; :imp: \u0026#x1f608; :smiling_imp: \u0026#x1f610; :neutral_face: \u0026#x1f636; :no_mouth: \u0026#x1f607; :innocent: \u0026#x1f47d; :alien: \u0026#x1f49b; :yellow_heart: \u0026#x1f499; :blue_heart: \u0026#x1f49c; :purple_heart: \u0026#x2764;\u0026#xfe0f; :heart: \u0026#x1f49a; :green_heart: \u0026#x1f494; :broken_heart: \u0026#x1f493; :heartbeat: \u0026#x1f497; :heartpulse: \u0026#x1f495; :two_hearts: \u0026#x1f49e; :revolving_hearts: \u0026#x1f498; :cupid: \u0026#x1f496; :sparkling_heart: \u0026#x2728; :sparkles: \u0026#x2b50; :star: \u0026#x1f31f; :star2: \u0026#x1f4ab; :dizzy: \u0026#x1f4a5; :boom: \u0026#x1f4a5; :collision: \u0026#x1f4a2; :anger: \u0026#x2757; :exclamation: \u0026#x2753; :question: \u0026#x2755; :grey_exclamation: \u0026#x2754; :grey_question: \u0026#x1f4a4; :zzz: \u0026#x1f4a8; :dash: \u0026#x1f4a6; :sweat_drops: \u0026#x1f3b6; :notes: \u0026#x1f3b5; :musical_note: \u0026#x1f525; :fire: \u0026#x1f4a9; :hankey: \u0026#x1f4a9; :poop: \u0026#x1f4a9; :shit: \u0026#x1f44d; :+1: \u0026#x1f44d; :thumbsup: \u0026#x1f44e; :-1: \u0026#x1f44e; :thumbsdown: \u0026#x1f44c; :ok_hand: \u0026#x1f44a; :punch: \u0026#x1f44a; :facepunch: \u0026#x270a; :fist: \u0026#x270c;\u0026#xfe0f; :v: \u0026#x1f44b; :wave: \u0026#x270b; :hand: \u0026#x270b; :raised_hand: \u0026#x1f450; :open_hands: \u0026#x261d;\u0026#xfe0f; :point_up: \u0026#x1f447; :point_down: \u0026#x1f448; :point_left: \u0026#x1f449; :point_right: \u0026#x1f64c; :raised_hands: \u0026#x1f64f; :pray: \u0026#x1f446; :point_up_2: \u0026#x1f44f; :clap: \u0026#x1f4aa; :muscle: \u0026#x1f918; :metal: \u0026#x1f595; :fu: \u0026#x1f6b6; :walking: \u0026#x1f3c3; :runner: \u0026#x1f3c3; :running: \u0026#x1f46b; :couple: \u0026#x1f46a; :family: \u0026#x1f46c; :two_men_holding_hands: \u0026#x1f46d; :two_women_holding_hands: \u0026#x1f483; :dancer: \u0026#x1f46f; :dancers: \u0026#x1f646;\u0026zwj;\u0026#x2640;\u0026#xfe0f; :ok_woman: \u0026#x1f645; :no_good: \u0026#x1f481; :information_desk_person: \u0026#x1f64b; :raising_hand: \u0026#x1f470;\u0026zwj;\u0026#x2640;\u0026#xfe0f; :bride_with_veil: :person_with_pouting_face: :person_with_pouting_face: :person_frowning: :person_frowning: \u0026#x1f647; :bow: \u0026#x1f48f; :couplekiss: \u0026#x1f491; :couple_with_heart: \u0026#x1f486; :massage: \u0026#x1f487; :haircut: \u0026#x1f485; :nail_care: \u0026#x1f466; :boy: \u0026#x1f467; :girl: \u0026#x1f469; :woman: \u0026#x1f468; :man: \u0026#x1f476; :baby: \u0026#x1f475; :older_woman: \u0026#x1f474; :older_man: :person_with_blond_hair: :person_with_blond_hair: \u0026#x1f472; :man_with_gua_pi_mao: \u0026#x1f473;\u0026zwj;\u0026#x2642;\u0026#xfe0f; :man_with_turban: \u0026#x1f477; :construction_worker: \u0026#x1f46e; :cop: \u0026#x1f47c; :angel: \u0026#x1f478; :princess: \u0026#x1f63a; :smiley_cat: \u0026#x1f638; :smile_cat: \u0026#x1f63b; :heart_eyes_cat: \u0026#x1f63d; :kissing_cat: \u0026#x1f63c; :smirk_cat: \u0026#x1f640; :scream_cat: \u0026#x1f63f; :crying_cat_face: \u0026#x1f639; :joy_cat: \u0026#x1f63e; :pouting_cat: \u0026#x1f479; :japanese_ogre: \u0026#x1f47a; :japanese_goblin: \u0026#x1f648; :see_no_evil: \u0026#x1f649; :hear_no_evil: \u0026#x1f64a; :speak_no_evil: \u0026#x1f482;\u0026zwj;\u0026#x2642;\u0026#xfe0f; :guardsman: \u0026#x1f480; :skull: \u0026#x1f43e; :feet: \u0026#x1f444; :lips: \u0026#x1f48b; :kiss: \u0026#x1f4a7; :droplet: \u0026#x1f442; :ear: \u0026#x1f440; :eyes: \u0026#x1f443; :nose: \u0026#x1f445; :tongue: \u0026#x1f48c; :love_letter: \u0026#x1f464; :bust_in_silhouette: \u0026#x1f465; :busts_in_silhouette: \u0026#x1f4ac; :speech_balloon: \u0026#x1f4ad; :thought_balloon: :feelsgood: :feelsgood: :finnadie: :finnadie: :goberserk: :goberserk: :godmode: :godmode: :hurtrealbad: :hurtrealbad: :rage1: :rage1: :rage2: :rage2: :rage3: :rage3: :rage4: :rage4: :suspect: :suspect: :trollface: :trollface: Nature \u0026#x2600;\u0026#xfe0f; :sunny: \u0026#x2614; :umbrella: \u0026#x2601;\u0026#xfe0f; :cloud: \u0026#x2744;\u0026#xfe0f; :snowflake: \u0026#x26c4; :snowman: \u0026#x26a1; :zap: \u0026#x1f300; :cyclone: \u0026#x1f301; :foggy: \u0026#x1f30a; :ocean: \u0026#x1f431; :cat: \u0026#x1f436; :dog: \u0026#x1f42d; :mouse: \u0026#x1f439; :hamster: \u0026#x1f430; :rabbit: \u0026#x1f43a; :wolf: \u0026#x1f438; :frog: \u0026#x1f42f; :tiger: \u0026#x1f428; :koala: \u0026#x1f43b; :bear: \u0026#x1f437; :pig: \u0026#x1f43d; :pig_nose: \u0026#x1f42e; :cow: \u0026#x1f417; :boar: \u0026#x1f435; :monkey_face: \u0026#x1f412; :monkey: \u0026#x1f434; :horse: \u0026#x1f40e; :racehorse: \u0026#x1f42b; :camel: \u0026#x1f411; :sheep: \u0026#x1f418; :elephant: \u0026#x1f43c; :panda_face: \u0026#x1f40d; :snake: \u0026#x1f426; :bird: \u0026#x1f424; :baby_chick: \u0026#x1f425; :hatched_chick: \u0026#x1f423; :hatching_chick: \u0026#x1f414; :chicken: \u0026#x1f427; :penguin: \u0026#x1f422; :turtle: \u0026#x1f41b; :bug: \u0026#x1f41d; :honeybee: \u0026#x1f41c; :ant: \u0026#x1fab2; :beetle: \u0026#x1f40c; :snail: \u0026#x1f419; :octopus: \u0026#x1f420; :tropical_fish: \u0026#x1f41f; :fish: \u0026#x1f433; :whale: \u0026#x1f40b; :whale2: \u0026#x1f42c; :dolphin: \u0026#x1f404; :cow2: \u0026#x1f40f; :ram: \u0026#x1f400; :rat: \u0026#x1f403; :water_buffalo: \u0026#x1f405; :tiger2: \u0026#x1f407; :rabbit2: \u0026#x1f409; :dragon: \u0026#x1f410; :goat: \u0026#x1f413; :rooster: \u0026#x1f415; :dog2: \u0026#x1f416; :pig2: \u0026#x1f401; :mouse2: \u0026#x1f402; :ox: \u0026#x1f432; :dragon_face: \u0026#x1f421; :blowfish: \u0026#x1f40a; :crocodile: \u0026#x1f42a; :dromedary_camel: \u0026#x1f406; :leopard: \u0026#x1f408; :cat2: \u0026#x1f429; :poodle: \u0026#x1f43e; :paw_prints: \u0026#x1f490; :bouquet: \u0026#x1f338; :cherry_blossom: \u0026#x1f337; :tulip: \u0026#x1f340; :four_leaf_clover: \u0026#x1f339; :rose: \u0026#x1f33b; :sunflower: \u0026#x1f33a; :hibiscus: \u0026#x1f341; :maple_leaf: \u0026#x1f343; :leaves: \u0026#x1f342; :fallen_leaf: \u0026#x1f33f; :herb: \u0026#x1f344; :mushroom: \u0026#x1f335; :cactus: \u0026#x1f334; :palm_tree: \u0026#x1f332; :evergreen_tree: \u0026#x1f333; :deciduous_tree: \u0026#x1f330; :chestnut: \u0026#x1f331; :seedling: \u0026#x1f33c; :blossom: \u0026#x1f33e; :ear_of_rice: \u0026#x1f41a; :shell: \u0026#x1f310; :globe_with_meridians: \u0026#x1f31e; :sun_with_face: \u0026#x1f31d; :full_moon_with_face: \u0026#x1f31a; :new_moon_with_face: \u0026#x1f311; :new_moon: \u0026#x1f312; :waxing_crescent_moon: \u0026#x1f313; :first_quarter_moon: \u0026#x1f314; :waxing_gibbous_moon: \u0026#x1f315; :full_moon: \u0026#x1f316; :waning_gibbous_moon: \u0026#x1f317; :last_quarter_moon: \u0026#x1f318; :waning_crescent_moon: \u0026#x1f31c; :last_quarter_moon_with_face: \u0026#x1f31b; :first_quarter_moon_with_face: \u0026#x1f314; :moon: \u0026#x1f30d; :earth_africa: \u0026#x1f30e; :earth_americas: \u0026#x1f30f; :earth_asia: \u0026#x1f30b; :volcano: \u0026#x1f30c; :milky_way: \u0026#x26c5; :partly_sunny: :octocat: :octocat: :squirrel: :squirrel: Objects \u0026#x1f38d; :bamboo: \u0026#x1f49d; :gift_heart: \u0026#x1f38e; :dolls: \u0026#x1f392; :school_satchel: \u0026#x1f393; :mortar_board: \u0026#x1f38f; :flags: \u0026#x1f386; :fireworks: \u0026#x1f387; :sparkler: \u0026#x1f390; :wind_chime: \u0026#x1f391; :rice_scene: \u0026#x1f383; :jack_o_lantern: \u0026#x1f47b; :ghost: \u0026#x1f385; :santa: \u0026#x1f384; :christmas_tree: \u0026#x1f381; :gift: \u0026#x1f514; :bell: \u0026#x1f515; :no_bell: \u0026#x1f38b; :tanabata_tree: \u0026#x1f389; :tada: \u0026#x1f38a; :confetti_ball: \u0026#x1f388; :balloon: \u0026#x1f52e; :crystal_ball: \u0026#x1f4bf; :cd: \u0026#x1f4c0; :dvd: \u0026#x1f4be; :floppy_disk: \u0026#x1f4f7; :camera: \u0026#x1f4f9; :video_camera: \u0026#x1f3a5; :movie_camera: \u0026#x1f4bb; :computer: \u0026#x1f4fa; :tv: \u0026#x1f4f1; :iphone: \u0026#x260e;\u0026#xfe0f; :phone: \u0026#x260e;\u0026#xfe0f; :telephone: \u0026#x1f4de; :telephone_receiver: \u0026#x1f4df; :pager: \u0026#x1f4e0; :fax: \u0026#x1f4bd; :minidisc: \u0026#x1f4fc; :vhs: \u0026#x1f509; :sound: \u0026#x1f508; :speaker: \u0026#x1f507; :mute: \u0026#x1f4e2; :loudspeaker: \u0026#x1f4e3; :mega: \u0026#x231b; :hourglass: \u0026#x23f3; :hourglass_flowing_sand: \u0026#x23f0; :alarm_clock: \u0026#x231a; :watch: \u0026#x1f4fb; :radio: \u0026#x1f4e1; :satellite: \u0026#x27bf; :loop: \u0026#x1f50d; :mag: \u0026#x1f50e; :mag_right: \u0026#x1f513; :unlock: \u0026#x1f512; :lock: \u0026#x1f50f; :lock_with_ink_pen: \u0026#x1f510; :closed_lock_with_key: \u0026#x1f511; :key: \u0026#x1f4a1; :bulb: \u0026#x1f526; :flashlight: \u0026#x1f506; :high_brightness: \u0026#x1f505; :low_brightness: \u0026#x1f50c; :electric_plug: \u0026#x1f50b; :battery: \u0026#x1f4f2; :calling: \u0026#x1f4e7; :email: \u0026#x1f4eb; :mailbox: \u0026#x1f4ee; :postbox: \u0026#x1f6c0; :bath: \u0026#x1f6c1; :bathtub: \u0026#x1f6bf; :shower: \u0026#x1f6bd; :toilet: \u0026#x1f527; :wrench: \u0026#x1f529; :nut_and_bolt: \u0026#x1f528; :hammer: \u0026#x1f4ba; :seat: \u0026#x1f4b0; :moneybag: \u0026#x1f4b4; :yen: \u0026#x1f4b5; :dollar: \u0026#x1f4b7; :pound: \u0026#x1f4b6; :euro: \u0026#x1f4b3; :credit_card: \u0026#x1f4b8; :money_with_wings: \u0026#x1f4e7; :e-mail: \u0026#x1f4e5; :inbox_tray: \u0026#x1f4e4; :outbox_tray: \u0026#x2709;\u0026#xfe0f; :envelope: \u0026#x1f4e8; :incoming_envelope: \u0026#x1f4ef; :postal_horn: \u0026#x1f4ea; :mailbox_closed: \u0026#x1f4ec; :mailbox_with_mail: \u0026#x1f4ed; :mailbox_with_no_mail: \u0026#x1f6aa; :door: \u0026#x1f6ac; :smoking: \u0026#x1f4a3; :bomb: \u0026#x1f52b; :gun: \u0026#x1f52a; :hocho: \u0026#x1f48a; :pill: \u0026#x1f489; :syringe: \u0026#x1f4c4; :page_facing_up: \u0026#x1f4c3; :page_with_curl: \u0026#x1f4d1; :bookmark_tabs: \u0026#x1f4ca; :bar_chart: \u0026#x1f4c8; :chart_with_upwards_trend: \u0026#x1f4c9; :chart_with_downwards_trend: \u0026#x1f4dc; :scroll: \u0026#x1f4cb; :clipboard: \u0026#x1f4c6; :calendar: \u0026#x1f4c5; :date: \u0026#x1f4c7; :card_index: \u0026#x1f4c1; :file_folder: \u0026#x1f4c2; :open_file_folder: \u0026#x2702;\u0026#xfe0f; :scissors: \u0026#x1f4cc; :pushpin: \u0026#x1f4ce; :paperclip: \u0026#x2712;\u0026#xfe0f; :black_nib: \u0026#x270f;\u0026#xfe0f; :pencil2: \u0026#x1f4cf; :straight_ruler: \u0026#x1f4d0; :triangular_ruler: \u0026#x1f4d5; :closed_book: \u0026#x1f4d7; :green_book: \u0026#x1f4d8; :blue_book: \u0026#x1f4d9; :orange_book: \u0026#x1f4d3; :notebook: \u0026#x1f4d4; :notebook_with_decorative_cover: \u0026#x1f4d2; :ledger: \u0026#x1f4da; :books: \u0026#x1f516; :bookmark: \u0026#x1f4db; :name_badge: \u0026#x1f52c; :microscope: \u0026#x1f52d; :telescope: \u0026#x1f4f0; :newspaper: \u0026#x1f3c8; :football: \u0026#x1f3c0; :basketball: \u0026#x26bd; :soccer: \u0026#x26be; :baseball: \u0026#x1f3be; :tennis: \u0026#x1f3b1; :8ball: \u0026#x1f3c9; :rugby_football: \u0026#x1f3b3; :bowling: \u0026#x26f3; :golf: \u0026#x1f6b5; :mountain_bicyclist: \u0026#x1f6b4; :bicyclist: \u0026#x1f3c7; :horse_racing: \u0026#x1f3c2; :snowboarder: \u0026#x1f3ca; :swimmer: \u0026#x1f3c4; :surfer: \u0026#x1f3bf; :ski: \u0026#x2660;\u0026#xfe0f; :spades: \u0026#x2665;\u0026#xfe0f; :hearts: \u0026#x2663;\u0026#xfe0f; :clubs: \u0026#x2666;\u0026#xfe0f; :diamonds: \u0026#x1f48e; :gem: \u0026#x1f48d; :ring: \u0026#x1f3c6; :trophy: \u0026#x1f3bc; :musical_score: \u0026#x1f3b9; :musical_keyboard: \u0026#x1f3bb; :violin: \u0026#x1f47e; :space_invader: \u0026#x1f3ae; :video_game: \u0026#x1f0cf; :black_joker: \u0026#x1f3b4; :flower_playing_cards: \u0026#x1f3b2; :game_die: \u0026#x1f3af; :dart: \u0026#x1f004; :mahjong: \u0026#x1f3ac; :clapper: \u0026#x1f4dd; :memo: \u0026#x1f4dd; :pencil: \u0026#x1f4d6; :book: \u0026#x1f3a8; :art: \u0026#x1f3a4; :microphone: \u0026#x1f3a7; :headphones: \u0026#x1f3ba; :trumpet: \u0026#x1f3b7; :saxophone: \u0026#x1f3b8; :guitar: \u0026#x1f45e; :shoe: \u0026#x1f461; :sandal: \u0026#x1f460; :high_heel: \u0026#x1f484; :lipstick: \u0026#x1f462; :boot: \u0026#x1f455; :shirt: \u0026#x1f455; :tshirt: \u0026#x1f454; :necktie: \u0026#x1f45a; :womans_clothes: \u0026#x1f457; :dress: \u0026#x1f3bd; :running_shirt_with_sash: \u0026#x1f456; :jeans: \u0026#x1f458; :kimono: \u0026#x1f459; :bikini: \u0026#x1f380; :ribbon: \u0026#x1f3a9; :tophat: \u0026#x1f451; :crown: \u0026#x1f452; :womans_hat: \u0026#x1f45e; :mans_shoe: \u0026#x1f302; :closed_umbrella: \u0026#x1f4bc; :briefcase: \u0026#x1f45c; :handbag: \u0026#x1f45d; :pouch: \u0026#x1f45b; :purse: \u0026#x1f453; :eyeglasses: \u0026#x1f3a3; :fishing_pole_and_fish: \u0026#x2615; :coffee: \u0026#x1f375; :tea: \u0026#x1f376; :sake: \u0026#x1f37c; :baby_bottle: \u0026#x1f37a; :beer: \u0026#x1f37b; :beers: \u0026#x1f378; :cocktail: \u0026#x1f379; :tropical_drink: \u0026#x1f377; :wine_glass: \u0026#x1f374; :fork_and_knife: \u0026#x1f355; :pizza: \u0026#x1f354; :hamburger: \u0026#x1f35f; :fries: \u0026#x1f357; :poultry_leg: \u0026#x1f356; :meat_on_bone: \u0026#x1f35d; :spaghetti: \u0026#x1f35b; :curry: \u0026#x1f364; :fried_shrimp: \u0026#x1f371; :bento: \u0026#x1f363; :sushi: \u0026#x1f365; :fish_cake: \u0026#x1f359; :rice_ball: \u0026#x1f358; :rice_cracker: \u0026#x1f35a; :rice: \u0026#x1f35c; :ramen: \u0026#x1f372; :stew: \u0026#x1f362; :oden: \u0026#x1f361; :dango: \u0026#x1f95a; :egg: \u0026#x1f35e; :bread: \u0026#x1f369; :doughnut: \u0026#x1f36e; :custard: \u0026#x1f366; :icecream: \u0026#x1f368; :ice_cream: \u0026#x1f367; :shaved_ice: \u0026#x1f382; :birthday: \u0026#x1f370; :cake: \u0026#x1f36a; :cookie: \u0026#x1f36b; :chocolate_bar: \u0026#x1f36c; :candy: \u0026#x1f36d; :lollipop: \u0026#x1f36f; :honey_pot: \u0026#x1f34e; :apple: \u0026#x1f34f; :green_apple: \u0026#x1f34a; :tangerine: \u0026#x1f34b; :lemon: \u0026#x1f352; :cherries: \u0026#x1f347; :grapes: \u0026#x1f349; :watermelon: \u0026#x1f353; :strawberry: \u0026#x1f351; :peach: \u0026#x1f348; :melon: \u0026#x1f34c; :banana: \u0026#x1f350; :pear: \u0026#x1f34d; :pineapple: \u0026#x1f360; :sweet_potato: \u0026#x1f346; :eggplant: \u0026#x1f345; :tomato: \u0026#x1f33d; :corn: Places \u0026#x1f3e0; :house: \u0026#x1f3e1; :house_with_garden: \u0026#x1f3eb; :school: \u0026#x1f3e2; :office: \u0026#x1f3e3; :post_office: \u0026#x1f3e5; :hospital: \u0026#x1f3e6; :bank: \u0026#x1f3ea; :convenience_store: \u0026#x1f3e9; :love_hotel: \u0026#x1f3e8; :hotel: \u0026#x1f492; :wedding: \u0026#x26ea; :church: \u0026#x1f3ec; :department_store: \u0026#x1f3e4; :european_post_office: \u0026#x1f307; :city_sunrise: \u0026#x1f306; :city_sunset: \u0026#x1f3ef; :japanese_castle: \u0026#x1f3f0; :european_castle: \u0026#x26fa; :tent: \u0026#x1f3ed; :factory: \u0026#x1f5fc; :tokyo_tower: \u0026#x1f5fe; :japan: \u0026#x1f5fb; :mount_fuji: \u0026#x1f304; :sunrise_over_mountains: \u0026#x1f305; :sunrise: \u0026#x1f320; :stars: \u0026#x1f5fd; :statue_of_liberty: \u0026#x1f309; :bridge_at_night: \u0026#x1f3a0; :carousel_horse: \u0026#x1f308; :rainbow: \u0026#x1f3a1; :ferris_wheel: \u0026#x26f2; :fountain: \u0026#x1f3a2; :roller_coaster: \u0026#x1f6a2; :ship: \u0026#x1f6a4; :speedboat: \u0026#x26f5; :boat: \u0026#x26f5; :sailboat: \u0026#x1f6a3; :rowboat: \u0026#x2693; :anchor: \u0026#x1f680; :rocket: \u0026#x2708;\u0026#xfe0f; :airplane: \u0026#x1f681; :helicopter: \u0026#x1f682; :steam_locomotive: \u0026#x1f68a; :tram: \u0026#x1f69e; :mountain_railway: \u0026#x1f6b2; :bike: \u0026#x1f6a1; :aerial_tramway: \u0026#x1f69f; :suspension_railway: \u0026#x1f6a0; :mountain_cableway: \u0026#x1f69c; :tractor: \u0026#x1f699; :blue_car: \u0026#x1f698; :oncoming_automobile: \u0026#x1f697; :car: \u0026#x1f697; :red_car: \u0026#x1f695; :taxi: \u0026#x1f696; :oncoming_taxi: \u0026#x1f69b; :articulated_lorry: \u0026#x1f68c; :bus: \u0026#x1f68d; :oncoming_bus: \u0026#x1f6a8; :rotating_light: \u0026#x1f693; :police_car: \u0026#x1f694; :oncoming_police_car: \u0026#x1f692; :fire_engine: \u0026#x1f691; :ambulance: \u0026#x1f690; :minibus: \u0026#x1f69a; :truck: \u0026#x1f68b; :train: \u0026#x1f689; :station: \u0026#x1f686; :train2: \u0026#x1f685; :bullettrain_front: \u0026#x1f684; :bullettrain_side: \u0026#x1f688; :light_rail: \u0026#x1f69d; :monorail: \u0026#x1f683; :railway_car: \u0026#x1f68e; :trolleybus: \u0026#x1f3ab; :ticket: \u0026#x26fd; :fuelpump: \u0026#x1f6a6; :vertical_traffic_light: \u0026#x1f6a5; :traffic_light: \u0026#x26a0;\u0026#xfe0f; :warning: \u0026#x1f6a7; :construction: \u0026#x1f530; :beginner: \u0026#x1f3e7; :atm: \u0026#x1f3b0; :slot_machine: \u0026#x1f68f; :busstop: \u0026#x1f488; :barber: \u0026#x2668;\u0026#xfe0f; :hotsprings: \u0026#x1f3c1; :checkered_flag: \u0026#x1f38c; :crossed_flags: \u0026#x1f3ee; :izakaya_lantern: \u0026#x1f5ff; :moyai: \u0026#x1f3aa; :circus_tent: \u0026#x1f3ad; :performing_arts: \u0026#x1f4cd; :round_pushpin: \u0026#x1f6a9; :triangular_flag_on_post: \u0026#x1f1ef;\u0026#x1f1f5; :jp: \u0026#x1f1f0;\u0026#x1f1f7; :kr: \u0026#x1f1e8;\u0026#x1f1f3; :cn: \u0026#x1f1fa;\u0026#x1f1f8; :us: \u0026#x1f1eb;\u0026#x1f1f7; :fr: \u0026#x1f1ea;\u0026#x1f1f8; :es: \u0026#x1f1ee;\u0026#x1f1f9; :it: \u0026#x1f1f7;\u0026#x1f1fa; :ru: \u0026#x1f1ec;\u0026#x1f1e7; :gb: \u0026#x1f1ec;\u0026#x1f1e7; :uk: \u0026#x1f1e9;\u0026#x1f1ea; :de: Symbols \u0026#x31;\u0026#xfe0f;\u0026#x20e3; :one: \u0026#x32;\u0026#xfe0f;\u0026#x20e3; :two: \u0026#x33;\u0026#xfe0f;\u0026#x20e3; :three: \u0026#x34;\u0026#xfe0f;\u0026#x20e3; :four: \u0026#x35;\u0026#xfe0f;\u0026#x20e3; :five: \u0026#x36;\u0026#xfe0f;\u0026#x20e3; :six: \u0026#x37;\u0026#xfe0f;\u0026#x20e3; :seven: \u0026#x38;\u0026#xfe0f;\u0026#x20e3; :eight: \u0026#x39;\u0026#xfe0f;\u0026#x20e3; :nine: \u0026#x1f51f; :keycap_ten: \u0026#x1f522; :1234: \u0026#x30;\u0026#xfe0f;\u0026#x20e3; :zero: \u0026#x23;\u0026#xfe0f;\u0026#x20e3; :hash: \u0026#x1f523; :symbols: \u0026#x25c0;\u0026#xfe0f; :arrow_backward: \u0026#x2b07;\u0026#xfe0f; :arrow_down: \u0026#x25b6;\u0026#xfe0f; :arrow_forward: \u0026#x2b05;\u0026#xfe0f; :arrow_left: \u0026#x1f520; :capital_abcd: \u0026#x1f521; :abcd: \u0026#x1f524; :abc: \u0026#x2199;\u0026#xfe0f; :arrow_lower_left: \u0026#x2198;\u0026#xfe0f; :arrow_lower_right: \u0026#x27a1;\u0026#xfe0f; :arrow_right: \u0026#x2b06;\u0026#xfe0f; :arrow_up: \u0026#x2196;\u0026#xfe0f; :arrow_upper_left: \u0026#x2197;\u0026#xfe0f; :arrow_upper_right: \u0026#x23ec; :arrow_double_down: \u0026#x23eb; :arrow_double_up: \u0026#x1f53d; :arrow_down_small: \u0026#x2935;\u0026#xfe0f; :arrow_heading_down: \u0026#x2934;\u0026#xfe0f; :arrow_heading_up: \u0026#x21a9;\u0026#xfe0f; :leftwards_arrow_with_hook: \u0026#x21aa;\u0026#xfe0f; :arrow_right_hook: \u0026#x2194;\u0026#xfe0f; :left_right_arrow: \u0026#x2195;\u0026#xfe0f; :arrow_up_down: \u0026#x1f53c; :arrow_up_small: \u0026#x1f503; :arrows_clockwise: \u0026#x1f504; :arrows_counterclockwise: \u0026#x23ea; :rewind: \u0026#x23e9; :fast_forward: \u0026#x2139;\u0026#xfe0f; :information_source: \u0026#x1f197; :ok: \u0026#x1f500; :twisted_rightwards_arrows: \u0026#x1f501; :repeat: \u0026#x1f502; :repeat_one: \u0026#x1f195; :new: \u0026#x1f51d; :top: \u0026#x1f199; :up: \u0026#x1f192; :cool: \u0026#x1f193; :free: \u0026#x1f196; :ng: \u0026#x1f3a6; :cinema: \u0026#x1f201; :koko: \u0026#x1f4f6; :signal_strength: \u0026#x1f239; :u5272: \u0026#x1f234; :u5408: \u0026#x1f23a; :u55b6: \u0026#x1f22f; :u6307: \u0026#x1f237;\u0026#xfe0f; :u6708: \u0026#x1f236; :u6709: \u0026#x1f235; :u6e80: \u0026#x1f21a; :u7121: \u0026#x1f238; :u7533: \u0026#x1f233; :u7a7a: \u0026#x1f232; :u7981: \u0026#x1f202;\u0026#xfe0f; :sa: \u0026#x1f6bb; :restroom: \u0026#x1f6b9; :mens: \u0026#x1f6ba; :womens: \u0026#x1f6bc; :baby_symbol: \u0026#x1f6ad; :no_smoking: \u0026#x1f17f;\u0026#xfe0f; :parking: \u0026#x267f; :wheelchair: \u0026#x1f687; :metro: \u0026#x1f6c4; :baggage_claim: \u0026#x1f251; :accept: \u0026#x1f6be; :wc: \u0026#x1f6b0; :potable_water: \u0026#x1f6ae; :put_litter_in_its_place: \u0026#x3299;\u0026#xfe0f; :secret: \u0026#x3297;\u0026#xfe0f; :congratulations: \u0026#x24c2;\u0026#xfe0f; :m: \u0026#x1f6c2; :passport_control: \u0026#x1f6c5; :left_luggage: \u0026#x1f6c3; :customs: \u0026#x1f250; :ideograph_advantage: \u0026#x1f191; :cl: \u0026#x1f198; :sos: \u0026#x1f194; :id: \u0026#x1f6ab; :no_entry_sign: \u0026#x1f51e; :underage: \u0026#x1f4f5; :no_mobile_phones: \u0026#x1f6af; :do_not_litter: \u0026#x1f6b1; :non-potable_water: \u0026#x1f6b3; :no_bicycles: \u0026#x1f6b7; :no_pedestrians: \u0026#x1f6b8; :children_crossing: \u0026#x26d4; :no_entry: \u0026#x2733;\u0026#xfe0f; :eight_spoked_asterisk: \u0026#x2734;\u0026#xfe0f; :eight_pointed_black_star: \u0026#x1f49f; :heart_decoration: \u0026#x1f19a; :vs: \u0026#x1f4f3; :vibration_mode: \u0026#x1f4f4; :mobile_phone_off: \u0026#x1f4b9; :chart: \u0026#x1f4b1; :currency_exchange: \u0026#x2648; :aries: \u0026#x2649; :taurus: \u0026#x264a; :gemini: \u0026#x264b; :cancer: \u0026#x264c; :leo: \u0026#x264d; :virgo: \u0026#x264e; :libra: \u0026#x264f; :scorpius: \u0026#x2650; :sagittarius: \u0026#x2651; :capricorn: \u0026#x2652; :aquarius: \u0026#x2653; :pisces: \u0026#x26ce; :ophiuchus: \u0026#x1f52f; :six_pointed_star: \u0026#x274e; :negative_squared_cross_mark: \u0026#x1f170;\u0026#xfe0f; :a: \u0026#x1f171;\u0026#xfe0f; :b: \u0026#x1f18e; :ab: \u0026#x1f17e;\u0026#xfe0f; :o2: \u0026#x1f4a0; :diamond_shape_with_a_dot_inside: \u0026#x267b;\u0026#xfe0f; :recycle: \u0026#x1f51a; :end: \u0026#x1f51b; :on: \u0026#x1f51c; :soon: \u0026#x1f550; :clock1: \u0026#x1f55c; :clock130: \u0026#x1f559; :clock10: \u0026#x1f565; :clock1030: \u0026#x1f55a; :clock11: \u0026#x1f566; :clock1130: \u0026#x1f55b; :clock12: \u0026#x1f567; :clock1230: \u0026#x1f551; :clock2: \u0026#x1f55d; :clock230: \u0026#x1f552; :clock3: \u0026#x1f55e; :clock330: \u0026#x1f553; :clock4: \u0026#x1f55f; :clock430: \u0026#x1f554; :clock5: \u0026#x1f560; :clock530: \u0026#x1f555; :clock6: \u0026#x1f561; :clock630: \u0026#x1f556; :clock7: \u0026#x1f562; :clock730: \u0026#x1f557; :clock8: \u0026#x1f563; :clock830: \u0026#x1f558; :clock9: \u0026#x1f564; :clock930: \u0026#x1f4b2; :heavy_dollar_sign: \u0026#xa9;\u0026#xfe0f; :copyright: \u0026#xae;\u0026#xfe0f; :registered: \u0026#x2122;\u0026#xfe0f; :tm: \u0026#x274c; :x: \u0026#x2757; :heavy_exclamation_mark: \u0026#x203c;\u0026#xfe0f; :bangbang: \u0026#x2049;\u0026#xfe0f; :interrobang: \u0026#x2b55; :o: \u0026#x2716;\u0026#xfe0f; :heavy_multiplication_x: \u0026#x2795; :heavy_plus_sign: \u0026#x2796; :heavy_minus_sign: \u0026#x2797; :heavy_division_sign: \u0026#x1f4ae; :white_flower: \u0026#x1f4af; :100: \u0026#x2714;\u0026#xfe0f; :heavy_check_mark: \u0026#x2611;\u0026#xfe0f; :ballot_box_with_check: \u0026#x1f518; :radio_button: \u0026#x1f517; :link: \u0026#x27b0; :curly_loop: \u0026#x3030;\u0026#xfe0f; :wavy_dash: \u0026#x303d;\u0026#xfe0f; :part_alternation_mark: \u0026#x1f531; :trident: :black_square: :black_square: :white_square: :white_square: \u0026#x2705; :white_check_mark: \u0026#x1f532; :black_square_button: \u0026#x1f533; :white_square_button: \u0026#x26ab; :black_circle: \u0026#x26aa; :white_circle: \u0026#x1f534; :red_circle: \u0026#x1f535; :large_blue_circle: \u0026#x1f537; :large_blue_diamond: \u0026#x1f536; :large_orange_diamond: \u0026#x1f539; :small_blue_diamond: \u0026#x1f538; :small_orange_diamond: \u0026#x1f53a; :small_red_triangle: \u0026#x1f53b; :small_red_triangle_down: :shipit: :shipit: ","title":""},{"content":"\u0026#x1f3a8; 收藏 earth : : 风、气象、海洋状况的全球地图\rFont Awesome\rTake the hassle out of icons in your website.\rCOL | The Catalogue of Life\rThe most complete authoritative list of the world\u0026#39;s species.\r2021 Map of the Complexity Sciences\r麦田艺术\rArt is a way of survival.\rUSGS bee photographs\rSam Droege from USGS Bee Inventory and Monitoring Lab.\r\u0026#x1f6eb; 朋友们 Idealclover\rStay simple, stay naive.\rFinisky Garden\rEasy doesn\u0026#39;t enter into grown-up life.\r荷戟独彷徨\r爱光学，爱生活，爱创造\r频率\r风卷过的起点\r随遇而安\r生活吐槽 \u0026amp; 学习记录\r天空 Blond\r无名小站。\rAniurm\r人生如逆旅 我亦是行人\rTsum\r青青子衿，悠悠我心\rOddyti\r是谁来自山川湖海，却囿于昼夜厨房与爱。\rpyrwalker\r我深怕自己本非美玉，故而不敢加以刻苦琢磨\rPonyboy\rStay alive\r如需添加友链，请发送邮件至sheng_dong@foxmail.com。\n\u0026#x1f3d9;\u0026#xfe0f; 组 织 (Former) SASE Lab\r(原)西湖大学可持续农业科学与技术实验室\r浙江大学学生E志者协会\rE我世界，志我人生\r十年之约\r一个人的寂寞，一群人的狂欢。\r","permalink":"http://localhost:1313/links/","summary":"links","title":"Links"},{"content":" The graph shows my research outputs (including papers, presentations, etc.) and their connections. Node sizes represent relative importance of works. First author and publication year are displayed at the nodes. External links to outcomes are provided if possible. Arrows represent the sequential dependence between outcomes.\n","permalink":"http://localhost:1313/profile/net/","summary":"The graph shows my research outputs (including papers, presentations, etc.) and their connections. Node sizes represent relative importance of works. First author and publication year are displayed at the nodes. External links to outcomes are provided if possible. Arrows represent the sequential dependence between outcomes.","title":"Outputs in a network"}]