<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wangzhenyang2的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wangzhenyang2</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wangzhenyang2]]></copyright><item><title><![CDATA[Kafka笔记 (二) Kafka一些基础的概念与设计]]></title><link>https://blog.youkuaiyun.com/wangzhenyang2/article/details/122776692</link><guid>https://blog.youkuaiyun.com/wangzhenyang2/article/details/122776692</guid><author>wangzhenyang2</author><pubDate>Fri, 11 Mar 2022 13:38:29 +0800</pubDate><description><![CDATA[记录我对Kafka一些基础概念和设计的理解]]></description><category></category></item><item><title><![CDATA[Kafka笔记 (一) 从Kafka的历史聊起]]></title><link>https://blog.youkuaiyun.com/wangzhenyang2/article/details/122726697</link><guid>https://blog.youkuaiyun.com/wangzhenyang2/article/details/122726697</guid><author>wangzhenyang2</author><pubDate>Mon, 31 Jan 2022 18:58:09 +0800</pubDate><description><![CDATA[提到消息中间件，Kafka是我们经常提及的，不过消息中间件的属性只能说是它的基础属性之一，如果你去看官网的简介，会称其为分布式事件流平台，事件流的处理才是它最核心的特点；在我看来，Kafka应该是目前性能最高的开源的事件流平台了，很多开发者可能只是使用了Kafka的Produce和Consume接口来进行消息流的应用，其实它的Connect和Stream API是真正能体现Kafka在流处理上的优势的特性。
Kafka的历史
很多时候优秀的开源项目并不是作者突发奇想地写出来的，而是由实际的业务需求推动后逐步]]></description><category></category></item><item><title><![CDATA[关于博弈论的一点笔记]]></title><link>https://blog.youkuaiyun.com/wangzhenyang2/article/details/116526343</link><guid>https://blog.youkuaiyun.com/wangzhenyang2/article/details/116526343</guid><author>wangzhenyang2</author><pubDate>Fri, 14 May 2021 16:09:51 +0800</pubDate><description><![CDATA[最近稍微了解了一下博弈论的一些基本概念，它本身是运筹学的一个分支，同时在经济学领域也是非常重要的一个科目，小到游戏设计，大到经济政治，很多案例都可以用博弈论的理论进行设计或者解释；博弈论的理论大都非常有意思甚至反直觉，了解博弈论的一些概念后可以帮助我们从更高的维度去看待生活中的一些事情；另一方面博弈论从数学上看其实还是属于优化问题，我们也可以从运筹优化的角度去理解博弈论的一些理论。这篇文章里我就摘录一些博弈论的概念，加上一点我自己的理解，当然作为非专业人士，可能有些理解偏差。
零和博弈
博弈论的英文名是Ga]]></description><category></category></item><item><title><![CDATA[非线性优化问题处理技术(二) Karush–Kuhn–Tucker条件]]></title><link>https://blog.youkuaiyun.com/wangzhenyang2/article/details/116231545</link><guid>https://blog.youkuaiyun.com/wangzhenyang2/article/details/116231545</guid><author>wangzhenyang2</author><pubDate>Sat, 01 May 2021 15:15:20 +0800</pubDate><description><![CDATA[对于只有等式约束的非线性优化问题，拉格朗日定理是可以适用的，但是当存在不等式约束时就不适用了，此时Karush–Kuhn–Tucker(KKT)条件是更为通用的处理技术，拉格朗日定理其实只是KKT条件定理的特殊情况。 KKT条件一开始称为Kuhn–Tucker条件, 因为在1951年Harold W. Kuhn 和 Albert W. Tucker发表了该定理的论文，不过人们之后又发现早在1939年一个名为William Karush的学者就在他的硕士论文中涉及了该理论，所以又把他的名字加入到了该定理的命名]]></description><category></category></item><item><title><![CDATA[非线性优化问题处理技术(一) 拉格朗日乘子]]></title><link>https://blog.youkuaiyun.com/wangzhenyang2/article/details/115199888</link><guid>https://blog.youkuaiyun.com/wangzhenyang2/article/details/115199888</guid><author>wangzhenyang2</author><pubDate>Mon, 19 Apr 2021 15:48:13 +0800</pubDate><description><![CDATA[拉格朗日条件
定义映射f:Rn→Rf:\mathbb{R}^n\rightarrow\mathbb{R}f:Rn→R，优化问题表述为：
maximiex{f(x):x∈U}subject&nbsp;toU={x∈Rn:h1(x)=a1,...,hm(x)=am}
\begin{aligned}
maximie_{\mathtt {x}}\quad&amp; \{f(\mathtt{x}):\mathtt{x}\in U\}\\ 
subject\ to\quad&amp; U=\{\mathtt{x}\in]]></description><category></category></item><item><title><![CDATA[求解分配问题(三) 二分图最小权重匹配]]></title><link>https://blog.youkuaiyun.com/wangzhenyang2/article/details/114987315</link><guid>https://blog.youkuaiyun.com/wangzhenyang2/article/details/114987315</guid><author>wangzhenyang2</author><pubDate>Mon, 22 Mar 2021 13:36:04 +0800</pubDate><description><![CDATA[ddd

]]></description><category></category></item><item><title><![CDATA[求解分配问题(二) 二分图最大匹配算法]]></title><link>https://blog.youkuaiyun.com/wangzhenyang2/article/details/114980546</link><guid>https://blog.youkuaiyun.com/wangzhenyang2/article/details/114980546</guid><author>wangzhenyang2</author><pubDate>Thu, 18 Mar 2021 18:19:15 +0800</pubDate><description><![CDATA[我的前一篇文章介绍了对于分配问题的Kuhn-Munkre算法，该算法其实可以看作是邻接矩阵形式的匈牙利算法，如果更抽象地看这个算法，它可以看成是一个二分图匹配算法的变体算法，具体的说，是二分图最大权重匹配算法。我打算也把二分图最大权重匹配算法也介绍下，不过最大权重匹配算法又是基于最大匹配算法设计的，所以这篇文章先介绍二分图的最大匹配算法
二分图最大匹配问题
分配问题从图论的角度看其实是一个二分图(Bipartite Graph)，就是说图中有两个点集，在各自的点集内的点互相没有连接，两个点集间的点可以连接，]]></description><category></category></item><item><title><![CDATA[求解分配问题(一) Kuhn-Munkre算法]]></title><link>https://blog.youkuaiyun.com/wangzhenyang2/article/details/114933806</link><guid>https://blog.youkuaiyun.com/wangzhenyang2/article/details/114933806</guid><author>wangzhenyang2</author><pubDate>Thu, 18 Mar 2021 15:02:35 +0800</pubDate><description><![CDATA[分配问题(Assignment Problem)很常见，例如给多个开发者安排开发任务，一个开发者只能分配到一个任务，一个任务也只能由一个人完成，不同的人对不同的任务有不同的完成时间，那么如何进行安排使得总的开发时间最短就是一个典型的分配问题。如果说传输问题是一类特殊的线性规划问题(传输问题定义)，那么分配问题则是一类特殊的传输问题，如果我们把传输问题中所有Supplier和Demander的供应量或需求量都降到1，那么这就变成了一个分配问题
既然分配问题属于传输问题，那么Stepping-Stone算法或者]]></description><category></category></item><item><title><![CDATA[求解传输问题(六) 代码实现]]></title><link>https://blog.youkuaiyun.com/wangzhenyang2/article/details/113756092</link><guid>https://blog.youkuaiyun.com/wangzhenyang2/article/details/113756092</guid><author>wangzhenyang2</author><pubDate>Mon, 08 Feb 2021 14:23:20 +0800</pubDate><description><![CDATA[基于前面几篇文章，我用python把TP问题算法实现一下
首先定义TPAlgorithm类，它的构造函数中输入supply、demand和cost参数，可以选择用North-West-Corner或者Minimum-Cell-Cost的初始化算法，用SteppingStone或者MODI的迭代算法；handleUnbalance方法用于在实际计算前进行平衡化处理；
import numpy as np
from NorthWestCorner import NorthWestCorner
from MinC]]></description><category></category></item><item><title><![CDATA[求解传输问题(五) 特殊情况处理]]></title><link>https://blog.youkuaiyun.com/wangzhenyang2/article/details/113753134</link><guid>https://blog.youkuaiyun.com/wangzhenyang2/article/details/113753134</guid><author>wangzhenyang2</author><pubDate>Mon, 08 Feb 2021 14:00:07 +0800</pubDate><description><![CDATA[正如在应用单纯形算法时需要注意处理一些特殊情况一样，计算TP问题时也需要考虑到下面的特殊情况；这里我们还是使用前面的例子进行说明：
三个Supply结点，其供应量为：




仓库
库存(Supply)




1. 堪萨斯
150


2. 奥马哈
175


3. 得梅因
275


Total
600


三个Demand结点，其需求量为：




面粉厂
需求(Demand)




A. 芝加哥
200


B. 圣路易斯
100


C. 辛辛那提
300


Total
600


路径的单位]]></description><category></category></item><item><title><![CDATA[求解传输问题(四) Modified Distribution算法]]></title><link>https://blog.youkuaiyun.com/wangzhenyang2/article/details/113744349</link><guid>https://blog.youkuaiyun.com/wangzhenyang2/article/details/113744349</guid><author>wangzhenyang2</author><pubDate>Mon, 08 Feb 2021 13:59:10 +0800</pubDate><description><![CDATA[Modified Distribution算法(MODI)其实可以看成是Stepping-Stone算法的变体，它和Stepping-Stone算法的主要区别在于MODI是通过数学表达式直接计算空单元格对总cost的变化情况，而不是先识别Loop
我们还是使用之前的例子：
三个Supply结点，其供应量为：




仓库
库存(Supply)




1. 堪萨斯
150


2. 奥马哈
175


3. 得梅因
275


Total
600


三个Demand结点，其需求量为：




面粉厂
需求]]></description><category></category></item><item><title><![CDATA[求解传输问题(三) Stepping-Stone算法]]></title><link>https://blog.youkuaiyun.com/wangzhenyang2/article/details/113741409</link><guid>https://blog.youkuaiyun.com/wangzhenyang2/article/details/113741409</guid><author>wangzhenyang2</author><pubDate>Mon, 08 Feb 2021 10:38:34 +0800</pubDate><description><![CDATA[当使用某种初始化算法得到TP问题的一个初始解后，就可以使用迭代算法进行最优解的搜索；Stepping-Stone算法和Modified Distribution(MODI)算法是常用的两种算法，这篇文章先介绍Stepping-Stone算法，而初始化算法则默认使用Minimum-Cell-Cost算法
还是使用前面文章使用的例子来说明：
三个Supply结点，其供应量为：




仓库
库存(Supply)




1. 堪萨斯
150


2. 奥马哈
175


3. 得梅因
275


Total
6]]></description><category></category></item><item><title><![CDATA[求解传输问题(二) 初始化算法]]></title><link>https://blog.youkuaiyun.com/wangzhenyang2/article/details/113740014</link><guid>https://blog.youkuaiyun.com/wangzhenyang2/article/details/113740014</guid><author>wangzhenyang2</author><pubDate>Sun, 07 Feb 2021 17:11:34 +0800</pubDate><description><![CDATA[这篇文章介绍两种TP问题的初始化算法：Northwest-Corner和Minimum-Cell-Cost算法
还是用前一篇文章中的案例作为例子：三个Supply结点，其供应量为：




仓库
库存(Supply)




1. 堪萨斯
150


2. 奥马哈
175


3. 得梅因
275


Total
600


三个Demand结点，其需求量为：




面粉厂
需求(Demand)




A. 芝加哥
200


B. 圣路易斯
100


C. 辛辛那提
300


Total
600
]]></description><category></category></item><item><title><![CDATA[求解传输问题(一) 传输问题定义]]></title><link>https://blog.youkuaiyun.com/wangzhenyang2/article/details/113697873</link><guid>https://blog.youkuaiyun.com/wangzhenyang2/article/details/113697873</guid><author>wangzhenyang2</author><pubDate>Sun, 07 Feb 2021 13:54:11 +0800</pubDate><description><![CDATA[传输问题(Transportation Problem)是一类特殊的线性优化问题，它要解决的是如何安排从不同供应者到需求者的物品数量，来让总的传输成本最小。传输问题最早由 F.L.Hitchcock 在1941年首次提及，由 T.C.Koopmans 在1947年将该问题独立出来，直到1951年由 G.B.Dantzig 运用单纯形算法成功求解；之后各种改善的算法被发明，并且大规模应用于实际的传输问题。
我们可以举一个典型的实例进行说明：
假设在堪萨斯城(111)，奥马哈(222)和得梅因(333)三座城市]]></description><category></category></item><item><title><![CDATA[单纯形算法 Simplex Algorithm (三)]]></title><link>https://blog.youkuaiyun.com/wangzhenyang2/article/details/112787619</link><guid>https://blog.youkuaiyun.com/wangzhenyang2/article/details/112787619</guid><author>wangzhenyang2</author><pubDate>Mon, 18 Jan 2021 19:03:18 +0800</pubDate><description><![CDATA[初始化问题
承接前一篇文章，对于原始的线性规划问题，如果约束中某个bib_ibi​小于零，直接以初始松弛变量作为基变量得到的基解是不可行的。例如：
maxZ=x1+2x2x1+x2≤2−x1−x2≤−1x1,x2≥0
\begin{aligned}
max\quad&amp; Z=x_1+2x_2\\ 
&amp; x_1+x_2\leq 2\\
&amp; -x_1-x_2\leq -1\\
&amp; x_1,x_2\geq 0
\end{aligned}
max​Z=x1​+2x2​x1​+x2​≤2]]></description><category></category></item><item><title><![CDATA[单纯形算法 Simplex Algorithm (二)]]></title><link>https://blog.youkuaiyun.com/wangzhenyang2/article/details/112662754</link><guid>https://blog.youkuaiyun.com/wangzhenyang2/article/details/112662754</guid><author>wangzhenyang2</author><pubDate>Mon, 18 Jan 2021 15:39:49 +0800</pubDate><description><![CDATA[为了真正理解单纯形算法的具体步骤，我查阅了许多文章，不过大部分文章会直接叙述单纯形表的操作，对理解算法帮助有限；也有一些文章直接从线性代数上的原理开始叙述，对于非专业人士又太难了。所幸我找到了一个挺不错的在线课程，感觉是我看过叙述单纯形算法最明了直观的资料了，下面的内容主要就是对这个课程的翻译
初始可行解
我们直接就用个例子来叙述算法。还是上一篇的例子：
maxZ=40x1+50x2s.t.x1+2x2≤404x1+3x2≤120x1,x2≥0
\begin{aligned}
max\quad&amp; Z]]></description><category></category></item><item><title><![CDATA[单纯形算法 Simplex Algorithm (一)]]></title><link>https://blog.youkuaiyun.com/wangzhenyang2/article/details/112371261</link><guid>https://blog.youkuaiyun.com/wangzhenyang2/article/details/112371261</guid><author>wangzhenyang2</author><pubDate>Fri, 15 Jan 2021 09:30:44 +0800</pubDate><description><![CDATA[单纯形算法是求解线性规划问题最经典的方法，在许多介绍该算法的文章中会使用单纯形表(Tableau)辅助计算，而对Tableau进行的操作本质上都是在对松弛化的线性规划模型进行矩阵运算，从几何表现上看，就是在线性规划问题的定义域上的顶点中迭代搜索，寻找使得目标函数最优的那个顶点。使用Tableau计算虽然很高效，不过对于理解算法原理帮助不大；单纯形算法的原理是基于线性代数的，如果要彻底理解，还是需要很多基础的矩阵知识的。这篇文章里我只是记录和单纯形算法相关的线性代数知识，加深对该算法中一些术语的记忆和理解；算]]></description><category></category></item><item><title><![CDATA[分支界定算法实践(三) 精确求解TSP]]></title><link>https://blog.youkuaiyun.com/wangzhenyang2/article/details/110439430</link><guid>https://blog.youkuaiyun.com/wangzhenyang2/article/details/110439430</guid><author>wangzhenyang2</author><pubDate>Thu, 03 Dec 2020 14:30:12 +0800</pubDate><description><![CDATA[TSP问题是非常经典的NP难问题，问题描述很简单，但是求解难度却很大。首先还是给出TSP的数学描述：

图G(V,E)G(V,E)G(V,E)是一个无向简单图，集合VVV包含了顶点1,2,...,n1,2,...,n1,2,...,n，集合EEE包含了所有边e(i,j),i,j∈Ve(i,j), i,j\in Ve(i,j),i,j∈V. 每条边e(i,j)e(i,j)e(i,j)都有对应的权重wij≥0w_{ij}\geq0wij​≥0. 需要找到一个边集合T⊂ET\subset ET⊂E，其包含的边构成]]></description><category></category></item><item><title><![CDATA[分支界定算法实践(二)  求解01整数优化问题]]></title><link>https://blog.youkuaiyun.com/wangzhenyang2/article/details/109673259</link><guid>https://blog.youkuaiyun.com/wangzhenyang2/article/details/109673259</guid><author>wangzhenyang2</author><pubDate>Sat, 14 Nov 2020 20:25:15 +0800</pubDate><description><![CDATA[如果线性整数规划的变量限定为只能0或1，那么称之为01整数线性规划问题，许多工程上的优化问题都可以归纳为01整数规划，这种问题模型很多情况下更便于计算机计算。
01整数规划只是一般整数线性规划的特殊情况，相当于多添加了xi≤1x_i\leq1xi​≤1的约束，所以一般化的分支界定算法也适用。唯一值得修改的地方在于，以xix_ixi​进行分支时，两个分支的额外约束可以直接写成xi=0x_i=0xi​=0和xi=1x_i=1xi​=1
这篇文章着重介绍的是解决01整数问题的另一种算法：隐式枚举(Implicit]]></description><category></category></item><item><title><![CDATA[分支界定算法实践(一)  求解线性整数优化问题]]></title><link>https://blog.youkuaiyun.com/wangzhenyang2/article/details/109203962</link><guid>https://blog.youkuaiyun.com/wangzhenyang2/article/details/109203962</guid><author>wangzhenyang2</author><pubDate>Wed, 28 Oct 2020 09:29:42 +0800</pubDate><description><![CDATA[(本文内容主要参考《an introduction to management science(13e)》中的章节)
分支界定算法的主要思想是把问题的可行解划分为多个子集，对子集进行系统化的评估直到最优解找到。分支界定只是一种算法框架，因为如何构造子集、在每个子集如何搜索最优解可以按不同情况有不同的具体实现，当用于求解线性整数优化问题时，就需要结合一般的线性优化算法或者求解器来实现。下面先用一个实例来说明算法的思路，然后用代码实现一下。

...]]></description><category></category></item></channel></rss>