| 
			
			 普通会员 
			
			
			
			
				 
				注册日期: 2007-12-02 
				
				年龄: 44 
				
					帖子: 74
				 
				
				
				声望力:  19 
				
				     
			 
	 | 
	
	
	
		
		
			
			
				 
				
			 
			 
			
		
		
		
			
			书上转载的。 
 
函数  linprog 
格式  x = linprog(f,A,b)   %求min  f ' *x   sub.to   线性规划的最优解。 
x = linprog(f,A,b,Aeq,beq)   %等式约束 ,若没有不等式约束 ,则A=[ ],b=[ ]。 
x = linprog(f,A,b,Aeq,beq,lb,ub)   %指定x的范围 ,若没有等式约束  ,则Aeq=[ ],beq=[ ] 
x = linprog(f,A,b,Aeq,beq,lb,ub,x0)   %设置初值x0 
x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options)    % options为指定的优化参数 
[x,fval] = linprog(…)   % 返回目标函数最优值,即fval= f ' *x。 
[x,lambda,exitflag] = linprog(…)   % lambda为解x的Lagrange乘子。 
[x, lambda,fval,exitflag] = linprog(…)   % exitflag为终止迭代的错误条件。 
[x,fval, lambda,exitflag,output] = linprog(…)   % output为关于优化的一些信息 
说明  若exitflag>0表示函数收敛于解x,exitflag=0表示超过函数估值或迭代的最大数字,exitflag<0表示函数不收敛于解x;若lambda=lower 表示下界lb,lambda=upper表示上界ub,lambda=ineqlin表示不等式约束,lambda=eqlin表示等式约束,lambda中的非0元素表示对应的约束是有效约束;output=iterations表示迭代次数,output=algorithm表示使用的运算规则,output=cgiterations表示PCG迭代次数。 
例: 
>>f = [-5; -4; -6]; 
>>A =  [1 -1  1;3  2  4;3  2  0]; 
>>b = [20; 42; 30]; 
>>lb = zeros(3,1); 
>>[x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb) 
结果为: 
x =      %最优解 
    0.0000 
   15.0000 
    3.0000 
fval =     %最优值 
  -78.0000 
exitflag =     %收敛 
     1 
output =  
      iterations: 6   %迭代次数 
    cgiterations: 0 
       algorithm: 'lipsol'   %所使用规则 
lambda =  
    ineqlin: [3x1 double] 
      eqlin: [0x1 double] 
      upper: [3x1 double] 
      lower: [3x1 double] 
>> lambda.ineqlin 
ans = 
    0.0000 
    1.5000 
    0.5000 
>> lambda.lower 
ans = 
    1.0000 
    0.0000 
    0.0000 
表明:不等约束条件2和3以及第1个下界是有效的
		 
		
		
		
		
		
		
		
	 |