13件零件在圆上等分分配方案,结果求不出来(附源程序和数据)?
本帖最后由 lijingyan 于 2012-3-14 16:18 编辑现要把13件零件分配到圆的等分点上,如下图所示。
已知13件零件重量和13个等分点的XY坐标值。以坐标值为XY轴定义一个表格如下图,再定义一个二维13*13的0-1变量。
求(重量乘X坐标值)的总和的绝对值最 加 (重量乘Y坐标值)的总和的绝对值最小。
程序如下:
!13件零件分配方案;
Model:
sets:
row/1..13/:x,y;!圆上13等分点的XY坐标值;
mass/1..13/:m,mo;!初始质量,排序优化后的质量;
bian(row,row):b;!定义13*13的0-1变量数组;
endsets
data:
m=@ole('D:\LINGO9\Work\data.xls');!输入数据;
x,y=@ole('D:\LINGO9\Work\data.xls');!输入数据;
@ole('D:\LINGO9\Work\data.xls')=mo;!输出结果;
enddata
min=@abs(@sum(row(i):@sum(row(j):b(i,j)*m(j)*x(j))))+@abs(@sum(row(i):@sum(row(j):b(i,j)*m(j)*y(j))));
!限制各行各列中数字1只出现一次;
@for(row(i):@sum(row(j):b(i,j))=1);
@for(row(i):@sum(row(j):b(j,i))=1);
!将0-1变量转换成结果;
@for(row(i):@sum(row(j):b(i,j)*m(j))=mo);
!定义b为0-1变量;
@for(bian(i,j):@bin(b(i,j)));
end
求解结果如下:
但出来结果不是最优结果,现找不出来问题在那,请各位帮忙找找。
2012-03-14:
原来用LING09的,发现软件破解有问题,现在换成lingo10了。
今天将程序改成如下:
但运算了1个小时后计得目标值为27.35,还不是最终结果。
能运算了,但模型好像不对,我的想法是建一个模型,运算13*13次就能得到结果,但现在却要一直运算。 好复杂的样子。。。存下来有时间再看!!! 局部最优。 楼主可以想办法改一改 {:3_41:}{:3_41:}{:3_41:}{:3_41:}{:3_41:}{:3_41:}{:3_41:} {:3_41:}{:3_41:}{:3_41:}{:3_41:}{:3_41:}{:3_41:} {:3_41:}{:3_41:}{:3_49:}{:3_50:} 呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵
页:
[1]