目标规划的序贯算法
但是目标规划就和人们的生活生产是差不多的,更加灵活。
过程:
仔细阅读Lingo程序后,还是发现了他的规律。
model: sets: variable/1..2/:x; S_Con_Num/1..4/:g,dplus,dminus; S_con(S_Con_Num,Variable):c; endsets data: g=1500 0 16 15; c=200 300 2 -1 4 0 0 5; enddata min=dplus(2)+dminus(2); !二级目标函数; 2*x(1)+2*x(2)<12; @for(S_Con_Num(i):@sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i)=g(i)); dminus(1)=0;!一级目标约束; @for(variable:@gin(x)); end
虽然lingo写的少,但是看懂以后,还是可以考虑去换一下MATLAB编程。
从二级目标函数说起,目标函数是原来的目标函数的一部分,然后列不等式,加上之前的式子(之前求出来的第一级偏差),然后做线性规划(个人觉得应该是整数规划),依次类推到后面的优先级。
算法还是很简单,有一定的科学性(书上也说了这不是最优解),因为他的前两步操作尽可能的做好规划,最后一步当然也有可能推翻前面的等式。其过程就是一个贪心。