lingo中矩阵的列求和表示
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/19 18:56:40
定义一个派生集link如下,其中x即可表示为一个矩阵sets:r/1..5/:;c/1..5/:;h/1..5/:;link(r,c,h):x;endsets
求和的地方写的没问题但是你集定义有问题集名和下标不要用一样的名字
sets:r/1..6/:;c/1..6/:;links(r,c):x;endsets@for(links:@bin(x));!用@bin()函数限制6*6矩阵x为0-1矩阵;
a=[b;zeros(1,b.rowNum)]很久没用matlab,差不多是这样的,你如果知道点的话,改写下
k,i是变量还是集合下标呢?以下是变量的情况:@bnd(1,k,3);!1再问:谢谢,k,i又当下标,又当变量(作为指数)再答:要看具体情况吧,你把代码或数学模型贴出来看看吧再问:太感谢了,你有邮箱吗
A=randn(3,1000000);B=reshape(A',1000,3000);C=sum(B);D=reshape(C,3,1000);再问:reshape怎么保证在变化前后我的求和就是我所希
lingo有集你把矩阵当成一个集里面的元素做就行了随便找个教程看看吧不是一句话就能说清楚的事
@sum(links:a);
lingo中的循环需要用到你集合域定义的集合.您的x(i)应该有相应的定义如:a/1..n/:x;,k(i,j)是他们的衍生集合.link(x,x):k;表达式可以写成:@sum(a:@sum(a:(
=($A$1+$B$1)*C1+($A$2+$B$2)*C2上式输入到g1,然后向右拖动,可以实现前两列不变,第三列从C依次变成D、E、F如果与你要求不相符,
打个比方,定义:sets:a/1..5/;b/1..6/;c/1..7/;link1(a,b):r;link(a,b,c):x;endsets先一维求和再二维:@sum(link1(i,j):r(i,
用lingo还更简单…model:sets:myset/1..2/;link(myset,myset):a,b,c;endsetsdata:a=1111;b=2222;enddata@for(link
你这句写的没问题啊就这样@for(roads(i,j):rd(i,j)=rd(j,i));
求volume(1,1)+volume(2,1)+...+volume(20,1)吗?加如下的语句在主程序中就可以了,用求和的语句:@for(supplyment(I):s=@sum(receiver
使用循环语句@for(AZ(i,j):t(i,j)=k(j,i));互换i,j位置,即置换.例子:MODEL:sets:row/1..5/;col/1..5/;AZ(row,col):k,t;ends
好多年没用lingo了,书写格式已经记不太清了.至于你的补充问题,x>=10||y=0max(x-10,100-y)是关于(x,y)的凸函数,即为g(x,y)上式就是g(x,y)>=0明显的这十个an
求和用@sum()再比较大小没明白怎么回事?是要求最大值还是最小值?还是?
@sum(man(i)|i#GE#n#AND#i#LE#m:x(i,1));
a=ones(4,5)%建立矩阵b=size(a)%看矩阵有几行几列c=b(1,2)%此为列数
可以设置一个控制变量来乘,比如m(i)*k(i,j)*n(i)>=D(j)*n(i);再加上@if()语句,利用n(i)=@if(i#le#s,1,0)来给n(i)赋值,使得当is时有n(i)=0;则