作业帮 > 综合 > 作业

matlab解决非线性规划,其中限制条件是集合如x属于{0,1},这样怎么编程?

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/05/09 14:53:57
matlab解决非线性规划,其中限制条件是集合如x属于{0,1},这样怎么编程?
fun_ave.m
x0=[10000;0;10000;0;10000;0;0;0;0;0;0;0;0;0;0;0];
A = [1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0;
0 0 0 0 0 0 0 0 0 -1 0 -1 0 -1 0 0];
b=[100000;-1];
Aeq=[];
beq=[];
Lb=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];
Ub=[34000 27000 30000 22000 30000 23000 0 23000 1 1 1 1 1 1 1 1];
[x,faval]=fmincon (@fun_ave,x0,A,b,Aeq,beq,Lb,Ub)
-faval
matlab解决非线性规划,其中限制条件是集合如x属于{0,1},这样怎么编程?
只把Lb,Ub改写为:Lb=zeros(16,1);Ub=ones(16,1);
其余不变,运行即知结果
再问: 哥,这个题目要求是 x_1≤34000 x_2≤27000 x_3≤30000 x_4≤22000 x_5≤30000 x_6≤23000 x_7≤25000 x_8≤23000 x_i∈{0,1} i={9,10,11,12,13,14,15,16} 你这样一下子就把x_1到X_16全变为0-1了,这个不是纯粹的0-1规划,这是部分变量是0-1的规划。
再答: 按你的条件,Q2.m中设置是正确的,你问的问题是啥?
再问: 我的问题是x_i∈{0,1} i={9,10,11,12,13,14,15,16}这个条件用什么式子表示? 我在Lb和Ub中的表示就让x_i取到了小数,这个不对。
再答: 要让后面几个x_i取整数,不取小数,要么取0,要么取1, 你运行一下看看,结果满足这个条件,不用设定,