补充—非线性规划

例题

1.模型中出现给出取值的参数
  • 例题

在这里插入图片描述
借助for循环,在参数a,b范围内求解最小值问题

clc,clear
for a = 0:4
    for b = [2,4,6,7]
        f = @ (x) 4 * x(1) - a * x(1) -2 * x(2);
        aa = [1,1;2,1;1,-b]
        bb = [4;5;-2]
        [x,y] = fmincon(f,rand(2,1),aa,bb,[],[],zeros(2,1))
        fprintf('a = % d,b = % d时,y = % f \n',a,b,y) % y值为浮点型所以%f
        x
    end
end
% 输出为:
a =  4,b =  7时,y = -7.999995 
2.约束条件同时出现线性和非线性
  • 例题
    在这里插入图片描述
    线性约束条件写入主程序的文件中
编写目标函数ff1
function y = ff1(x)
c1 = [2,3,1];
c2 = [3,1,0];
y = c1 * x + c2 * x.^2;
y = -y;
编写非线性约束函数ff2
function [f,g] = ff2(x)
f = [ x(1) + 2 * x(1)^2 + x(2) + 2 * x(2)^2 + x(3) - 10
      x(1) + x(1)^2 + x(2) + x(2)^2 - x(3) - 50
      2 * x(1) + x(1)^2 + 2 * x(2) + x(3) - 40];
g = x(1)^2 + x(3) - 2;
运行主程序
a = [-1,-2,0;-1,0,0];
b = [-1,0];
[x,y] = fmincon(@ff1,rand(3,1),a,b,[],[],[],[],@ff2)
x,y=-y

% 输出为
x1 =2.3333
x2=0.1667
x3=-3.4444
y =18.0833
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白只对大佬的文章感兴趣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值