天软金融分析.NET函数大全 > TSL函数 > 数学函数 > 优化

Prog_L    

简述
使用单纯形法,和起作用集法,系统默认作用集形法求解线性规划问题,即求解目标都为线性和约束条件都为线性的规划问题
Prog_L(f,A,b)
求解不等式约束
Prog_L(f,A,b,Aeq,beq) 
求解不等式约束、等式约束
Prog_L(f,A,b,Aeq,beq,LB,UB)
求解不等式约束、等式约束、上下界限约束
Prog_L(f,A,b,Aeq,beq,LB,UB,x0,options)
求解不等式约束、等式约束,上下限约束,加入用户算法设置
Prog_L(f,A,b,Aeq,beq,LB,UB,x0,options,ozarr)
求解不等式约束、等式约束、上下限约束、0-1 约束
Prog_L(f,A,b,Aeq,beq,LB,UB,x0,options,ozarr,intarr)
求解不等式约束、等式约束、上下限约束、0-1 约束、整数约束
模型表达:
min= sum(f*x)
 st. A:*x<=b
  Aeq :* x = Beq
  lb<x<ub
  x = (0 or 1)
  x = integer
定义
Prog_L (f:array;A:array;B:array;Aeq:array;Beq:array;Lb:array;Ub:array;x0:array;options:array;ozarr: array;intarr:array):array;
参数
名称类型说明
Farray线性目标,一维数字数组,不可缺省
aarray线性约束,二维数字数组,不可缺省
barray线性约束,一维数字数组,不可缺省
Aeqarray线性约束,二维数字数组,缺省为空
Beqarray线性约束,一维数字数组,缺省为空
Lbarray下界约束,一维数字数组,缺省为空
Ubarray上界约束,一维数字数组,缺省为空
x0array初始值,一维数组
optionsarray选项设置,数据表类型,缺省为:
array( 'algorithm' :'activeset',//'simplex' 单纯形,'activeset' 作用集法
//(当整数、0-1 约束时推荐使用)
'maxiter':  400 ,  //最大迭代次数
'tolcon':  1.0e-10, //约束容忍误差
'tolfun' :  1.0e-8 , //目标最小误差
'tolx' :   1.0e-8  //变量最小变化)
Ozarr array01约束条件,第1个变量为01变量则ozarr := array(0)
Intarrarray整数约束条件,第2,3两个变量为整数变量则 intarr:=array(1,2)
返回结果:
数据表类型
ret["X"] : 变量取值,一维数字数组
ret["Fval"] :规划目标值,实数
ret["Error_M"] : 结果信息,整数
ret["Iter"] : 迭代次数,整数
结果信息"Error_M"含义
1 函数得到收敛的解
3 目标函数值变化小于设定精度
4 发现局部最优值
5 方向倒数小于精度
0 达到迭代次数
-1 算法终止
-2 没有发现可行解
-3 发散问题
-4 无可行下降方向
-7 不能继续求解,问题可能病态
  • 范例

    f := array(-2,-3);
    a := array((1,2),(4,0),(0,4)); //二维数组
    b := array(-2,6,2);     //一维数组
    aeq := array();      //二维数组
    beq := array();      // 一维数组
    lb := array();       //一维数组
    ub := array();       //一维数组
    //options := array();     //算法设置采用默认精度
    ozarr := array(0) ;     // 设置第0 个变量为0 or1;
    intarr := array();     // 整数约束为空;
    x0 := array(1,2);
    ret := prog_L(f,a,b,aeq,beq,lb,ub,x0,options,ozarr,intarr);
    return ret;

    结果:
    参考
    Prog_Q Prog_N Prog_M NonLP_Fminsearch NonLP_Fminbnd 
相关