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,:) 1楼 匿名用户 没有上下文,只给这么个 片段,除非碰巧有熟悉这段 的,否则,绝大多数人没办法帮你。 matlab二次规划问题 2楼 兔子和小强 这个优化目标不是二次型 约束也不是线性约束,无法用quadprog求解,可以考虑用fmincon来解。 新建个mycon m文件,里面的内容是 functi... 1楼 有點 単純 不一定是在某个点,也可能是一条直线,比如x《 1,y 1,z x y,这时明显就是x 1 y 1时z取最大值,如果条件改成y 1,x 1取z 2x,那取最大值只要满足x最大,就是x 1的这条垂直于y轴的直线上的点都满足。 2楼 靓靓没问题 额 这也 是我在高中最头疼的!现在高考结束... 1楼 勤奋的上大夫 你可以理解为一个三维坐标系,z是x y的函数 z为纵坐标 ,求它的最大值或最小值。又因为线性函数没有极值,但在一些约束条件下 限制在某一x y区域 就有最大值最小值。线性规划是优化的一种,目标函数就是你优化要达到的目的,比如说两个人怎么分工,使产量最大,就设产量为目标函数。 一般...matlab中二次规划的问题,matlab中二次规划的问题
100
关于不等式简单线性规划问题,求一份关于一次不等式与简单的线性规划的问题
5
线性规划问题有多个目标函数如何,线性规划问题有多个目标函数如何用lingo求解