是否该归为非整数规划问题,LINGO中集合的表示
d_1=a_1_1*F_1+ a_1_2*F_2+ a_1_2*F_2+…+ a_1_180*F_180d_2=a_2_1*F_1+ a_2_2*F_2+ a_2_2*F_2+…+ a_2_180*F_180
d_3=a_3_1*F_1+ a_3_2*F_2+ a_3_2*F_2+…+ a_3_180*F_180
......
d_63=a_63_1*F_1+ a_63_2*F_2+ a_63_2*F_2+…+ a_63_180*F_180
a_i_j都已知为40个大于0的实数
F_i∈{3.4,1.2,4,5,6,7…(略去,有40个大于0的实数,其余为0,共180个数)}
目的,确定F_i的取值,以满足目标函数:min(max(d_i)-min(d_i))
问题:
1)暂时认为,是非线性规划问题打算用LINGO求解;
2)写代码时遇到问题,如何将F_i ∈{…}用LINGO代码表示出来;
3)有更好的求解思路不?
我自己顶一下哈,免得沉了 等高人,来看看! http://www.docin.com/p-258278866.html 这里是一些基本的lingo编程语句及使用方法,希望能帮助到你 这种情况可以把F的备选值列出来然后构造一个关于F的多项式,令它等于0,这样就限制了F的取值范围,看我下面的举例:
SETS:
ROW/ 1..4/: D;
COL/ 1..5/: F;
MAT( ROW, COL): A;
!注意下面这个集合;
ALT/1..6/: C;
ENDSETS
DATA:
A =
0.2, 0.3, 0.1, 0.5, 0.6
0.3, 0.1, 0.6, 0.9, 0.3
0.6, 0.3, 0.4, 0.9, 0.2
0.5, 0.7, 0.2, 0.2, 0.1;
!注意这个取值;
C = 3.4, 1.2, 4, 5, 6, 7;
ENDDATA
MIN = @MAX( ROW: D) - @MIN( ROW: D);
@FOR( ROW( I): D( I) = @SUM ( COL( J): A( I, J) * F( J)));
!注意这个约束条件;
@FOR( COL( J): @PROD( ALT( K): C( K)-F( J)) = 0);
CALC:
@SET( 'GLOBAL', 1);
ENDCALC这样解出来就是你想要的结果了。 Global optimal solution found.
Objective value: 0.2000000
Objective bound: 0.2000000
Infeasibilities: 0.8113830E-11
Extended solver steps: 49
Total solver iterations: 19394
Variable Value Reduced Cost
D( 1) 6.740000 0.000000
D( 2) 6.840000 0.000000
D( 3) 6.800000 0.000000
D( 4) 6.640000 0.000000
F( 1) 1.200000 0.000000
F( 2) 6.000000 0.000000
F( 3) 5.000000 0.000000
F( 4) 1.200000 0.000000
F( 5) 6.000000 0.000000
A( 1, 1) 0.2000000 0.000000
A( 1, 2) 0.3000000 0.000000
A( 1, 3) 0.1000000 0.000000
A( 1, 4) 0.5000000 0.000000
A( 1, 5) 0.6000000 0.000000
A( 2, 1) 0.3000000 0.000000
A( 2, 2) 0.1000000 0.000000
A( 2, 3) 0.6000000 0.000000
A( 2, 4) 0.9000000 0.000000
A( 2, 5) 0.3000000 0.000000
A( 3, 1) 0.6000000 0.000000
A( 3, 2) 0.3000000 0.000000
A( 3, 3) 0.4000000 0.000000
A( 3, 4) 0.9000000 0.000000
A( 3, 5) 0.2000000 0.000000
A( 4, 1) 0.5000000 0.000000
A( 4, 2) 0.7000000 0.000000
A( 4, 3) 0.2000000 0.000000
A( 4, 4) 0.2000000 0.000000
A( 4, 5) 0.1000000 0.000000
C( 1) 3.400000 0.000000
C( 2) 1.200000 0.000000
C( 3) 4.000000 0.000000
C( 4) 5.000000 0.000000
C( 5) 6.000000 0.000000
C( 6) 7.000000 0.000000
Row Slack or Surplus Dual Price
1 0.2000000 -1.000000
2 0.000000 0.000000
3 0.000000 -1.000000
4 0.000000 0.000000
5 0.000000 1.000000
6 0.000000 -0.3068997E-03
7 0.000000 -0.2403846E-01
8 0.000000 -0.3289474E-01
9 0.000000 0.1074149E-02
10 0.000000 0.8012821E-02
页:
[1]