作业帮 > 综合 > 作业

lingo中如何表示变量的数值互不相同

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/15 18:01:12
lingo中如何表示变量的数值互不相同
我有一规划问题,y为10×10的矩阵,其值只能取0,5,6,7,9,10,而且除了0以外,
其它数值不能重复.每一行也只有5个不等于0的数值.如何表示?
我写了一段,但不能表示不重复,而且运行很长时间都没有出结果,
@for (jsrs(I):@for (jsrs(J) :
y(I,J) * (y(I,J) - 10) * (y(I,J) - 9) * (y(I,J) - 7) * (y(I,J) - 6) * (y(I,J) - 5) = 0));
model:
sets:
C/C1..C10/;
FIX/R1..R10/:value;
CXF(C,FIX):find_v,x;
endsets
data:
value=0,0,0,0,0,5,6,7,9,10;
@text()="the final result!";
@text()=@table(find_v);
enddata
@for(CXF(i,j):find_v(i,j)=x(i,j)*value(j));
@for(C(i):@sum(CXF(i,j)|j#GE#6:x(i,j))=5);
@for(CXF:@bin(x));
the final result!
R1 R2 R3 R4 R5 R6 R7 R8 R9 R10
C1 0 0 0 0 0 5 6 7 9 10
C2 0 0 0 0 0 5 6 7 9 10
C3 0 0 0 0 0 5 6 7 9 10
C4 0 0 0 0 0 5 6 7 9 10
C5 0 0 0 0 0 5 6 7 9 10
C6 0 0 0 0 0 5 6 7 9 10
C7 0 0 0 0 0 5 6 7 9 10
C8 0 0 0 0 0 5 6 7 9 10
C9 0 0 0 0 0 5 6 7 9 10
C10 0 0 0 0 0 5 6 7 9 10
再问: 非常感谢! 但我想要的矩阵y中,要求每行有5个不为0的数,同时,每列也要求有2个以上不为0的数 我的目标是每列的平均数尽可能均衡。 其中每列的平均数是每列中所有不为0的数的和除以不为0的数的个数。 再次表示感谢!
再答: 按要求重新做了一下! MODEL: SETS: RANK/R1..R10/; COLUM/C1..C10/:SUM; FIX/1..10/:VALUE; RXC(RANK,COLUM):FIND_V; RXCXF(RANK,COLUM,FIX):X; ENDSETS DATA: VALUE=0,0,0,0,0,5 6 7 9 10; @TEXT()="THE FINAL RESULT!"; @TEXT()=@WRITEFOR(RXC(I,J):@FORMAT(FIND_V(I,J),'5.0f'),@IF(J#EQ#10,@NEWLINE(1),'')); @TEXT()="THE SUM OF COLUM!"; @TEXT()=@WRITEFOR(COLUM(J):@IF(J#EQ#1,4*' ',''),SUM(J),3*' '); ENDDATA MIN=@SUM(COLUM(J):@ABS(SUM(J)-AVG)); @FOR(RXC(I,J):FIND_V=@SUM(FIX(K):X(I,J,K)*VALUE(K))); @FOR(RANK(I):@FOR(COLUM(J):@SUM(FIX(K):X(I,J,K))=1)); @FOR(RANK(I):@FOR(FIX(K):@SUM(COLUM(J):X(I,J,K))=1)); @FOR(COLUM(J):SUM(J)=@SUM(RXC(I,J):FIND_V(I,J))); AVG=@SUM(RXC:FIND_V)/@SIZE(COLUM); @FOR(RXCXF:@BIN(X)); 求解结果如下: (注意,由于目标函数非线性,应启动Lingo->Option->Model Generator->Linearization ->Degree:High): Linearization components added: Constraints: 40 Variables: 40 Integers: 10 Global optimal solution found. Objective value: 0.000000 Objective bound: 0.000000 Infeasibilities: 0.5921249E-10 Extended solver steps: 3005 Total solver iterations: 27443 THE FINAL RESULT! 0 0 0 0 10 5 0 6 9 7 0 0 7 6 10 0 0 9 5 0 5 6 0 0 0 10 7 9 0 0 0 0 5 6 7 9 0 0 0 10 0 5 0 10 0 6 9 7 -0 0 7 0 9 0 0 0 -0 6 5 10 6 5 0 0 0 7 0 0 9 10 7 10 0 6 0 0 5 0 9 0 7 5 9 0 10 0 6 0 0 0 5 6 7 9 0 0 10 0 0 0 THE SUM OF COLUM! 37 37 37 37 37 37 37 37 37 37
再问: 太谢谢了! 有点小问题。虽然每一列的总和都是37,但有的只有4个数,有的有6个数,这样算下来平均数是不同的。 我的目标是:每列的平均数尽可能均衡 还忘了一个,矩阵的主对角线上的元素应该全部为0 现在再增加一个问题,我会追加分数的 如果某一行,比如第一行吧,有8个非0数,且必须是10,9,8,7,6,5,5,5,列位置可以任意 那该如何处理? 这里必须用到3维的变量 x 吗? x 在这里起什么作用? 祝圣诞快乐!