一. 前言
运用" 规划求解" 定义并求解问题 - Microsoft 支持
打开excel
=> 开发项 => 勾选确定
正常情况下在数据标签下, 会出现一个"分析"的组.
由于excel
中集成的规划求解模块来自于:
" 规划求解" 程序代码的部分为 Frontline Systems, Inc 公司 1990-2009 年版权所有, 部分为 Optimal Methods, Inc 公司 1989 年版权所有.
运用" 规划求解" 定义并求解问题 - Microsoft 支持
打开excel
=> 开发项 => 勾选确定
正常情况下在数据标签下, 会出现一个"分析"的组.
由于excel
中集成的规划求解模块来自于:
" 规划求解" 程序代码的部分为 Frontline Systems, Inc 公司 1990-2009 年版权所有, 部分为 Optimal Methods, Inc 公司 1989 年版权所有.
(图: 装箱问题图示)
在【学界】运筹学数学规划|离散优化求解器大搜罗 - 知乎 (zhihu.com)这篇文章中, 作者罗列了当前市面上的大部分主流(付费)的求解器, 缺少对开源(免费)的(python
)库的介绍, 这里做一个补充.
几大扛把子(付费)就不需要多提了, 这里主要看看开源(免费)的几个库, 目前找到的几个start/fork
数量较多, 文档较为完善的库.
库名称 | 是否免费 | fork/star | 协议类型 | 开发者 | 当前活跃/维护状态 | 项目地址 |
---|---|---|---|---|---|---|
pyscipopt | 是 | 236/684 | Apache 2.0 License. | Zuse Institute Berlin | 活跃 | scipopt/PySCIPOpt: Python interface for the SCIP Optimization Suite (github.com) |
copt | 是 | / | / | 已经停止维护 | copt - PyPI | |
ortools | 是 | 2k/9.8k | Apache 2.0 | 活跃 | GitHub - google/or-tools: Google's Operations Research tools | |
cvxpy | 是 | 1k/4.8k | Apache 2.0 | / | 活跃 | GitHub - cvxpy/cvxpy: A Python-embedded modeling language for convex optimization problems. |
pulp | 是 | 382/1.8k | BSD | / | 活跃 | GitHub - coin-or/pulp: A python Linear Programming API |
z3-solver | 是 | 1.4k/9.1k | MIT | Miscrosoft | 活跃 | GitHub - Z3Prover/z3: The Z3 Theorem Prover |
gurobipy | 有限制 | / | 商业软件, 学术授权免费 | / | 活跃 | gurobipy - PyPI |
cplex | 有限制 | / | 社区版, 部分功能开放 | / | 活跃 | cplex - PyPI |
就上述的状态来看, Google
出品的ortools
和微软的z3-solver
得到了较多的关注, 但是z3
针对的问题和其他的库有一点差异.
多数情况下, 除非特别大的模型(如数以万计的变量)或者是一些冷僻模型, 解决问题的核心多卡在数学建模(基础) - 模型转为代码(主体框架)这个过程型(即如何将数学模型转为代码表示的形式, 这看上去没什么难度, 但是极为容易犯错的一环)上, 不用太过于纠结使用哪个库. 至于使用哪个库作为主力, 主要考虑库api
设计的使用难度, 提供文档的友好性(核心部分), 库维护状态. 同时需要看该库的使用用户数量, 问题提交数等, 这些间接反映库质量和维护的状态.
需要注意的是上述(开源)库, 均未有中文文档提供(google的ortools提供的也是机器翻译, 未经人工修正的中文文档).
以下是Kyouichirou/BiliBili_Optimizer: enjoy and control bilibili (github.com), 这个脚本的写作的一些想法和总结.
吸取了这个项目Kyouichirou/Zhihu_Optimizer: 知乎优化器 (github.com)的教训, 由于在写这个脚本的时候并没有确定需要实现什么功能, 前期的代码规划并不明确, 随着大量功能不断地被添加上去, 导致代码变得极度臃肿和难以阅读(由于当时对元编程的理解不够深刻), 难以维护.
由于在tampermonkey
上, 无法将直接将代码相对整合成相对独立的模块, 为了避免后期代码的增长导致难以维护的问题, 预先对代码进行严格的管控,
遵循以上的基本逻辑.
"Visual" 指的是开发图形用户界面 (GUI) 的方法- - 不需编写大量代码去描述界面元素的外观和位置, 而只要把预先建立的对象add到屏幕上的一点即可. "Basic"指的是 BASIC (Beginners All-Purpose Symbolic Instruction Code) 语言, 是一种在计算技术发展历史上应用得最为广泛的语言.
Visual Basic源自于BASIC编程语言. VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统, 可以轻易的使用DAO, RDO, ADO连接数据库, 或者轻松的创建Active X控件, 用于高效生成类型安全和面向对象的应用程序 . 程序员可以轻松的使用VB提供的组件快速建立一个应用程序.
借用现在流行术语, VBA的这些特性是否可以叫: 低代码?
使用的是wps专业版本:
百度盘链接: https://pan.baidu.com/s/1gfZjIe1WUmWin1tQ52wMrQ ; 提取码: avqg
激活码: (仅作测试使用, 请勿用于商业用途)
694BF-YUDBG-EAR69-BPRGB-ATQXH
相关详细内容见: WPS 开放平台.
简单来说就是wps
在参照vba
的基础之上, 使用JavaScript
实现的wps
独有的宏语言(注意这一点).
WPS宏编辑器集成了一个V8 引擎的 JavaScript 运行时, 支持大部分ES6语法, 因此宏编辑器支持JavaScript 标准内置对象
V8
引擎ES6
(不支持的内容, 如setTimeout(), fetch
等(因为是异步的操作, 都会受到限制)).B站页面普遍采用的模式, 主html
带有部分初始化页面的数据, 之后的更多数据采用异步加载的方式实现, 这是一种经典的即保证页面渲染呈现, 同时不影响页面的加载速度的页面模式.
Tampermonkey is one of the most popular browser extension with over 10 million users. It's available for Chrome, Microsoft Edge, Safari, Opera Next, and Firefox.
It allows its users to customize and enhance the functionality of your favorite web pages. Userscripts are small JavaScript programs that can be used to add new features or modify existing ones on web pages. With Tampermonkey, you can easily create, manage, and run these userscripts on any website you visit.
本文以Documentation | Tampermonkey内容展开, 将对其中内容进行翻译和注释, 以及实际的使用例子.
类(class), 这个话题在各种语言中的入门知识中, 是很多懂哥喜欢装神弄鬼的话题, 假如检索类相关的信息, 很容找到以下相关的内容:
- 对象: 对象是类的一个实例, 有状态和行为. 例如, 一条狗是一个对象, 它的状态有: 颜色, 名字, 品种; 行为有: 摇尾巴, 叫, 吃等.
- 类: 类是一个模板, 它描述一类对象的行为和状态.
数组(列表), 字典(集合), 类, 这三者不会因为语言的差异而其重要性会发生变化.
数组, 字典, 操作数据的基础容器.
类, 清晰代码结构的基础.
需要注意的是, 在vba
中只有数组的概念, 没有列表的概念(当然也可以自定义封装一个类来实现列表的功能).
在看vba
的数组前, 先来看看python
和JavaScript
中的数组.
>>> from array import array
>>> a = array('i', [1,2,3,4])
>>> print(a[0])
1
# 不允许混合存储数据
>>> a = array('i', ['a',2,3,4])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: an integer is required (got type str)
>>>
独立博客最麻烦就是图片存储, 第三方的免费图床, 国内的基本没法用(乱删图片, 服务高度不稳定, 随时关站...), 国外的有几个相对稳定的, 但是访问是个问题. Gitee封禁了外链, GitHub访问又是高度不稳定的....
由于路过图床 - 免费图片上传, 专业图片外链, 免费公共图床 (imgse.com)收紧了免费上传图片, 只能将图片转为base64嵌入markdown文档, 但是由于截图不希望过度压缩, 希望保存一份截图的高清版本, 这导致图片文件非常大, 直接嵌入markdown文档, 虽然这种方式可以摆脱网络的依赖, 但是会导致文档非常臃肿.
直接嵌入base64
图片没办法直接使用这种方式实现.

# 在typora上, img_url直接使用base64替换没办法直接显示图片
<img src=""></img>
直接使用img
标签, 也无法显示图片.