一般分为两类问题:1 是如何合理地使用有限的劳动力,设备,资金等资源,获得最大的利润。2 为了达到某一个目标,应该如何组织生产,或者安排生产工艺流程,使得消耗资源最小。线性规划的条件:决策变量,目标函数,约束条件。
min z = Σcx(j个变量)
s.t Σax(j)=b
x(j) >=0
其中b>=0,对目标函数求最小值,决策变量一律要求非负,约束条件除非负约束条件外,一律为等式约束;约束条件的右端项一律为非负。
min z = cx
s.t Ax = b
x>=
from scipy import optimizeimport numpy as npc = [2,3,-5]A = [[-2,5,-1],[1,3,1]]b = [-10,12]Aeq = [[1,1,1]]beq = [7]x1 = (0,None)x2 = (0,None)x3 = (0,None)def LP(m='',clist=[],Alist=[],blist=[],Aeqlist=[],beqlist=[],all_x=()): c = np.array(clist) A = np.array(Alist) b = np.array(blist) Aeq = np.array(Aeqlist) beq = np.array(beqlist) # 求解 if m == 'min': res = optimize.linprog(c, A, b, Aeq, beq, bounds=all_x) fun = res.fun x = res.x else: res = optimize.linprog(-c, A, b, Aeq, beq, bounds=all_x) fun = -(res.fun) x = res.x return fun, x
凸集:设s是空间中的任意点集,若对任意的x1,x2属于s,集合中任意两点的连线都在集合中为凸集。