700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 线性/非线性规划问题求解

线性/非线性规划问题求解

时间:2019-01-09 03:59:30

相关推荐

线性/非线性规划问题求解

一、用Excel完成线性规划问题的求解

1.建立数据源

2.写出资源配置三要素

3.在excel中设置目标函数

根据前面的分析可知,目标函数为E2,E6与F2, F6区域两列数组对应元素的乘积之和,在C10单元格中输入=SUMPRODUCT (E2:E6,F2:F6)

4.在excel中设置约束条件

5.加载excel规划求解模块

选择“文件”→“选项”→“加载项"→“转到”,勾选“规划求解加载项”。单击“确定"按钮。在“数据”菜单下就出现了“规划求解”模块

6.设置决策变量和目标函数

7.设置约束条件

约束条件1

约束条件2

约束条件3

约束条件4

约束条件5

约束条件6

约束条件7

最终添加结果

8.点击求解,得到最终结果

二、用python完成线性规划问题的求解

1.设置约束条件

2.使用scipy库对线性规划的最优解、最大值进行求解

# 导入包from scipy import optimizeimport numpy as np#创建矩阵,c为目标函数的矩阵,A_ub为约束条件的左边构成的矩阵,B_ub为约束条件的右边c=np.array([600,800,500,400,300])A_ub=np.array([[1000,2000,0,0,0],[-1,-1,0,0,0],[1000,2000,400,1000,100],[-2000,-4000,-3000,-5000,-600],[1,0,0,0,0],[0,1,0,0,0],[0,0,1,0,0],[0,0,0,1,0],[0,0,0,0,1]])B_ub=np.array([30000,-20,40000,-100000,14,8,40,5,50])# 求解res=optimize.linprog(-c,A_ub,B_ub)print(res)

3.得到结果

三、用拉格朗日方法求解

求解问题

1.手工求解

求函数f(x,y,z)在条件φ(x,y,z)=0下的极值。 方法(步骤)是:

1.做拉格朗日函数L=f(x,y,z)+λφ(x,y,z),λ称拉格朗日乘数;

2.求L分别对x,y,z,λ求偏导,得方程组,求出驻点P(x,y,z); 如果这个实际问题的最大或最小值存在,一般说来驻点只有一个,于是最值可求

2.利用python编程求解

# 导入包from sympy import *# 设置变量x,y,z,k = symbols('x,y,z,k')a,b,c=symbols('a,b,c')f = 8*x*y*zg = x**2/a**2+y**2/b**2+z**2/c**2-1#构造拉格朗日函数L=f+k*g#求导dx = diff(L, x) # 对x求偏导print("dx=",dx)dy = diff(L,y) #对y求偏导print("dy=",dy)dz = diff(L,z) #对z求偏导print("dz=",dz)dk = diff(L,k) #对k求偏导print("dk=",dk)dx= 8*y*z + 2*k*x/a**2dy= 8*x*z + 2*k*y/b**2dz= 8*x*y + 2*k*z/c**2dk= -1 + z**2/c**2 + y**2/b**2 + x**2/a**2#求出个变量解m= solve([dx,dy,dz,dk],[x,y,z,k]) print(m)#变量赋值x=sqrt(3)*a/3y=sqrt(3)*b/3z=sqrt(3)*c/3k=-4*sqrt(3)*a*b*c/3#计算方程的值f = 8*x*y*zprint("方程的最大值为:",f)

3.得到结果

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。