一般分为两类问题: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 optimize
import numpy as np

c = [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,集合中任意两点的连线都在集合中为凸集。

01-22 12:56