
高分求解 非线性问题 急!!!(Matlab或lingo)
哪位高手能用MATLAB或lingo解决下面的非线性规划问题:x表示0-1变量,i,j都是下标。z,s是0-1二维常数矩阵,zij,sij是矩阵中的元素,和i,j有关y是...
哪位高手能用MATLAB或lingo解决下面的非线性规划问题:
x表示0-1变量,i,j都是下标。
z,s是0-1二维常数矩阵,zij,sij是矩阵中的元素,和i,j有关
y是一维0-1矩阵
q是一维常数矩阵
条件: xixjzij=0
xi+yi<=1(i=1~n)
sixi(i=1~n)-xixjsij<=S
目标:
t=(sum)xi.qi(最大)
哦 上帝 怎么会数据不够的?还需要什么数据?
比如这样行不行?
恩 好像是有点问题,si和sij不是同一个东西,sij就变成mij好了
x是一个三元素的一维向量,即只有x1,x2,x3(所以,i,j都是1到3的数据)
然后z(即为3*3的向量)表示如下:
0 1 0
1 0 1
0 1 0
y一维向量,表示如下: 0 0 0
m表示如下
0 1 0
1 0 0
0 0 0
然后s表示如下:
10 5 3
S表示常数,比如20
q也是一维向量,比如:5 2 3
然后条件表示如下:
xi*xj*zij=0(i,j都是1~3范围内的数)
xi+yi<=1
(sum)si*xi-(sum)xi*xj*mij<=S
目标:t=(sum)xi*qi
这样可以吗?
我想要代码~~~~
为什么我不能运行成功呢?我的是9.0破解版的,另外,这个哪里体现了x也是0,1变量呢?拜托一定回答~ (0-1变量的话 我最后加了一句:@for(A(i):@bin(x));应该就可以了吧~但是 程序还是不能运行~快疯了~)
那个 因为是初学的……能不能请问全局最优怎么用?……网上好像也看不到……
啊 我找到了…… 展开
x表示0-1变量,i,j都是下标。
z,s是0-1二维常数矩阵,zij,sij是矩阵中的元素,和i,j有关
y是一维0-1矩阵
q是一维常数矩阵
条件: xixjzij=0
xi+yi<=1(i=1~n)
sixi(i=1~n)-xixjsij<=S
目标:
t=(sum)xi.qi(最大)
哦 上帝 怎么会数据不够的?还需要什么数据?
比如这样行不行?
恩 好像是有点问题,si和sij不是同一个东西,sij就变成mij好了
x是一个三元素的一维向量,即只有x1,x2,x3(所以,i,j都是1到3的数据)
然后z(即为3*3的向量)表示如下:
0 1 0
1 0 1
0 1 0
y一维向量,表示如下: 0 0 0
m表示如下
0 1 0
1 0 0
0 0 0
然后s表示如下:
10 5 3
S表示常数,比如20
q也是一维向量,比如:5 2 3
然后条件表示如下:
xi*xj*zij=0(i,j都是1~3范围内的数)
xi+yi<=1
(sum)si*xi-(sum)xi*xj*mij<=S
目标:t=(sum)xi*qi
这样可以吗?
我想要代码~~~~
为什么我不能运行成功呢?我的是9.0破解版的,另外,这个哪里体现了x也是0,1变量呢?拜托一定回答~ (0-1变量的话 我最后加了一句:@for(A(i):@bin(x));应该就可以了吧~但是 程序还是不能运行~快疯了~)
那个 因为是初学的……能不能请问全局最优怎么用?……网上好像也看不到……
啊 我找到了…… 展开
2个回答
展开全部
按照你的数据,我算的结果是8,x=(1,0,1),不过个人感觉最后一个约束对结果影响不大, s(i)的每个值都大于1,而后面无论是x还是m都是很小的数,如果满足前两个约束,第三个看上去也必然满足,而我去掉最后一个约束,结果也没有发生变化。
SETS:A /1..3/:x,y,s,q;
link(A,A):z,m;
endsets
data:
z=0 1 0
1 0 1
0 1 0 ;
y=0 0 0;
m=0 1 0
1 0 0
0 0 0;
s=10,5,3;
q=5,2,3;
enddata
max=@sum(A(i):x(i)*q(i));
@for(link(i,j):x(i)*x(j)*z(i,j)=0);
@for(A(i):x(i)+y(i)<=1);
@sum(A(i):x(i)*s(i))-@sum(link(i,j):x(i)*x(j)*m(i,j))<=20;
您没有说x是0,1变量啊,我也就没有写。我的lingo9开始也运行不了,你用全局最优就可以了。
SETS:A /1..3/:x,y,s,q;
link(A,A):z,m;
endsets
data:
z=0 1 0
1 0 1
0 1 0 ;
y=0 0 0;
m=0 1 0
1 0 0
0 0 0;
s=10,5,3;
q=5,2,3;
enddata
max=@sum(A(i):x(i)*q(i));
@for(link(i,j):x(i)*x(j)*z(i,j)=0);
@for(A(i):x(i)+y(i)<=1);
@sum(A(i):x(i)*s(i))-@sum(link(i,j):x(i)*x(j)*m(i,j))<=20;
您没有说x是0,1变量啊,我也就没有写。我的lingo9开始也运行不了,你用全局最优就可以了。
展开全部
fun=@(x)sqrt(x(1)^2+x(2)^2)+sqrt(x(1)^2+(x(2)-52)^2)+sqrt(x(1)^2+(x(2)-139.5)^2)+sqrt(x(1)^2+(x(2)-228)^2)+sqrt(x(1)^2+(x(2)-288)^2)+sqrt((x(1)-65)^2+x(2)^2)+sqrt((x(1)-84)^2+x(2)^2)+sqrt((x(1)-110)^2+(x(2)-288)^2)+sqrt((x(1)-110)^2+(x(2)-217)^2)+sqrt((x(1)-110)^2+(x(2)-93)^2)+sqrt((x(1)-110)^2+x(2)^2)+sqrt((x(1)-65)^2+x(2)^2);
lb=[0;0];
ub=[110;228];
options=optimset('PlotFcns',{@optimplotx,@optimplotfirstorderopt,@optimplotstepsize,@optimplotfval});
[x,fval]=fmincon(fun,rand(2,1),[],[],[],[],lb,ub,[],options)
Optimization terminated: magnitude of directional derivative in search
direction less than 2*options.TolFun and maximum constraint violation
is less than options.TolCon.
No active inequalities.
x =
55.3467
74.3034
fval =
1.3748e+003
lb=[0;0];
ub=[110;228];
options=optimset('PlotFcns',{@optimplotx,@optimplotfirstorderopt,@optimplotstepsize,@optimplotfval});
[x,fval]=fmincon(fun,rand(2,1),[],[],[],[],lb,ub,[],options)
Optimization terminated: magnitude of directional derivative in search
direction less than 2*options.TolFun and maximum constraint violation
is less than options.TolCon.
No active inequalities.
x =
55.3467
74.3034
fval =
1.3748e+003
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询