lingo求和问题
n取1~10,集合w的元素w1,w2...wn共n个,w有两个个属性d,h。目标函数是max=@sum(w(i):d(i)*h(i));但要对每个n求一次max。怎么弄啊...
n取1~10,集合w的元素w1,w2...wn共n个,w有两个个属性d,h。目标函数是max=@sum(w(i):d(i)*h(i));但要对每个n求一次max。怎么弄啊,求大侠指点!!!
展开
展开全部
类似这样的。。。。
注意要用lingo 11.0以上版本求解
MODEL:
SETS:
w/1..10/:d,h;
ENDSETS
DATA:
d=1 2 3 4 5 6 7 8 9 10;
h=1 2 3 4 5 6 7 8 9 10;
ENDDATA
SUBMODEL OBJ: !目标函数;
max=sum;
ENDSUBMODEL
SUBMODEL CON:
sum=@sum(w(i)|i#le#n:d(i)*h(i));
!放公共的约束条件;
ENDSUBMODEL
SUBMODEL CON1:
n=1;
ENDSUBMODEL
SUBMODEL CON2:
n=2;
ENDSUBMODEL
SUBMODEL CON3:
n=3;
ENDSUBMODEL
SUBMODEL CON4:
n=4;
ENDSUBMODEL
SUBMODEL CON5:
n=5;
ENDSUBMODEL
SUBMODEL CON6:
n=6;
ENDSUBMODEL
SUBMODEL CON7:
n=7;
ENDSUBMODEL
SUBMODEL CON8:
n=8;
ENDSUBMODEL
SUBMODEL CON9:
n=9;
ENDSUBMODEL
SUBMODEL CON10:
n=10;
ENDSUBMODEL
CALC:
@write('n=1的解:', @newline(1));
@solve(OBJ,CON,CON1);
@write('n=2的解:', @newline(1));
@solve(OBJ,CON,CON2);
@write('n=3的解:', @newline(1));
@solve(OBJ,CON,CON3);
@write('n=4的解:', @newline(1));
@solve(OBJ,CON,CON4);
@write('n=5的解:', @newline(1));
@solve(OBJ,CON,CON5);
@write('n=6的解:', @newline(1));
@solve(OBJ,CON,CON6);
@write('n=7的解:', @newline(1));
@solve(OBJ,CON,CON7);
@write('n=8的解:', @newline(1));
@solve(OBJ,CON,CON8);
@write('n=9的解:', @newline(1));
@solve(OBJ,CON,CON9);
@write('n=10的解:', @newline(1));
@solve(OBJ,CON,CON10);
ENDCALC
END
注意要用lingo 11.0以上版本求解
MODEL:
SETS:
w/1..10/:d,h;
ENDSETS
DATA:
d=1 2 3 4 5 6 7 8 9 10;
h=1 2 3 4 5 6 7 8 9 10;
ENDDATA
SUBMODEL OBJ: !目标函数;
max=sum;
ENDSUBMODEL
SUBMODEL CON:
sum=@sum(w(i)|i#le#n:d(i)*h(i));
!放公共的约束条件;
ENDSUBMODEL
SUBMODEL CON1:
n=1;
ENDSUBMODEL
SUBMODEL CON2:
n=2;
ENDSUBMODEL
SUBMODEL CON3:
n=3;
ENDSUBMODEL
SUBMODEL CON4:
n=4;
ENDSUBMODEL
SUBMODEL CON5:
n=5;
ENDSUBMODEL
SUBMODEL CON6:
n=6;
ENDSUBMODEL
SUBMODEL CON7:
n=7;
ENDSUBMODEL
SUBMODEL CON8:
n=8;
ENDSUBMODEL
SUBMODEL CON9:
n=9;
ENDSUBMODEL
SUBMODEL CON10:
n=10;
ENDSUBMODEL
CALC:
@write('n=1的解:', @newline(1));
@solve(OBJ,CON,CON1);
@write('n=2的解:', @newline(1));
@solve(OBJ,CON,CON2);
@write('n=3的解:', @newline(1));
@solve(OBJ,CON,CON3);
@write('n=4的解:', @newline(1));
@solve(OBJ,CON,CON4);
@write('n=5的解:', @newline(1));
@solve(OBJ,CON,CON5);
@write('n=6的解:', @newline(1));
@solve(OBJ,CON,CON6);
@write('n=7的解:', @newline(1));
@solve(OBJ,CON,CON7);
@write('n=8的解:', @newline(1));
@solve(OBJ,CON,CON8);
@write('n=9的解:', @newline(1));
@solve(OBJ,CON,CON9);
@write('n=10的解:', @newline(1));
@solve(OBJ,CON,CON10);
ENDCALC
END
追问
谢谢你花心思给出这段代码!!!但貌似还是不得行诶。。。。如果n有成百上千的话。。。而且d和h是没有初值的,是要让电脑解出来的。
追答
不行是指代码有问题还是?
lingo本身就有局限性,或者你可以尝试用matlab看看。。
至于d和h你自己可以设置啊,我设的只是为了检验结果而已。。。。
展开全部
那你就自己把n设成1到10分别求10次
追问
我想问有没有什么函数或程序代码一次性解决,让电脑自动计算!!!不是自己手动改!!!
追答
那你自己到lingo帮助里面查一下submodel和@writefor函数自己看看吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
需要知道你的集定义
@sum函数可以设置下标范围 @sum(set(i)|i#gt#1:l(i)) 就可以
@sum函数可以设置下标范围 @sum(set(i)|i#gt#1:l(i)) 就可以
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询