急求关于matlab解多元非线性函数最大值的问题!!!!!!在线等!!!!
%%函数系数赋值beta=[0.3528576113728060.1470375740953780.1046749090151450.6467637212862020.4...
%%函数系数赋值
beta=[0.352857611372806 0.147037574095378 0.104674909015145 0.646763721286202 0.432786865123937 0.184573723821254 -72.2558042754852 -221.318306468610 -105.099496331776 -92.1692117077900 3.01793432332517 38.8257158044091 8.33224554279042 4.74414058982192 159.315211549941];
bb=(beta);
fx=@(bb,x)bb(15)+bb(1)*(x1*x2)+bb(2)*(x1*x3)+bb(3)*(x1*x4)+bb(4)*(x2*x3)+bb(5)*(x2*x4)+bb(6)*(x3*x4)+bb(7)*x1+bb(8)*x2+bb(9)*x3+bb(10)*x4+bb(11)*(x1.^2)+bb(12)*(x2.^2)+bb(13)*(x3.^2)+bb(14)*(x4.^2);%函数形式
%%其中,x1的区间为[5,23]、x2区间为[1,5.5]、x3区间[1,14.5]、x4 区间[2,20]
%%求目标函数fx在约束范围内的最大值及最小值,并求fx取得最值下对应的x1、x2、x3、x4
跪求大侠帮我写个matlab的求解代码,分不多了,就这么点了。 展开
beta=[0.352857611372806 0.147037574095378 0.104674909015145 0.646763721286202 0.432786865123937 0.184573723821254 -72.2558042754852 -221.318306468610 -105.099496331776 -92.1692117077900 3.01793432332517 38.8257158044091 8.33224554279042 4.74414058982192 159.315211549941];
bb=(beta);
fx=@(bb,x)bb(15)+bb(1)*(x1*x2)+bb(2)*(x1*x3)+bb(3)*(x1*x4)+bb(4)*(x2*x3)+bb(5)*(x2*x4)+bb(6)*(x3*x4)+bb(7)*x1+bb(8)*x2+bb(9)*x3+bb(10)*x4+bb(11)*(x1.^2)+bb(12)*(x2.^2)+bb(13)*(x3.^2)+bb(14)*(x4.^2);%函数形式
%%其中,x1的区间为[5,23]、x2区间为[1,5.5]、x3区间[1,14.5]、x4 区间[2,20]
%%求目标函数fx在约束范围内的最大值及最小值,并求fx取得最值下对应的x1、x2、x3、x4
跪求大侠帮我写个matlab的求解代码,分不多了,就这么点了。 展开
展开全部
参考代码:
beta=[0.352857611372806 0.147037574095378 0.104674909015145 0.646763721286202 0.432786865123937 0.184573723821254 -72.2558042754852 -221.318306468610 -105.099496331776 -92.1692117077900 3.01793432332517 38.8257158044091 8.33224554279042 4.74414058982192 159.315211549941];
bb=beta;
f(x)=@(x)bb(15)+bb(1)*(x(1)*x(2))+bb(2)*(x(1)*x(3))+bb(3)*(x(1)*x(4))+bb(4)*(x(2)*x(3))+bb(5)*(x(2)*x(4))+bb(6)*(x(3)*x(4))+bb(7)*x(1)+bb(8)*x(2)+bb(9)*x(3)+bb(10)*x(4)+bb(11)*(x(1).^2)+bb(12)*(x(2).^2)+bb(13)*(x(3).^2)+bb(14)*(x(4).^2);%函数形式
lb = [5 1 1 2];
ub = [23 5.5 14.5 20];
% 初值
x0 = (lb+ub)/2;
opt = optimset('Display','off');
warning off optim:fmincon:SwitchingToMediumScale
% 求最小值
[x,fval,exitflag] = fmincon(fx,x0,[],[],[],[],lb,ub,[],opt);
fprintf('\nMin f(x) = %.5g, at x = %s, EXITFLAG = %i\n', fx(x), mat2str(x,5), exitflag);
% 求最大值
[x,fval,exitflag] = fmincon(@(x)-fx(x),x0,[],[],[],[],lb,ub,[],opt);
fprintf('Max f(x) = %.5g, at x = %s, EXITFLAG = %i\n', fx(x), mat2str(x,5), exitflag);
求得结果:
Min f(x) = -1300.6, at x = [11.505 2.6958 5.9972 9.3475], EXITFLAG = 5
Max f(x) = 627.87, at x = [23 5.5 14.5 20], EXITFLAG = 1
根据运行情况,最小值与初值选择关系不大,而最大值对初值比较敏感,选择不同的初值可能会收敛到不同的局部极值点。可以把初值改为
x0 = lb + rand(1,4).*(ub-lb);
多试几次。
研载生物科技(上海)有限公司_
2023-04-12 广告
2023-04-12 广告
研载生物可以提供环状RNA成环验证实验服务,欢迎咨询!1.琼脂糖凝胶电泳实验分别用Divergent primer 和Convergent Primer 检测cDNA样品和gDNA样品。对照组为GAPDH,分别使用Diveraent Pri...
点击进入详情页
本回答由研载生物科技(上海)有限公司_提供
展开全部
x1=11.505267,x2= 2.695821, x3=6, 5.9971159, x4=9.3474538
Z=1300.58433018611 最大值
x1=5., x2= 5.5, x3=1., x4=2.
Z=411.244821379153 最小值
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
什么控制算法?
追问
楼上大侠代码的算法是subspace trust region(信赖域反射算法),求出的极值对应的变量好像和实际情况不符合啊,不知道用其他算法能不能行,你有什么看法,说一下 啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询