求助:matlab求非线性规划的问题

2021-02-25 20:22:35 字数 3082 阅读 1907

1楼:匿名用户

用fmincon()函数,可以求得非线性规划 x1*x2 的最大值。

x1=8,x2=0.36788,f=2.943

**如下:

求助一个用matlab求解非线性规划的问题,不胜感激!

2楼:信科滨

1. 把[x,fval]=fmincon('fun',x0,a,b,aeq,beq,vlb,vub,'mycon')

改为[x,fval]=fmincon('fun',x0,a,b,aeq,beq,vlb,vub)

我不是太清楚你为什么要加mycon没用吧。

2. 目标函数加负号(因专为fmincon是求最小值)

function f=fun(x)

f=-(3.4854*x(1)+6.2879*x(3)+5.

6932*x(4))/(3.4854*x(1)-4.952*x(2)+6.

2879*x(3)+5.6932*x(4)-2.4846*x(5));

3. 命令属行

x0=[1;0;0;0;0];

a=;b=;

aeq=[1 1 1 1 1];beq=[1];

vlb=[0 0 0 0 0];

vub=[1 1 1 1 1];

[x,fval]=fmincon('fun',x0,a,b,aeq,beq,vlb,vub);

xmin=x

fmin=-fval

求助大神 利用遗传算法解决非线性规划问题,最好有matlab**

3楼:半生瓜

%%%%%%%%%%%

无聊到专门帮你写了个程序。不想全部写完,自己补完。ps:这题怎么看都是线性规划

&&&&&&&&&&&&&&

%遗传算法参数设置

popsize=200; %种群个数

generation=500;%种群迭代次数,繁殖后代数

pc=0.4; %两个体之间交叉概率

pm=0.05; %个体变异的概率

yueshu=0; %约束成立的标志为1

%初始化群体

for i=1:popsize

while(yuesu==0) %当约束成立时,不再变异。约束不成立时变异。

x(i,1)=randint(1,1,[0,35]); %随机生成(0-35)的整数

x(i,2)=randint(1,1,[0,60]);

x(i,3)=randint(1,1,[0,40]);

x(i,4)=randint(1,1,[0,40]);

x(i,5)=randint(1,1,[0,30]);

x(i,6)=randint(1,1,[0,30]);

x(i,7)=randint(1,1,[0,35]);

x(i,8)=randint(1,1,[0,20]);

%这里自己写几行程序就好

if %这里判断约束条件,若符合,yueshu=1;

endend

endfor n=1:generation

%计算适应度

[row col]=size(x);

for i=1:row

fitness(i)=(x(i,1)+x(i,2)+x(i,3)+x(i,5)+x(i,6)+x(i,7)+x(i,8))/20;

end%轮盘赌选择

zong=sum(fitness);

xt=x;

for i=1:row

temp=rand(1);

for j=1:row

if temp< fitness(j)/zong

break;

endend

x(i,:)=xt(j,:);

end%两个个体交叉变异

x2=x;

[row col]=size(x);

for i=1:2:row

temp=rand(1);

if temp

%%%%%%%%%%%%%这里还要自己写个程序判断是否符合约束,不符合一直交叉,直到交叉到符合约束

point=randint(1,1,[1,8]);

x(i,point:8)=x2(i+1,point:8);

x(i+1,1:point)=x2(i,1:point);

endend

%单个点变异

x3=x;

[row col]=size(x);

for i=1:row

for j=1:8

temp=rand(1);

if(temp

yueshu=0;

while(yueshu==0) %当约束成立时,不再变异。约束不成立时变异。

if j==1 x(i,1)=randint(1,1,[0,35]);end

if j==2 x(i,2)=randint(1,1,[0,60]);end

if j==3 x(i,3)=randint(1,1,[0,40]);end

if j==4 x(i,4)=randint(1,1,[0,40]);end

if j==5 x(i,5)=randint(1,1,[0,30]);end

if j==6 x(i,6)=randint(1,1,[0,30]);end

if j==7 x(i,7)=randint(1,1,[0,35]);end

if j==8 x(i,8)=randint(1,1,[0,20]);end

%这里自己写程序啊

if %这里判断约束条件,若符合,yueshu=1;

endend

endend

endend

[row col]=size(x);

for i=1:row

fitness(i)=(x(i,1)+x(i,2)+x(i,3)+x(i,5)+x(i,6)+x(i,7)+x(i,8))/20;

endmaxx=find(fitness==max(fitness));

x(maxx,:)

matlab中二次规划的问题,matlab中二次规划的问题 100

1楼 匿名用户 没有上下文,只给这么个 片段,除非碰巧有熟悉这段 的,否则,绝大多数人没办法帮你。 matlab二次规划问题 2楼 兔子和小强 这个优化目标不是二次型 约束也不是线性约束,无法用quadprog求解,可以考虑用fmincon来解。 新建个mycon m文件,里面的内容是 functi...

关于不等式简单线性规划问题,求一份关于一次不等式与简单的线性规划的问题 5

1楼 有點 単純 不一定是在某个点,也可能是一条直线,比如x《 1,y 1,z x y,这时明显就是x 1 y 1时z取最大值,如果条件改成y 1,x 1取z 2x,那取最大值只要满足x最大,就是x 1的这条垂直于y轴的直线上的点都满足。 2楼 靓靓没问题 额 这也 是我在高中最头疼的!现在高考结束...

线性规划问题有多个目标函数如何,线性规划问题有多个目标函数如何用lingo求解

1楼 勤奋的上大夫 你可以理解为一个三维坐标系,z是x y的函数 z为纵坐标 ,求它的最大值或最小值。又因为线性函数没有极值,但在一些约束条件下 限制在某一x y区域 就有最大值最小值。线性规划是优化的一种,目标函数就是你优化要达到的目的,比如说两个人怎么分工,使产量最大,就设产量为目标函数。 一般...