91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 6KB
    文件類型: .py
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-02
  • 語言: Python
  • 標簽: 線性規劃??

資源簡介

基于python的解線性規劃問題程序代碼,適用環境為python3.6

資源截圖

代碼片段和文件信息

#?encoding=utf-8
__author__?=?‘ysg‘
import?numpy?as?np??#?python?矩陣操作lib
from?openpyxl?import?Workbook
import?xlwt
class?Simplex():

????def?__init__(self):
????????self._A?=?““??#?系數矩陣
????????self._b?=?““??#
????????self._c?=?‘‘??#?約束
????????self._B?=?‘‘??#?基變量的下標集合
????????self.row?=?0??#?約束個數

????def?solve(self?filename):
????????#?讀取文件內容,文件結構前兩行分別為?變量數?和?約束條件個數
????????#?接下來是系數矩陣
????????#?然后是b數組
????????#?然后是約束條件c
????????#?假設線性規劃形式是標準形式(都是等式)

????????A?=?[]
????????b?=?[]
????????c?=?[]
????????with?open(filename?‘r‘)?as?f:
????????????self.var?=?int(f.readline())
????????????self.row?=?int(f.readline())

????????????for?i?in?range(self.row):
????????????????x?=?list(map(int?f.readline().strip().split(‘?‘)))
????????????????A.append(x)
????????????b?=?list(map(int?list(f.readline().strip().split(‘?‘))))
????????????c?=?list(map(int?list(f.readline().strip().split(‘?‘))))

????????self._A?=?np.array(A?dtype=float)
????????self._b?=?np.array(b?dtype=float)
????????self._c?=?np.array(c?dtype=float)
????????#?self._A?=?np.array([[3-11-200][210110][-130-301]]dtype=float)
????????#?self._b?=?np.array([-3412]dtype=float)
????????#?self._c?=?np.array([-7?7?-2?-1?-6?0]dtype=float)
????????self._B?=?[]
????????self.row?=?len(self._b)
????????self.var?=?len(self._c)
????????(x?obj)?=?self.Simplex(self._A?self._b?self._c)
????????self.pprint(x?obj?A)

????def?pprint(self?x?obj?A):
????????px?=?[‘x_%d?=?%f‘?%?(i?+?1?x[i])?for?i?in?range(len(x))]
????????print(‘‘.join(px))



????????print(‘objective?value?is?:?%f‘?%?obj)
????????print(‘------------------------------‘)
????????for?i?in?range(len(A)):
????????????print(‘%d-th?line?constraint?value?is?:?%f‘?%?(i?+?1?x.dot(A[i])))


????def?InitializeSimplex(self?A?b):

????????b_min?min_pos?=?(np.min(b)?np.argmin(b))??#?得到最小bi

????????#?將bi全部轉化成正數
????????if?(b_min?????????????for?i?in?range(self.row):
????????????????if?i?!=?min_pos:
????????????????????A[i]?=?A[i]?-?A[min_pos]
????????????????????b[i]?=?b[i]?-?b[min_pos]
????????????A[min_pos]?=?A[min_pos]?*?-1
????????????b[min_pos]?=?b[min_pos]?*?-1

????????#?添加松弛變量
????????slacks?=?np.eye(self.row)
????????A?=?np.concatenate((A?slacks)?axis=1)
????????c?=?np.concatenate((np.zeros(self.var)?np.ones(self.row))?axis=0)
????????#?松弛變量全部加入基初始解為b
????????new_B?=?[i?+?self.var?for?i?in?range(self.row)]

????????#?輔助方程的目標函數值
????????obj?=?np.sum(b)

????????c?=?c[new_B].reshape(1?-1).dot(A)?-?c
????????c?=?c[0]
????????#?entering?basis
????????e?=?np.a

評論

共有 條評論