多目标规划中如何用matlab或lingo序实现优先级Pi和正负偏差变量d的编写?就是说d+、d-用什么符号表示?
从你给出的形式看,这是一个非常简单的线性规划题,只要把毛病量理解成x3-x10即可: %目的规划 %x3=d1-,x7=d1+ %x4=d2-,x8=d2+ %x5=d3-,x9=d3+ %x6=d4-,x10=d4+ f=zeros(10,1); f([78])=[23]; A=-eye(10); b=zeros(10,1); A1=[11;10;53;11]; A2=[eye(4)-eye(4)]; A3=zeros(1,10); A3(5)=1; Aeq=[A1A2;A3]; beq=[10;4;56;12;0]; x=linprog(f,A,b,Aeq,beq) 但是,目的规划的偏差变量应该始终满足 d+ * d- = 0,以是,还应该补充4个非线性束缚,考虑用linprog的结果作为初值,然后调用fmincon举行规划: %目的规划 %x3=d1-,x7=d1+ %x4=d2-,x8=d2+ %x5=d3-,x9=d3+ %x6=d4-,x10=d4+ functionzd581643424 f=zeros(10,1); f([78])=[23]; A=-eye(10); b=zeros(10,1);A1=[11;10;53;11]; A2=[eye(4)-eye(4)]; A3=zeros(1,10); A3(5)=1; Aeq=[A1A2;A3]; beq=[10;4;56;12;0]; x0=linprog(f,A,b,Aeq,beq); x=fmincon(@obj,x0,A,b,Aeq,beq,[],[],@nlc) functionf=obj(x) f=2*x(7)+3*x(8); function[c,ceq]=nlc(x) c=[]; ceq=x(3:6).*x(7:10); 得到的效果是(由于是数值计算,计算得到的效果并不是严格的整数,根据数量级作得当的舍入): x1=4 x2=12 d1+ = 6 d4+ = 4 别的为0。 另外,MATLAB中提供了用于多目的优化的函数fgoalattain,但是这个函数怎样和楼主如今的问题形式联系起来,我一时之间没想明确(好多年没接触目标规划了),时间精神所限,就不深入研究了,仅