非线性规划,图与网络

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-04 23:16:11

非线性规划

  下面只针对MATLAB解法做出介绍。在MATLAB中非线性规划的标准型为
minf(x) min \quad f(x) s.tAxBs.t\quad Ax\leq B AeqxBeqA_{eq}x \leq B_{eq} Cx0C \cdot x \leq0 Ceqx0 C_{eq}\cdot x\leq 0非线性约束要单独成立一个函数文件。例如:

function [c ceq]=nonlcon(x)
%body
end

*fmincon( )函数所求最小值均为参数x0x_0附近的局部最小值。对于无约束优化可使用fminunc( )可求得x0x_0附近的局部无约束最小值。对于带约束的优化过程中可返回函数的梯度来提高准确的程度。对于目标函数为二次型的规划,可以使用quadprog( )*进行二次规划。

图形化界面解法

直接调用优化工具箱中的optimtool命令进行图形化操作,但是在未来的版本中优化工具箱可能被移除。

图与网络流

  1. 最短路径算法:
    参考dijkstra.m 、Floyd.m文件。
  2. 最小生成树算法:
    参考prime.m、kruskal.m文件。
  3. TSP问题-改良圈算法:
    该算法效果一般也只能求得近似解,可参考网上其他优秀算法。main_TSP.m
  4. 最大流问题;
    有两种选择:
    第一种:直接利用线性规划将所有边标号,对每一个非 且非 点加入约束,在此之前图必须为单,若非如此,可增加一个虚拟 vsv_s并增加流vss1,vss2,vss3,vss...v_s-s_1,v_s-s_2,v_s-s_3,v_s-s_{...}同理增加一个虚拟vtv_t。最大流线性规划模型为:maxivsi max \quad \sum_iv_{s-i} s.tj:(i,j)Afijj:(i,j)Afji=0 s.t\sum_{j:(i,j)\in A}f_{ij}-\sum_{j:(i,j)\in A}f_{ji}=0 0fijuij(i,j)A0\leq f_{ij}\leq u_{ij}\quad \forall (i,j)\in A已证明最大流问题的系数矩阵为完全幺模矩阵,其最优解为整数解。
    第二种:直接调用MATLAB函数graphmaxflow( ) 注意输入的图需要用函数 sparse()转化为稀疏矩阵。
  5. 最小费用流:
    在求得的最大流的前提下,再次进行线性规划,其数学形式为:mincijfijmin\quad \sum c_{ij}f_{ij} s.tj:(i,j)Afijj:(i,j)Afji=0s.t \sum_{j:(i,j)\in A}f_{ij}-\sum_{j:(i,j)\in A}f_{ji}=0 ifsi=Maxflow \sum_i f_{s-i}=Maxflow 0fijuij(i,j)A0\leq f_{ij}\leq u_{ij}\quad \forall (i,j)\in A
  6. 关键路径算法:
    可采用线性规划求解,设xix_i表示时间i发生的时间其数学形式为:minxnx1min \quad x_n-x_1 s.txjxi+tij,(i,j)A,(i,j)Vs.t\quad x_j\geq x_i+t_{ij} ,(i,j)\in A,(i,j)\in V xi0x_i\geq0可加入松弛因子sij=xjxi+tijs_{ij}=x_j-x_i+t_{ij}把不等式全部转化为等式也计算了每个活动的时间余量。注意:需要加入0虚构工作来表示事件的先后顺序
    最长路径的数学模型为:maxtijxijxijmax\quad \sum t_{ij}x_{ij},x_{ij}为二进制变量 s.tj:(i,j)Axijj:(i,j)Axji={1vi1vi0otherss.t\quad \sum_{j:(i,j)\in A}x_{ij}-\sum_{j:(i,j)\in A}x_{ji}= \begin{cases} 1 & v_i为源\\ -1 & v_i为汇\\ 0 & others \end{cases}
  7. 计划网络优化:
    xix_i为事件的开始事件yijy_{ij}是活动的可能减少时间,tijt_{ij}是活动的计划时间,mijm_{ij}是活动的最短完成时间,dd为要求完成天数cijc_{ij}为减少(i,j)(i,j)活动单位时间所付出的代价,规划模型为:mincijyijmin \quad \sum c_{ij}y_{ij} s.txjxitijyij,(i,j)V,(i,j)As.t \quad x_j-x_i\geq t_{ij}-y_{ij}, (i,j)\in V,(i,j)\in A xnx1d x_n-x_1\leq d xi0,0yijtijmijx_i\geq 0, \quad 0\leq y_{ij}\leq t_{ij}-m_{ij}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!