非线性规划模型是指,线性规划与非线性规划有何区别-

  非线性规划模型是指,线性规划与非线性规划有何区别?

  Python-线性规划的建模与规划章节基本介绍了线性规划的例子,以及定义线性规划问题解的概念。Python Scipy库是实现Python plup库的一个非常有趣的例子。

  基本介绍

  在生产实践中,人们经常面临如何利用现有资源安排生产,获得最大经济效益的问题。这类问题构成了运筹学的一个重要分支:3354数学规划,线性规划(LP)是数学规划的一个重要分支。自1947年G. B. Dantzig提出求解线性规划的单纯形法以来,线性规划在理论上逐渐成熟,在实际应用中也越来越广泛和深入。特别是在计算机能够处理具有成千上万个约束和决策变量的线性规划问题之后,线性规划的应用领域更加广泛,已经成为现代管理中常用的基本方法之一。

  线性规划与定义示例例1某机床厂生产A、B两种机床,每台机床的售后利润分别为4000元和3000元。甲方机床生产需要A、B加工,每台机器加工时间分别为2小时和1小时;乙方机床生产需要A、B、C三种加工,每台机器加工时间为1小时。如果每天可供加工的机器小时数是A机10小时,B机8小时,C机7小时,为了毛利最大化,工厂会问A、B两个机床分别要生产多少台。

  上述问题的数学模型:假设工厂生产甲方x1机床和乙方x2机床时毛利最大,x1和x2应满足

  变量x1和x2称为决策变量,公式(1)称为问题的目标函数,几个不等式(2)是问题的约束,表示为S.T .即服从。上述目标函数和约束都是线性函数,所以称为线性规划问题。

  简而言之,线性规划问题是指在一系列线性约束条件下,寻找最大或最小线性目标函数的问题。

  在解决实际问题时,将问题归结为线性规划数学模型是重要的一步,但也往往是困难的一步。模型构建是否正确,直接影响求解。选择合适的决策变量是建立有效模型的关键之一。

  线性规划问题的解的概念

  满足约束(4)的可行解x=(x1,x2,…,xn)称为线性规划问题的可行解,目标函数)3)取最大值的可行解称为最优解。

  可行域所有可行解的集合称为问题的可行域,标为r。

  直观图式有助于理解解决线性规划问题的基本原理。首先,应用图解法求解例1。每一定值z,使目标函数值等于z的点所形成的直线称为目标函数的等势线。当z改变时,我们得到族的平行直线。例1中很明显,等势线越靠右,其上点的目标函数值越大。可以看出,这个例子中的最佳解是x *=(2,6) t,最佳目标值z*=26。

  线性规划的Matlab解Matlab中线性规划的标准形式是

  基本函数格式为linprog(c,A,B),返回值为向量x的值,其他函数调用格式包括:在Matlab命令窗口运行help linprog时,会显示所有函数调用格式。

  [x,fval]=linprog(c,a,b,Aeq,beq,LB,UB,X0,OPTIONS)))))))))))))).

  这里fval返回目标函数值,LB和UB是变量x的上下界,x0是x的初始值,OPTIONS是控制参数。

  让我们举个例子

  f=[-2;-3;5 );a=[-2,5,-1;1,3,1;b=[-10;12 );Aeq=[ 1,1,1];beq=7;[x,y]=linprog(f,a,b,aeq,beq,zeros (3,1);执行x,y=-y得到结果。

  Python解决方案Python Scipy库实现了同样的问题,我也可以在Python上实现。

  第一,可以在Scipy库中解决。

  模板大致如下

  # Scipy library from scimpimportoptimize importnumpyasnpres=optimize . linprog(c,a,b,Aeq,beq,LB,UB,X0,OPT

  #纸浆库将导入泵#目标函数的系数z=[ 2,3,1 ] #约束a=[ 1,4,2 ]、[ 3,2,0 ] b=[ 8,6 ] #确定最大化最小化问题,最大化将福建话设置为最大

  e)#定义三个变量放到列表中x=[纸浆。[1,2,3]中我的LpVariable(fx{i} ,下限=0]]#定义目标函数,lpDot可以将两个列表的对应位相乘再加和#相当于z[0]* x[0]z[1]* x[1]z[2]* x[2]m=纸浆。lpdot(z,x)#设置约束条件对于范围内的I(len(a)):m=(纸浆。lpdot(a[I],x)=b[i])#求解m.solve()#输出结果打印(f 优化结果:{果肉。值(m . objective)} )打印(f 参数取值:{[pulp.value(var) for var in x]} )依然可以得到正确的结果

  一个十分有趣的例子最后我看到了一个十分十分有趣的例子,是二维的线性规划问题,依旧用大蟒实现

  import pulp import numpy as NP from pprint import pprintdef transportation _ problem(costs,x_max,y _ max):row=len(costs)col=len(costs[0])prob=pulp .LP问题(运输问题,意义=纸浆LP最大化)var=[[纸浆LpVariable(fx{i}{j} ,lowBound=0,cat=纸浆. LP integer)for j in range(col)]for I in range(row)]flatten=lambda x:[y for l in x for y in flatten(l)]如果type(x)是list else[x]prob=pulp。lpdot(flatten(var),成本。flatten())for I in range(row):prob=(pulp。LP sum(var[I])=x _ max[I])for j in range(col):prob=(纸浆sum([I][j]for I in range(row)])[1000,960,840,650,600,700],[1200,1040,980,860,880,780]]) max_plant=[76,88,96,40]max _ culture=[42,56,440最大值为{res[objective]}) print(各变量的取值为:)pprint(res[var])就这样,我们可以得到最优方案

  插一句,如果你把问题打印出来,你可以看到太他的内部是这样的

  每日一句

  给予本身就是一种回报。(给予本身就是一个奖赏)

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: