一、線性規劃問題的求最大最小值問題
#max: z = 4x1 + 3x2
#st: -2x1 - 3x2<=-10
#x1 + x2 <=8
#x2 <= 7
#x1,x2 > 0
from scipy.optimize import
linprog
c = [4,3] #
預設linprog求解的是最小值,若求最大值,此處c取反即可得到最大值的相反數。
a = [[-2,-3],[1,1]]
b = [-10,8]
x1_bounds =[0,none]
x2_bounds =[0,7]
res = linprog(c,a,b,bounds=(x1_bounds,x2_bounds))
print(res)
con: array(, dtype=float64)fun: 10.000000000157014message:
'optimization terminated successfully.
'nit: 4slack: array([-1.24439126e-10, 4.66666667e+00])
status: 0
success: true
x: array([1.40727180e-10, 3.33333333e+00])
結果只關注第二行和最後一行就可以了,第二行是最優值的大小,最後一行是取得最優值時變數的大小。
二、多項式的最小二乘法曲線擬合
importnumpy as np
import
matplotlib.pyplot as plt
x = np.arange(1, 6, 1)
y = np.array([2, 6, 12, 20, 30]) #
y=x^2+x#擬合
print(np.polyfit(x, y, 2))
#視覺化
f = np.polyfit(x, y, 2)
p =np.poly1d(f)
yvals =p(x)
plt.figure(figsize=(10,8))
plt.plot(x, y, '.
')plt.plot(x, yvals)
plt.xlabel('x軸
') #
可以用來標註
plt.ylabel('y軸'
)plt.show()
三、方程求導
importnumpy as np
import
scipy as sp
import
scipy.misc
def f(x): return 2*x*x + 3*x + 1
print(sp.misc.derivative(f, 2))
四、求不定積分
importnumpy as np
import
scipy as sp
import
scipy.integrate
f = lambda x : x**2
print(sp.integrate.quad(f, 0, 2))
print(sp.integrate.fixed_quad(f, 0, 2))
五、求解非線性方程組
importnumpy as np
import
scipy as sp
import
scipy.optimize
deff(x):
return [5*x[1] + 3, 4*x[0]*x[0], x[1]*x[2] - 1.5]
ans = sp.optimize.fsolve(f, [0, 0, 0]) #
實際用起來問題很大,很不准
(ans)
#print(ans[0]*ans[1]*ans[2])
print(f(ans))
六、求解線性方程組
importnumpy as np
import
scipy as sp
import
scipy.optimize
import
scipy.linalg
a = np.array([[1, 1, 1], [2, 1, 1], [1, -1, 1]])
b = np.array([2, 3, 6])
(sp.linalg.solve(a, b))
#print(sp.linalg.inv(a).dot(b)) #或利用矩陣運算求解
七、01整數規劃
#coding=utf-8
from pulp import
lpproblem, lpvariable, lpconstraint, lpconstraintle, lpconstraintge, lpmaximize, lpbinary, lpstatus
#create a new model
m = lpproblem(name="
mip model
", sense=lpmaximize)
#create variables
x = lpvariable(cat=lpbinary, name="x"
)y = lpvariable(cat=lpbinary, name="y"
)z = lpvariable(cat=lpbinary, name="z"
)#add constraint: x + 2y + 3z <= 4
m += lpconstraint(e=(x + 2*y + 3*z), sense=lpconstraintle, rhs=4, name='c0'
)#add constraint: x + y >= 1
m += lpconstraint(e=(x + y), sense=lpconstraintge, rhs=1, name='c1'
)#set objective
m.setobjective(x + y + 2*z)
#calculate with the default cbc optimizer
status =m.solve()
if lpstatus[status] == '
optimal':
for v in
m.variables():
print('
%s %g
' %(v.name, v.varvalue))
print('
obj: %g
' % m.objective.value())
八、網路流-最大流
importnetworkx as nx
g =nx.digraph()#4
#5#0 1 3
#0 2 1
#1 2 1
#1 3 1
#2 3 3
n, m =int(input()), int(input())
for i in
range(n):
g.add_node(i)
for _ in
range(m):
a, b, c = [ int(i) for i in input().split('
') ]
g.add_edge(a, b, capacity=c)
max_flow = nx.algorithms.flow.maxflow.maximum_flow(g, 0, n-1)[0]
print("
max_flow:
", max_flow)
1. csdn-用python做線性規劃
2. pulp—整數規劃例子
3. php中文網-數學建模可以用python嗎
4. csdn-python networkx 實現網路流
備戰數學建模(Python)
由於美國大學生數學建模大賽很快就要開賽了,所以我就打算在這幾天內,好好的看看 數學建模演算法與應用 這本書,裡面很多都是用matlab實現的,我還想嘗試著用python去實現它的演算法,這裡作為乙個總目錄進行查閱 python之建模規劃篇 線性規劃 python之建模規劃篇 整數規劃 python之...
數學建模 matlab解決線性規劃問題
在人們的生產實踐中,經常會遇到如何利用現有資源來安排生產,以取得最大經濟效 益的問題。此類問題構成了運籌學的乙個重要分支一數學規劃,而線性規劃 linear programming,lp 則是數學規劃的乙個重要分支。自從1947年g.b.dantzig 提出求解線 性規劃的單純形方法以來,線性規劃在...
python初中數學建模培訓 初中生數學建模培養
初中生數學建模培養 一 認識數學建模 目前,數學建模教學理論 還不完善,對 數學建模 的含義還有不同的理解 數學模型 對於現實中的原型,為了某個特定目的,作出一些必要的簡化和假設,運用適當 的數學工具得到乙個數學結構。也可以說,數學模型是利用數學語言 符號 式子與圖象 模擬現實的模型。把現實模型抽象...