非线性规划问题.Z=x/(1+y),x大于等于0且小于等于16.y大于等于0且小于等于15%.求可行区域内的Z的最大值.

3个回答

  • % 以下代码可在7.1以上版本运行.

    close all

    clear,clc

    warning('off')

    % 问题1

    lb = [0; 0]; % x y的下限

    ub = [16; 0.15]; % x y的上限

    myfun = @(x) -x(1)/(1+x(2)); % 目标函数

    x0 = [10;0.1]; % Starting guess at the solution

    [x1,fval1] = fmincon(myfun,x0,[],[],[],[],lb,ub);

    xmax = x1(1) % 极值点x的值

    ymax = x1(2) % 极值点y的值

    zmax = -fval1 % Z的最大值

    % 问题2

    lb = [0; 0]; % x y的下限

    ub = [9; 3] ; % x y的上限

    myfun = @(x) -(61.6-0.95*x(1)-2.25*x(2))*100/(100+(25-1.66*x(1)+3.33*x(2))); % 目标函数

    x0 = [5;0.1]; % Starting guess at the solution

    [x1,fval1] = fmincon(myfun,x0,[],[],[],[],lb,ub);

    xmax2 = x1(1) % 极值点x的值

    ymax2 = x1(2) % 极值点y的值

    zmax2 = -fval1 % Z的最大值

    .

    计算结果:

    问题1:

    当xmax =16、ymax =0时,

    Z取得最大值16.

    问题2:

    当xmax =0、ymax =0时,

    Z取得最大值49.28.