我用lingo进行价格最优求解,但是老是出错,我希望可以全局求解,请问我这个代码怎么改才可以?
model:
sets:
feiliao/1..10/: shuliang, N, P2O5, K2O, youjizhi, jiage;
endsets
data:
shuliang = ,,,,,,0,0,0,0;
N = 46.2,24.3,21.6,0,11.1,0,0,0,0,0;
P2O5 = 0,0,0,12.2,45.1,0,0,0,0,0;
K2O = 0,0,0,0,0,60.3,0,0,0,0;
youjizhi = 0,0,0,0,0,0,0,0,0,0;
jiage = 2800,1370,765,425,1260,1380,180,88,0,0;
enddata
all_shuliang = @sum(feiliao(i) : shuliang(i));
all_shuliang = 1000;
all_N = @sum(feiliao(i) : shuliang(i) * N(i) / 100);
all_P2O5 = @sum(feiliao(i) : shuliang(i) * P2O5(i) / 100);
all_K2O = @sum(feiliao(i) : shuliang(i) * K2O(i) / 100);
all_youjizhi = @sum(feiliao(i) : shuliang(i) * youjizhi(i) / 100);
all_jiage = @sum(feiliao(i) : shuliang(i) * jiage(i));
shiji_N = all_N / (all_shuliang + 0.01) * 100;
shiji_P2O5 = all_P2O5 / (all_shuliang + 0.01) * 100;
shiji_K2O = all_K2O / (all_shuliang + 0.01) * 100;
shiji_youjizhi = all_youjizhi / (all_shuliang + 0.01) * 100;
shiji_jiage = all_jiage / (all_shuliang + 0.01);
chengpin_N = shiji_N * (1 + (3.8) / 100);
chengpin_P2O5 = shiji_P2O5 * (1 + (-2.5) / 100);
chengpin_K2O = shiji_K2O * (1 + (9) / 100);
chengpin_zong = chengpin_N + chengpin_P2O5 + chengpin_K2O;
chengpin_youjizhi = shiji_youjizhi * (1 + (0) / 100);
abs_N = @abs(chengpin_N - (11.1));
lin_N = @if( abs_N #le# 0.25 , abs_N ^2, abs_N *1000);
abs_P2O5 = @abs(chengpin_P2O5 - (6.1)) ;
lin_P2O5 = @if( abs_P2O5 #le# 0.25 , abs_P2O5 ^2, abs_P2O5 *1000);
abs_K2O = @abs(chengpin_K2O - (8)) ;
lin_K2O = @if( abs_K2O #le# 0.25 , abs_K2O ^2, abs_K2O *1000);
abs_zong = @abs(chengpin_zong - (25.2)) ;
lin_zong = @if( abs_zong #le# 0.25/5 , abs_zong ^2*5, abs_zong*5 *1000);
abs_youjizhi = @abs(chengpin_youjizhi - (0)) ;
lin_youjizhi = @if( abs_youjizhi #le# 0.25 , abs_youjizhi ^2, abs_youjizhi *1000);
[myzhi] min = lin_N + lin_P2O5 + lin_K2O + lin_zong + lin_youjizhi + shiji_jiage ;
data:
@pointer(2) = @status();
@pointer(3) = myzhi;
@pointer(4) = shuliang;
enddata
end
下面是lingo18运行的出错结果: