python中線性規劃問題

2021-08-25 14:03:22 字數 1508 閱讀 6660

1、python中的scipy中提供了線性規劃模組

1)模組匯入

from scipy import optimize

optimize.linprog

2)模組特點說明

需要注意的是這個模組只能找到線性規劃的最小值,因此,如果約束條件的不等式(變數除外)中含有「大於等於」的需要修改為「小於等於」,例如:x+y>=5,轉換為-x-y<=-5;

最大化max_z=x+y,轉換為最小化min_z=-x-y

最後linprog得到的是最小值,新增負號則變為最大值

2、**如下:

import numpy as np

from scipy import optimize

def line_progress():

# max z=x+y

# subject to :

# (1)2y+x<=6

# (2)y+2x<=6

# (3)x>=0,y>=0

# 最大值是(1)和(2)的交點,max:z=2+2=4

# z=x+y : 最大化係數max_coe_z=[1,1]轉化成最小化係數min_coe_z=-[1,1],新增負值

min_coe_z = - np.array([1, 1])

# 不等式中的係數(the coefficient of subject to in the inequality)

coe_st_ub = np.array([[2, 1], [1, 2]])

# 不等式中約束值(the value of subject to in the inequality)

value_st_ub = np.array([6, 6])

# 不等式中的變數(constrained variables of inequality)

var1_st, var2_st = (0, none), (0, none)

# 優化的結果(the result of optimize)

line_result = optimize.linprog(min_coe_z, a_ub=coe_st_ub, b_ub=value_st_ub, bounds=(var1_st, var2_st))

# 如果找到最小值輸出最小值,返回true

if line_result.success:

# 最小值的變數

print("線性規劃最小值的變數:")

print(line_result.x)

# 最小值

print("線性規劃最小值:")

print(line_result.fun)

# 最大值

print("線性規劃最大值:")

print(-line_result.fun)

else:

print("找不到線性規劃最小值。")

if __name__ == '__main__':

line_progress()

線性可分SVM中線性規劃問題的化簡

在網上找了許多關於線性可分svm化簡的過程,但似乎都不是很詳細,所以憑藉自己的理解去詳解了一下。線性可分svm的目標是求得乙個超平面 其實就是求w和b 在其在對目標樣本的劃分正確的基礎上,使得到該超平面最近的樣本的幾何間隔最遠。寫成線性規劃問題即為 其中 為最近點到超平面的幾何間隔,特別的間隔 w ...

python求解線性規劃問題

最近在做最優化的作業,涉及到線性規劃問題,之前運籌學也學過相關問題,都是通過手寫單純性表來進行求解的,但學了python之後感覺太麻煩了,不如利用python來幫我們求解。線性規劃求解主要弄清楚兩個部分,目標函式 max,min 和約束條件 s.t.我們求解時一般要化為python的標準形式 在此用...

線性規劃求解路徑問題

給定乙個帶權重的有向圖g v,e v為頂點集,e為有向邊集,每一條有向邊均有乙個權重。對於給定的頂點s t,以及v的子集v 尋找從s到t的不成環有向路徑p,使得p經過v 中所有的頂點 對經過v 中節點的順序不做要求 記邊的變數為ei 對應權重為ci 點記為vi 其出邊記為vo ji,其入邊記為vi ...