请教高手如何用matlab解多元二次不等式的解,有三个未知数x1,x2,x3,约束条件如下:

请教高手如何用matlab解多元二次不等式的解,有三个未知数x1,x2,x3,约束条件如下:
0.36x1+0.25x2+0.39x3取最大
12/5*x1+11/5*x2+10/3*x3-3/5*x1*x2-x1*x3-1/15*x2*x3-31/75*x1^2-1/25*x2^2
阴凉 1年前 已收到2个回答 举报

mylove_ni 幼苗

共回答了15个问题采纳率:86.7% 举报

楼上正解无错
再给一种不同的形式
function zd0323
format long%改变格式,使更精确输出结果
%% 目标函数
function y=fun(x)
y=-(0.36*x(1)+0.25*x(2)+0.39*x(3));%求最大值,就是求负目标函数的最小值,然后取相反数即可
end
%% 非线性约束
function [c,ceq]=nonlcon(x)
c=12/5*x(1)+11/5*x(2)+10/3*x(3)-3/5*x(1)*x(2)-x(1)*x(3)-1/15*x(2)*x(3)-31/75*x(1)^2-1/25*x(2)^2-3;
ceq=[];
end
%% 线性约束
A =[5/9 1/3 7/9;5/9 4/9 2/3;1/3 1 0;1/3 0 1;...
-5/9 -1/3 -7/9;-5/9 -4/9 -2/3;-1/3 -1 0;-1/3 0 -1;];
b=[1 1 1 1 0 0 0 0]';
%% 自变量取值范围
lb=[0 0 0];
ub=[1 1 1];
%% 初值
x0=[0.1 0.1 0.1]
%% fmincon参数设定
options=optimset('Algorithm','active-set');
%% 计算非线性规划
[x,fval] = fmincon(@fun,x0,A,b,[],[],lb,ub,@nonlcon,options);
x=x
MAX=-fval
format short%恢复默认格式
end
保存运行即可
结果:
x =
1.000000000000000 0 0.434285714286495
MAX =
0.529371428571733

1年前

10

yuzyboy 幼苗

共回答了12个问题 举报

步骤:

1. 建立目标函数的mfun.m文件;

2. 建立非线性约束的mcon.m文件;

3. 调用fmincon函数进行计算

计算结果:

当x1=1,x2=0,x3=0.434285时,

最大值fmax=0.529371

已用lingo做过检验,结果为全局最优解,应该没错.

mfun.m文件:

mcon.m文件:

输入:

运行结果:

1年前

0
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 17 q. 0.021 s. - webmaster@yulucn.com