如何用lingo求解下面的问题呢?一个变量取多个值(或者数组)最优化问题描述如下min=m/n;m=2*d*(g*(b*c-a)+c*(h*h+2*f)+a);n=a*(b*c-a)-s*c*c;s=p*p;a=2*d*p*p+2*e*p;b=1+(1+u)*p*p+4*d*e*p;c=2*d+2*(1+u)*e*p;f=-(1+u)*p*p;g=(1+u)*(1+u)

来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/28 06:17:55
如何用lingo求解下面的问题呢?一个变量取多个值(或者数组)最优化问题描述如下min=m/n;m=2*d*(g*(b*c-a)+c*(h*h+2*f)+a);n=a*(b*c-a)-s*c*c;s=

如何用lingo求解下面的问题呢?一个变量取多个值(或者数组)最优化问题描述如下min=m/n;m=2*d*(g*(b*c-a)+c*(h*h+2*f)+a);n=a*(b*c-a)-s*c*c;s=p*p;a=2*d*p*p+2*e*p;b=1+(1+u)*p*p+4*d*e*p;c=2*d+2*(1+u)*e*p;f=-(1+u)*p*p;g=(1+u)*(1+u)
如何用lingo求解下面的问题呢?一个变量取多个值(或者数组)
最优化问题描述如下
min=m/n;
m=2*d*(g*(b*c-a)+c*(h*h+2*f)+a);
n=a*(b*c-a)-s*c*c;
s=p*p;
a=2*d*p*p+2*e*p;
b=1+(1+u)*p*p+4*d*e*p;
c=2*d+2*(1+u)*e*p;
f=-(1+u)*p*p;
g=(1+u)*(1+u)*p*p;
h=2*(1+u)*e*p;
@free(f);
d=0.05;
e=0.5;
可是最后一行的变量e需要很多值,比如
e=0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8九个数值时,都需要求解出其对应的最优值
以及此时各个变量的值,
如果e有很多个值的话,对e一个一个赋值的话,是很慢的事,
我想差不多应该用submodel求解,但是我又不会,

如何用lingo求解下面的问题呢?一个变量取多个值(或者数组)最优化问题描述如下min=m/n;m=2*d*(g*(b*c-a)+c*(h*h+2*f)+a);n=a*(b*c-a)-s*c*c;s=p*p;a=2*d*p*p+2*e*p;b=1+(1+u)*p*p+4*d*e*p;c=2*d+2*(1+u)*e*p;f=-(1+u)*p*p;g=(1+u)*(1+u)
MODEL:
SUBMODEL OBJ:
min=m/n;
ENDSUBMODEL

SUBMODEL CON:
m=2*d*(g*(b*c-a)+c*(h*h+2*f)+a);
n=a*(b*c-a)-s*c*c;
s=p*p;
a=2*d*p*p+2*e*p;
b=1+(1+u)*p*p+4*d*e*p;
c=2*d+2*(1+u)*e*p;
f=-(1+u)*p*p;
g=(1+u)*(1+u)*p*p;
h=2*(1+u)*e*p;
@free(f);
d=0.05;
ENDSUBMODEL
SUBMODEL CON1:
e=0;
ENDSUBMODEL
SUBMODEL CON2:
e=0.1;
ENDSUBMODEL
SUBMODEL CON3:
e=0.2;
ENDSUBMODEL
SUBMODEL CON4:
e=0.3;
ENDSUBMODEL
SUBMODEL CON5:
e=0.4;
ENDSUBMODEL
SUBMODEL CON6:
e=0.5;
ENDSUBMODEL
SUBMODEL CON7:
e=0.6;
ENDSUBMODEL
SUBMODEL CON8:
e=0.7;
ENDSUBMODEL
SUBMODEL CON9:
e=0.8;
ENDSUBMODEL
CALC:
@write('e=0的', @newline(1));
@solve(OBJ,CON,CON1);
@write('e=0.1的', @newline(1));
@solve(OBJ,CON,CON2);
@write('e=0.2的', @newline(1));
@solve(OBJ,CON,CON3);
@write('e=0.3的', @newline(1));
@solve(OBJ,CON,CON4);
@write('e=0.4的', @newline(1));
@solve(OBJ,CON,CON5);
@write('e=0.5的', @newline(1));
@solve(OBJ,CON,CON6);
@write('e=0.6的', @newline(1));
@solve(OBJ,CON,CON7);
@write('e=0.7的', @newline(1));
@solve(OBJ,CON,CON8);
@write('e=0.8的', @newline(1));
@solve(OBJ,CON,CON9);
ENDCALC
END