ortools-线性规划求解高阶使用 - 文档翻译

以下翻译并不逐字翻译.

Advanced LP Solving

Despite the maturity of LP technology, some use cases require more advanced techniques. For example, a number of different LP algorithms and implementations are available, each of which has strengths and weaknesses. Furthermore, numerical instability can cause solvers to slow down or fail to solve certain models.

尽管线性规划求解器的技术已经非常成熟, 但是在一些案例中依然需要一些更为先进的技术. 例如, 在大量的不同线性规划的求解算法和其实现中, 不同的算法之间各有优劣. 此外, 数值的不稳定可能导致模型的求解非常缓慢或是无法求解.

This guide introduces the concepts and provides examples to help you get the most performance and reliability out of LP solvers.

以下将介绍相关的案列, 以充分了解各个线性求解算法的性能和可靠性

阅读全文 »

Excel规划求解加载项

img

一. 前言

运用" 规划求解" 定义并求解问题 - Microsoft 支持

打开excel => 开发项 => 勾选确定

正常情况下在数据标签下, 会出现一个"分析"的组.

img

由于excel中集成的规划求解模块来自于:

" 规划求解" 程序代码的部分为 Frontline Systems, Inc 公司 1990-2009 年版权所有, 部分为 Optimal Methods, Inc 公司 1989 年版权所有.

Excel Solver - Using Solver from VBA | solver

阅读全文 »

Python - 规划问题求解器概览

img

(图: 装箱问题图示)

一. 前言

【学界】运筹学数学规划|离散优化求解器大搜罗 - 知乎 (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 Google 活跃 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提供的也是机器翻译, 未经人工修正的中文文档).

阅读全文 »

一个Tampermonkey脚本的诞生

一. 前言

以下是Kyouichirou/BiliBili_Optimizer: enjoy and control bilibili (github.com), 这个脚本的写作的一些想法和总结.

吸取了这个项目Kyouichirou/Zhihu_Optimizer: 知乎优化器 (github.com)的教训, 由于在写这个脚本的时候并没有确定需要实现什么功能, 前期的代码规划并不明确, 随着大量功能不断地被添加上去, 导致代码变得极度臃肿和难以阅读(由于当时对元编程的理解不够深刻), 难以维护.

由于在tampermonkey上, 无法将直接将代码相对整合成相对独立的模块, 为了避免后期代码的增长导致难以维护的问题, 预先对代码进行严格的管控,

img

遵循以上的基本逻辑.

阅读全文 »

VBA的未来

img

"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 JavaScript宏简单体验

一. 前言

使用的是wps专业版本:

百度盘链接: https://pan.baidu.com/s/1gfZjIe1WUmWin1tQ52wMrQ ; 提取码: avqg

激活码: (仅作测试使用, 请勿用于商业用途)

694BF-YUDBG-EAR69-BPRGB-ATQXH

1.1 关于JavaScript宏

相关详细内容见: WPS 开放平台.

简单来说就是wps在参照vba的基础之上, 使用JavaScript实现的wps独有的宏语言(注意这一点).

WPS宏编辑器集成了一个V8 引擎的 JavaScript 运行时, 支持大部分ES6语法, 因此宏编辑器支持JavaScript 标准内置对象

  • 集成V8引擎
  • 支持ES6 (不支持的内容, 如setTimeout(), fetch等(因为是异步的操作, 都会受到限制)).
阅读全文 »

Tampermonkey进阶指南

一. 前言

img

img

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内容展开, 将对其中内容进行翻译和注释, 以及实际的使用例子.

阅读全文 »