日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python使用scipy简单求解线性规划问题

發布時間:2023/12/18 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python使用scipy简单求解线性规划问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在運籌學中,對于線性規劃問題的求解,人工計算通常使用「單純形法」。利用一個Python程序可以幫我們檢查計算結果的正確性。

例:
max?Z=x1+2x2+x3s.t.{2x1?3x2+2x3≤1513x1+x2+5x3≤20x1,x2,x3≥0\max Z = x_1 + 2x_2 + x_3 \\s.t.\begin{cases}2x_1-3x_2+2x_3\leq15 \\ \dfrac 1 3x_1 + x_2 + 5x_3 \leq 20 \\ x_1, x_2, x_3 \geq 0 \end{cases} maxZ=x1?+2x2?+x3?s.t.????????2x1??3x2?+2x3?1531?x1?+x2?+5x3?20x1?,x2?,x3?0?

import numpy as np from scipy import optimize as op# 決策變量的取值范圍,默認為(0, None(+inf)),需要更改的情況作為linprog的bounds參數傳入 # bounds = ( # (0, None), # x1 # (0, None), # x2 # (0, None) # x3 # )# 目標函數Z的系數向量c,默認求最小值(minZ),乘以-1求解最大值 c = -1 * np.array([1, 2, 1])# 約束條件的不等式(等式傳入A_eq和b_eq參數)系數矩陣 A_ub = np.array([[2, -3, 2],[1/3, 1, 5] ]) b_ub = np.array([15, 20])# 問題求解 res = op.linprog(c=c, A_ub=A, b_ub=b) print('Z* =', -res['fun']) print(res['x'])

運行結果:

Z* = 48.333333331578594 [2.50000000e+01 1.16666667e+01 1.19224771e-11]

線性規劃問題的解可能不唯一,但目標函數的最優解 Z 是唯一的,我們可以與自己人工計算的結果進行比較(程序會有一定的浮點數誤差)。

總結

以上是生活随笔為你收集整理的Python使用scipy简单求解线性规划问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。