如何解决 cplex opl 中的非线性优化问题

问题描述 投票:0回答:1

我正在尝试使用 cplex opl 解决下面提到的优化问题。但是,我收到错误为 内部错误

int scale=100;
// Declaration of Decision variables
dvar float+ e[num][hr];
dvar float+ f[num][hr];
dvar float d[num][hr];
dvar float amax;
using CP;
dvar int scalec[hr];
dexpr float c[i in hour]=scalec[i]/scale;
dexpr float b[i in hour]=sqrt((m[i]+c[i])^2+n[i]^2);

// Objective
minimize  ((amax*12)/(sum(t in hr)(b[t])));
subject to {
 amax==max(i in hr)(b[i]);
 forall(i in hr){
   c[i]==sum(k in num)d[k][i];
 } 
 forall (i in num){
   forall(j in hr){
     d[i][j]==e[i][j]-f[i][j];
   }
 }
nonlinear-optimization
1个回答
0
投票

n 和 m 不在您的模型中。

using CP;

int scale=100;
range num=1..2;
range hour=1..24;
// Declaration of Decision variables
dvar int+ e[num][hour] in 1..100;
dvar int+ f[num][hour] in 1..100;
dvar int+ d[num][hour] in 1..100;


dvar int+ scalec[hour] in 0..1000;
dexpr float c[i in hour]=scalec[i]/scale;
dexpr float b[i in hour]=sqrt((c[i])^2);

dexpr float amax=max(i in hour)(b[i]);;

// Objective
minimize  ((amax*12)/(sum(t in hour)(b[t])));
subject to {
 //amax==max(i in hr)(b[i]);
 forall(i in hour){
   c[i]==sum(k in num)d[k][i];
 } 
 forall (i in num){
   forall(j in hour){
     d[i][j]==e[i][j]-f[i][j];
   }
 }
} 

有效

© www.soinside.com 2019 - 2024. All rights reserved.