为什么linprog只给出一个x1或x2的值而不是两者的组合?

时间:2012-06-19 16:56:52

标签: matlab mathematical-optimization linear-programming

您好我使用linprog

以下代码
for K = 1:3;
   for M = 1:3; 

      PV_output(:,:,K) = real(PV_power_output(:,:,K));
      PV =reshape(PV_output(:,:,1),8760,1); 
      WT_output(:,:,M) =  WT_power_output(:,:,M);
      WT = reshape(WT_output(:,:,1),8760,1);
    PVenergy = sum(sum(PV_output(:,:,1)));
   WTenergy = sum(sum(WT_power_output(:,:,1)));
   % Linprog
   f = [((CRF*CC_PV)/PVenergy)+OM_PV; ((CRF*CC_WT)/WTenergy)+OM_WT];
   A(:,:) = [-PV  -WT];
   b(:,:)  = -0.25.*Demand(:);
   lb = zeros(2,1);
 ub = [max_PV_area/PV_area; max_WT_area/WT_area]';
   [x(:,K,M), fval, exitflag] = linprog(f,A,b,[],[],lb,ub)
    end
end

其中PV = 8760x2,WT = 8760 x 2且x = 2x1。当我运行这个程序时,优化收敛,退出标志为1,但我得到的值是x1 = 0,值x2等于某个整数。

为什么输出不能得到结果的混合(即x1和x2的非零值?

1 个答案:

答案 0 :(得分:2)

因为线性编程求解器将在由约束定义的多面体的顶点处返回解。最优解将永远位于这样的顶点。