多目标规划中如何用matlab或lingo序实现优先级Pi和正负偏差变量d的编写?就是说d+、d-用什么符号表示?
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/10 07:35:32
多目标规划中如何用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([7 8]) = [2 3];
A = -eye(10);
b = zeros(10, 1);
A1 = [1 1; 1 0; 5 3; 1 1];
A2 = [eye(4) -eye(4)];
A3 = zeros(1, 10);
A3(5) = 1;
Aeq = [A1 A2; 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+
function zd581643424
f = zeros(10, 1);
f([7 8]) = [2 3];
A = -eye(10);
b = zeros(10, 1);
A1 = [1 1; 1 0; 5 3; 1 1];
A2 = [eye(4) -eye(4)];
A3 = zeros(1, 10);
A3(5) = 1;
Aeq = [A1 A2; A3];
beq = [10; 4; 56; 12; 0];
x0 = linprog(f,A,b,Aeq,beq);
x = fmincon(@obj,x0,A,b,Aeq,beq,[],[],@nlc)
function f = obj(x)
f = 2 * x(7) + 3 * x(8);
function [c, ceq] = nlc(x)
c = [];
ceq = x(3:6) .* x(7:10); 得到的结果是(由于是数值计算,计算得到的结果并不是严格的整数,根据数量级作适当的舍入):x1=4x2=12d1+ = 6d4+ = 4其余为0. 另外,MATLAB中提供了用于多目标优化的函数fgoalattain,但是这个函数怎样和楼主现在的问题形式联系起来,我一时之间没想明白(好多年没接触目标规划了),时间精力所限,就不深入研究了,仅提供这么一个线索,供参考.
再问: 看的不是太懂,刚刚学了lingo的皮毛。。。想问一下正负偏差变量d+和d-在lindo里面可以用dplus和dminus表示,那么在lingo里面可以用什么符号直接表示呢?
再答: 我的代码是用MATLAB写的,不是lingo。lingo我不熟悉。
再问: 明白了,d+直接用d表示,d-表示为d_。
再答: 可能您还真的误解了,我上面在注释中(非程序代码)用d+表示d+,用d-表示d-,但由于d+和d-又区分i=1-4,所以就把d+和d-区分为x3-x10八个变量(注释中未体现,但代码中应该是体现了的)。另外有一点需要说明,对于目标规划问题是否可以按照您所给出的形式求解,我不是很确定。有问题再交流吧。
再问: 恩 我说的d+和d-是在lingo中的输入表示法 总之感谢您这么耐心解答!
% x3 = d1-, x7 = d1+
% x4 = d2-, x8 = d2+
% x5 = d3-, x9 = d3+
% x6 = d4-, x10 = d4+
f = zeros(10, 1);
f([7 8]) = [2 3];
A = -eye(10);
b = zeros(10, 1);
A1 = [1 1; 1 0; 5 3; 1 1];
A2 = [eye(4) -eye(4)];
A3 = zeros(1, 10);
A3(5) = 1;
Aeq = [A1 A2; 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+
function zd581643424
f = zeros(10, 1);
f([7 8]) = [2 3];
A = -eye(10);
b = zeros(10, 1);
A1 = [1 1; 1 0; 5 3; 1 1];
A2 = [eye(4) -eye(4)];
A3 = zeros(1, 10);
A3(5) = 1;
Aeq = [A1 A2; A3];
beq = [10; 4; 56; 12; 0];
x0 = linprog(f,A,b,Aeq,beq);
x = fmincon(@obj,x0,A,b,Aeq,beq,[],[],@nlc)
function f = obj(x)
f = 2 * x(7) + 3 * x(8);
function [c, ceq] = nlc(x)
c = [];
ceq = x(3:6) .* x(7:10); 得到的结果是(由于是数值计算,计算得到的结果并不是严格的整数,根据数量级作适当的舍入):x1=4x2=12d1+ = 6d4+ = 4其余为0. 另外,MATLAB中提供了用于多目标优化的函数fgoalattain,但是这个函数怎样和楼主现在的问题形式联系起来,我一时之间没想明白(好多年没接触目标规划了),时间精力所限,就不深入研究了,仅提供这么一个线索,供参考.
再问: 看的不是太懂,刚刚学了lingo的皮毛。。。想问一下正负偏差变量d+和d-在lindo里面可以用dplus和dminus表示,那么在lingo里面可以用什么符号直接表示呢?
再答: 我的代码是用MATLAB写的,不是lingo。lingo我不熟悉。
再问: 明白了,d+直接用d表示,d-表示为d_。
再答: 可能您还真的误解了,我上面在注释中(非程序代码)用d+表示d+,用d-表示d-,但由于d+和d-又区分i=1-4,所以就把d+和d-区分为x3-x10八个变量(注释中未体现,但代码中应该是体现了的)。另外有一点需要说明,对于目标规划问题是否可以按照您所给出的形式求解,我不是很确定。有问题再交流吧。
再问: 恩 我说的d+和d-是在lingo中的输入表示法 总之感谢您这么耐心解答!
多目标规划中如何用matlab或lingo序实现优先级Pi和正负偏差变量d的编写?就是说d+、d-用什么符号表示?
怎么用lingo求解多目标规划呢,
请教如何用matlab解隐性方程:y=((9.8*T^2)/2*pi)*tanh((2*pi*d)/y)
如何用matlab实现sin(pi*n/2)的DTFT
以下运算符号中优先级最高的为 A.&& B.& C.|| D.=
树木的胸径用哪个符号表示?D和d分别指树木的什么?
matlab 多目标规划
LINGO可以多目标规划吗
C语言中,%f,%d,\n,还有很多变量后的符号什么意思?
在C语言中,#define PI 3.14115 是将PI定义为() A 符号常量 B字符常量 C实型常量 D变量
数学建模多目标规划怎么用lingo解决,程序?
德语自学中,一直困扰的一个问题:德语单词表中德语单词后面有一些后缀和符号表示什么?如. das Bett -en ; d