最優化方法Python計算:標準型線性規劃的輔助問題

對標準型線性規劃
{ minimize c ? x s.t.???? A x = b x ≥ o ( 1 ) \begin{cases} \text{minimize}\quad\quad\boldsymbol{c}^\top\boldsymbol{x}\\ \text{s.t.\ \ \ \ }\quad\quad\quad\boldsymbol{Ax}=\boldsymbol{b}\\ \quad\quad\quad\quad\quad\quad\boldsymbol{x}\geq\boldsymbol{o} \end{cases}\quad\quad(1) ? ? ??minimizec?xs.t.????Ax=bxo?(1)
其中 A ∈ R m × n \boldsymbol{A}\in\text{R}^{m\times n} ARm×n,且rank A = m ≤ n \boldsymbol{A}=m\leq n A=mn b ≥ o \boldsymbol{b}\geq\boldsymbol{o} bo。假定 A \boldsymbol{A} A中存在部分列向量 α I 1 , ? , α I m 1 \boldsymbol{\alpha}_{I_1},\cdots,\boldsymbol{\alpha}_{I_{m_1}} αI1??,?,αIm1???構成單位陣 I m \boldsymbol{I}_m Im?的一部分。其中, m i ≤ m m_i\leq m mi?m。記 n 1 = m ? m 1 n_1=m-m_1 n1?=m?m1? E \boldsymbol{E} E I m \boldsymbol{I}_m Im?中去掉 α I 1 , ? , α I m 1 \boldsymbol{\alpha}_{I_1},\cdots,\boldsymbol{\alpha}_{I_{m_1}} αI1??,?,αIm1???剩下的部分,則 E ∈ R m × n 1 \boldsymbol{E}\in\text{R}^{m\times n_1} ERm×n1?。引入人工變量 x a ∈ R n 1 = ( x a 1 ? x a n 1 ) \boldsymbol{x}_a\in\text{R}^{n_1}=\begin{pmatrix}x_{a_1}\\\vdots\\x_{a_{n_1}}\end{pmatrix} xa?Rn1?= ?xa1???xan1???? ?,令 A ′ = ( A , E ) \boldsymbol{A}'=(\boldsymbol{A},\boldsymbol{E}) A=(A,E),構造線性規劃
{ minimize e ? x a s.t.???? A ′ ( x x a ) = A x + E x a = b x , x a ≥ o ( 2 ) \begin{cases} \text{minimize}\quad\quad\boldsymbol{e}^\top\boldsymbol{x}_a\\ \text{s.t.\ \ \ \ }\quad\quad\quad\boldsymbol{A}'\begin{pmatrix}\boldsymbol{x}\\\boldsymbol{x}_a\end{pmatrix} =\boldsymbol{Ax}+\boldsymbol{Ex}_a =\boldsymbol{b}\\ \quad\quad\quad\quad\quad\quad\boldsymbol{x},\boldsymbol{x}_a\geq\boldsymbol{o} \end{cases}\quad\quad(2) ? ? ??minimizee?xa?s.t.????A(xxa??)=Ax+Exa?=bx,xa?o?(2)
其中, e ∈ R n \boldsymbol{e}\in\text{R}^n eRn,所有元素均為1。(2)稱為線性規劃(1)的輔助線性規劃。輔助問題總有一個明顯的初始基矩陣: A ′ = ( A , E ) \boldsymbol{A}'=(\boldsymbol{A},\boldsymbol{E}) A=(A,E)的最后 m m m列構成的單位陣 I m \boldsymbol{I}_m Im?
例1 標準型線性規劃
{ minimize ? 2 x 1 + x 2 s.t.?? x 1 + x 2 ? x 3 = 2 x 1 ? x 2 ? x 4 = 1 x 1 + x 5 = 3 x 1 , x 2 , x 3 , x 4 , x 5 ≥ 0 . \begin{cases} \text{minimize}\quad\quad -2x_1+x_2\\ \text{s.t.\ \ }\quad\quad\quad\quad x_1+x_2-x_3=2\\ \quad\quad\quad\quad\quad\quad x_1-x_2-x_4=1\\ \quad\quad\quad\quad\quad\quad x_1+x_5=3\\ \quad\quad\quad\quad\quad\quad x_1,x_2,x_3,x_4,x_5\geq0 \end{cases}. ? ? ??minimize?2x1?+x2?s.t.??x1?+x2??x3?=2x1??x2??x4?=1x1?+x5?=3x1?,x2?,x3?,x4?,x5?0?.
其等式約束系數矩陣和常數向量
A = ( 1 1 ? 1 0 0 1 ? 1 0 ? 1 0 1 0 0 0 1 ) , b = ( 2 1 3 ) . \boldsymbol{A}=\begin{pmatrix}1&1&-1&0&0\\1&-1&0&-1&0\\1&0&0&0&1\end{pmatrix},\boldsymbol{b}=\begin{pmatrix}2\\1\\3\end{pmatrix} . A= ?111?1?10??100?0?10?001? ?,b= ?213? ?.
其中, α 5 \boldsymbol{\alpha}_5 α5?構成單位陣中一部分。添加人工變量 x 6 , x 7 x_6,x_7 x6?,x7?,構造其輔助線性規劃
{ minimize x 6 + x 7 s.t.?? x 1 + x 5 = 3 x 1 + x 2 ? x 3 + x 6 = 2 x 1 ? x 2 ? x 4 + x 7 = 1 x 1 , x 2 , x 3 , x 4 , x 5 , x 6 , x 7 ≥ 0 . \begin{cases} \text{minimize}\quad\quad x_6+x_7\\ \text{s.t.\ \ }\quad\quad\quad\quad x_1+x_5=3\\ \quad\quad\quad\quad\quad\quad x_1+x_2-x_3+x_6=2\\ \quad\quad\quad\quad\quad\quad x_1-x_2-x_4+x_7=1\\ \quad\quad\quad\quad\quad\quad x_1,x_2,x_3,x_4,x_5,x_6,x_7\geq0 \end{cases}. ? ? ??minimizex6?+x7?s.t.??x1?+x5?=3x1?+x2??x3?+x6?=2x1??x2??x4?+x7?=1x1?,x2?,x3?,x4?,x5?,x6?,x7?0?.
其等式約束系數矩陣為
A ′ = ( A , E ) = ( 1 1 ? 1 0 0 1 0 1 ? 1 0 ? 1 0 0 1 1 0 0 0 1 0 0 ) . \boldsymbol{A}'=(\boldsymbol{A},\boldsymbol{E})=\begin{pmatrix}1&1&-1&0&0&1&0\\1&-1&0&-1&0&0&1\\1&0&0&0&1&0&0\end{pmatrix}. A=(A,E)= ?111?1?10??100?0?10?001?100?010? ?.
其中, E = ( α 6 , α 7 ) = ( 1 0 0 1 0 0 ) \boldsymbol{E}=(\boldsymbol{\alpha}_6,\boldsymbol{\alpha}_7)=\begin{pmatrix}1&0\\0&1\\0&0\end{pmatrix} E=(α6?,α7?)= ?100?010? ?。顯然, ( α 6 , α 7 , α 5 ) = I 3 (\boldsymbol{\alpha}_6,\boldsymbol{\alpha}_7,\boldsymbol{\alpha}_5)=\boldsymbol{I}_3 (α6?,α7?,α5?)=I3?成為輔助線性規劃的一個基矩陣。
下列代碼定義構造標準型線性規劃(1)的輔助問題(2)的Python函數。

import numpy as np									#導入numpy
def prepro(A):def find_e(A, ei):								#查找A中單位向量位置n = A.shape[1]j = 0while j < n:if(abs(A.T[j] - ei) < 1e-10).all():return jj += 1return -1m, n = A.shapepos = np.array([-1] * m)						#單位向量位置下標序列E = np.array([[]for i in range(m)])				#人工變量系數矩陣e = np.eye(m)									#單位陣i = 0k = 0while i < m:									#對每一個單位向量j = find_e(A, e[i])							#查找在A中位置if j >= 0:									#若在A中出現pos[i] = j								#記錄位置下標else:										#未在A中E = np.hstack((E, e[i].reshape(m, 1)))	#追加到Epos[i] = n + k							#記錄位置k += 1i += 1return E, pos

程序的第2~26行定義的prepro函數實現構造標準型線性規劃輔助問題的過程。其唯一的參數A表示標準型問題的系數矩陣 A \boldsymbol{A} A。函數體內第12、13行分別將表示人工變量系數矩陣的E和單位向量在 ( A , E ) (\boldsymbol{A},\boldsymbol{E}) (A,E)中位置下標的序列的pos初始化為空集和 m m m ? 1 -1 ?1的數組。第14行定義單位陣e,其中的每一個行向量e[i]構成一個單位向量。第17~25行的while循環確定每個單位向量e[i]在 ( A , E ) (\boldsymbol{A},\boldsymbol{E}) (A,E)中位置(或在A中,或追加于E),記錄于pos。其中,第18行調用的find_e函數在矩陣A中查找與單位向量e[i]。該函數是定義于第3~10行內部函數。若e[i]為A中的第j列,返回j,否則返回 ? 1 -1 ?1。本函數最終返回E和pos。
例2 用prepro構造
{ minimize ? 2 x 1 + x 2 s.t.?? x 1 + x 2 ? x 3 = 2 x 1 ? x 2 ? x 4 = 1 x 1 + x 5 = 3 x 1 , x 2 , x 3 , x 4 , x 5 ≥ 0 . \begin{cases} \text{minimize}\quad\quad -2x_1+x_2\\ \text{s.t.\ \ }\quad\quad\quad\quad x_1+x_2-x_3=2\\ \quad\quad\quad\quad\quad\quad x_1-x_2-x_4=1\\ \quad\quad\quad\quad\quad\quad x_1+x_5=3\\ \quad\quad\quad\quad\quad\quad x_1,x_2,x_3,x_4,x_5\geq0 \end{cases}. ? ? ??minimize?2x1?+x2?s.t.??x1?+x2??x3?=2x1??x2??x4?=1x1?+x5?=3x1?,x2?,x3?,x4?,x5?0?.
的輔助問題的等式約束系數矩陣。
解: 根據例1的數據,下列程序完成計算

import numpy as np#導入numpy
from fractions import Fraction as F
np.set_printoptions(formatter={'all':lambda x:#設置輸出格式str(F(x).limit_denominator())})
A = np.array([[1, 1, -1, 0, 0],	#原問題系數矩陣[1, -1, 0, -1, 0],[1, 0, 0, 0, 1]])
E, pos = prepro(A)				#引入人工變量
print(E, pos)
A1 = np.hstack((A,E))
print(A1)

程序的第2~4行設置數據輸出格式。第5~7行設置原問題等式約束系數矩陣A。第8行調用prepro函數,傳遞A計算輔助系統中人工變量的系數矩陣E和輔助問題的初始基矩陣列向量下標集pos。第10行構造輔助問題等式約束系數矩陣。運行程序,輸出

[[1 0][0 1][0 0]] [5 6 4]
[[1 1 -1 0 0 1 0][1 -1 0 -1 0 0 1][1 0 0 0 1 0 0]]

意為輔助問題中人工變量的系數矩陣 E = ( 1 0 0 1 0 0 ) \boldsymbol{E}=\begin{pmatrix}1&0\\0&1\\0&0\end{pmatrix} E= ?100?010? ?,初始基矩陣列向量為 ( α 6 , α 7 , α 5 ) (\boldsymbol{\alpha}_6,\boldsymbol{\alpha}_7,\boldsymbol{\alpha}_5) (α6?,α7?,α5?)。輔助問題等式約束矩陣 A ′ = ( A , E ) = ( 1 1 ? 1 0 0 1 0 1 ? 1 0 ? 1 0 0 1 1 0 0 0 1 0 0 ) \boldsymbol{A}'=(\boldsymbol{A},\boldsymbol{E})=\begin{pmatrix}1&1&-1&0&0&1&0\\1&-1&0&-1&0&0&1\\1&0&0&0&1&0&0\end{pmatrix} A=(A,E)= ?111?1?10??100?0?10?001?100?010? ?。與例1的計算結果一致。
輔助問題(2)由于其目標函數 e ? x a ≥ 0 \boldsymbol{e}^\top\boldsymbol{x}_a\geq0 e?xa?0有下界,故必有最優解。輔助問題(2)與原問題(1)有如下的關系
定理1 標準型線性規劃(1)有可行解,當且僅當其輔助線性規劃(2)的最優解為 x a ? = o \boldsymbol{x}_a^{*}=\boldsymbol{o} xa??=o
對問題(1)運用單純形算法可算得其輔助問題(2)最優解 x ? = ( x x a ) \boldsymbol{x}^{*}=\begin{pmatrix}\boldsymbol{x}\\\boldsymbol{x}_a\end{pmatrix} x?=(xxa??),求解過程稱為第一階段。按定理1,若 x a = o \boldsymbol{x}_a=\boldsymbol{o} xa?=o則原問題(1)可行。并且,若 x ? \boldsymbol{x}^{*} x?中的原問題決策變量部分 x \boldsymbol{x} x恰巧是是(1)的基本可行解,即第一階段計算所得的輔助問題的基矩陣 B ? \boldsymbol{B}^{*} B?恰包含在原問題(1)的系數矩陣 A \boldsymbol{A} A中,則以此為起點,可運用單純形算法求解問題(1),這一過程稱為第二階段
例3 標準型線性規劃
{ minimize ? 2 x 1 + x 2 s.t.?? x 1 + x 2 ? x 3 = 2 x 1 ? x 2 ? x 4 = 1 x 1 + x 5 = 3 x 1 , x 2 , x 3 , x 4 , x 5 ≥ 0 . \begin{cases} \text{minimize}\quad\quad -2x_1+x_2\\ \text{s.t.\ \ }\quad\quad\quad\quad x_1+x_2-x_3=2\\ \quad\quad\quad\quad\quad\quad x_1-x_2-x_4=1\\ \quad\quad\quad\quad\quad\quad x_1+x_5=3\\ \quad\quad\quad\quad\quad\quad x_1,x_2,x_3,x_4,x_5\geq0 \end{cases}. ? ? ??minimize?2x1?+x2?s.t.??x1?+x2??x3?=2x1??x2??x4?=1x1?+x5?=3x1?,x2?,x3?,x4?,x5?0?.
其目標函數系數向量 c = ( ? 2 1 0 0 0 ) \boldsymbol{c}=\begin{pmatrix}-2\\1\\0\\0\\0\end{pmatrix} c= ??21000? ?,等式約束系數矩陣和常數向量
A = ( 1 1 ? 1 0 0 1 ? 1 0 ? 1 0 1 0 0 0 1 ) , b = ( 2 1 3 ) . \boldsymbol{A}=\begin{pmatrix}1&1&-1&0&0\\1&-1&0&-1&0\\1&0&0&0&1\end{pmatrix},\boldsymbol{b}=\begin{pmatrix}2\\1\\3\end{pmatrix} . A= ?111?1?10??100?0?10?001? ?,b= ?213? ?.
下列代碼求解該問題。

import numpy as np													#導入numpy
from fractions import Fraction as F									#設置輸出格式
np.set_printoptions(formatter={'all':lambda x:str(F(x).limit_denominator())})
A = np.array([[1, 1, -1, 0, 0],										#原問題數據設置[1, -1, 0, -1, 0],[1, 0, 0, 0, 1]])
b = np.array([2, 1, 3])
c = np.array([-1, 2, 0, 0, 0])
E, pos = prepro(A)													#構造輔助問題系數矩陣
A1 = np.hstack((A, E))
Bind = pos															#構造輔助問題初始基矩陣
Nind = np.setdiff1d(np.arange(5+E.shape[1]),Bind)
c1 = np.concatenate((np.zeros(5), np.ones(E.shape[1])), axis = 0)	#輔助問題目標函數系數
Bindst = simplex(A1, b, c1, Bind, Nind)								#求解輔助問題最優解
Nindst = np.setdiff1d(np.arange(5), Bindst)
Bst = A1[:, Bindst]													#輔助問題最優解基矩陣
Bst1 = np.linalg.inv(B)												#逆陣
xBst = np.matmul(Bst1,b.reshape(3, 1)).flatten()					#對應基矩陣最優解部分
x = np.zeros(5 + E.shape[1])
x[Bindst] = xBst													#輔助問題最優解
print('輔助問題最優解x=%s'%x)
print('輔助問題最優解對應的基矩陣向量下標:%s'%Bindst)					#輔助問題最優解基矩陣包含于原問題系數矩陣
Bind = simplex(A, b, c, Bindst, Nindst)								#求解原問題最優解
B = A[:, Bind]														#當前基矩陣
B1 = np.linalg.inv(B)												#逆陣
xB = np.matmul(B1,b.reshape(3, 1)).flatten()						#對應基矩陣最優解部分
x = np.zeros(5)
x[Bind] = xB														#原問題最優解
print('原問題最優解x=%s'%x)

程序的前14行與例2中的代碼一樣調用prepro構造原問題輔助問題。第15行調用博文《最優化方法Python計算:標準型線性規劃的單純形算法》定義的simplex函數求解輔助問題,完成第一階段計算。第17~22行計算并輸出輔助問題最優解。根據第15所得輔助問題最優解對應的基矩陣(第23行輸出)包含于原問題的系數矩陣中(見下列輸出),第18行調用simplex求解原問題,完成第二階段計算。運行程序,輸出

輔助問題最優解x=[3/2 1/2 0 0 3/2 0 0]
輔助問題最優解對應的基矩陣向量下標:[1 0 4]
原問題最優解x=[3 0 1 2 0]

注意輔助問題最優解中,人工變量 x 6 = x 7 = 0 x_6=x_7=0 x6?=x7?=0,故原問題可行。輔助問題最優解對應基矩陣列向量下標為2,1,5均含于原問題系數矩陣中,故可利用它直接求解原問題。
寫博不易,敬請支持:
如果閱讀本文于您有所獲,敬請點贊、評論、收藏,謝謝大家的支持!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/38676.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/38676.shtml
英文地址,請注明出處:http://en.pswp.cn/web/38676.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

軟件資產管理系統:提升企業透明度與合規性的終極解決方案!

在當今數字化時代&#xff0c;企業軟件資產的管理變得愈發復雜和重要。為了幫助企業更好地管理軟件資產、提升透明度和確保合規性&#xff0c;smartlic軟件資產管理系統應運而生。本文將深入探討smartlic系統的核心功能、實施案例及未來展望&#xff0c;為您揭示這一系統如何成…

Linux Ubuntu 20.04.06 安裝Onboard虛擬鍵盤教程

目錄 一、在線安裝 二、源碼安裝 三、包安裝 四、設置 五、禁用系統鍵盤 一、在線安裝 sudo apt-get update #更新軟件源 sudo apt-get install onboard #安裝Onboard sudo apt-get purge onboard # 卸載 安裝后&#xff0c;如果在終端使用命令&#xff1a;onboard 啟…

fio作圖

fio --filenametest_file --direct1 --rwrandwrite --numjobs1 --iodepth16 \ --ioenginelibaio --bs4k --group_reporting --namezhangyi --log_avg_msec500 \ --write_bw_logtest-fio --write_lat_logtest-fio --write_iops_logtest-fio --size1G 結果如下有&#xff1a; …

2002-2022年各省老年人口撫養比(人口抽樣調查)數據

2002-2022年各省老年人口撫養比(人口抽樣調查)數據 1、時間&#xff1a;2002-2022年 2、指標&#xff1a;老年人口撫養比 3、來源&#xff1a;國家統計局、統計年鑒 4、范圍&#xff1a;31省&#xff0c; 5、缺失情況&#xff1a;無缺失&#xff0c;其中2010年的值取2009、…

華為 eNSP 模擬器 配置RIP實例 動態路由協議

1 實驗拓撲 2 配置路由器 #R1 Huawei>sys [Huawei]sysname R1 [R1]interface GigabitEthernet 0/0/0 [R1-GigabitEthernet0/0/0]ip address 192.168.1.1 255.255.255.0 [R1-GigabitEthernet0/0/0]qu [R1]rip [R1-rip-1]network 192.168.1.0 [R1-rip-1]version 2 [R1-rip-…

ffmpeg在powershell和ubuntu終端下的不同格式

在win10下的powershell中&#xff0c;如果想運行一個exe文件&#xff0c;就不能再像cmd命令行一樣用名字來直接運行了&#xff0c;否則會提示格式不對。 正確的做法是&#xff1a; . \ffmpeg.exe -re -i video-test.mpr -rtsp_transport tcp -vcodec h264 -f rtsp rtsp://您的…

C語言中static關鍵字的作用與用法解析

C語言中static關鍵字的作用與用法解析 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01; C語言中static關鍵字的作用與用法解析 1. static關鍵字的基本概念 在…

C# 特性 Attribute 反射 Reflection 元數據 Metadata

在C#中&#xff0c;元數據&#xff08;Metadata&#xff09;是指與程序代碼本身相關的數據&#xff0c;這些數據提供了代碼的額外信息&#xff0c;但并不直接影響代碼的執行。元數據在.NET框架中扮演著重要的角色&#xff0c;以下是一些常見的元數據類型和它們的用途&#xff1…

MySQL 9.0 發布了!

從昨晚開始&#xff0c;在DBA群里大家就在討論MySQL 9.0發布的事情&#xff0c;但是Release Note和官方文檔都沒有更新&#xff0c;所以今天早上一上班就趕緊瞅了下具體更新了哪些內容&#xff1f; 整體看來&#xff0c;基本沒什么創新。下面是9.0新增或廢棄的一些特性。 &…

(linux系統服務)Linux高級命令用戶管理

一、Linux用戶管理 1、用戶概念以及基本作用 用戶&#xff1a;指的是Linux操作系統中用于管理系統或者服務的人 一問&#xff1a;管理系統到底在管理什么&#xff1f; 答&#xff1a;Linux下一切皆文件&#xff0c;所以用戶管理的是相應的文件 二問&#xff1a;如何管理文…

CF - 1676 - G White-Black Balanced Subtrees

White-Black Balanced Subtrees - 洛谷 | 計算機科學教育新生態 (luogu.com.cn) #include <bits/stdc.h> using namespace std; int t; int n; vector<int> gv[4005]; string s; int tot; int dp(int x){int val;if(s[x]B){val1;}else if(s[x]W){val-1;}if(gv[x]…

啟智暢想集裝箱箱號識別產品簡介,軟硬件解決方案

產品介紹&#xff1a; 集裝箱車輛進出口通道&#xff0c;部署箱號識別相機&#xff0c;進行全天候監控。通過后端部署箱號識別系統&#xff0c;提供API接口&#xff0c;應用集裝箱識別模型&#xff0c;識別集裝箱箱號&#xff0c;記錄識別圖片。同時記錄識別時間、集裝箱特征圖…

“不喝雞湯 不訴離殤”華火電燃灶用實力引領烹飪灶具發展

在這個快節奏的時代&#xff0c;我們常常被各種廚房電器的雞湯所包圍&#xff0c;并悄悄的告訴我們廚房生活是美好與溫暖的&#xff0c;但面對現實中的挑戰與困難時&#xff0c;常常表現出選擇性失明&#xff1b;那些隱藏在傳統廚房烹飪環境下的危機&#xff0c;就像是慢性的毒…

Spring Boot logback 日志文件配置

引入依賴 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.24</version></dependency>logback-spring.xml 配置 <?xml version"1.0" encoding"UTF-8&quo…

Java AI+若依框架項目開發 RuoYi-Vue(SpringBoot + Vue)

1.諾依的版本 本次選擇RuoYI-Vue框架進行講解 官網地址&#xff1a;RuoYi-Vue: &#x1f389; 基于SpringBoot&#xff0c;Spring Security&#xff0c;JWT&#xff0c;Vue & Element 的前后端分離權限管理系統&#xff0c;同時提供了 Vue3 的版本 (gitee.com) 2.搭建后端…

vue中使用 json編輯器

<template><div class"stringTest"><vue-json-editorv-model"vstringData" //編輯器中的內容:showBtns"false" // 保存按鈕mode"code"lang"zh":expanded-on-start"true"json-change&quo…

5.Android逆向協議-初識HTTP和HTTPS協議

免責聲明&#xff1a;內容僅供學習參考&#xff0c;請合法利用知識&#xff0c;禁止進行違法犯罪活動&#xff01; 內容參考于&#xff1a;微塵網校 上一個內容&#xff1a;4.Android逆向協議-詳解二次打包失敗解決方案 從現在開始正式進入協議分析了。 首先客戶端與服務端之…

tkinter拖入txt文本并顯示

tkinter拖入txt文本并顯示 效果代碼 效果 代碼 import tkinter as tk from tkinter import scrolledtext from tkinterdnd2 import DND_FILES, TkinterDnDdef drop(event):file_path event.data.strip({})if file_path.endswith(.txt):with open(file_path, r, encodingutf-8…

Keepalived安裝-單節點

1.服務器信息 服務器版本服務器IPkeepalived版本安裝用戶CentOS Linux release 7.9.2009 (Core)192.168.10.244keepalived-2.2.8.tar.gzrootLinux常規基礎配置參考: Linux常規基礎配置_linux基礎配置-CSDN博客 2.keepalived安裝 -->進入opt目錄,創建keepalived子目錄 …

libpng warning iCCP cHRM chunk does not match sRGB警告解決指南

libpng warning: iCCP: cHRM chunk does not match sRGB警告解決指南 一、問題溯源 當使用 OpenCV 讀取 PNG 圖片時&#xff0c;出現了以下警告&#xff1a; libpng warning: iCCP: known incorrect sRGB profile libpng warning: iCCP: cHRM chunk does not match sRGB這些…