<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>BIRDIE</title>
  
  <subtitle>Like a BIRDIE flies into your heart...</subtitle>
  <link href="/atom.xml" rel="self"/>
  
  <link href="http://blog.raincur.com/"/>
  <updated>2021-01-25T13:19:55.151Z</updated>
  <id>http://blog.raincur.com/</id>
  
  <author>
    <name>Rain Chen</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>python爬虫-2-requests库</title>
    <link href="http://blog.raincur.com/2021/01/25/python%E7%88%AC%E8%99%AB-2/"/>
    <id>http://blog.raincur.com/2021/01/25/python%E7%88%AC%E8%99%AB-2/</id>
    <published>2021-01-25T06:22:00.000Z</published>
    <updated>2021-01-25T13:19:55.151Z</updated>
    
    <content type="html"><![CDATA[<a id="more"></a><p>学习爬虫，最基础的便是<strong>模拟浏览器向服务器发出请求</strong>。</p><h2 id="实例引入"><a class="markdownIt-Anchor" href="#实例引入"></a> 实例引入</h2><p>模拟发送一个请求，把网页的源代码获取下来。</p><p>可以利用<code>requests</code>库中的<code>get</code>方法来获取网页中的信息，为进一步提取所需信息做准备。<br />例如：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># coding=utf-8</span></span><br><span class="line"><span class="keyword">import</span> requests</span><br><span class="line"><span class="keyword">import</span> io</span><br><span class="line"><span class="keyword">import</span> sys</span><br><span class="line">sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding=<span class="string">'utf8'</span>)</span><br><span class="line">url = <span class="string">'https://oi-wiki.org/'</span></span><br><span class="line">r = requests.get(url)</span><br><span class="line">print(r)</span><br><span class="line">print(r.text)</span><br></pre></td></tr></table></figure><p>该代码会将<code>https://oi-wiki.org/</code>网页内容爬取并输出。</p><h2 id="基本知识"><a class="markdownIt-Anchor" href="#基本知识"></a> 基本知识</h2><h3 id="get请求"><a class="markdownIt-Anchor" href="#get请求"></a> <code>GET</code>请求</h3><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># coding=utf-8</span></span><br><span class="line"><span class="keyword">import</span> requests</span><br><span class="line"></span><br><span class="line">url = <span class="string">'http://httpbin.org/get'</span></span><br><span class="line">r = requests.get(url)</span><br><span class="line">print(r)</span><br><span class="line">print(r.text)</span><br></pre></td></tr></table></figure><p>运行结果如下：</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">&lt;Response [200]&gt;</span><br><span class="line">&#123;</span><br><span class="line">  <span class="attr">"args"</span>: &#123;&#125;, </span><br><span class="line">  <span class="attr">"headers"</span>: &#123;</span><br><span class="line">    <span class="attr">"Accept"</span>: <span class="string">"*/*"</span>, </span><br><span class="line">    <span class="attr">"Accept-Encoding"</span>: <span class="string">"gzip, deflate"</span>, </span><br><span class="line">    <span class="attr">"Host"</span>: <span class="string">"httpbin.org"</span>, </span><br><span class="line">    <span class="attr">"User-Agent"</span>: <span class="string">"python-requests/2.24.0"</span>, </span><br><span class="line">    <span class="attr">"X-Amzn-Trace-Id"</span>: <span class="string">"Root=1-600e6a30-263a11523bc6ff097314f31d"</span></span><br><span class="line">  &#125;, </span><br><span class="line">  <span class="attr">"origin"</span>: <span class="string">"140.250.245.147"</span>, </span><br><span class="line">  <span class="attr">"url"</span>: <span class="string">"http://httpbin.org/get"</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>当然，我们也还可以在<code>GET</code>请求时增加一些参数，如下：<br /><code>http://httpbin.org/get?name=rain&amp;university=XDU</code>。</p><p>在<code>get</code>方法中，我们可以指定<code>params</code>参数来达到传递参数的效果。代码如下：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># coding=utf-8</span></span><br><span class="line"><span class="keyword">import</span> requests</span><br><span class="line"></span><br><span class="line">params = &#123;</span><br><span class="line">    <span class="string">'name'</span>: <span class="string">'rain'</span>,</span><br><span class="line">    <span class="string">'university'</span>: <span class="string">'XDU'</span></span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">url = <span class="string">'http://httpbin.org/get'</span></span><br><span class="line">r = requests.get(url, params=params)</span><br><span class="line">print(r)</span><br><span class="line">print(r.text)</span><br></pre></td></tr></table></figure><p>结果如下：</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line">&lt;Response [200]&gt;</span><br><span class="line">&#123;</span><br><span class="line">  <span class="attr">"args"</span>: &#123;</span><br><span class="line">    <span class="attr">"name"</span>: <span class="string">"rain"</span>, </span><br><span class="line">    <span class="attr">"university"</span>: <span class="string">"XDU"</span></span><br><span class="line">  &#125;, </span><br><span class="line">  <span class="attr">"headers"</span>: &#123;</span><br><span class="line">    <span class="attr">"Accept"</span>: <span class="string">"*/*"</span>, </span><br><span class="line">    <span class="attr">"Accept-Encoding"</span>: <span class="string">"gzip, deflate"</span>, </span><br><span class="line">    <span class="attr">"Host"</span>: <span class="string">"httpbin.org"</span>, </span><br><span class="line">    <span class="attr">"User-Agent"</span>: <span class="string">"python-requests/2.24.0"</span>, </span><br><span class="line">    <span class="attr">"X-Amzn-Trace-Id"</span>: <span class="string">"Root=1-600e6b0c-13dea24830332ab92ef3cc91"</span></span><br><span class="line">  &#125;, </span><br><span class="line">  <span class="attr">"origin"</span>: <span class="string">"140.250.245.147"</span>, </span><br><span class="line">  <span class="attr">"url"</span>: <span class="string">"http://httpbin.org/get?name=rain&amp;university=XDU"</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>观察发现，返回内容为<code>json</code>格式，我们可以直接利用<code>json()</code>方法将该文本转化为字典。如下：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">url = <span class="string">'http://httpbin.org/get'</span></span><br><span class="line">r = requests.get(url, params=params)</span><br><span class="line">dict = r.json()</span><br><span class="line">print(dict)</span><br></pre></td></tr></table></figure><p>但是当返回格式不是<code>json</code>时，会抛出异常。</p><h3 id="提取信息"><a class="markdownIt-Anchor" href="#提取信息"></a> 提取信息</h3><p>我们可以利用<code>正则表达式</code>获取所虚信息，如：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> requests</span><br><span class="line"><span class="keyword">import</span> re</span><br><span class="line"></span><br><span class="line">url = <span class="string">'http://static1.scrape.cuiqingcai.com/'</span></span><br><span class="line">r = requests.get(url, verify=<span class="literal">False</span>)</span><br><span class="line">print(r)</span><br><span class="line">pattern = re.compile(<span class="string">'&lt;h2.*?&gt;(.*?)&lt;/h2&gt;'</span>, re.S)</span><br><span class="line">tittle = re.findall(pattern, r.text)</span><br><span class="line"></span><br><span class="line">print(tittle)</span><br></pre></td></tr></table></figure><p>结果为：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[<span class="string">'霸王别姬 - Farewell My Concubine'</span>, <span class="string">'这个杀手不太冷 - Léon'</span>, <span class="string">'肖申克的救赎 - The Shawshank Redemption'</span>, <span class="string">'泰坦尼克号 - Titanic'</span>, <span class="string">'罗马假日 - Roman Holiday'</span>, <span class="string">'唐伯虎点秋香 - Flirting Scholar'</span>, <span class="string">'乱世佳人 - Gone with the Wind'</span>, <span class="string">'喜剧之王 - The King of Comedy'</span>, <span class="string">'楚门的世界 - The Truman Show'</span>, <span class="string">'狮子王 - The Lion King'</span>]</span><br></pre></td></tr></table></figure><p>代码参数的<code>verify</code>则是省去网站认证。</p><h3 id="抓取二进制数据"><a class="markdownIt-Anchor" href="#抓取二进制数据"></a> 抓取二进制数据</h3><p>图片、音频、视频这些文件本质上都是由二进制码组成，想要抓取它们，就要拿到它们的二进制数据。<br />例如我们想要抓取<code>github</code>的图标，网址为：<code>https://github.com/favicon.ico</code>。<br />代码如下：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> requests</span><br><span class="line"></span><br><span class="line">url = <span class="string">'https://github.com/favicon.ico'</span></span><br><span class="line">r = requests.get(url)</span><br><span class="line">print(r.text)</span><br><span class="line">print(r.content)</span><br></pre></td></tr></table></figure><p>结果如下：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">:�������O    </span><br><span class="line"><span class="string">b'\x00\x00\x01\x00\x02\x00\x10\x10\x00\x00\x01\x00 \x00(\x05\x00\x00&amp;\x00\x00\x00</span></span><br></pre></td></tr></table></figure><p>前者出现乱码，后者结果带有一个<code>b</code>，这代表是<code>byte</code>类型的数据。</p><p>通过以下代码保存图片：</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">import requests</span><br><span class="line"></span><br><span class="line">url &#x3D; &#39;https:&#x2F;&#x2F;github.com&#x2F;favicon.ico&#39;</span><br><span class="line">r &#x3D; requests.get(url)</span><br><span class="line">with open(&#39;favicon.ico&#39;, &#39;wb&#39;) as f:</span><br><span class="line">    f.write(r.content)</span><br></pre></td></tr></table></figure><h3 id="设置headers"><a class="markdownIt-Anchor" href="#设置headers"></a> 设置<code>headers</code></h3><p>某些网站会检查请求的<code>headers</code>信息，在不设置<code>headers</code>时，某些网站可能拒绝访问。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> requests</span><br><span class="line"></span><br><span class="line">headers = &#123;</span><br><span class="line">    <span class="string">'user-agent'</span>:</span><br><span class="line">        <span class="string">'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '</span></span><br><span class="line">        <span class="string">'AppleWebKit/537.36 (KHTML, like Gecko) '</span></span><br><span class="line">        <span class="string">'Chrome/87.0.4280.141 Safari/537.36'</span></span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">url = <span class="string">'https://movie.douban.com/top250'</span></span><br><span class="line">r = requests.get(url, headers=headers)</span><br><span class="line">print(r)</span><br><span class="line">print(r.text)</span><br></pre></td></tr></table></figure><p>当不设置<code>headers</code>时，豆瓣会拒绝访问。</p><h3 id="post请求"><a class="markdownIt-Anchor" href="#post请求"></a> <code>POST</code>请求</h3><p>利用<code>requests.post()</code>方法即可。</p><h2 id="高级用法"><a class="markdownIt-Anchor" href="#高级用法"></a> 高级用法</h2><h3 id="文件上传"><a class="markdownIt-Anchor" href="#文件上传"></a> 文件上传</h3><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> requests</span><br><span class="line"></span><br><span class="line">files = &#123;<span class="string">'file'</span>: open(<span class="string">'favicon.ico'</span>, <span class="string">'rb'</span>)&#125;</span><br><span class="line">r = requests.post(<span class="string">'http://httpbin.org/post'</span>, files=files)</span><br><span class="line">print(r.text)</span><br></pre></td></tr></table></figure><h3 id="cookies"><a class="markdownIt-Anchor" href="#cookies"></a> <code>Cookies</code></h3><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> requests</span><br><span class="line"></span><br><span class="line">url = <span class="string">'http://www.baidu.com'</span></span><br><span class="line">    r = requests.get(url)</span><br><span class="line">    print(r.cookies)</span><br><span class="line">    <span class="keyword">for</span> key, value <span class="keyword">in</span> r.cookies.items():</span><br><span class="line">        print(key + <span class="string">": "</span> + value)</span><br></pre></td></tr></table></figure><p>结果如下：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">&lt;RequestsCookieJar[&lt;Cookie BDORZ=<span class="number">27315</span> <span class="keyword">for</span> .baidu.com/&gt;]&gt;</span><br><span class="line">BDORZ: <span class="number">27315</span></span><br></pre></td></tr></table></figure><p>利用<code>Cookies</code>可以模拟登录：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> requests</span><br><span class="line">headers = &#123;</span><br><span class="line">  <span class="string">'Cookie'</span>: <span class="string">'Github中的Cookies'</span>,</span><br><span class="line">  <span class="string">'User-Agent'</span>: <span class="string">'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '</span></span><br><span class="line">                <span class="string">'Chrome/87.0.4280.141 Safari/537.36'</span></span><br><span class="line">&#125;</span><br><span class="line">url = <span class="string">'https://github.com/'</span></span><br><span class="line">r = requests.get(url, headers=headers)</span><br><span class="line">print(r.text)</span><br></pre></td></tr></table></figure><p>结果如下：</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">...</span><br><span class="line"><span class="tag">&lt;<span class="name">meta</span> <span class="attr">name</span>=<span class="string">"user-login"</span> <span class="attr">content</span>=<span class="string">"XdBirdie"</span>&gt;</span></span><br><span class="line">...</span><br></pre></td></tr></table></figure><p>发现存在含有用户特征的信息，说明我们模拟了登录的状态。</p><p><code>Cookie</code>还可以通过下面的方法设置：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> requests</span><br><span class="line"></span><br><span class="line">cookies = <span class="string">'Github中的Cookies'</span></span><br><span class="line">headers = &#123;</span><br><span class="line">  <span class="string">'User-Agent'</span>: <span class="string">'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '</span></span><br><span class="line">  <span class="string">'Chrome/87.0.4280.141 Safari/537.36'</span></span><br><span class="line">&#125;</span><br><span class="line">jar = requests.cookies.RequestsCookieJar()</span><br><span class="line"><span class="keyword">for</span> cookie <span class="keyword">in</span> cookies.split(<span class="string">';'</span>):</span><br><span class="line">  key, value = cookie.split(<span class="string">'='</span>)</span><br><span class="line">  print(key, value)</span><br><span class="line">  jar.set(key, value)</span><br><span class="line">url = <span class="string">'https://github.com/'</span></span><br><span class="line">r = requests.get(url, cookies=jar, headers=headers)</span><br><span class="line">print(r.text)</span><br></pre></td></tr></table></figure><p>可以达到同样的效果。</p><h3 id="session维持"><a class="markdownIt-Anchor" href="#session维持"></a> <code>Session</code>维持</h3><p>考虑如下代码：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> requests</span><br><span class="line"></span><br><span class="line">url = <span class="string">'http://httpbin.org/cookies'</span></span><br><span class="line">r = requests.get(url + <span class="string">'/set/number/12345678'</span>)</span><br><span class="line">r = requests.get(url)</span><br><span class="line">print(r.text)</span><br></pre></td></tr></table></figure><p>输出结果为：</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;</span><br><span class="line">  <span class="attr">"cookies"</span>: &#123;&#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>但是利用<code>Session</code>：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">url = <span class="string">'http://httpbin.org/cookies'</span></span><br><span class="line">s = requests.Session()</span><br><span class="line">s.get(url + <span class="string">'/set/number/12345678'</span>)</span><br><span class="line">r = s.get(url)</span><br><span class="line">print(r.text)</span><br></pre></td></tr></table></figure><p>输出结果为：</p><figure class="highlight"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">&#123;</span><br><span class="line">  <span class="attr">"cookies"</span>: &#123;</span><br><span class="line">    <span class="attr">"number"</span>: <span class="string">"12345678"</span></span><br><span class="line">  &#125;</span><br><span class="line">&#125;e4</span><br></pre></td></tr></table></figure><h3 id="ssl证书验证"><a class="markdownIt-Anchor" href="#ssl证书验证"></a> SSL证书验证</h3><p>现在很多网站都要求使用<code>HTTPS</code>协议，但是有些网站可能并没有设置好<code>HTTPS</code>证书，或者网站的<code>HTTPS</code>证书不被认可。这时，这些网站可能就会出现<code>SSL</code>证书错误的提示。</p><p>可以使用<code>verify</code>参数控制是否验证证书，如果将其设置为<code>False</code>，在请求时就不会再验证证书是否有效。否则默认值为<code>True</code>，会自动验证。</p><h3 id="超时设置"><a class="markdownIt-Anchor" href="#超时设置"></a> 超时设置</h3><p>当客户端或者服务器网络响应延迟较高甚至无响应时，为防止服务器不能及时响应，应该设置一个超市时间，当超出此事件还未响应时，报错。</p><p>设置<code>timeout</code>参数即可。</p><p>例如：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> requests</span><br><span class="line">url = <span class="string">'http://httpbin.org/get'</span></span><br><span class="line">r = requests.get(url, timeout=<span class="number">1</span>)</span><br><span class="line">print(r.text)</span><br></pre></td></tr></table></figure><p>然而链接分为两个阶段，链接阶段(<code>connect</code>)和传送阶段(<code>read time</code>)，前面设置的<code>timeout</code>设置的时间是两段时间之和，也可以选择分别设置时间限。如下：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> requests</span><br><span class="line">url = <span class="string">'http://httpbin.org/get'</span></span><br><span class="line">r = requests.get(url, timeout=(<span class="number">0.4</span>, <span class="number">0.6</span>))</span><br><span class="line">print(r.text)</span><br></pre></td></tr></table></figure><p>如果想永久等待，可以直接将<code>timeout</code>设置为<code>None</code>，或者不设置，因为默认值为<code>None</code>。</p><h3 id="身份认证"><a class="markdownIt-Anchor" href="#身份认证"></a> 身份认证</h3><p>可以使用<code>requests</code>自带的身份认证功能，通过<code>auth</code>参数即可设置。</p><p>例如：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> requests</span><br><span class="line"><span class="keyword">from</span> requests.auth <span class="keyword">import</span> HTTPBasicAuth</span><br><span class="line"></span><br><span class="line">url = <span class="string">'https://static3.scrape.cuiqingcai.com/'</span></span><br><span class="line">r = requests.get(url, auth=HTTPBasicAuth(<span class="string">'admin'</span>, <span class="string">'admin'</span>), verify=<span class="literal">False</span>)</span><br><span class="line">print(r.status_code)</span><br><span class="line">print(r.text)</span><br></pre></td></tr></table></figure><p>但是相对繁琐，所以<code>python</code>提供了另一种方式进行身份认证：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> requests</span><br><span class="line"></span><br><span class="line">url = <span class="string">'https://static3.scrape.cuiqingcai.com/'</span></span><br><span class="line">r = requests.get(url, auth=(<span class="string">'admin'</span>, <span class="string">'admin'</span>), verify=<span class="literal">False</span>)</span><br><span class="line">print(r.status_code)</span><br><span class="line">print(r.text)</span><br></pre></td></tr></table></figure><p><code>requests</code>还提供了其他认证方式，如<code>OAuth</code>认证，不过需要安装<code>oauth</code>包。</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pip3 install requests_oauthlib</span><br></pre></td></tr></table></figure><h3 id="代理设置"><a class="markdownIt-Anchor" href="#代理设置"></a> 代理设置</h3><p>对于大规模并且频繁的请求，网站可能会弹出验证码，或者跳转到登录认证页面，更有甚者可能会直接封禁客户端的<code>IP</code>，导致一定时间段内无法访问。<br />为了防止这种情况发生，需要设置代理来解决问题，这是就需要用到<code>proxies</code>参数。</p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;a id=&quot;more&quot;&gt;&lt;/a&gt;
&lt;p&gt;学习爬虫，最基础的便是&lt;strong&gt;模拟浏览器向服务器发出请求&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id=&quot;实例引入&quot;&gt;&lt;a class=&quot;markdownIt-Anchor&quot; href=&quot;#实例引入&quot;&gt;&lt;/a&gt; 实例引入&lt;/h2&gt;
&lt;
      
    
    </summary>
    
    
      <category term="爬虫" scheme="http://blog.raincur.com/categories/%E7%88%AC%E8%99%AB/"/>
    
    
      <category term="学习" scheme="http://blog.raincur.com/tags/%E5%AD%A6%E4%B9%A0/"/>
    
      <category term="python" scheme="http://blog.raincur.com/tags/python/"/>
    
  </entry>
  
  <entry>
    <title>python爬虫-1-爬虫概述</title>
    <link href="http://blog.raincur.com/2021/01/24/python%E7%88%AC%E8%99%AB-1/"/>
    <id>http://blog.raincur.com/2021/01/24/python%E7%88%AC%E8%99%AB-1/</id>
    <published>2021-01-24T03:28:00.000Z</published>
    <updated>2021-01-25T06:21:34.007Z</updated>
    
    <content type="html"><![CDATA[<a id="more"></a><h1 id="爬虫概述"><a class="markdownIt-Anchor" href="#爬虫概述"></a> 爬虫概述</h1><p>爬虫就是<strong>获取网页</strong>并<strong>提取</strong>和<strong>保存信息</strong>的<strong>自动化程序</strong>。</p><h2 id="爬虫基本原理"><a class="markdownIt-Anchor" href="#爬虫基本原理"></a> 爬虫基本原理</h2><ul><li><strong>获取网页</strong><ul><li><strong>获取网页</strong>，就是获取网页的源代码</li><li>源代码中包含网页的部分有用信息，将源代码获取下来，就可以从中提取所需信息</li><li>最关键的部分是<strong>构造一个请求并发送个服务器</strong>，<strong>接收响应并解析</strong></li></ul></li><li><strong>提取信息</strong><ul><li>根据网页的结构</li><li>存在根据网页节点属性，CSS选择器或XPath提取网页信息的库</li><li>例: <code>Beautiful Soup</code>，<code>pyquery</code>，<code>lxml</code>等</li><li>利用这些库可以快速高效地从中提取网页信息</li></ul></li><li><strong>保存信息</strong><ul><li>保存为<code>TXT</code>文本或<code>JSON</code>文本</li><li>保存到数据库，如<code>MySQL</code>和<code>MongoDB</code>等</li><li>保存至远程服务器，如借助<code>SFTP</code>进行操作</li></ul></li><li><strong>自动化程序</strong><ul><li>当数据量非常大或者操作非常繁复时, 需要借助程序</li><li><code>爬虫</code>就是代替我们工作的自动化程序</li><li>可以在抓取过程中进行各种异常处理, 错误重试等操作确保爬虫高效运行</li></ul></li><li><strong>抓取的数据</strong><ul><li>常规网页–<code>HTML</code>代码</li><li>API–<code>JSON</code>字符串</li><li>多媒体文件</li><li>只要能在浏览器里能访问到, 都可以抓取</li></ul></li></ul><p>而如今更多网页采用<code>Ajax</code>，前端模块化工具来构建，整个网页可能都是由<code>JavaScript</code>渲染出来的，<strong>原始的<code>HTML</code>代码就是一个空壳</strong>。</p><p>如下：</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">&lt;!DOCTYPE <span class="meta-keyword">html</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">html</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">head</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">meta</span> <span class="attr">charset</span>=<span class="string">"UTF-8"</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">title</span>&gt;</span>This is a Demo<span class="tag">&lt;/<span class="name">title</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">head</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">body</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">"container"</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">body</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span> <span class="attr">src</span>=<span class="string">"app.js"</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">html</span>&gt;</span></span><br></pre></td></tr></table></figure><p>浏览器解析网页时，会加载<code>HTML</code>内容，然后请求<code>app.js</code>文件并执行代码，<code>JS</code>文件会改变<code>HTML</code>中的节点并向网页添加内容，最后得到完成的页面。</p><p>而用<code>urlib</code>或者<code>request</code>库去请求网页时，只会加载<code>HTML</code>文件，而不会执行<code>JavaScript</code>，所以我们只能得到一个空壳，而无法得到完整页面。</p><p>可以使用<code>Selenium</code>、<code>Splash</code>类似的库来模拟<code>JavaScript</code>渲染。</p><h2 id="基础探究session与cookies"><a class="markdownIt-Anchor" href="#基础探究session与cookies"></a> 基础探究，<code>Session</code>与<code>Cookies</code></h2><p>###　<strong>静态网页</strong>和<strong>动态网页</strong></p><ul><li><strong>静态网页</strong><ul><li>静态网页由<code>HTML</code>代码编写，文字图片等内容均通过写好的<code>HTML</code>代码指定</li><li>加载速度快，编写简单</li><li>但是可维护性差，不能灵活多变地显示内容、个性化定制等</li></ul></li><li><strong>动态网页</strong><ul><li>动态解析<code>URL</code>中参数的变化</li><li>关联数据库并动态呈现不同的页面内容，灵活多变</li><li>可以能由<code>JSP</code>、<code>PHP</code>、<code>Python</code>等语言编写</li><li>可以实现用户登录和注册的功能</li></ul></li></ul><h3 id="session与cookies"><a class="markdownIt-Anchor" href="#session与cookies"></a> <code>Session</code>与<code>Cookies</code></h3><p><code>HTTP</code>具有<code>无状态</code>的特点，是指<code>HTTP</code>协议对事务处理是没有记忆能力的，也就是说服务器并不知道客户端是什么状态。这就意味着如果后续要处理前面的信息，必须<strong>重传</strong>。这将导致需要额外传递一些前面的重复请求，才能获取后续响应。降低传输效率。</p><p>所以，我们需要能够保持<code>HTTP</code>链接状态的技术——<code>Session</code>和<code>Cookies</code>。</p><ul><li><p><code>Session</code></p><ul><li>网站的服务器</li><li>“有始有终的一系列动作/消息”</li><li>存储特定用户<code>Session</code>所需的属性和配置信息</li></ul></li><li><p><code>Cookies</code></p><ul><li>浏览器端</li><li>某些网站为了辨别用户身份、继续<code>Session</code>跟踪而储存在用户本地终端上的数据</li><li>下次放问网页时会自动附带并发给服务器</li><li>服务器会识别<code>Cookies</code>并鉴定出用户并判断用户状态</li></ul></li><li><p><code>会话Cookie</code>，将<code>Cookie</code>放在浏览器内存里，浏览器关闭后该<code>Cookie</code>失效</p></li><li><p><code>持久Cookie</code>，将<code>Cookie</code>保存到客户端的硬盘中，下次还可以继续使用，用于长久保持用户的登录状态</p></li></ul><p>严格来说，并没有<code>会话Cookie</code>和<code>持久Cookie</code>之分，只是由<code>Cookie</code>的<code>Max Age</code>或<code>Expires</code>字段决定了过期的时间。</p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;a id=&quot;more&quot;&gt;&lt;/a&gt;
&lt;h1 id=&quot;爬虫概述&quot;&gt;&lt;a class=&quot;markdownIt-Anchor&quot; href=&quot;#爬虫概述&quot;&gt;&lt;/a&gt; 爬虫概述&lt;/h1&gt;
&lt;p&gt;爬虫就是&lt;strong&gt;获取网页&lt;/strong&gt;并&lt;strong&gt;提取&lt;/strong&gt;和&lt;s
      
    
    </summary>
    
    
      <category term="爬虫" scheme="http://blog.raincur.com/categories/%E7%88%AC%E8%99%AB/"/>
    
    
      <category term="学习" scheme="http://blog.raincur.com/tags/%E5%AD%A6%E4%B9%A0/"/>
    
      <category term="python" scheme="http://blog.raincur.com/tags/python/"/>
    
  </entry>
  
  <entry>
    <title>LINGO的基本使用</title>
    <link href="http://blog.raincur.com/2021/01/20/LINGO%E7%9A%84%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8/"/>
    <id>http://blog.raincur.com/2021/01/20/LINGO%E7%9A%84%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8/</id>
    <published>2021-01-20T15:00:21.188Z</published>
    <updated>2021-01-21T03:25:52.427Z</updated>
    
    <content type="html"><![CDATA[<h1 id="lingo基础"><a class="markdownIt-Anchor" href="#lingo基础"></a> Lingo基础</h1><h2 id="lingo解方程"><a class="markdownIt-Anchor" href="#lingo解方程"></a> Lingo解方程</h2><ul><li>每个语句以分号结尾</li><li><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>2</mn><mo>∗</mo><mi>x</mi></mrow><annotation encoding="application/x-tex">2 * x</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">2</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">∗</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathdefault">x</span></span></span></span>不能简写为<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>2</mn><mi>x</mi></mrow><annotation encoding="application/x-tex">2x</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">2</span><span class="mord mathdefault">x</span></span></span></span></li><li>Lingo默认所有的变量均大于等于0</li><li>利用函数<code>@free</code>可以使其定义域为<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>R</mi></mrow><annotation encoding="application/x-tex">R</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.00773em;">R</span></span></span></span></li><li>Lingo不区分大小写</li><li>注释以<code>!</code>开头，以<code>;</code>结尾</li></ul><h2 id="线性规划基础"><a class="markdownIt-Anchor" href="#线性规划基础"></a> 线性规划基础</h2><ul><li>一个线性规划中只含一个目标函数，多目标线性规划需要转化为单目标规划</li><li>求目标函数最大值或最小值分别用<code>max=</code>或<code>min=</code></li><li>线性规划与非线性规划的本质区别是目标函数是否线性，故不作区分</li><li>求解非线性规划非常困难，所以尽量转化为线性规划求解</li></ul><h1 id="集合与矩阵工厂"><a class="markdownIt-Anchor" href="#集合与矩阵工厂"></a> 集合与矩阵工厂</h1><p><strong>问题场景：</strong> 求解：</p><p class='katex-block'><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>m</mi><mi>a</mi><mi>x</mi><mtext> </mtext><mi>S</mi><mspace linebreak="newline"></mspace><mi>s</mi><mi mathvariant="normal">.</mi><mi>t</mi><mi mathvariant="normal">.</mi><mrow><mo fence="true">{</mo><mtable rowspacing="0.24999999999999992em" columnalign="right left right" columnspacing="0em 1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mi>S</mi><mo>=</mo><msub><mi>a</mi><mi>i</mi></msub><msub><mi>x</mi><mi>i</mi></msub><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mi>i</mi><mo>=</mo><mn>1</mn><mo separator="true">,</mo><mn>2</mn><mo separator="true">,</mo><mi mathvariant="normal">.</mi><mi mathvariant="normal">.</mi><mi mathvariant="normal">.</mi><mo separator="true">,</mo><mn>5</mn></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><msub><mi>a</mi><mi>i</mi></msub><mo>=</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mi>i</mi><mo>=</mo><mn>1</mn><mo separator="true">,</mo><mn>2</mn><mo separator="true">,</mo><mi mathvariant="normal">.</mi><mi mathvariant="normal">.</mi><mi mathvariant="normal">.</mi><mo separator="true">,</mo><mn>5</mn></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><munderover><mo>∑</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mn>5</mn></munderover><msub><mi>x</mi><mi>i</mi></msub><mo>=</mo><mn>5000</mn></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow></mrow></mstyle></mtd></mtr></mtable></mrow></mrow><annotation encoding="application/x-tex">max\ S\\s.t.\left\{    \begin{aligned}          &amp; S=a_ix_i,&amp; i=1,2,...,5  \\         &amp;a_i=1,&amp; i=1,2,...,5\\          &amp;\sum_{i=1}^5x_i=5000 &amp; \\      \end{aligned}      \right.</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord mathdefault">m</span><span class="mord mathdefault">a</span><span class="mord mathdefault">x</span><span class="mspace"> </span><span class="mord mathdefault" style="margin-right:0.05764em;">S</span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:6.378782000000001em;vertical-align:-2.9393910000000005em;"></span><span class="mord mathdefault">s</span><span class="mord">.</span><span class="mord mathdefault">t</span><span class="mord">.</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen"><span class="delimsizing mult"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:3.2500199999999997em;"><span style="top:-1.2999899999999998em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎩</span></span></span><span style="top:-1.2999899999999998em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top:-1.5999899999999998em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top:-1.8999899999999998em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top:-2.1999899999999997em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top:-3.15001em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎨</span></span></span><span style="top:-4.30001em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top:-4.60001em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top:-4.90001em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top:-5.20001em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top:-5.500019999999999em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎧</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:2.75002em;"><span></span></span></span></span></span></span><span class="mord"><span class="mtable"><span class="col-align-r"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:3.4393910000000005em;"><span style="top:-6.4005040000000015em;"><span class="pstrut" style="height:3.8011130000000004em;"></span><span class="mord"></span></span><span style="top:-4.900504em;"><span class="pstrut" style="height:3.8011130000000004em;"></span><span class="mord"></span></span><span style="top:-2.4393909999999996em;"><span class="pstrut" style="height:3.8011130000000004em;"></span><span class="mord"></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:2.9393910000000005em;"><span></span></span></span></span></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:3.4393910000000005em;"><span style="top:-6.4005040000000015em;"><span class="pstrut" style="height:3.8011130000000004em;"></span><span class="mord"><span class="mord"></span><span class="mord mathdefault" style="margin-right:0.05764em;">S</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord"><span class="mord mathdefault">a</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mpunct">,</span></span></span><span style="top:-4.900504em;"><span class="pstrut" style="height:3.8011130000000004em;"></span><span class="mord"><span class="mord"></span><span class="mord"><span class="mord mathdefault">a</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord">1</span><span class="mpunct">,</span></span></span><span style="top:-2.4393909999999996em;"><span class="pstrut" style="height:3.8011130000000004em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.8011130000000004em;"><span style="top:-1.872331em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mrel mtight">=</span><span class="mord mtight">1</span></span></span></span><span style="top:-3.050005em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∑</span></span></span><span style="top:-4.3000050000000005em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">5</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:1.277669em;"><span></span></span></span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord">5</span><span class="mord">0</span><span class="mord">0</span><span class="mord">0</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:2.9393910000000005em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:1em;"></span><span class="col-align-r"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:3.4393910000000005em;"><span style="top:-6.4005040000000015em;"><span class="pstrut" style="height:3.8011130000000004em;"></span><span class="mord"><span class="mord mathdefault">i</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord">1</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">2</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">.</span><span class="mord">.</span><span class="mord">.</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">5</span></span></span><span style="top:-4.900504em;"><span class="pstrut" style="height:3.8011130000000004em;"></span><span class="mord"><span class="mord mathdefault">i</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord">1</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">2</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">.</span><span class="mord">.</span><span class="mord">.</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">5</span></span></span><span style="top:-2.4393909999999996em;"><span class="pstrut" style="height:3.8011130000000004em;"></span><span class="mord"></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:2.9393910000000005em;"><span></span></span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span></span></p><p>我们可以枚举，利用如下<code>lingo</code>代码求解：</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">max</span> = s;</span><br><span class="line">s = a1 * x1;</span><br><span class="line">s = a2 * x2;</span><br><span class="line">s = a3 * x3;</span><br><span class="line">s = a4 * x4;</span><br><span class="line">s = a5 * x5;</span><br><span class="line">a1 = <span class="number">1</span>; a2 = <span class="number">2</span>; a3 = <span class="number">3</span>; a4 = <span class="number">4</span>; a5 = <span class="number">5</span>;</span><br><span class="line">x1 + x2 + x3 + x4 + x5 = <span class="number">5000</span>;</span><br></pre></td></tr></table></figure><p>显然这种场景暴力分解太憨批了，所以我们寻求另一种表示方法：<code>lingo</code>中非常重要的<code>集合</code>，或者称之为<code>矩阵工厂</code>。</p><h2 id="矩阵工厂一维矩阵"><a class="markdownIt-Anchor" href="#矩阵工厂一维矩阵"></a> 矩阵工厂（一维矩阵）</h2><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">sets:</span><br><span class="line">factory/<span class="number">1.</span><span class="number">.4</span>/: a, b;</span><br><span class="line">plant/<span class="number">1.</span><span class="number">.3</span>/: x, y;</span><br><span class="line">endsets</span><br></pre></td></tr></table></figure><ul><li><code>factory</code>和<code>plant</code>都是生产矩阵的工厂</li><li><code>factory</code>、<code>plant</code>和<code>a</code>、<code>b</code>、<code>x</code>、<code>y</code>的名字是随便取的</li><li><code>factory</code>生产<code>1*6</code>的矩阵，<code>plant</code>生成<code>1*3</code>的矩阵</li><li>生产完矩阵之后，工厂和矩阵之间几乎没有关系</li><li><code>sets:</code>和<code>endsets</code>用于表示工厂生产流程起止</li></ul><h2 id="矩阵的赋值"><a class="markdownIt-Anchor" href="#矩阵的赋值"></a> 矩阵的赋值</h2><p>承接上面代码，增加：</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">data:</span><br><span class="line">a = <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>;</span><br><span class="line">b = <span class="number">6.0</span>, <span class="number">5.0</span>, <span class="number">4.0</span>, <span class="number">3.0</span>, <span class="number">2.0</span>, <span class="number">1.0</span>;</span><br><span class="line">x = <span class="number">1</span>;</span><br><span class="line">enddata</span><br></pre></td></tr></table></figure><p>运行结果如下：</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line">Variable     Value</span><br><span class="line">A( 1)        1.000000</span><br><span class="line">A( 2)        2.000000</span><br><span class="line">A( 3)        3.000000</span><br><span class="line">A( 4)        4.000000</span><br><span class="line">B( 1)        6.000000</span><br><span class="line">B( 2)        5.000000</span><br><span class="line">B( 3)        4.000000</span><br><span class="line">B( 4)        3.000000</span><br><span class="line">X( 1)        1.000000</span><br><span class="line">X( 2)        1.000000</span><br><span class="line">X( 3)        1.000000</span><br><span class="line">Y( 1)        0.000000</span><br><span class="line">Y( 2)        0.000000</span><br><span class="line">Y( 3)        0.000000</span><br></pre></td></tr></table></figure><ul><li>不是每个矩阵都要赋初值</li><li>要么赋满，要么全都设为一样</li><li><code>data:</code>和<code>enddata</code>标注起止</li></ul><h2 id="循环与求和"><a class="markdownIt-Anchor" href="#循环与求和"></a> 循环与求和</h2><p>上述题目可以用以下代码求解：</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">sets:</span><br><span class="line">f/<span class="number">1.</span><span class="number">.5</span>/: a, x;</span><br><span class="line">endsets</span><br><span class="line"><span class="built_in">max</span> = s;</span><br><span class="line">@<span class="keyword">for</span>(f(i): a(i) * x(i) = s);</span><br><span class="line">@<span class="keyword">for</span>(f(i): a(i) = i);!可用data:a=<span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span>,<span class="number">4</span>,<span class="number">5</span>;enddata</span><br><span class="line">@sum(f(i):x(i)) = <span class="number">5000</span>;</span><br></pre></td></tr></table></figure><ul><li><code>@for()</code>表示循环，先写工厂，表示循环次数</li><li><code>@sum()</code>表示求和，先写工厂，表示求和元素</li><li>在一维的情况下，可以改写为类似<code>@for(f: a * x = s);</code></li></ul><h2 id="二维矩阵"><a class="markdownIt-Anchor" href="#二维矩阵"></a> 二维矩阵</h2><p>求解：</p><p class='katex-block'><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>m</mi><mi>i</mi><mi>n</mi><mtext> </mtext><mi>z</mi><mo>=</mo><munderover><mo>∑</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mn>6</mn></munderover><munderover><mo>∑</mo><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mn>8</mn></munderover><msub><mi>c</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub><msub><mi>x</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub><mspace linebreak="newline"></mspace><mi>s</mi><mi mathvariant="normal">.</mi><mi>t</mi><mi mathvariant="normal">.</mi><mrow><mo fence="true">{</mo><mtable rowspacing="0.24999999999999992em" columnalign="right left right" columnspacing="0em 1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><munderover><mo>∑</mo><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mn>8</mn></munderover><msub><mi>x</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub><mo>≤</mo><msub><mi>a</mi><mi>i</mi></msub><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mi>i</mi><mo>=</mo><mn>1</mn><mo separator="true">,</mo><mn>2</mn><mo separator="true">,</mo><mi mathvariant="normal">.</mi><mi mathvariant="normal">.</mi><mi mathvariant="normal">.</mi><mo separator="true">,</mo><mn>6</mn></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><munderover><mo>∑</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mn>6</mn></munderover><msub><mi>x</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub><mo>=</mo><msub><mi>d</mi><mi>j</mi></msub><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mi>j</mi><mo>=</mo><mn>1</mn><mo separator="true">,</mo><mn>2</mn><mo separator="true">,</mo><mi mathvariant="normal">.</mi><mi mathvariant="normal">.</mi><mi mathvariant="normal">.</mi><mo separator="true">,</mo><mn>8</mn></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><msub><mi>x</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub><mo>≥</mo><mn>0</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mi>i</mi><mo>=</mo><mn>1</mn><mo separator="true">,</mo><mn>2</mn><mo separator="true">,</mo><mi mathvariant="normal">.</mi><mi mathvariant="normal">.</mi><mi mathvariant="normal">.</mi><mo separator="true">,</mo><mn>6</mn><mo separator="true">,</mo><mi>j</mi><mo>=</mo><mn>1</mn><mo separator="true">,</mo><mn>2</mn><mo separator="true">,</mo><mi mathvariant="normal">.</mi><mi mathvariant="normal">.</mi><mi mathvariant="normal">.</mi><mo separator="true">,</mo><mn>8</mn></mrow></mstyle></mtd></mtr></mtable></mrow></mrow><annotation encoding="application/x-tex">    min\ z = \sum_{i=1}^6\sum_{j=1}^8c_{ij}x_{ij}\\    s.t.\left\{        \begin{aligned}        &amp;\sum_{j=1}^8x_{ij}\leq a_i, &amp;i=1,2,...,6\\        &amp;\sum_{i=1}^6x_{ij}=d_j, &amp;j=1,2,...,8\\        &amp;x_{ij}\geq0, &amp;i=1,2,...,6,j=1,2,...,8        \end{aligned}        \right.</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.65952em;vertical-align:0em;"></span><span class="mord mathdefault">m</span><span class="mord mathdefault">i</span><span class="mord mathdefault">n</span><span class="mspace"> </span><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:3.2148900000000005em;vertical-align:-1.4137769999999998em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.8011130000000004em;"><span style="top:-1.872331em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mrel mtight">=</span><span class="mord mtight">1</span></span></span></span><span style="top:-3.050005em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∑</span></span></span><span style="top:-4.3000050000000005em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">6</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:1.277669em;"><span></span></span></span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.8011130000000004em;"><span style="top:-1.872331em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight" style="margin-right:0.05724em;">j</span><span class="mrel mtight">=</span><span class="mord mtight">1</span></span></span></span><span style="top:-3.050005em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∑</span></span></span><span style="top:-4.3000050000000005em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">8</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:1.4137769999999998em;"><span></span></span></span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mord mathdefault">c</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mord mathdefault mtight" style="margin-right:0.05724em;">j</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.286108em;"><span></span></span></span></span></span></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mord mathdefault mtight" style="margin-right:0.05724em;">j</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.286108em;"><span></span></span></span></span></span></span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:8.400039999999999em;vertical-align:-3.9500200000000003em;"></span><span class="mord mathdefault">s</span><span class="mord">.</span><span class="mord mathdefault">t</span><span class="mord">.</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen"><span class="delimsizing mult"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:4.4500199999999985em;"><span style="top:-0.09998999999999958em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎩</span></span></span><span style="top:-0.09998999999999958em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top:-0.3999899999999994em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top:-0.6999899999999992em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top:-0.999989999999999em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top:-1.299989999999999em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top:-1.5999899999999991em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top:-1.8999899999999992em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top:-2.1999899999999992em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top:-3.1500099999999995em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎨</span></span></span><span style="top:-4.300009999999999em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top:-4.600009999999999em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top:-4.900009999999999em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top:-5.200009999999999em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top:-5.50001em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top:-5.8000099999999986em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top:-6.100009999999999em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top:-6.400009999999998em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top:-6.7000199999999985em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎧</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:3.9500200000000003em;"><span></span></span></span></span></span></span><span class="mord"><span class="mtable"><span class="col-align-r"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:4.446836em;"><span style="top:-6.446836000000001em;"><span class="pstrut" style="height:3.8011130000000004em;"></span><span class="mord"></span></span><span style="top:-2.931946em;"><span class="pstrut" style="height:3.8011130000000004em;"></span><span class="mord"></span></span><span style="top:-0.5142770000000003em;"><span class="pstrut" style="height:3.8011130000000004em;"></span><span class="mord"></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:3.9468360000000002em;"><span></span></span></span></span></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:4.446836em;"><span style="top:-6.446836000000001em;"><span class="pstrut" style="height:3.8011130000000004em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.8011130000000004em;"><span style="top:-1.872331em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight" style="margin-right:0.05724em;">j</span><span class="mrel mtight">=</span><span class="mord mtight">1</span></span></span></span><span style="top:-3.050005em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∑</span></span></span><span style="top:-4.3000050000000005em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">8</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:1.4137769999999998em;"><span></span></span></span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mord mathdefault mtight" style="margin-right:0.05724em;">j</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.286108em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">≤</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord"><span class="mord mathdefault">a</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mpunct">,</span></span></span><span style="top:-2.931946em;"><span class="pstrut" style="height:3.8011130000000004em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.8011130000000004em;"><span style="top:-1.872331em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mrel mtight">=</span><span class="mord mtight">1</span></span></span></span><span style="top:-3.050005em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∑</span></span></span><span style="top:-4.3000050000000005em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">6</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:1.277669em;"><span></span></span></span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mord mathdefault mtight" style="margin-right:0.05724em;">j</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.286108em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight" style="margin-right:0.05724em;">j</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.286108em;"><span></span></span></span></span></span></span><span class="mpunct">,</span></span></span><span style="top:-0.5142770000000003em;"><span class="pstrut" style="height:3.8011130000000004em;"></span><span class="mord"><span class="mord"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mord mathdefault mtight" style="margin-right:0.05724em;">j</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.286108em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">≥</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord">0</span><span class="mpunct">,</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:3.9468360000000002em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:1em;"></span><span class="col-align-r"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:4.446836em;"><span style="top:-6.446836000000001em;"><span class="pstrut" style="height:3.8011130000000004em;"></span><span class="mord"><span class="mord mathdefault">i</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord">1</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">2</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">.</span><span class="mord">.</span><span class="mord">.</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">6</span></span></span><span style="top:-2.931946em;"><span class="pstrut" style="height:3.8011130000000004em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.05724em;">j</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord">1</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">2</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">.</span><span class="mord">.</span><span class="mord">.</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">8</span></span></span><span style="top:-0.5142770000000003em;"><span class="pstrut" style="height:3.8011130000000004em;"></span><span class="mord"><span class="mord mathdefault">i</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord">1</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">2</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">.</span><span class="mord">.</span><span class="mord">.</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">6</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathdefault" style="margin-right:0.05724em;">j</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord">1</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">2</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">.</span><span class="mord">.</span><span class="mord">.</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">8</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:3.9468360000000002em;"><span></span></span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span></span></p><p>其中：</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">a &#x3D; 60,55,51,43,41,52</span><br><span class="line">d &#x3D; 35,37,22,32,41,32,43,38</span><br><span class="line">c &#x3D; 6,2,6,7,4,2,5,8</span><br><span class="line">    4,9,5,3,8,5,8,2</span><br><span class="line">    5,2,1,9,7,4,3,3</span><br><span class="line">    7,6,7,3,9,2,7,1</span><br><span class="line">    2,3,9,5,7,2,6,5</span><br><span class="line">    5,5,2,2,8,1,4,3</span><br></pre></td></tr></table></figure><p><code>lingo</code>代码为：</p><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br></pre></td><td class="code"><pre><span class="line">model:</span><br><span class="line"></span><br><span class="line">sets:</span><br><span class="line">row/<span class="number">1.</span><span class="number">.6</span>/: a;</span><br><span class="line">col/<span class="number">1.</span><span class="number">.8</span>/: d;</span><br><span class="line">factory(row, col): c, x;</span><br><span class="line">endsets</span><br><span class="line"></span><br><span class="line">data:</span><br><span class="line">a = <span class="number">60</span>,<span class="number">55</span>,<span class="number">51</span>,<span class="number">43</span>,<span class="number">41</span>,<span class="number">52</span>;</span><br><span class="line">d = <span class="number">35</span>,<span class="number">37</span>,<span class="number">22</span>,<span class="number">32</span>,<span class="number">41</span>,<span class="number">32</span>,<span class="number">43</span>,<span class="number">38</span>;</span><br><span class="line">c = <span class="number">6</span>,<span class="number">2</span>,<span class="number">6</span>,<span class="number">7</span>,<span class="number">4</span>,<span class="number">2</span>,<span class="number">5</span>,<span class="number">8</span></span><br><span class="line">    <span class="number">4</span>,<span class="number">9</span>,<span class="number">5</span>,<span class="number">3</span>,<span class="number">8</span>,<span class="number">5</span>,<span class="number">8</span>,<span class="number">2</span></span><br><span class="line">    <span class="number">5</span>,<span class="number">2</span>,<span class="number">1</span>,<span class="number">9</span>,<span class="number">7</span>,<span class="number">4</span>,<span class="number">3</span>,<span class="number">3</span></span><br><span class="line">    <span class="number">7</span>,<span class="number">6</span>,<span class="number">7</span>,<span class="number">3</span>,<span class="number">9</span>,<span class="number">2</span>,<span class="number">7</span>,<span class="number">1</span></span><br><span class="line">    <span class="number">2</span>,<span class="number">3</span>,<span class="number">9</span>,<span class="number">5</span>,<span class="number">7</span>,<span class="number">2</span>,<span class="number">6</span>,<span class="number">5</span></span><br><span class="line">    <span class="number">5</span>,<span class="number">5</span>,<span class="number">2</span>,<span class="number">2</span>,<span class="number">8</span>,<span class="number">1</span>,<span class="number">4</span>,<span class="number">3</span>;</span><br><span class="line">enddata</span><br><span class="line"></span><br><span class="line">!<span class="built_in">min</span> = @sum(row(i):@sum(col(j): c(i,j)*x(i,j)));</span><br><span class="line"><span class="built_in">min</span> = @sum(factory(i, j): c(i, j)*x(i, j));</span><br><span class="line">@<span class="keyword">for</span>(row(i): @sum(col(j): x(i, j)) &lt;= a(i));</span><br><span class="line">@<span class="keyword">for</span>(col(j): @sum(row(i): x(i, j)) = d(j));</span><br><span class="line"></span><br><span class="line"><span class="built_in">end</span></span><br></pre></td></tr></table></figure><h1 id="内置函数"><a class="markdownIt-Anchor" href="#内置函数"></a> 内置函数</h1><h2 id="数学函数"><a class="markdownIt-Anchor" href="#数学函数"></a> 数学函数</h2><table><thead><tr><th>函数</th><th>作用</th></tr></thead><tbody><tr><td><code>@abs(x)</code></td><td>返回<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>x</mi></mrow><annotation encoding="application/x-tex">x</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathdefault">x</span></span></span></span>的绝对值</td></tr><tr><td><code>@sin(x)</code></td><td>返回<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>x</mi></mrow><annotation encoding="application/x-tex">x</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathdefault">x</span></span></span></span>的正弦值，<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>x</mi></mrow><annotation encoding="application/x-tex">x</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathdefault">x</span></span></span></span>采用弧度制</td></tr><tr><td><code>@cos(x)</code></td><td>返回<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>x</mi></mrow><annotation encoding="application/x-tex">x</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathdefault">x</span></span></span></span>的余弦值</td></tr><tr><td><code>@tan(x)</code></td><td>返回<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>x</mi></mrow><annotation encoding="application/x-tex">x</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathdefault">x</span></span></span></span>的正切值</td></tr><tr><td><code>@exp(x)</code></td><td>返回常数<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>e</mi></mrow><annotation encoding="application/x-tex">e</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathdefault">e</span></span></span></span>的<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>x</mi></mrow><annotation encoding="application/x-tex">x</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathdefault">x</span></span></span></span>次方</td></tr><tr><td><code>@log(x)</code></td><td>返回<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>x</mi></mrow><annotation encoding="application/x-tex">x</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathdefault">x</span></span></span></span>的自然对数</td></tr><tr><td><code>@lgm(x)</code></td><td>返回<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>x</mi></mrow><annotation encoding="application/x-tex">x</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathdefault">x</span></span></span></span>的<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>g</mi><mi>a</mi><mi>m</mi><mi>m</mi><mi>a</mi></mrow><annotation encoding="application/x-tex">gamma</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord mathdefault" style="margin-right:0.03588em;">g</span><span class="mord mathdefault">a</span><span class="mord mathdefault">m</span><span class="mord mathdefault">m</span><span class="mord mathdefault">a</span></span></span></span>函数的自然对数</td></tr><tr><td><code>@sign(x)</code></td><td>如果<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>x</mi><mo>&lt;</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">x&lt;0</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.5782em;vertical-align:-0.0391em;"></span><span class="mord mathdefault">x</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">&lt;</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">0</span></span></span></span>返回<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mo>−</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">-1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.72777em;vertical-align:-0.08333em;"></span><span class="mord">−</span><span class="mord">1</span></span></span></span>；否则，返回<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>1</mn></mrow><annotation encoding="application/x-tex">1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span></span></span></span></td></tr><tr><td><code>@floor(x)</code></td><td>返回<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>x</mi></mrow><annotation encoding="application/x-tex">x</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathdefault">x</span></span></span></span>的整数部分。当<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>x</mi><mo>≥</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">x\geq0</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.7719400000000001em;vertical-align:-0.13597em;"></span><span class="mord mathdefault">x</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">≥</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">0</span></span></span></span>时，返回不超过<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>x</mi></mrow><annotation encoding="application/x-tex">x</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathdefault">x</span></span></span></span>的最大整数；当<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>x</mi><mo>&lt;</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">x&lt;0</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.5782em;vertical-align:-0.0391em;"></span><span class="mord mathdefault">x</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">&lt;</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">0</span></span></span></span>时，返回不低于<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>x</mi></mrow><annotation encoding="application/x-tex">x</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathdefault">x</span></span></span></span>的最大整数。</td></tr><tr><td><code>@smax(x1,x2,…,xn)</code></td><td>返回<span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>x</mi><mn>1</mn></msub><mo separator="true">,</mo><msub><mi>x</mi><mn>2</mn></msub><mo separator="true">,</mo><mi mathvariant="normal">.</mi><mi mathvariant="normal">.</mi><mi mathvariant="normal">.</mi><mo separator="true">,</mo><msub><mi>x</mi><mi>n</mi></msub></mrow><annotation encoding="application/x-tex">x_1,x_2,...,x_n</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">.</span><span class="mord">.</span><span class="mord">.</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span>中的最大值</td></tr><tr><td><code>@smin(x1,x2,…,xn)</code></td><td>返回<span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>x</mi><mn>1</mn></msub><mo separator="true">,</mo><msub><mi>x</mi><mn>2</mn></msub><mo separator="true">,</mo><mi mathvariant="normal">.</mi><mi mathvariant="normal">.</mi><mi mathvariant="normal">.</mi><mo separator="true">,</mo><msub><mi>x</mi><mi>n</mi></msub></mrow><annotation encoding="application/x-tex">x_1,x_2,...,x_n</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">.</span><span class="mord">.</span><span class="mord">.</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span>中的最小值</td></tr></tbody></table><h2 id="变量界定函数"><a class="markdownIt-Anchor" href="#变量界定函数"></a> 变量界定函数</h2><table><thead><tr><th>函数</th><th>作用</th></tr></thead><tbody><tr><td><code>@bin(x)</code></td><td>限制<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>x</mi></mrow><annotation encoding="application/x-tex">x</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathdefault">x</span></span></span></span>只能取<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>0</mn></mrow><annotation encoding="application/x-tex">0</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">0</span></span></span></span>或<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>1</mn></mrow><annotation encoding="application/x-tex">1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span></span></span></span></td></tr><tr><td><code>@gin(x)</code></td><td>限制<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>x</mi></mrow><annotation encoding="application/x-tex">x</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathdefault">x</span></span></span></span>只能取整数</td></tr><tr><td><code>@bnd(L, x, U)</code></td><td>限制<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>L</mi><mo>≤</mo><mi>x</mi><mo>≤</mo><mi>U</mi></mrow><annotation encoding="application/x-tex">L\leq x\leq U</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8193em;vertical-align:-0.13597em;"></span><span class="mord mathdefault">L</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">≤</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.7719400000000001em;vertical-align:-0.13597em;"></span><span class="mord mathdefault">x</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">≤</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.10903em;">U</span></span></span></span></td></tr><tr><td><code>@free(x)</code></td><td>取消对变量<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>x</mi></mrow><annotation encoding="application/x-tex">x</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathdefault">x</span></span></span></span>的默认下界为0的限制</td></tr></tbody></table>]]></content>
    
    <summary type="html">
    
      
      
        &lt;h1 id=&quot;lingo基础&quot;&gt;&lt;a class=&quot;markdownIt-Anchor&quot; href=&quot;#lingo基础&quot;&gt;&lt;/a&gt; Lingo基础&lt;/h1&gt;
&lt;h2 id=&quot;lingo解方程&quot;&gt;&lt;a class=&quot;markdownIt-Anchor&quot; href=&quot;#lingo解
      
    
    </summary>
    
    
    
  </entry>
  
  <entry>
    <title>Cellular-automata</title>
    <link href="http://blog.raincur.com/2021/01/20/Cellular-automata/"/>
    <id>http://blog.raincur.com/2021/01/20/Cellular-automata/</id>
    <published>2021-01-20T13:20:23.427Z</published>
    <updated>2021-01-20T14:37:29.112Z</updated>
    
    <content type="html"><![CDATA[<h1 id="应用"><a class="markdownIt-Anchor" href="#应用"></a> 应用</h1>]]></content>
    
    <summary type="html">
    
      
      
        &lt;h1 id=&quot;应用&quot;&gt;&lt;a class=&quot;markdownIt-Anchor&quot; href=&quot;#应用&quot;&gt;&lt;/a&gt; 应用&lt;/h1&gt;

      
    
    </summary>
    
    
    
  </entry>
  
  <entry>
    <title>queuing-theory</title>
    <link href="http://blog.raincur.com/2021/01/20/queuing-theory/"/>
    <id>http://blog.raincur.com/2021/01/20/queuing-theory/</id>
    <published>2021-01-20T07:40:38.180Z</published>
    <updated>2021-01-20T13:34:27.890Z</updated>
    
    <content type="html"><![CDATA[<h1 id="排队论"><a class="markdownIt-Anchor" href="#排队论"></a> 排队论</h1><h2 id="排队论的基本构成"><a class="markdownIt-Anchor" href="#排队论的基本构成"></a> 排队论的基本构成</h2><ul><li><p>输入过程：描述顾客按照怎样的规律到达排队系统。顾客总体（有限/无限），到达的类型（单个/成批）、到达时间间隔等。</p></li><li><p>排队规则：指顾客按怎样的规定次序接受服务。常见的有等待制、损失制、混合制、闭合制等。</p></li><li><p>服务机构：服务台的数量；服务时间服从的分布。</p></li></ul><h2 id="排队系统的数量指标"><a class="markdownIt-Anchor" href="#排队系统的数量指标"></a> 排队系统的数量指标</h2><ul><li>队长：系统中的平均顾客数（包括正在接受服务的顾客）</li><li>等待队长：系统中处于等待的顾客的数量</li><li>等待时间：等待时间包括顾客的平均逗留时间</li><li>忙期：连续保持服务的时长</li></ul><h2 id="排队论中的符号表示"><a class="markdownIt-Anchor" href="#排队论中的符号表示"></a> 排队论中的符号表示</h2><p class='katex-block'><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>A</mi><mi mathvariant="normal">/</mi><mi>B</mi><mi mathvariant="normal">/</mi><mi>C</mi><mi mathvariant="normal">/</mi><mi>n</mi></mrow><annotation encoding="application/x-tex">A/B/C/n</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault">A</span><span class="mord">/</span><span class="mord mathdefault" style="margin-right:0.05017em;">B</span><span class="mord">/</span><span class="mord mathdefault" style="margin-right:0.07153em;">C</span><span class="mord">/</span><span class="mord mathdefault">n</span></span></span></span></span></p><p><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>A</mi></mrow><annotation encoding="application/x-tex">A</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord mathdefault">A</span></span></span></span>输入过程，<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>B</mi></mrow><annotation encoding="application/x-tex">B</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.05017em;">B</span></span></span></span>服务时间，<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>C</mi></mrow><annotation encoding="application/x-tex">C</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.07153em;">C</span></span></span></span>服务台数，<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>n</mi></mrow><annotation encoding="application/x-tex">n</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathdefault">n</span></span></span></span>系统容量。</p><p>例如：<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>M</mi><mi mathvariant="normal">/</mi><mi>M</mi><mi mathvariant="normal">/</mi><mi>S</mi><mi mathvariant="normal">/</mi><mi mathvariant="normal">∞</mi></mrow><annotation encoding="application/x-tex">M/M/S/\infty</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault" style="margin-right:0.10903em;">M</span><span class="mord">/</span><span class="mord mathdefault" style="margin-right:0.10903em;">M</span><span class="mord">/</span><span class="mord mathdefault" style="margin-right:0.05764em;">S</span><span class="mord">/</span><span class="mord">∞</span></span></span></span></p><ul><li>输入过程是<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>P</mi><mi>o</mi><mi>i</mi><mi>s</mi><mi>s</mi><mi>o</mi><mi>n</mi></mrow><annotation encoding="application/x-tex">Poisson</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.13889em;">P</span><span class="mord mathdefault">o</span><span class="mord mathdefault">i</span><span class="mord mathdefault">s</span><span class="mord mathdefault">s</span><span class="mord mathdefault">o</span><span class="mord mathdefault">n</span></span></span></span>流</li><li>服务时间服从负指数分布</li><li>系统有<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>S</mi></mrow><annotation encoding="application/x-tex">S</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.05764em;">S</span></span></span></span>个服务台平行服务</li><li>系统容量为无穷大的等待制排队系统</li></ul><p><strong>参数为<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>λ</mi></mrow><annotation encoding="application/x-tex">\lambda</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathdefault">λ</span></span></span></span>的<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>P</mi><mi>o</mi><mi>i</mi><mi>s</mi><mi>s</mi><mi>o</mi><mi>n</mi></mrow><annotation encoding="application/x-tex">Poisson</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.13889em;">P</span><span class="mord mathdefault">o</span><span class="mord mathdefault">i</span><span class="mord mathdefault">s</span><span class="mord mathdefault">s</span><span class="mord mathdefault">o</span><span class="mord mathdefault">n</span></span></span></span>分布：</strong></p><p class='katex-block'><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>P</mi><mi>n</mi></msub><mo stretchy="false">(</mo><mi>t</mi><mo stretchy="false">)</mo><mo>=</mo><mfrac><mrow><mo stretchy="false">(</mo><mi>λ</mi><mi>t</mi><msup><mo stretchy="false">)</mo><mi>n</mi></msup></mrow><mrow><mi>n</mi><mo stretchy="false">!</mo></mrow></mfrac><msup><mi>e</mi><mrow><mo>−</mo><mi>λ</mi><mi>t</mi></mrow></msup></mrow><annotation encoding="application/x-tex">P_n(t) = \frac{(\lambda t)^n}{n!}e^{-\lambda t}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.13889em;">P</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.13889em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mopen">(</span><span class="mord mathdefault">t</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.113em;vertical-align:-0.686em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.427em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">n</span><span class="mclose">!</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mopen">(</span><span class="mord mathdefault">λ</span><span class="mord mathdefault">t</span><span class="mclose"><span class="mclose">)</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.664392em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span></span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mord"><span class="mord mathdefault">e</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8991079999999999em;"><span style="top:-3.113em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">−</span><span class="mord mathdefault mtight">λ</span><span class="mord mathdefault mtight">t</span></span></span></span></span></span></span></span></span></span></span></span></span></p><p><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mo stretchy="false">[</mo><mn>0</mn><mo separator="true">,</mo><mi>t</mi><mo stretchy="false">]</mo></mrow><annotation encoding="application/x-tex">[0,t]</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">[</span><span class="mord">0</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathdefault">t</span><span class="mclose">]</span></span></span></span>时间内到达的顾客平均数为<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>λ</mi><mi>t</mi></mrow><annotation encoding="application/x-tex">\lambda t</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathdefault">λ</span><span class="mord mathdefault">t</span></span></span></span>。</p><p><strong>参数为<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>μ</mi></mrow><annotation encoding="application/x-tex">\mu</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord mathdefault">μ</span></span></span></span>的负指数分布：</strong></p><p class='katex-block'><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>f</mi><mo stretchy="false">(</mo><mi>t</mi><mo stretchy="false">)</mo><mo>=</mo><mi>μ</mi><msup><mi>e</mi><mrow><mo>−</mo><mi>μ</mi><mi>t</mi></mrow></msup><mo stretchy="false">(</mo><mi>t</mi><mo>&gt;</mo><mn>0</mn><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">f(t) =\mu e^{-\mu t}(t&gt;0)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault" style="margin-right:0.10764em;">f</span><span class="mopen">(</span><span class="mord mathdefault">t</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1.093556em;vertical-align:-0.25em;"></span><span class="mord mathdefault">μ</span><span class="mord"><span class="mord mathdefault">e</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.843556em;"><span style="top:-3.1130000000000004em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">−</span><span class="mord mathdefault mtight">μ</span><span class="mord mathdefault mtight">t</span></span></span></span></span></span></span></span></span><span class="mopen">(</span><span class="mord mathdefault">t</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">&gt;</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">0</span><span class="mclose">)</span></span></span></span></span></p><p>每个顾客接受服务的平均时间为<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mfrac><mn>1</mn><mi>μ</mi></mfrac></mrow><annotation encoding="application/x-tex">\frac{1}{\mu}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1.326216em;vertical-align:-0.481108em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.845108em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">μ</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.481108em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span>。</p><p>那么假设<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>λ</mi><mo>≥</mo><mi>μ</mi></mrow><annotation encoding="application/x-tex">\lambda \geq \mu</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.83041em;vertical-align:-0.13597em;"></span><span class="mord mathdefault">λ</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">≥</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord mathdefault">μ</span></span></span></span>，那么显然服务队列中的人数将趋于无穷，队列是不稳定的。</p><h3 id="重要统计量"><a class="markdownIt-Anchor" href="#重要统计量"></a> 重要统计量</h3><ul><li>系统的服务强度：<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>ρ</mi><mo>=</mo><mfrac><mi>λ</mi><mi>μ</mi></mfrac></mrow><annotation encoding="application/x-tex">\rho = \frac{\lambda}{\mu}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord mathdefault">ρ</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1.3612159999999998em;vertical-align:-0.481108em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8801079999999999em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">μ</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">λ</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.481108em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span></li><li>无顾客的概率：<span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>p</mi><mn>0</mn></msub><mo>=</mo><mn>1</mn><mo>−</mo><mi>ρ</mi><mo>=</mo><mn>1</mn><mo>−</mo><mfrac><mi>λ</mi><mi>μ</mi></mfrac></mrow><annotation encoding="application/x-tex">p_0 = 1 - \rho = 1 - \frac{\lambda}{\mu}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord"><span class="mord mathdefault">p</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">0</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.72777em;vertical-align:-0.08333em;"></span><span class="mord">1</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord mathdefault">ρ</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.72777em;vertical-align:-0.08333em;"></span><span class="mord">1</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:1.3612159999999998em;vertical-align:-0.481108em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8801079999999999em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">μ</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">λ</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.481108em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span></li><li>有<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>n</mi></mrow><annotation encoding="application/x-tex">n</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathdefault">n</span></span></span></span>个顾客的概率：<span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>ρ</mi><mi>n</mi></msub><mo>=</mo><mo stretchy="false">(</mo><mn>1</mn><mo>−</mo><mi>ρ</mi><mo stretchy="false">)</mo><msup><mi>ρ</mi><mi>n</mi></msup></mrow><annotation encoding="application/x-tex">\rho_n = (1 - \rho)\rho^n</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord"><span class="mord mathdefault">ρ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord">1</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault">ρ</span><span class="mclose">)</span><span class="mord"><span class="mord mathdefault">ρ</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.664392em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span></span></span></span></span></span></span></li><li>平均队长：<p class='katex-block'><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>L</mi><mi>s</mi></msub><mo>=</mo><munderover><mo>∑</mo><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mi mathvariant="normal">∞</mi></munderover><mi>n</mi><msub><mi>p</mi><mi>n</mi></msub><mo>=</mo><mo stretchy="false">(</mo><mn>1</mn><mo>−</mo><mi>ρ</mi><mo stretchy="false">)</mo><munderover><mo>∑</mo><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mi mathvariant="normal">∞</mi></munderover><mi>n</mi><msup><mi>ρ</mi><mi>n</mi></msup><mo>=</mo><mfrac><mi>ρ</mi><mrow><mn>1</mn><mo>−</mo><mi>ρ</mi></mrow></mfrac><mo>=</mo><mfrac><mi>λ</mi><mrow><mi>μ</mi><mo>−</mo><mi>λ</mi></mrow></mfrac></mrow><annotation encoding="application/x-tex">L_s = \sum_{n=0}^\infty np_n = (1 - \rho)\sum_{n=0}^\infty n\rho^n=\frac{\rho}{1-\rho}=\frac{\lambda}{\mu-\lambda}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.83333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault">L</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">s</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.9185100000000004em;vertical-align:-1.267113em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.6513970000000002em;"><span style="top:-1.882887em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mrel mtight">=</span><span class="mord mtight">0</span></span></span></span><span style="top:-3.050005em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∑</span></span></span><span style="top:-4.3000050000000005em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">∞</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:1.267113em;"><span></span></span></span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathdefault">n</span><span class="mord"><span class="mord mathdefault">p</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord">1</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:2.9185100000000004em;vertical-align:-1.267113em;"></span><span class="mord mathdefault">ρ</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.6513970000000002em;"><span style="top:-1.882887em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mrel mtight">=</span><span class="mord mtight">0</span></span></span></span><span style="top:-3.050005em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∑</span></span></span><span style="top:-4.3000050000000005em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">∞</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:1.267113em;"><span></span></span></span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathdefault">n</span><span class="mord"><span class="mord mathdefault">ρ</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7143919999999999em;"><span style="top:-3.113em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1.988em;vertical-align:-0.8804400000000001em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.1075599999999999em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mord mathdefault">ρ</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">ρ</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.8804400000000001em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.25188em;vertical-align:-0.8804400000000001em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.37144em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">μ</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mord mathdefault">λ</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">λ</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.8804400000000001em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span></span></p></li><li>平均等待队长：<p class='katex-block'><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>L</mi><mi>q</mi></msub><mo>=</mo><munderover><mo>∑</mo><mrow><mi>n</mi><mo>=</mo><mn>1</mn></mrow><mi mathvariant="normal">∞</mi></munderover><mo stretchy="false">(</mo><mi>n</mi><mo>−</mo><mn>1</mn><mo stretchy="false">)</mo><msub><mi>p</mi><mi>n</mi></msub><mo>=</mo><mo stretchy="false">(</mo><mn>1</mn><mo>−</mo><mi>ρ</mi><mo stretchy="false">)</mo><munderover><mo>∑</mo><mrow><mi>n</mi><mo>=</mo><mn>1</mn></mrow><mi mathvariant="normal">∞</mi></munderover><mo stretchy="false">(</mo><mi>n</mi><mo>−</mo><mn>1</mn><mo stretchy="false">)</mo><msup><mi>ρ</mi><mi>n</mi></msup><mo>=</mo><mfrac><msup><mi>ρ</mi><mn>2</mn></msup><mrow><mn>1</mn><mo>−</mo><mi>ρ</mi></mrow></mfrac><mo>=</mo><mfrac><msup><mi>λ</mi><mn>2</mn></msup><mrow><mi>μ</mi><mo stretchy="false">(</mo><mi>μ</mi><mo>−</mo><mi>λ</mi><mo stretchy="false">)</mo></mrow></mfrac></mrow><annotation encoding="application/x-tex">L_q=\sum_{n=1}^\infty(n-1)p_n=(1-\rho)\sum_{n=1}^\infty(n-1)\rho^n=\frac{\rho^2}{1-\rho}=\frac{\lambda^2}{\mu(\mu-\lambda)}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.969438em;vertical-align:-0.286108em;"></span><span class="mord"><span class="mord mathdefault">L</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.15139200000000003em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight" style="margin-right:0.03588em;">q</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.286108em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.9185100000000004em;vertical-align:-1.267113em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.6513970000000002em;"><span style="top:-1.882887em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mrel mtight">=</span><span class="mord mtight">1</span></span></span></span><span style="top:-3.050005em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∑</span></span></span><span style="top:-4.3000050000000005em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">∞</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:1.267113em;"><span></span></span></span></span></span><span class="mopen">(</span><span class="mord mathdefault">n</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">1</span><span class="mclose">)</span><span class="mord"><span class="mord mathdefault">p</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord">1</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:2.9185100000000004em;vertical-align:-1.267113em;"></span><span class="mord mathdefault">ρ</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.6513970000000002em;"><span style="top:-1.882887em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mrel mtight">=</span><span class="mord mtight">1</span></span></span></span><span style="top:-3.050005em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∑</span></span></span><span style="top:-4.3000050000000005em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">∞</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:1.267113em;"><span></span></span></span></span></span><span class="mopen">(</span><span class="mord mathdefault">n</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">1</span><span class="mclose">)</span><span class="mord"><span class="mord mathdefault">ρ</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7143919999999999em;"><span style="top:-3.113em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.371548em;vertical-align:-0.8804400000000001em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.491108em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mord mathdefault">ρ</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">ρ</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8141079999999999em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.8804400000000001em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.427108em;vertical-align:-0.936em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.491108em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">μ</span><span class="mopen">(</span><span class="mord mathdefault">μ</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mord mathdefault">λ</span><span class="mclose">)</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">λ</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8141079999999999em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.936em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span></span></p></li><li>平均逗留时间：<p class='katex-block'><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>W</mi><mi>s</mi></msub><mo>=</mo><mfrac><mn>1</mn><mrow><mi>μ</mi><mo>−</mo><mi>λ</mi></mrow></mfrac></mrow><annotation encoding="application/x-tex">W_s=\frac{1}{\mu-\lambda}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.83333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.13889em;">W</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.13889em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">s</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.20188em;vertical-align:-0.8804400000000001em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.32144em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">μ</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mord mathdefault">λ</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.8804400000000001em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span></span></p></li><li>平均等待时间：<p class='katex-block'><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>W</mi><mi>q</mi></msub><mo>=</mo><mfrac><mn>1</mn><mrow><mi>μ</mi><mo>−</mo><mi>λ</mi></mrow></mfrac><mo>−</mo><mfrac><mn>1</mn><mi>μ</mi></mfrac><mo>=</mo><mfrac><mi>λ</mi><mrow><mi>μ</mi><mo stretchy="false">(</mo><mi>μ</mi><mo>−</mo><mi>λ</mi><mo stretchy="false">)</mo></mrow></mfrac></mrow><annotation encoding="application/x-tex">W_q=\frac{1}{\mu-\lambda}-\frac{1}{\mu}=\frac{\lambda}{\mu(\mu-\lambda)}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.969438em;vertical-align:-0.286108em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.13889em;">W</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.15139200000000003em;"><span style="top:-2.5500000000000003em;margin-left:-0.13889em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight" style="margin-right:0.03588em;">q</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.286108em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.20188em;vertical-align:-0.8804400000000001em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.32144em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">μ</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mord mathdefault">λ</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.8804400000000001em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:2.20188em;vertical-align:-0.8804400000000001em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.32144em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">μ</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.8804400000000001em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.30744em;vertical-align:-0.936em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.37144em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">μ</span><span class="mopen">(</span><span class="mord mathdefault">μ</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mord mathdefault">λ</span><span class="mclose">)</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">λ</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.936em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span></span></p></li><li><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>L</mi><mi>i</mi><mi>t</mi><mi>t</mi><mi>l</mi><mi>e</mi></mrow><annotation encoding="application/x-tex">Little</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathdefault">L</span><span class="mord mathdefault">i</span><span class="mord mathdefault">t</span><span class="mord mathdefault">t</span><span class="mord mathdefault" style="margin-right:0.01968em;">l</span><span class="mord mathdefault">e</span></span></span></span>公式：<p class='katex-block'><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>L</mi><mi>s</mi></msub><mo>=</mo><mi>λ</mi><msub><mi>W</mi><mi>s</mi></msub><mo separator="true">,</mo><msub><mi>L</mi><mi>q</mi></msub><mo>=</mo><mi>λ</mi><msub><mi>W</mi><mi>q</mi></msub></mrow><annotation encoding="application/x-tex">L_s=\lambda W_s, L_q=\lambda W_q</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.83333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault">L</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">s</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.980548em;vertical-align:-0.286108em;"></span><span class="mord mathdefault">λ</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.13889em;">W</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.13889em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">s</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mord mathdefault">L</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.15139200000000003em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight" style="margin-right:0.03588em;">q</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.286108em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.980548em;vertical-align:-0.286108em;"></span><span class="mord mathdefault">λ</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.13889em;">W</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.15139200000000003em;"><span style="top:-2.5500000000000003em;margin-left:-0.13889em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight" style="margin-right:0.03588em;">q</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.286108em;"><span></span></span></span></span></span></span></span></span></span></span></p></li></ul><h2 id="等待制模型-mmsinftys1"><a class="markdownIt-Anchor" href="#等待制模型-mmsinftys1"></a> 等待制模型 <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>M</mi><mi mathvariant="normal">/</mi><mi>M</mi><mi mathvariant="normal">/</mi><mi>S</mi><mi mathvariant="normal">/</mi><mi mathvariant="normal">∞</mi></mrow><annotation encoding="application/x-tex">M/M/S/\infty</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault" style="margin-right:0.10903em;">M</span><span class="mord">/</span><span class="mord mathdefault" style="margin-right:0.10903em;">M</span><span class="mord">/</span><span class="mord mathdefault" style="margin-right:0.05764em;">S</span><span class="mord">/</span><span class="mord">∞</span></span></span></span>：<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>S</mi><mo>&gt;</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">S&gt;1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.72243em;vertical-align:-0.0391em;"></span><span class="mord mathdefault" style="margin-right:0.05764em;">S</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">&gt;</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span></span></span></span></h2><ul><li>服务能力和强度：<p class='katex-block'><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>S</mi><mi>μ</mi><mo separator="true">,</mo><mi>ρ</mi><mo>=</mo><mfrac><mi>λ</mi><mrow><mi>s</mi><mi>μ</mi></mrow></mfrac></mrow><annotation encoding="application/x-tex">S\mu,\rho = \frac{\lambda}{s\mu}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8777699999999999em;vertical-align:-0.19444em;"></span><span class="mord mathdefault" style="margin-right:0.05764em;">S</span><span class="mord mathdefault">μ</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathdefault">ρ</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.25188em;vertical-align:-0.8804400000000001em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.37144em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">s</span><span class="mord mathdefault">μ</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">λ</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.8804400000000001em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span></span></p></li><li>服务台都空闲的概率：<p class='katex-block'><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>p</mi><mn>0</mn></msub><mo>=</mo><msup><mrow><mo fence="true">[</mo><munderover><mo>∑</mo><mrow><mi>k</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>S</mi><mo>−</mo><mn>1</mn></mrow></munderover><mfrac><mrow><mo stretchy="false">(</mo><mi>S</mi><mi>ρ</mi><msup><mo stretchy="false">)</mo><mi>k</mi></msup></mrow><mrow><mi>k</mi><mo stretchy="false">!</mo></mrow></mfrac><mo>+</mo><mfrac><mrow><mo stretchy="false">(</mo><mi>S</mi><mi>ρ</mi><msup><mo stretchy="false">)</mo><mi>S</mi></msup><mi>ρ</mi></mrow><mrow><mi>S</mi><mo stretchy="false">!</mo><mo stretchy="false">(</mo><mn>1</mn><mo>−</mo><mi>ρ</mi><mo stretchy="false">)</mo></mrow></mfrac><mo fence="true">]</mo></mrow><mrow><mo>−</mo><mn>1</mn></mrow></msup></mrow><annotation encoding="application/x-tex">p_{0}=\left[\sum_{k=0}^{S-1} \frac{(S \rho)^{k}}{k !}+\frac{(S \rho)^{S} \rho}{S !(1-\rho)}\right]^{-1}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord"><span class="mord mathdefault">p</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">0</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:3.3344570000000004em;vertical-align:-1.302113em;"></span><span class="minner"><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size4">[</span></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.8283360000000002em;"><span style="top:-1.8478869999999998em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight" style="margin-right:0.03148em;">k</span><span class="mrel mtight">=</span><span class="mord mtight">0</span></span></span></span><span style="top:-3.0500049999999996em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∑</span></span></span><span style="top:-4.300005em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight" style="margin-right:0.05764em;">S</span><span class="mbin mtight">−</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:1.302113em;"><span></span></span></span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.526108em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03148em;">k</span><span class="mclose">!</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mopen">(</span><span class="mord mathdefault" style="margin-right:0.05764em;">S</span><span class="mord mathdefault">ρ</span><span class="mclose"><span class="mclose">)</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.849108em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight" style="margin-right:0.03148em;">k</span></span></span></span></span></span></span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.5183309999999999em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.05764em;">S</span><span class="mclose">!</span><span class="mopen">(</span><span class="mord">1</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mord mathdefault">ρ</span><span class="mclose">)</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mopen">(</span><span class="mord mathdefault" style="margin-right:0.05764em;">S</span><span class="mord mathdefault">ρ</span><span class="mclose"><span class="mclose">)</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8413309999999999em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight" style="margin-right:0.05764em;">S</span></span></span></span></span></span></span></span></span><span class="mord mathdefault">ρ</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.936em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size4">]</span></span></span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:2.032344em;"><span style="top:-4.281236000000001em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">−</span><span class="mord mtight">1</span></span></span></span></span></span></span></span></span></span></span></span></span></p></li><li>平均队长<p class='katex-block'><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>L</mi><mi>s</mi></msub><mo>=</mo><mi>S</mi><mi>ρ</mi><mo>+</mo><mfrac><mrow><mo stretchy="false">(</mo><mi>S</mi><mi>ρ</mi><msup><mo stretchy="false">)</mo><mi>S</mi></msup><mi>ρ</mi></mrow><mrow><mi>S</mi><mo stretchy="false">!</mo><mo stretchy="false">(</mo><mn>1</mn><mo>−</mo><mi>ρ</mi><msup><mo stretchy="false">)</mo><mn>2</mn></msup></mrow></mfrac><mo>⋅</mo><msub><mi>p</mi><mn>0</mn></msub></mrow><annotation encoding="application/x-tex">L_{s}=S \rho+\frac{(S \rho)^{S} \rho}{S !(1-\rho)^{2}} \cdot p_{0}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.83333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault">L</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">s</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.8777699999999999em;vertical-align:-0.19444em;"></span><span class="mord mathdefault" style="margin-right:0.05764em;">S</span><span class="mord mathdefault">ρ</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:2.454331em;vertical-align:-0.936em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.5183309999999999em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.05764em;">S</span><span class="mclose">!</span><span class="mopen">(</span><span class="mord">1</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mord mathdefault">ρ</span><span class="mclose"><span class="mclose">)</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.740108em;"><span style="top:-2.9890000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mopen">(</span><span class="mord mathdefault" style="margin-right:0.05764em;">S</span><span class="mord mathdefault">ρ</span><span class="mclose"><span class="mclose">)</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8413309999999999em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight" style="margin-right:0.05764em;">S</span></span></span></span></span></span></span></span></span><span class="mord mathdefault">ρ</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.936em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">⋅</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord"><span class="mord mathdefault">p</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">0</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span></span></p></li></ul><h2 id="其他模型"><a class="markdownIt-Anchor" href="#其他模型"></a> 其他模型</h2><h3 id="损失制模型-mmss"><a class="markdownIt-Anchor" href="#损失制模型-mmss"></a> 损失制模型 <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>M</mi><mi mathvariant="normal">/</mi><mi>M</mi><mi mathvariant="normal">/</mi><mi>S</mi><mi mathvariant="normal">/</mi><mi>S</mi></mrow><annotation encoding="application/x-tex">M/M/S/S</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault" style="margin-right:0.10903em;">M</span><span class="mord">/</span><span class="mord mathdefault" style="margin-right:0.10903em;">M</span><span class="mord">/</span><span class="mord mathdefault" style="margin-right:0.05764em;">S</span><span class="mord">/</span><span class="mord mathdefault" style="margin-right:0.05764em;">S</span></span></span></span></h3><ul><li>顾客到达服从泊松分布，服务台服务时间服从指数分布</li><li>当<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>S</mi></mrow><annotation encoding="application/x-tex">S</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.05764em;">S</span></span></span></span>个服务台被占用后，顾客自动离开，不再等待</li></ul><h3 id="混合制模型-mmsk"><a class="markdownIt-Anchor" href="#混合制模型-mmsk"></a> 混合制模型 <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>M</mi><mi mathvariant="normal">/</mi><mi>M</mi><mi mathvariant="normal">/</mi><mi>S</mi><mi mathvariant="normal">/</mi><mi>K</mi></mrow><annotation encoding="application/x-tex">M/M/S/K</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault" style="margin-right:0.10903em;">M</span><span class="mord">/</span><span class="mord mathdefault" style="margin-right:0.10903em;">M</span><span class="mord">/</span><span class="mord mathdefault" style="margin-right:0.05764em;">S</span><span class="mord">/</span><span class="mord mathdefault" style="margin-right:0.07153em;">K</span></span></span></span></h3><ul><li>顾客到达服从泊松分布，服务台服务时间服从指数分布</li><li>系统容量为<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>K</mi></mrow><annotation encoding="application/x-tex">K</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.07153em;">K</span></span></span></span>，当K个位置被占用时，顾客自动离开</li></ul><h3 id="闭合制模型-mmskk"><a class="markdownIt-Anchor" href="#闭合制模型-mmskk"></a> 闭合制模型 <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>M</mi><mi mathvariant="normal">/</mi><mi>M</mi><mi mathvariant="normal">/</mi><mi>S</mi><mi mathvariant="normal">/</mi><mi>K</mi><mi mathvariant="normal">/</mi><mi>K</mi></mrow><annotation encoding="application/x-tex">M/M/S/K/K</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault" style="margin-right:0.10903em;">M</span><span class="mord">/</span><span class="mord mathdefault" style="margin-right:0.10903em;">M</span><span class="mord">/</span><span class="mord mathdefault" style="margin-right:0.05764em;">S</span><span class="mord">/</span><span class="mord mathdefault" style="margin-right:0.07153em;">K</span><span class="mord">/</span><span class="mord mathdefault" style="margin-right:0.07153em;">K</span></span></span></span></h3><ul><li>顾客到达服从泊松分布，服务台服务时间服从指数分布</li><li>系统容量和潜在的顾客数都为<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>K</mi></mrow><annotation encoding="application/x-tex">K</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.07153em;">K</span></span></span></span></li></ul>]]></content>
    
    <summary type="html">
    
      
      
        &lt;h1 id=&quot;排队论&quot;&gt;&lt;a class=&quot;markdownIt-Anchor&quot; href=&quot;#排队论&quot;&gt;&lt;/a&gt; 排队论&lt;/h1&gt;
&lt;h2 id=&quot;排队论的基本构成&quot;&gt;&lt;a class=&quot;markdownIt-Anchor&quot; href=&quot;#排队论的基本构成&quot;&gt;&lt;/a&gt; 排队论
      
    
    </summary>
    
    
    
  </entry>
  
  <entry>
    <title>Logistic-regression</title>
    <link href="http://blog.raincur.com/2021/01/18/Logistic-regression/"/>
    <id>http://blog.raincur.com/2021/01/18/Logistic-regression/</id>
    <published>2021-01-18T08:29:21.427Z</published>
    <updated>2021-01-18T09:26:08.903Z</updated>
    
    <content type="html"><![CDATA[<h1 id="梯度下降与逻辑回归"><a class="markdownIt-Anchor" href="#梯度下降与逻辑回归"></a> 梯度下降与逻辑回归</h1><p>承接<a href="http://orangecheers.top/index.php/archives/74/" target="_blank" rel="noopener">梯度下降实现线性拟合矩阵推导及实现</a>，线性回归用于拟合线性关系的数据。而逻辑回归更多用于二分类。即，因变量的值从连续的值变成了离散的<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mo stretchy="false">{</mo><mn>0</mn><mo separator="true">,</mo><mn>1</mn><mo stretchy="false">}</mo></mrow><annotation encoding="application/x-tex">\{0,1\}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">{</span><span class="mord">0</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">1</span><span class="mclose">}</span></span></span></span>。在这种语意下，我们重新选取假设函数和损失函数，并按照与求解线性回归的梯度下降同样的思路，进行参数拟合。</p><p>在这里，我们将重点阐述假设函数和损失函数，以及相应的梯度求解。</p><h2 id="假设函数"><a class="markdownIt-Anchor" href="#假设函数"></a> 假设函数</h2><p>假设函数其实就是我们选取的符合数据分布的函数形式。在线性回归中，我们定义假设函数为<span class="katex"><span class="katex-mathml"><math><semantics><mrow><msup><mi>θ</mi><mi>T</mi></msup><mi>x</mi></mrow><annotation encoding="application/x-tex">\theta^Tx</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8413309999999999em;vertical-align:0em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8413309999999999em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight" style="margin-right:0.13889em;">T</span></span></span></span></span></span></span></span><span class="mord mathdefault">x</span></span></span></span>，而在逻辑回归中，我们引入<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>s</mi><mi>i</mi><mi>g</mi><mi>m</mi><mi>o</mi><mi>i</mi><mi>d</mi></mrow><annotation encoding="application/x-tex">sigmoid</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8888799999999999em;vertical-align:-0.19444em;"></span><span class="mord mathdefault">s</span><span class="mord mathdefault">i</span><span class="mord mathdefault" style="margin-right:0.03588em;">g</span><span class="mord mathdefault">m</span><span class="mord mathdefault">o</span><span class="mord mathdefault">i</span><span class="mord mathdefault">d</span></span></span></span>函数。</p><p class='katex-block'><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>s</mi><mi>i</mi><mi>g</mi><mi>m</mi><mi>o</mi><mi>i</mi><mi>d</mi><mo stretchy="false">(</mo><mi>z</mi><mo stretchy="false">)</mo><mo>=</mo><mi>g</mi><mo stretchy="false">(</mo><mi>z</mi><mo stretchy="false">)</mo><mo>=</mo><mfrac><mn>1</mn><mrow><mn>1</mn><mo>+</mo><msup><mi>e</mi><mrow><mo>−</mo><mi>z</mi></mrow></msup></mrow></mfrac></mrow><annotation encoding="application/x-tex">sigmoid(z) = g(z) = \frac{1}{1+e^{-z}}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault">s</span><span class="mord mathdefault">i</span><span class="mord mathdefault" style="margin-right:0.03588em;">g</span><span class="mord mathdefault">m</span><span class="mord mathdefault">o</span><span class="mord mathdefault">i</span><span class="mord mathdefault">d</span><span class="mopen">(</span><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault" style="margin-right:0.03588em;">g</span><span class="mopen">(</span><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.09077em;vertical-align:-0.7693300000000001em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.32144em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mord"><span class="mord mathdefault">e</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.697331em;"><span style="top:-2.989em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">−</span><span class="mord mathdefault mtight" style="margin-right:0.04398em;">z</span></span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.7693300000000001em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span></span></p><p>函数图像如下：</p><img src="Logistic-regression.assets/image-20210118171706554.png" alt="image-20210118171706554" style="zoom:67%;" /><p>我们发现该函数为严格增函数，定义域为<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mo stretchy="false">(</mo><mo>−</mo><mi mathvariant="normal">∞</mi><mo separator="true">,</mo><mi mathvariant="normal">∞</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">(-\infty,\infty)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord">−</span><span class="mord">∞</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">∞</span><span class="mclose">)</span></span></span></span>，值域为<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mo stretchy="false">(</mo><mn>0</mn><mo separator="true">,</mo><mn>1</mn><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">(0,1)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord">0</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">1</span><span class="mclose">)</span></span></span></span>，<span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mo><mi>lim</mi><mo>⁡</mo></mo><mrow><mi>z</mi><mo>→</mo><mi mathvariant="normal">∞</mi></mrow></msub><mi>g</mi><mo stretchy="false">(</mo><mi>z</mi><mo stretchy="false">)</mo><mo>=</mo><mn>1</mn><mo separator="true">,</mo><msub><mo><mi>lim</mi><mo>⁡</mo></mo><mrow><mi>z</mi><mo>→</mo><mo>−</mo><mi mathvariant="normal">∞</mi></mrow></msub><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">\lim_{z\rightarrow \infty}g(z)=1,\lim_{z\rightarrow -\infty} = 0</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mop"><span class="mop">lim</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight" style="margin-right:0.04398em;">z</span><span class="mrel mtight">→</span><span class="mord mtight">∞</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathdefault" style="margin-right:0.03588em;">g</span><span class="mopen">(</span><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.902771em;vertical-align:-0.208331em;"></span><span class="mord">1</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mop"><span class="mop">lim</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.25833100000000003em;"><span style="top:-2.5500000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight" style="margin-right:0.04398em;">z</span><span class="mrel mtight">→</span><span class="mord mtight">−</span><span class="mord mtight">∞</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">0</span></span></span></span>。也就是说，通过这个函数，我们将实数映射到了<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mo stretchy="false">(</mo><mn>0</mn><mo separator="true">,</mo><mn>1</mn><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">(0,1)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord">0</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">1</span><span class="mclose">)</span></span></span></span>区间。我们将这个函数作用于线性回归的假设函数，得到逻辑回归的假设函数。</p><p class='katex-block'><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow></mrow><annotation encoding="application/x-tex"></annotation></semantics></math></span><span class="katex-html" aria-hidden="true"></span></span></span></p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;h1 id=&quot;梯度下降与逻辑回归&quot;&gt;&lt;a class=&quot;markdownIt-Anchor&quot; href=&quot;#梯度下降与逻辑回归&quot;&gt;&lt;/a&gt; 梯度下降与逻辑回归&lt;/h1&gt;
&lt;p&gt;承接&lt;a href=&quot;http://orangecheers.top/index.php/archiv
      
    
    </summary>
    
    
    
  </entry>
  
  <entry>
    <title>对我高中以来学习的反思</title>
    <link href="http://blog.raincur.com/2020/07/28/Reflection-on-my-learning-since-high-school/"/>
    <id>http://blog.raincur.com/2020/07/28/Reflection-on-my-learning-since-high-school/</id>
    <published>2020-07-28T05:37:20.000Z</published>
    <updated>2020-11-02T03:05:31.774Z</updated>
    
    <content type="html"><![CDATA[<p>“恕我直言，能够带来思想快乐的东西，只能是人类智慧至高的产物。“</p><a id="more"></a><p>我是喜欢数学的，起码一直以来我是这么认为的。</p><p>从小学开始，或者从幼儿园开始我的数学成绩一直名列前茅，谦虚点说，不算太差。我享受得到数学所能带给我的乐趣。那种冥思苦想之后的顿悟，仿佛大旱之后的甘霖。我的数学一直以来学得随意，会被技巧折服，而不会为解题去学习。我喜欢我不会的东西，就正如王小波先生写的“这就如和一位高明的棋手下棋，虽然自己总被击败，但也有机会领略妙招。”我期待着的仅仅是学习更多，所以我期待新的不会的东西。</p><p>高中之后数学渐渐地使我没那么快乐了。数学没有变。我开始渐渐地关心数学之外的事情，我的成绩，我的排名，高考，大学。学习数学不再是一种精神上的愉悦，它给我带来了负担。曾经遇见一个不会的问题，会兴奋，会苦恼，会为自己又能学到新东西而开心。而当我越来越关注那个量化的量之后，每一道错题都令我害怕，每一个未曾见过的技巧使我慌张，每一次面对题目（做过的没做过的）都使我焦虑不安。我在害怕，我不害怕数学，我害怕数学之外的东西，害怕不能考高分。错误不再意味着学习，错误更多成了自我的否定。</p><p>我曾可以一个晚上只做数学，而懊恼为什么会有其他的科目占用我的时间。现在我有大把的时间，但是我不愿意去看数学，做了题目不愿意去对答案。我不愿面对错误。而因此我必须去面对更多的错误，因为我只在原地踏步。如此，恶性循环。</p><p>我觉得我有必要摆正一下自己的心态，不再去管那些有的没的糟糕的东西。没必要去争那个最前面的东西，或者说没必要带着这种想法去学习。我给自己设下设下保护伞——至少，你总会可以养活自己。希望可以多一些随意，少一些功利性的东西。竞争是必要的，但没必要太上心。</p><blockquote><p> “恕我直言，能够带来思想快乐的东西，只能是人类智慧至高的产物。比这再低一档的东西，只会给人带来痛苦；而这种低档货，就是出于功利的种种想法。”</p></blockquote>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;“恕我直言，能够带来思想快乐的东西，只能是人类智慧至高的产物。“&lt;/p&gt;
    
    </summary>
    
    
      <category term="随笔杂谈" scheme="http://blog.raincur.com/categories/%E9%9A%8F%E7%AC%94%E6%9D%82%E8%B0%88/"/>
    
    
      <category term="个人" scheme="http://blog.raincur.com/tags/%E4%B8%AA%E4%BA%BA/"/>
    
      <category term="Reflection" scheme="http://blog.raincur.com/tags/Reflection/"/>
    
  </entry>
  
  <entry>
    <title>欧拉定理与费马小定理</title>
    <link href="http://blog.raincur.com/2020/07/10/%E6%AC%A7%E6%8B%89%E5%AE%9A%E7%90%86%E4%B8%8E%E8%B4%B9%E9%A9%AC%E5%B0%8F%E5%AE%9A%E7%90%86/"/>
    <id>http://blog.raincur.com/2020/07/10/%E6%AC%A7%E6%8B%89%E5%AE%9A%E7%90%86%E4%B8%8E%E8%B4%B9%E9%A9%AC%E5%B0%8F%E5%AE%9A%E7%90%86/</id>
    <published>2020-07-10T10:53:22.000Z</published>
    <updated>2020-11-02T03:42:10.344Z</updated>
    
    <content type="html"><![CDATA[<p>欧拉定理与费马小定理的证明。本文参考自 $OIWiki$，并对证明结构进行了改进。原文链接：<a href="https://oi-wiki.org/math/fermat/" target="_blank" rel="noopener">欧拉定理 &amp; 费马小定理</a></p><a id="more"></a><h1 id="费马小定理"><a href="#费马小定理" class="headerlink" title="费马小定理"></a>费马小定理</h1><h2 id="内容"><a href="#内容" class="headerlink" title="内容"></a>内容</h2><p>若 $p$ 为素数，$gcd(a,p)=1$，则 $a^{p-1}\equiv1\pmod{p}$。</p><h2 id="证明"><a href="#证明" class="headerlink" title="证明"></a>证明</h2><h3 id="思路"><a href="#思路" class="headerlink" title="思路"></a>思路</h3><p>考虑集合 $A$ 为模 $p$ 意义下的<strong>最小完整剩余系</strong>，即 $A=\{1,2,…,p-1\}$。而集合 $B$ 为 $\{1a,2a,…,(p-1)a\}$。我们将证明集合 $B$ 在模 $p$ 意义下与集合 $A$ 是一一对应关系，即集合 $B$ 也是模 $p$ 意义下的完整剩余系。</p><p>由此，我们可以应用公式：</p><script type="math/tex; mode=display">\begin{align}& 1a\cdot2a\cdot...\cdot(p-1)a &\equiv1\cdot2\cdot...\cdot(p-1)&\pmod{p}\\\Rightarrow & a^{p-1}\cdot1\cdot2\cdot...\cdot(p-1) &\equiv1\cdot2\cdot...\cdot(p-1)&\pmod{p}\\\Rightarrow & a^{p-1} \equiv 1 \pmod{p}\end{align}</script><p>即证明得到费马小定理。</p><h3 id="主要证明过程"><a href="#主要证明过程" class="headerlink" title="主要证明过程"></a>主要证明过程</h3><p>下面我们证明集合 $A,B$ 是一一对应关系。为此，我们可以证明 $\forall i\neq j,ia\not\equiv ja \pmod{p}$。</p><p>应用反证法，假设 $\exist i\neq j,ia\equiv ja \pmod{p}$，同时不妨设 $i &gt; j$，那么我们可以得到 $(i-j)a \mid p$。而由题设我们可以得到 $gcd(a,p)=1$，且 $0&lt;(i-j)&lt;p$，$p$ 是质数，所以 $gcd(i-j,p)=1$。所以 $(i-j)a\nmid p$，矛盾。</p><p>于是我们证明了 $\forall i\neq j,ia\not\equiv ja \pmod{p}$，即证明了集合 $A,B$ 的一一对应关系。由此根据先前的推到，我们证明得到了费马小定理。</p><h1 id="欧拉定理"><a href="#欧拉定理" class="headerlink" title="欧拉定理"></a>欧拉定理</h1><h2 id="内容-1"><a href="#内容-1" class="headerlink" title="内容"></a>内容</h2><p>欧拉定理可以视为费马小定理的推广形式，定理内容如下：</p><script type="math/tex; mode=display">if\ gcd(a,m)=1,then\ a^{\phi(m)}\equiv 1\pmod{m}</script><p>当 $m$ 为质数时，$\phi(m)=m-1$，我们即得到了费马小定理。</p><h2 id="证明-1"><a href="#证明-1" class="headerlink" title="证明"></a>证明</h2><h3 id="思路-1"><a href="#思路-1" class="headerlink" title="思路"></a>思路</h3><p>欧拉定理具体的证明思路与费马小定理相仿，我们利用模 $m$ 意义下的<strong>简化剩余系</strong> $r_1,r_2,…,r_{\phi(m)}$ ，我们对其每一个元素乘 $a$ ，得到 $ar_1,ar_2,…,ar_{\phi(m)}$，我们将证明这样操作得到的集合仍然是模 $m$ 意义下的简化剩余系。按照对费马小定理相同的处理方式，我们可以证明得到欧拉定理。 </p><h3 id="主要证明过程-1"><a href="#主要证明过程-1" class="headerlink" title="主要证明过程"></a>主要证明过程</h3><p>我们将证明以下两点：</p><ol><li>$ar_i$ 与 $m$ 互质<br> $\because gcd(a,m)=1，gcd(r_i,m)=1$<br> $\therefore gcd(ar_i,m)=1$</li><li>$\forall i\neq j，ar_i\not\equiv ar_j \pmod{m}$<br> 应用反证法，与费马小定理证明相仿，故在此略去。</li></ol><p>$\therefore ar_1,ar_2,…,ar_{\phi(m)}$ 也是模 $m$ 意义下的一个简化剩余系。</p><p>$\therefore ar_1\cdot ar_2\cdot…\cdot ar_{\phi(m)} \equiv r_1 \cdot r_2 \cdot…\cdot r_{\phi(m)} \pmod{m}$</p><p>即得到 </p><script type="math/tex; mode=display">a^{\phi(m)}\equiv 1 \pmod{m}</script><h1 id="拓展欧拉定理"><a href="#拓展欧拉定理" class="headerlink" title="拓展欧拉定理"></a>拓展欧拉定理</h1><h2 id="内容-2"><a href="#内容-2" class="headerlink" title="内容"></a>内容</h2><p>拓展欧拉定理时在比赛刷题中常用的公式，可以很方便的讲一个看似根本不可能计算的幂次方（甚至幂套幂套幂……）逐步通过取模简化至可以计算的形式。与快速幂一次食用效果更佳。</p><script type="math/tex; mode=display">\begin{equation}a^b \equiv \left\{\begin{array}aa^{b \mod {\phi(p)}},& gcd(a,p)=1\\a^b,& gcd(a,p)\neq 1,b<\phi(p)\\a^{b \mod{\phi(p)} + \phi(p)},&gcd(a,p) \neq 1,b\geq\phi(p)\end{array}\right. \pmod{p}\end{equation}</script><h2 id="证明-2"><a href="#证明-2" class="headerlink" title="证明"></a>证明</h2><p>不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会不会。</p><h1 id="习题"><a href="#习题" class="headerlink" title="习题"></a>习题</h1><p><a href="https://www.luogu.com.cn/problem/P5091" target="_blank" rel="noopener">洛谷P5091 【模板】扩展欧拉定理</a></p>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;欧拉定理与费马小定理的证明。本文参考自 $OIWiki$，并对证明结构进行了改进。原文链接：&lt;a href=&quot;https://oi-wiki.org/math/fermat/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;欧拉定理 &amp;amp; 费马小定理&lt;/a&gt;&lt;/p&gt;
    
    </summary>
    
    
      <category term="ACM-Math" scheme="http://blog.raincur.com/categories/ACM-Math/"/>
    
    
      <category term="ACM" scheme="http://blog.raincur.com/tags/ACM/"/>
    
      <category term="learning" scheme="http://blog.raincur.com/tags/learning/"/>
    
      <category term="Math" scheme="http://blog.raincur.com/tags/Math/"/>
    
  </entry>
  
  <entry>
    <title>欧拉函数的积性证明</title>
    <link href="http://blog.raincur.com/2020/07/07/%E6%AC%A7%E6%8B%89%E5%87%BD%E6%95%B0/"/>
    <id>http://blog.raincur.com/2020/07/07/%E6%AC%A7%E6%8B%89%E5%87%BD%E6%95%B0/</id>
    <published>2020-07-06T16:41:32.000Z</published>
    <updated>2020-11-02T03:22:02.476Z</updated>
    
    <content type="html"><![CDATA[<p>对于欧拉函数是积性函数的证明</p><a id="more"></a><h1 id="欧拉函数的积性证明"><a href="#欧拉函数的积性证明" class="headerlink" title="欧拉函数的积性证明"></a>欧拉函数的积性证明</h1><h2 id="积性函数"><a href="#积性函数" class="headerlink" title="积性函数"></a>积性函数</h2><p><strong>积性函数</strong> 是指对于函数$ f $，当$ gcd(m, n) = 1 $时，$f(m)f(n) = f(mn)$。</p><p><strong>完全积性函数</strong> 是指对于函数$f$，$f(m)(n) = f(mn)$。</p><p>下面我们将证明<strong>欧拉函数</strong>是<strong>积性函数</strong>。</p><h2 id="证明"><a href="#证明" class="headerlink" title="证明"></a>证明</h2><p><strong>目标等式：</strong> $\phi(m)\phi(n) = \phi(mn)$</p><h3 id="符号约定"><a href="#符号约定" class="headerlink" title="符号约定"></a>符号约定</h3><p>$\phi(n)$：欧拉函数</p><p>$X$ ： $m$ 的<strong>简化剩余系</strong></p><p>$Y$ ： $n$ 的<strong>简化剩余系</strong></p><p>$Z$ ： $mn$ 的<strong>简化剩余系</strong></p><p>$x_i$ ：$X$ 的代表元素</p><p>$y_i$ ： $Y$ 的代表元素</p><p>$z$ ： $Z$ 的代表元素</p><p>$(x,y)$ ： $x，y$ 的最大公约数</p><h3 id="证明思路"><a href="#证明思路" class="headerlink" title="证明思路"></a>证明思路</h3><p> 我们构造等式 $x_in+y_jm$ ，我们想要证明 $\{x_in+y_jm\}$ 和 $mn$ 的简化剩余系 $Z$ 之间存在一个<strong>双射关系</strong>，也就是说 $x_in+y_jm$ 的个数与 $mn$ 的简化剩余系的个数相同。</p><p>同时，我们将证明 $x_in+y_jm$ 当 $i，j$ 不同时不在同一<strong>剩余类</strong>中。这样得到 $x_in+y_im$ 可以表示 $\phi(m)\phi(n)$ 个不同的剩余类。目标等式得证。所以我们将证明：</p><ol><li>$x_in+y_jm\in Z$ ，即 $gcd(x_in+y_jm,mn)=1$</li><li>$\forall z,\exist i, j, \mbox{ s.t. } x_in+y_jm \equiv z \pmod{mn}$</li><li>对于任意一个有序二元组$(i,j)\neq(k,l)，$ $x_in+y_jm\equiv x_kn+y_lm \pmod{mn} $</li></ol><p>$1,2$ 实际上证明了双射关系，$3$ 则证明了不在同一剩余类。</p><h3 id="证明过程"><a href="#证明过程" class="headerlink" title="证明过程"></a>证明过程</h3><h4 id="对1的证明"><a href="#对1的证明" class="headerlink" title="对1的证明"></a>对1的证明</h4><script type="math/tex; mode=display">(x_i,m)=1\Longrightarrow(x_in,m)=1\Longrightarrow(x_in,mn)=1 \tag{1}</script><script type="math/tex; mode=display">(y_i,n)=1\Longrightarrow(y_im,n)=1\Longrightarrow(y_im,mn)=1 \tag{2}</script><p>由 $(1)，(2)$ 得 <script type="math/tex">(x_im+y_jm,mn)=1</script></p><h4 id="对2的证明"><a href="#对2的证明" class="headerlink" title="对2的证明"></a>对2的证明</h4><p>由 $(m,n)=1$ 可得，存在 $p，q$ 使得 $mp+nq=z$。</p><p>那么，我们可以得到：</p><p>$(z,mn)=1\Rightarrow(mp+nq,mn)=1\Rightarrow(mp+nq,m)=1\Rightarrow(nq,m)=1\Rightarrow(q,m)=1$</p><p>由此可得，$q$ 在 $m$ 的简化剩余系中，所以 $\exist x_i,x_i \equiv q \pmod{m}$，可以推得</p><script type="math/tex; mode=display">x_in \equiv qn \pmod{mn} \tag{3}</script><p>同理，我们可以得到：</p><script type="math/tex; mode=display">y_jm \equiv pm \pmod{mn} \tag{4}</script><p>由 $(3),(4)$ 我们可以得到：</p><script type="math/tex; mode=display">x_in+y_jm \equiv qn+ pm \equiv z  \pmod{mn}</script><h4 id="对3的证明"><a href="#对3的证明" class="headerlink" title="对3的证明"></a>对3的证明</h4><p>应用反证法，我们假设存在这样的有序二元组 $(i,j)$ 和 $(k,l)$ 满足 $(i,j)\neq(k,l)$ 使得 $x_in+y_jm\equiv x_kn+y_lm \pmod{mn} $ ，那么我们有 ：</p><p>$x_in+y_jm\equiv x_kn+y_lm \pmod{m} \Rightarrow x_in \equiv x_kn \pmod{m} \Rightarrow x_i \equiv x_k \pmod{m}$ ，而由题设我们可以知道 $\forall i \neq k, x_i \not\equiv x_k \pmod{m}$，所以<strong>矛盾</strong>。</p><p>所以对于任意一个有序二元组$(i,j)\neq(k,l)，$ $x_in+y_jm\equiv x_kn+y_lm \pmod{mn} $ 得证。</p><h4 id="综上，证得欧拉函数为积性函数。"><a href="#综上，证得欧拉函数为积性函数。" class="headerlink" title="综上，证得欧拉函数为积性函数。"></a>综上，证得欧拉函数为积性函数。</h4>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;对于欧拉函数是积性函数的证明&lt;/p&gt;
    
    </summary>
    
    
      <category term="ACM-Math" scheme="http://blog.raincur.com/categories/ACM-Math/"/>
    
    
      <category term="ACM" scheme="http://blog.raincur.com/tags/ACM/"/>
    
      <category term="learning" scheme="http://blog.raincur.com/tags/learning/"/>
    
      <category term="Math" scheme="http://blog.raincur.com/tags/Math/"/>
    
  </entry>
  
  <entry>
    <title>我们都是花剌子模国王</title>
    <link href="http://blog.raincur.com/2020/05/17/%E6%88%91%E4%BB%AC%E9%83%BD%E6%98%AF%E8%8A%B1%E5%89%8C%E5%AD%90%E6%A8%A1%E5%9B%BD%E7%8E%8B/"/>
    <id>http://blog.raincur.com/2020/05/17/%E6%88%91%E4%BB%AC%E9%83%BD%E6%98%AF%E8%8A%B1%E5%89%8C%E5%AD%90%E6%A8%A1%E5%9B%BD%E7%8E%8B/</id>
    <published>2020-05-17T09:50:42.000Z</published>
    <updated>2020-05-21T15:44:42.517Z</updated>
    
    <content type="html"><![CDATA[<p>读小波有感。</p><a id="more"></a><h1 id="我们都是花剌子模国王"><a href="#我们都是花剌子模国王" class="headerlink" title="我们都是花剌子模国王"></a>我们都是花剌子模国王</h1><h3 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h3><p>&emsp;&emsp;王小波在《花刺子模信使问题》中写到：</p><blockquote><p>据野史记载，中亚古国花刺子模有一古怪的风俗，凡是给君王带来好消息的信使，就会得到提升，给君王带来坏消息的人则会被送去喂老虎。</p></blockquote><p>&emsp;&emsp;王小波评价说：</p><blockquote><p>“花刺子模的君王有一种近似天真的品行，以为奖励带来好消息的人，就能鼓励好消息的到来，处死带来坏消息的人，就能根绝坏消息。”</p><h3 id="01"><a href="#01" class="headerlink" title="01"></a>01</h3><p>&emsp;&emsp;这个国家是否真的有这个传统我们不得而知，也并不重要。有趣的地方在于一般人都是趋利避害的，君王相当于是自然中生存的法则，适者生存之后只剩下了报告好消息的信使。由此以来，花剌子王国真的变成了一个“好消息”王国，虽然这个好消息不过是浮在真相水面上的薄冰。</p></blockquote><p>&emsp;&emsp;恰如“这盛世，如你所愿”。</p><h3 id="02"><a href="#02" class="headerlink" title="02"></a>02</h3><p>&emsp;&emsp;恰如，在这美妙的互联网时代，这美丽缤纷的互联网中总是上演着各种“撕逼”大战。双方往往是“自我群体高潮”，而对对方的理论不理不睬。人们根据言论而群分，在不利的“若水三千”中努力找到自己想看到的那“一瓢”，而对其他视而不见。努力维持着自己“爱豆”高尚的形象，把一切其他当作异己，把所有自己不愿相信的当作“洗脑”。最后只是为了遮蔽“烂”这个事实。</p><p>&emsp;&emsp;就像小波总结的：</p><blockquote><p>我人认为，获得受欢迎的信息有三种方法：其一，从真实中索取、筛选；其二：对现有信息加以改造；其三：凭空捏造。</p></blockquote><p>&emsp;&emsp;我们屡见不鲜，屡试不爽。</p><h3 id="03"><a href="#03" class="headerlink" title="03"></a>03</h3><p>&emsp;&emsp;除了“撕逼”大战，互联网自媒体时代中有着更鲜活的“好信使”，比如之前爆火然后被口诛笔伐的“咪蒙”。“好信使”的特点是要会说话，会说好话。当你窝在电脑旁抱着泡面麻木地看这电脑上的文字，你肯定更希望有人给你说看网文的好，而不说让你认清你如山高般的ddl和你颓废的人生。</p><p>&emsp;&emsp;正如你正幻想着自己是屏幕里爽文的主角，而不愿面对惨淡的人生。</p><p>&emsp;&emsp;正如你忽略着自己160的身高和体重，幻想着所有人都爱着你</p><p>&emsp;&emsp;而实际上如“咪蒙”般的营销号不是为了告诉你怎样生活，而是为了让你沉沦于现在的生活。他们甚至不在乎你读过会怎么样，他们只是想要在取悦你，让你情绪化，让你可以读他们的下一篇。</p><h3 id="04"><a href="#04" class="headerlink" title="04"></a>04</h3><p>&emsp;&emsp;不过细想过来，每个人都是逃避型的，而君主的故事实际上也发生在我们自己身上。每个人都喜欢爽文，除非他写的不够爽；每个人都会做白日梦，除非他不会做梦。</p><p>&emsp;&emsp;当我第一次读这一段时，如你一样，觉得这个君主脑子有问题。可常言道：“当你想要批评别人的时候，你最好先批评自己”。当我静下心来反思自己，我发现我们又何尝不是这样呢？</p><p>&emsp;&emsp;在高中时每次考试总有几个作弊的，奇怪的是每个人都知道这是自欺欺人，奇怪的是每个人都一直作弊而不愿面对自己学的不好的事实，每个人都在祈求高考晚一点来，这样好日子就不会到头。</p><p>&emsp;&emsp;这就像极了我那无数个考完试却不愿意对答案的晚上。</p><p>&emsp;&emsp;这就像极了我那不到最后一刻绝对不愿意写的ddl。</p><p>&emsp;&emsp;是我们趋利避害的本能，导致我们只能看到我们愿意看到的，听见我们想听见的。而事实上，坏消息和困难，还有人生中其他你不愿意面对的困境挫折，是客观存在的，无论你看不看它。当你一直不愿意去面对的时候，或许当那一刻真的来临，你能做的也只有继续抱头逃避。</p><p>&emsp;&emsp;不同的是有的人甘愿沉沦，在自己幻想的海洋里继续裸泳；有的人自命不凡，在命运无常的高山上勇攀高峰。</p><p>&emsp;&emsp;所以唯有真的勇士，才敢于直面惨淡的人生和淋血的现实。</p><h3 id="05"><a href="#05" class="headerlink" title="05"></a>05</h3><p>&emsp;&emsp;更多更广阔更现实的我们不做探讨。写这么多，其实就是想告诉大家，你是否也是那个花剌子国王呢？又或者你多大程度上是花剌子国王呢？逃避并不可耻，可耻的是甘愿逃避，甚至依恋逃避。</p><p>&emsp;&emsp;在说着“理智客观中立”的时候你是否想过你真的是所谓“理智客观公正”？在无可救药地相信着什么的时候你是否真的认为如此？还是说只不过是害怕自己错了。</p>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;读小波有感。&lt;/p&gt;
    
    </summary>
    
    
      <category term="随笔杂谈" scheme="http://blog.raincur.com/categories/%E9%9A%8F%E7%AC%94%E6%9D%82%E8%B0%88/"/>
    
    
      <category term="个人" scheme="http://blog.raincur.com/tags/%E4%B8%AA%E4%BA%BA/"/>
    
      <category term="看法" scheme="http://blog.raincur.com/tags/%E7%9C%8B%E6%B3%95/"/>
    
  </entry>
  
  <entry>
    <title>Codeforces Global Round 7 Solution</title>
    <link href="http://blog.raincur.com/2020/03/25/Codeforces-Global-Round-7-Solution/"/>
    <id>http://blog.raincur.com/2020/03/25/Codeforces-Global-Round-7-Solution/</id>
    <published>2020-03-25T14:07:54.000Z</published>
    <updated>2020-11-02T03:05:40.900Z</updated>
    
    <content type="html"><![CDATA[<p>&emsp;&emsp;Codeforces Global Round 7比赛练习题解，个人使用，参考自官方题解。<br><a id="more"></a></p><h2 id="A-Bad-Ugly-Number"><a href="#A-Bad-Ugly-Number" class="headerlink" title="A. Bad Ugly Number"></a>A. Bad Ugly Number</h2><h3 id="描述："><a href="#描述：" class="headerlink" title="描述："></a>描述：</h3><p>&emsp;&emsp;给定$n$($0 \leq n \leq 10^5$),找到任意一个数整数$s$，满足:</p><ul><li>$s &gt; 0$</li><li>$s$由$n$个数字组成</li><li>$s$中的任意一位数不等于$0$</li><li>$s$不能被它的各位整除</li></ul><p>&emsp;&emsp;每个输出包括$t$组，若存在这样的$s$则输出一个，否则输出$-1$。</p><h3 id="解题思路："><a href="#解题思路：" class="headerlink" title="解题思路："></a>解题思路：</h3><p>&emsp;&emsp;构造题，当$n=1$时显然是找不到$s$的，输出$-1$，否则输出$22…223$，一共$n-1$个$2$。</p><h3 id="程序实现："><a href="#程序实现：" class="headerlink" title="程序实现："></a>程序实现：</h3><figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="meta-keyword">include</span><span class="meta-string">&lt;iostream&gt;</span></span></span><br><span class="line"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="built_in">std</span>;</span><br><span class="line"><span class="function"><span class="keyword">int</span> <span class="title">main</span><span class="params">()</span></span>&#123;</span><br><span class="line">    <span class="keyword">int</span> t, n;</span><br><span class="line">    <span class="built_in">cin</span> &gt;&gt; t;</span><br><span class="line">    <span class="keyword">while</span> (t--)&#123;</span><br><span class="line">        <span class="built_in">cin</span> &gt;&gt; n;</span><br><span class="line">        <span class="keyword">if</span> (n == <span class="number">1</span>)&#123;</span><br><span class="line">            <span class="built_in">cout</span> &lt;&lt; <span class="number">-1</span> &lt;&lt; <span class="built_in">endl</span>;</span><br><span class="line">            <span class="keyword">continue</span>;</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="keyword">for</span>(<span class="keyword">int</span> i = <span class="number">1</span>;i &lt; n;i++)</span><br><span class="line">            <span class="built_in">cout</span> &lt;&lt; <span class="string">'2'</span>;</span><br><span class="line">        <span class="built_in">cout</span> &lt;&lt; <span class="number">3</span> &lt;&lt; <span class="built_in">endl</span>;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h2 id="B-Maximums"><a href="#B-Maximums" class="headerlink" title="B. Maximums"></a>B. Maximums</h2><h3 id="描述：-1"><a href="#描述：-1" class="headerlink" title="描述："></a>描述：</h3><p>&emsp;&emsp;你有一个非负整数数组 $a_1,a_2,…,a_n$ ，对于每一个 $1 \leq i \leq n$，令$x_i = \max(0,a_1,…,a_{i-1})$。特别的，$x_1 = 0$。现在令$b_i = a_i - x_i$。给定$b[]$数组，要求输出$a[]$数组。</p><h3 id="解题思路：-1"><a href="#解题思路：-1" class="headerlink" title="解题思路："></a>解题思路：</h3><p>&emsp;&emsp;由于$x_1 = 0$，那么显然有$a_1 = b_1$。显然由$a_1,…,a_i$已知，可以推出$x_{i+1}$，进而推出$a_{i+1}$，如此反复，直到推出所有的$a_i$。考虑到$x_i = \max(0,a_1,…,a_{i-1})$，我们可以令$ma = x_1$，这样每次迭代更新$ma = \max(ma, a_i)$即可。</p><h3 id="程序实现：-1"><a href="#程序实现：-1" class="headerlink" title="程序实现："></a>程序实现：</h3><figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="meta-keyword">include</span><span class="meta-string">&lt;iostream&gt;</span></span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">include</span><span class="meta-string">&lt;cmath&gt;</span></span></span><br><span class="line"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="built_in">std</span>;</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">int</span> <span class="title">main</span><span class="params">()</span></span>&#123;</span><br><span class="line">    <span class="keyword">long</span> <span class="keyword">long</span> n, ma = <span class="number">0</span>;</span><br><span class="line">    <span class="built_in">cin</span> &gt;&gt; n;</span><br><span class="line">    <span class="keyword">for</span>(<span class="keyword">int</span> i = <span class="number">1</span>, x;i &lt;= n;i ++)&#123;</span><br><span class="line">        <span class="built_in">cin</span> &gt;&gt; x;</span><br><span class="line">        <span class="built_in">cout</span> &lt;&lt; x + ma &lt;&lt; <span class="string">" "</span>;</span><br><span class="line">        ma = max(x + ma, ma);</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h2 id="C-Permutation-Partitions"><a href="#C-Permutation-Partitions" class="headerlink" title="C. Permutation Partitions"></a>C. Permutation Partitions</h2><h3 id="描述：-2"><a href="#描述：-2" class="headerlink" title="描述："></a>描述：</h3><p>&emsp;&emsp;给你一个由$1到n$组成的序列，现给定$k(k\leq n)$，要求将原序列分割成不重合的k段(这k段必须包含整个序列)。定义每段分区最大值的和为分区值，求：</p><ol><li>最大分区值</li><li>使分区值取得最大的分区有多少种情况<h3 id="解题思路：-2"><a href="#解题思路：-2" class="headerlink" title="解题思路："></a>解题思路：</h3>&emsp;&emsp;对于第一个问题，显然的最大分区值就是从$n$向$n-k+1$求和的值。那么分区有多少种情况呢？我们考察$n$到$n-k+1$分割的$k+1$段序列长度。令$d_i = length\ of\ section\ i$，那么显然答案应该为$\prod_{i=1}^{k-1}{d_i+1}$。在实际处理种可以简单优化使得$d_i$的储存为$O(1)$的空间复杂度，整个算法只用遍里一次原数组。<h3 id="程序实现：-2"><a href="#程序实现：-2" class="headerlink" title="程序实现："></a>程序实现：</h3><figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="meta-keyword">include</span><span class="meta-string">&lt;iostream&gt;</span></span></span><br><span class="line"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="built_in">std</span>;</span><br><span class="line"><span class="keyword">typedef</span> <span class="keyword">long</span> <span class="keyword">long</span> ll;</span><br><span class="line"><span class="keyword">const</span> ll MAXN = <span class="number">200005</span>;</span><br><span class="line"><span class="keyword">const</span> ll MOD = <span class="number">998244353</span>;</span><br><span class="line"><span class="function"><span class="keyword">int</span> <span class="title">main</span><span class="params">()</span></span>&#123;</span><br><span class="line">    ll n, k, ans1 = <span class="number">0</span>, ans2 = <span class="number">1</span>;</span><br><span class="line">    ll dis = <span class="number">0</span>;</span><br><span class="line">    <span class="built_in">cin</span> &gt;&gt; n &gt;&gt; k;</span><br><span class="line">    <span class="keyword">for</span>(ll i = <span class="number">0</span>;i &lt; k;i++)</span><br><span class="line">        ans1 += n - i;</span><br><span class="line">    k = n - k + <span class="number">1</span>;</span><br><span class="line">    <span class="keyword">for</span>(ll i = <span class="number">1</span>, x;i &lt;= n;i++)&#123;</span><br><span class="line">        <span class="built_in">cin</span> &gt;&gt; x;</span><br><span class="line">        <span class="keyword">if</span> (x &gt;= k)&#123;</span><br><span class="line">            <span class="keyword">if</span> (dis != <span class="number">0</span>)&#123;</span><br><span class="line">                ans2 *= (i - dis);</span><br><span class="line">                ans2 %= MOD;</span><br><span class="line">            &#125;</span><br><span class="line">            dis = i;</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="built_in">cout</span> &lt;&lt; ans1 &lt;&lt; <span class="string">" "</span> &lt;&lt; ans2;</span><br><span class="line">    <span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure></li></ol><h2 id="D-Prefix-Suffix-Palindrome"><a href="#D-Prefix-Suffix-Palindrome" class="headerlink" title="D. Prefix-Suffix Palindrome"></a>D. Prefix-Suffix Palindrome</h2><h3 id="描述：-3"><a href="#描述：-3" class="headerlink" title="描述："></a>描述：</h3><p>给定字符串$s$，要求求它的一个最长字串$t$，满足：</p><ol><li>$t$是回文串</li><li>$t$由$s$的前缀和后缀拼接而成(前缀和后缀可为空串)<h3 id="解题思路：-3"><a href="#解题思路：-3" class="headerlink" title="解题思路："></a>解题思路：</h3>&emsp;&emsp;我们将$t$分成两部分，一个是前后缀中共同组成回文的部分，另一个是中间部分的回文串。对于前者我们直接逐个比较$s[i]==s[n-i-1]$即可。对于中间部分，我们将中间部分取出，设为$x$，现在的问题是求$x$的最大回文前缀或者最大回文后缀。</li></ol><p>&emsp;&emsp;令我没有想到的是这个可以利用前缀数组求，即构造$x’=x+”*”+\check{x}$，然后求一下前缀数组即可，最后一位前缀值就是最长的前缀回文长度。然后我们对$x$正序做一次，逆序做一次然后比较长度就可以了。</p><h3 id="程序实现：-3"><a href="#程序实现：-3" class="headerlink" title="程序实现："></a>程序实现：</h3><figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="meta-keyword">include</span><span class="meta-string">&lt;iostream&gt;</span></span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">include</span><span class="meta-string">&lt;cstring&gt;</span></span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">include</span><span class="meta-string">&lt;algorithm&gt;</span></span></span><br><span class="line"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="built_in">std</span>;</span><br><span class="line"><span class="keyword">const</span> <span class="keyword">int</span> MAXN = <span class="number">2e6</span> + <span class="number">5</span>;</span><br><span class="line"><span class="keyword">int</span> pi[MAXN], j;</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">inline</span> <span class="built_in">string</span> <span class="title">solve_mid</span><span class="params">(<span class="keyword">const</span> <span class="built_in">string</span> s)</span></span>&#123;</span><br><span class="line">    <span class="built_in">string</span> str = s;</span><br><span class="line">    reverse(str.begin(), str.end());</span><br><span class="line">    str = s + <span class="string">"#"</span> + str;</span><br><span class="line">    <span class="keyword">int</span> n = str.size();</span><br><span class="line">    pi[<span class="number">0</span>] = <span class="number">0</span>, j = <span class="number">0</span>;</span><br><span class="line">    <span class="keyword">for</span>(<span class="keyword">int</span> i = <span class="number">1</span>;i &lt; n;i++)&#123;</span><br><span class="line">        <span class="keyword">while</span> (j &gt; <span class="number">0</span> &amp;&amp; str[j] != str[i]) j = pi[j - <span class="number">1</span>];</span><br><span class="line">        <span class="keyword">if</span>(str[j] == str[i]) j++;</span><br><span class="line">        pi[i] = j;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">return</span> str.substr(<span class="number">0</span>, j);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">inline</span> <span class="keyword">void</span> <span class="title">solve</span><span class="params">()</span></span>&#123;</span><br><span class="line">    <span class="built_in">string</span> s;</span><br><span class="line">    <span class="built_in">cin</span> &gt;&gt; s;</span><br><span class="line">    <span class="keyword">int</span> n = s.size();</span><br><span class="line">    <span class="keyword">int</span> i = <span class="number">0</span>;</span><br><span class="line">    <span class="keyword">while</span> (s[i] == s[n - i - <span class="number">1</span>] &amp;&amp; i &lt; n - i - <span class="number">1</span>) i++;</span><br><span class="line">    <span class="keyword">if</span>(i &gt; <span class="number">0</span>) <span class="built_in">cout</span> &lt;&lt; s.substr(<span class="number">0</span>, i);</span><br><span class="line">    <span class="keyword">if</span>(<span class="number">2</span> * i &lt; n)&#123;</span><br><span class="line">        <span class="built_in">string</span> sub = s.substr(i, n - <span class="number">2</span> *i);</span><br><span class="line">        <span class="built_in">string</span> a = solve_mid(sub);</span><br><span class="line">        reverse(sub.begin(), sub.end());</span><br><span class="line">        <span class="built_in">string</span> b = solve_mid(sub);</span><br><span class="line">        <span class="built_in">cout</span> &lt;&lt; (a.size() &gt; b.size() ? a : b);</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">if</span>(i &gt; <span class="number">0</span>) <span class="built_in">cout</span> &lt;&lt; s.substr(n - i, i);</span><br><span class="line">    <span class="built_in">cout</span> &lt;&lt; <span class="built_in">endl</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">int</span> <span class="title">main</span><span class="params">()</span></span>&#123;</span><br><span class="line">    <span class="keyword">int</span> t;</span><br><span class="line">    <span class="built_in">cin</span> &gt;&gt; t;</span><br><span class="line">    <span class="keyword">while</span> (t--)</span><br><span class="line">        solve();</span><br><span class="line">    <span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>&emsp;&emsp;因为之前时间安排问题，这是我的第一篇题解(其实CF一直在打)。虽然自己很菜，也没想过能够在ACM上拿奖，但是总不能拉下太多吧。毕竟总不能刚开始来的时候大家一样菜，一年后人家摘金夺银你毫无进步吧。</p>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;&amp;emsp;&amp;emsp;Codeforces Global Round 7比赛练习题解，个人使用，参考自官方题解。&lt;br&gt;
    
    </summary>
    
    
      <category term="ACM Practice" scheme="http://blog.raincur.com/categories/ACM-Practice/"/>
    
    
      <category term="Codeforces" scheme="http://blog.raincur.com/tags/Codeforces/"/>
    
      <category term="Solution" scheme="http://blog.raincur.com/tags/Solution/"/>
    
      <category term="ACM" scheme="http://blog.raincur.com/tags/ACM/"/>
    
      <category term="learning" scheme="http://blog.raincur.com/tags/learning/"/>
    
  </entry>
  
  <entry>
    <title>New life</title>
    <link href="http://blog.raincur.com/2020/03/17/New-life/"/>
    <id>http://blog.raincur.com/2020/03/17/New-life/</id>
    <published>2020-03-16T16:02:54.000Z</published>
    <updated>2020-03-16T16:31:44.903Z</updated>
    
    <content type="html"><![CDATA[<p>&emsp;&emsp;自高考完以来，在挣扎中，在体悟中，我越来越领悟到友情、亲情等除了爱情之外的美好。</p> <a id="more"></a><p>&emsp;&emsp;人是自以为是的，自以为正确的。我们总是在不自觉地为自己辩解。于是以往我一直觉得，“别人都不懂，没必要交流”，当然中二过后便是大错特错。我习惯于封锁内心，也习惯嘻嘻哈哈。我家人经常夸我，说我心理素质好，其实并不是，只是不知如何表达罢了。</p><p>&emsp;&emsp;我是幸运的，起码大学是幸运的。我很幸运拥有以为史杰佳一样的舍友。刚进大学，和我刚进入高中是一样的，因为一切都是新的。是时候重新定义自己。于是我对史敞开心扉，无话不谈。我的前女友，我又看上了谁，谁约我出去，我的过往。我知道他不会拿这些开玩笑，我也知道他愿意倾听。这改变了我很多。我开始慢慢变得真正的自信起来，慢慢地学会了如何与人交流。我开始慢慢注意别人是如何交流的，学习别人如何处理同性异性之间的关系，一点一点的。当出现矛盾时该退让还是坚守？面对对方或自己的问题应该如何解决？人与人交往的底线是什么？我是该生气还是应该谅解？</p><p>&emsp;&emsp;毫不避讳的说，我现在没有答案，我现在一无所知。我渴望我可以知道。我不想伤害别人，尤其是一个爱着你的你却不知甚至妄加猜测的人。</p><p>&emsp;&emsp;我之前写过，很多人改变了我。我也算是成年了，18载光阴不可白活。可是有时候细想过来，有几人可以真正地去谈一谈。这并不是说关系不好。我相信我有着一群朋友，可以接受我的逆境的朋友。只是我越发发现人和人的关系，并不是关系越好互相能做的事越多的。人和人是不同的，那么不同人之间的关系也不应该简单度量。这么显浅的道理，我曾为什么不懂呢？</p><p>&emsp;&emsp;秦旭曾经说，你和姬文萱是不一样的，你们在我生命中是不同的位置。我不明白，我说怎么会是不同的呢，我认为一个就够了。</p><p>&emsp;&emsp;现在发现确实很不同，有的人就是可以谈心，有的人就是会毫不犹豫帮你，有的人就是可以带来快乐，有的人就是给你心灵上的温暖。</p><p>&emsp;&emsp;我希望，或许在未来的某一天，秦旭，我们会再次相爱。我们会遇见很多矛盾，像之前一样。我们可以很轻松地互相开玩笑而不必当真。我们可以在朋友面前互损但是心里毫不介意。最终我们变得像家人一样，“学溶于水后看不见红色”。我们也许会犯错，但是是简单的，人都会犯错。</p><p>&emsp;&emsp;我希望可以像高考前那次那样，再来一次拥抱。除了你和家人，我只在初中毕业聚会上告别时礼节性的抱过一位异性。所以也许这么说有点讨巧，但是那真的是我目前为止最美妙的一个拥抱。起码在我的回忆中无比美好。</p><p>&emsp;&emsp;夕阳，高考，蛋糕，伊人，拥抱，暧昧。这些美好的元素汇集在一个下午。</p><p>&emsp;&emsp;又或许我早已没有权利去述说这一切。</p>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;&amp;emsp;&amp;emsp;自高考完以来，在挣扎中，在体悟中，我越来越领悟到友情、亲情等除了爱情之外的美好。&lt;/p&gt;
    
    </summary>
    
    
      <category term="随笔杂谈" scheme="http://blog.raincur.com/categories/%E9%9A%8F%E7%AC%94%E6%9D%82%E8%B0%88/"/>
    
    
      <category term="个人" scheme="http://blog.raincur.com/tags/%E4%B8%AA%E4%BA%BA/"/>
    
      <category term="感悟" scheme="http://blog.raincur.com/tags/%E6%84%9F%E6%82%9F/"/>
    
  </entry>
  
  <entry>
    <title>谈幸福</title>
    <link href="http://blog.raincur.com/2020/03/11/%E8%B0%88%E5%B9%B8%E7%A6%8F/"/>
    <id>http://blog.raincur.com/2020/03/11/%E8%B0%88%E5%B9%B8%E7%A6%8F/</id>
    <published>2020-03-11T15:19:26.000Z</published>
    <updated>2020-03-11T15:35:59.848Z</updated>
    
    <content type="html"><![CDATA[<p>&emsp;&emsp;我曾一直在思考，什么是幸福？我们怎么幸福？<a id="more"></a>我做了一个大胆的假设，当我所有所期望的物质条件全部被满足之后（不再为钱而发愁，但也不至于“不爱钱，没碰过钱”），我就可以幸福了吗？</p><p>&emsp;&emsp;正如之前单身的时候（现在也是），总是期望能有一场甜掉牙的恋爱，也总是觉得有了女朋友，糖就来了。但是我发现事与愿违，总是有很多约束束缚着我们，老师家长同学等等。但其实最束缚的还是我们自己。我们无法做到开诚布公，也无法相信对方开诚布公，无法忍受对方的观念并为此大吵特吵。</p><p>&emsp;&emsp;爱情是需要酝酿的，不是想来的，是真的需要努力，努力地去挣脱自我的束缚的。爱情是一种能力。宽容、接受、交流、共情甚至你自身的一些特征，才能铸就爱情。谈恋爱时我常常痛恨自己不够幽默，不够大气，情商低，在面对困扰时束手无策。</p><p>&emsp;&emsp;幸福也如此。如果给了我足够的物质，不出意外我很可能会去放纵自己，虽然我知道沉浸在知识和探索中的快乐是长久而高尚的，但是远不及放纵来的轻易与猛烈。可是久而久之，原有的刺激就不再满足于我，而去追求更高的刺激，而每天醉生梦死之后只剩萧条。这样是真的快乐吗？是真的幸福吗？</p><p>&emsp;&emsp;有一天早上我打开联盟，打了一盘又一盘，没有人管我，打到最后只剩机械的点击鼠标，我的精神已经萎靡了，我需要休息，但是我不愿。因为这意味着放弃现有的刺激，虽然我知道休息后的快乐会多得多。</p><p>&emsp;&emsp;幸福不仅仅是一种状态，幸福更是一种能力。</p><p>&emsp;&emsp;幸福是需要自我约束的，“自律给我自由”这句话并不只是无用的鸡汤，更是有它其中的道理，真正自律了你才能摆脱刻在你基因中那些放纵的本性，修饰掉人固有的趋利避害性——只看眼前的趋利避害，从而让自己真正可以去做自己想做的事情，而不是做兽性的傀儡。</p><p>&emsp;&emsp;所以我们要在任何时候保持规律的作息和平静的心态。时时刻刻让自己的意志控制住自己，而不是让欲望绑架着自己。这是一种良好积极的生活态度，一把打开幸福之门的钥匙。真正的快乐，平淡而源远流长，蕴含在每天不经意的瞬间，绽放于心愿完成后的惊喜，而不是放纵后的枯燥无味。</p><p>&emsp;&emsp;很多时候，我们看似掌握全局，实则是在博弈。败者的下场只有一个，失去自我意志。</p>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;&amp;emsp;&amp;emsp;我曾一直在思考，什么是幸福？我们怎么幸福？
    
    </summary>
    
    
      <category term="随笔杂谈" scheme="http://blog.raincur.com/categories/%E9%9A%8F%E7%AC%94%E6%9D%82%E8%B0%88/"/>
    
    
      <category term="个人" scheme="http://blog.raincur.com/tags/%E4%B8%AA%E4%BA%BA/"/>
    
      <category term="看法" scheme="http://blog.raincur.com/tags/%E7%9C%8B%E6%B3%95/"/>
    
  </entry>
  
  <entry>
    <title>Git&amp;GitHub初体验</title>
    <link href="http://blog.raincur.com/2020/02/28/Github_first_try/"/>
    <id>http://blog.raincur.com/2020/02/28/Github_first_try/</id>
    <published>2020-02-28T07:18:31.000Z</published>
    <updated>2020-05-21T15:52:44.503Z</updated>
    
    <content type="html"><![CDATA[<p>&emsp;&emsp;在搭建博客的过程中开始真正接触到git这一强大的工具，也就很快对其产生了好奇心。于是写一篇博客来记录自己学习git和github的过程。</p> <a id="more"></a><p>&emsp;&emsp;首先推一篇<a href="https://www.liaoxuefeng.com/wiki/896043488029600" target="_blank" rel="noopener">廖雪峰的博客</a>，内容详实，语言幽默。我也是跟着这篇博客学习的。</p><h2 id="git简介"><a href="#git简介" class="headerlink" title="git简介"></a>git简介</h2><h3 id="git是什么"><a href="#git是什么" class="headerlink" title="git是什么"></a>git是什么</h3><p>&emsp;&emsp;git是一个分布式的版本控制系统，可以帮助我们进行版本控制。而GitHub是一个远程的代码仓库，可以帮助我们进行代码托管。</p><h3 id="安装git"><a href="#安装git" class="headerlink" title="安装git"></a>安装git</h3><p>&emsp;&emsp;Windows下通过<a href="https://git-scm.com/downloads" target="_blank" rel="noopener">官网</a>下载即可，安装提示安装后可以在cmd中通过<code>git --version</code>来查看自己是否配置成功。如图:<br><img src="\../images/git_version.png" alt="git_version"></p><h3 id="建立本地版本库"><a href="#建立本地版本库" class="headerlink" title="建立本地版本库"></a>建立本地版本库</h3><h4 id="版本库"><a href="#版本库" class="headerlink" title="版本库"></a>版本库</h4><p>&emsp;&emsp;又名仓库，英文名为repository(就是github上的那个)，里面文件的操作可以被git记录，包括修改和删除，以便在需要的时候进行版本回退。在我看来，就好像在你的工作目录里面设置了一个机器人可以帮助你进行代码管理。当你完成工作后，就告诉它一声“我刚刚的工作完了，帮我作个记录吧！这次的工作是XXX”。然后某天你想回到之前的版本的时候，只需要给它说：“哦，上帝！我不小心搞砸了，请帮我回退到我做XXX工作的那次吧！”，然后就可以回退到之前的版本了。当然目前我的理解可能十分不到位……毕竟也是刚接触，对git的机理尚不熟悉。</p><h4 id="使用git-init初始化仓库"><a href="#使用git-init初始化仓库" class="headerlink" title="使用git init初始化仓库"></a>使用<code>git init</code>初始化仓库</h4><p>&emsp;&emsp;我们在cmd中进入到自己的工程根目录所在的文件夹，然后使用<code>git init</code>命令就可以初始化一个仓库了。如图：<br><img src="\../images/git_init.png" alt="git_init"><br>然后在目录下我们可以看到多了一个名为<code>.git</code>的隐藏文件夹。里面是git的配置文件，我们无须关心，也不要去动。如图:<br><img src="\../images/git_folder.png" alt="git_folder"><br>这里为了演示我是新建了一个空文件夹，当让如果文件夹里面已经有了文件，也是被允许的。</p><h4 id="修改仓库中的文件"><a href="#修改仓库中的文件" class="headerlink" title="修改仓库中的文件"></a>修改仓库中的文件</h4><p>&emsp;&emsp;一般来说，每个仓库都会有一个<code>README</code>文件（起码我目前看到的是这样），用于告诉别人（因为git很常用于多人协作）这个项目是做什么的，里面的文件是什么等等，就起一个摘要的作用。所以我们给我们的仓库添加一个<code>README</code>文件，当然必须在仓库的根目录或者子目录里面创建，否则git是追踪不到的。根据廖雪峰老师的博客，git只能监视文本文件内容的具体改动，比如一个txt文件，你写了”Hello World”，这个是可以被git所具体知道的。但是如果一个二进制文件，比如一张图片，你把它裁剪了一部分，它只知道照片小了，但具体改动它是不明确的。(word也是二进制文件！震惊！)</p><p>&emsp;&emsp;我们在仓库根目录下新建<code>README.txt</code>文件，更改里面的内容如下(不要使用记事本，这可能会带来意料之外的编码错误):<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">This is a README file.</span><br><span class="line">Glad to meet you.</span><br></pre></td></tr></table></figure><br>&emsp;&emsp;然后我们需要告知git我们对文件进行了修改，需要如下命令:</p><p>&emsp;&emsp;第一步:使用<code>git add [file name]</code>告知git，我们将哪些文件添加到仓库<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git add README.txt</span><br></pre></td></tr></table></figure><br>&emsp;&emsp;第二步:使用<code>git commit</code>告知git，将文件提交到仓库<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git commit -m &quot;First commit&quot;</span><br></pre></td></tr></table></figure><br>&emsp;&emsp;其中,<code>-m</code>参数后面跟的是这次提交的描述。也就是我们改动了什么一类的内容。当然你可以随便写，但是最好是有实际意义，否则下一个接手的人可能想杀人。</p><p>&emsp;&emsp;当然这里有一个疑问，就是为什么将一个文件在版本库更新为什么要分两步呢？第一步<code>add</code>可以多次使用,选择不同的文件，然后使用<code>commit</code>一次提交。可以使用<code>add .</code>来选定所有文件。</p><p>&emsp;&emsp;至于具体的版本控制，emmmmmm这个我也不会，因为还没有用到过……所以还是先说一下<code>github</code>的使用。</p><h2 id="远程仓库，GitHub"><a href="#远程仓库，GitHub" class="headerlink" title="远程仓库，GitHub"></a>远程仓库，GitHub</h2><h3 id="创建远程仓库"><a href="#创建远程仓库" class="headerlink" title="创建远程仓库"></a>创建远程仓库</h3><p>&emsp;&emsp;注册一个GitHub账号，在GitHub右上角可以创建一个新的远程仓库。如下图:</p><p><img src="\../images/github_new_repo.png" alt="github_new_repo"></p><p>&emsp;&emsp;点进去页面如下:</p><p><img src="\../images/github_create_repo.png" alt="github_create_repo"></p><p>&emsp;&emsp;用作演示，我们创建了一个名为<code>GitHubTest</code>的仓库，并且没有初始化<code>README</code>文件。如下图:(当然什么都没有)</p><p><img src="\../images/GitHubTest_repo.png" alt="GitHubTest_repo"></p><p>&emsp;&emsp;其中红框的部分是这个仓库的公钥，我们在本地根据这个公钥可以关联这个远程仓库。当然，别人的仓库你也是可以关联的，但是由于对方仓库的权限限制，你无法进行同步操作。</p><p>&emsp;&emsp;我们在cmd中进入到本地仓库的根目录，执行命令<code>git remote add origin [仓库SSH]</code>,SSH即为前面图片框起来的部分。如图:</p><p><img src="\../images/git_remote.png" alt="git_remote"></p><p>&emsp;&emsp;似乎是什么都没发生，那就说明我们没做错。简洁的即是美的。</p><p>&emsp;&emsp;这个命令的作用是关联一个远程仓库，其中<code>origin</code>是这仓库的名字，当然你也可以用别的单词来代替。但<code>origin</code>是我们约定俗称的，用来表示远程仓库。</p><p>&emsp;&emsp;下面我们应用<code>git push -u origin master</code>将本地仓库推送到远程仓库上。</p><p><img src="\../images/git_push.png" alt="git_push"></p><p>&emsp;&emsp;把本地库的内容推送到远程，用<code>git push</code>命令，实际上是把当前分支<code>master</code>推送到远程。</p><p>&emsp;&emsp;由于远程库是空的，我们第一次推送<code>master</code>分支时，加上了<code>-u</code>参数，Git不但会把本地的<code>master</code>分支内容推送的远程新的<code>master</code>分支，还会把本地的<code>master</code>分支和远程的<code>master</code>分支关联起来，在以后的推送或者拉取时就可以简化命令。(这段是抄的)</p><p>&emsp;&emsp;当我们查看我们的远程仓库时，你会惊奇地发现，我们的远程仓库已经有了和本地仓库一样的文件(第一次这么做的时候我惊喜了老半天，觉得好神奇)。如图:</p><p><img src="\../images/github_check.png" alt="git_check"></p><p>&emsp;&emsp;以后我们提交远程仓库，只需要使用<code>git push origin master</code>就可以了。</p>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;&amp;emsp;&amp;emsp;在搭建博客的过程中开始真正接触到git这一强大的工具，也就很快对其产生了好奇心。于是写一篇博客来记录自己学习git和github的过程。&lt;/p&gt;
    
    </summary>
    
    
      <category term="github" scheme="http://blog.raincur.com/categories/github/"/>
    
    
      <category term="learning" scheme="http://blog.raincur.com/tags/learning/"/>
    
      <category term="github" scheme="http://blog.raincur.com/tags/github/"/>
    
  </entry>
  
  <entry>
    <title>RainCurtain</title>
    <link href="http://blog.raincur.com/2020/02/25/RainCurtain/"/>
    <id>http://blog.raincur.com/2020/02/25/RainCurtain/</id>
    <published>2020-02-25T15:17:08.000Z</published>
    <updated>2020-03-11T15:50:28.116Z</updated>
    
    <content type="html"><![CDATA[<p>&emsp;&emsp;日子一天天地过，每天似乎毫无新意。</p> <a id="more"></a><p>&emsp;&emsp;今天19年10月14日，也不算是个什么特别的日子。不多能让我的这一天变得特殊的，或许就是在今天我开通了我的第一个博客吧。细想过来每一天都是那么的相似，不过是因为有了某些事情，才变得特殊起来，比如新生命的诞生，又比如挚爱的分别。  </p><p>&emsp;&emsp;说起来写一个博客还是昨天ACM讲座听一位dalao演讲时建议的，说写一个博客，记录自己的学习历程，一方面可以记录自己生活中的点点滴滴，另一方面可以当作笔记来用，学完别人的再自己写一遍总会好很多，再一方面也算是互帮互助吧，在学习的过程中很多人给予了我们很多力量，我们也要给与更多人更多力量。  </p><p>&emsp;&emsp;我给这篇文章取名为RainCurtain，这是恰好昨天许嵩发了一首新歌，名字就叫做雨幕，初听很平淡，旋律也是感觉很相似。细听好像有那么几分味道，曲子听起来也还不错。无所谓了，反正我无法做到客观中立，那我就自己开心好了。  </p><p>&emsp;&emsp;雨幕，说起来我还真没想到西安也是一座“阴雨的小城”，来到西安，大半数时间都在阴雨天气吧，见到阳光是一件很奢侈的事情。我戏称这是西北的“梅雨季节”。  </p><p>&emsp;&emsp;说实话西安给我的第一印象并不是很好，因为阴天。阴天，雨雾，给人以一种阴沉沉的感觉。虽然我喜欢阴雨。但是习惯了北湖的阳光与纯净的天空与新鲜的空气的我难免有些不适应。</p><p>&emsp;&emsp;不过想来喜欢阴雨，是因为它总能让我回忆起之前的一些事情，比如儿童时期雨天一起在村大队里的玩闹，比如初中那些在雨中在操场上在城市中的狂奔，又比如高中雨中的运动会，以及秦旭。不过来到西安后，这些都不见了，都离我远去了。想在雨天抽身找人一起闲逛聊聊之前，看看往后都找不到了。甚至想对望一眼恒大的那一件屋子也做不到了。见不到熟悉的人熟悉的景熟悉的事。“叹一句当时只道是寻常”</p><p>&emsp;&emsp;<strong>不过现在也会变成寻常吧，我猜。</strong></p><p>&emsp;&emsp;其实很多事情就是这样吧，当你觉得以后总会有很多的时候，最后你才会发现原来“盛庭难在”。就像之前那一段时间秦旭几乎每个星期都陪我出去玩，我就以为以后我们出来玩的时间多着呢，然后就再没出来过。就像暑假秦旭说：这是我最后一次和你出来了；然后那以后我到现在还没再见到她，除了在梦里和在网上。</p><p>&emsp;&emsp;<strong>挺好的，现在就挺好的我觉得。真的挺好的。我不想再有什么改变，但我知道这种状态是一种伪装的平衡，指不定哪天就突然消失不见，只剩下怀念。</strong></p><p>&emsp;&emsp;那我不如好好珍惜这最近慵懒平静开心自由的快乐生活，在它远离之前好好的享受它。毕竟谁也不知道明天会不会突然世界毁灭或者猝死。</p><p>&emsp;&emsp;<strong>也许人世间一切的美好都是短暂的，短暂所以美丽。终会消逝。与其祈求长久，不如把握当下，珍惜时光。</strong></p><p>&emsp;&emsp;或许这样便可留住快乐，或者说，坦坦荡荡好过忧情伤神。</p><p>&emsp;&emsp;说了这么多，似乎是和“雨幕”没有什么关系。也没必要有什么关系，只不过是从下雨让我联想到了很多事情罢了。</p><p>　　The world is a dream in rain<br>　　The splashes of water shines don’t you see<br>　　Watch out<br>　　Don’t step on the fish in the pool<br>　　I’m a little soaking mouse<br>　　I’m wet with a blanket of rain<br>　　And I dream of you</p>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;&amp;emsp;&amp;emsp;日子一天天地过，每天似乎毫无新意。&lt;/p&gt;
    
    </summary>
    
    
      <category term="随笔杂谈" scheme="http://blog.raincur.com/categories/%E9%9A%8F%E7%AC%94%E6%9D%82%E8%B0%88/"/>
    
    
      <category term="个人" scheme="http://blog.raincur.com/tags/%E4%B8%AA%E4%BA%BA/"/>
    
      <category term="情绪" scheme="http://blog.raincur.com/tags/%E6%83%85%E7%BB%AA/"/>
    
  </entry>
  
</feed>
