如何将AMPL转换为CPLEX

拉曼

以下集合和参数是在AMPL环境中编写的。如何将它们转换为CPLEX?

set B;      #set of all blocks
set T;      #set of time periods
set BI{B};  #set of blocks that overlie a block
set BY{T};  #set of blocks that can be excavated in time period t
param C_min;        #minimum processing capacity of a mill
param g{B};     #average grade for block
param x_cord{B};    #x-coordinate of a block
param r{B} symbolic;
param early{B} default 1;
var alpha{B,T} binary;  # indicator for which sequencing constraint 6 won't be met

另外,以下约束是在AMPL环境中编写的。如何将它们转换为CPLEX?(特别是条件部分)

subject to processing{t in T}:  C_min <= sum{b in B: early[b] <= t}(if g[b] > total[b]  
then total[b] else 0)*y[b,t];

subject to sequencing{b in B, vb in B, t in T: early [b] <= t  and (x_cord[b]=x_cord[vb]) 
and 
(y_cord[b]=y_cord[vb]) and (z_cord[b] = z_cord[vb]-1)}: y[b,t] <= sum{u in 
early[vb]..t}y[vb,u];

subject to logic:sum{b in B, t in T} alpha[b,t] <= card(T)*card(B)-1;

在Cplex中:

forall (t in T) {
processing:
C_min<=sum(b in B: early[b] <= t) 
[(g[b] > total[b])=> (total[b])(g[b] <= total[b])=>(0)]*y[b][t];
}

forall (b in B)
  forall (vb in B)
        forall (t in T:early [b] <= t  &&  
        (x_cord[b]==x_cord[vb]) && (y_cord[b]==y_cord[vb]) && (z_cord[b] == z_cord[vb]-1)){
        sequencing:                             
            y[b][t]<=sum(u in early[vb]..t) y[vb][u];
}   

logic:                          
        sum(b in B)sum(t in T) alpha[b][t]<= ??;
亚历克斯·弗莱舍

让我帮助语法

range B=1..4;
range T=1..3;
{int} BT[t in T]=asSet(1..t);
int early[b in B]=b;

int C_min=0;

dvar boolean y[B][T];
dvar boolean alpha[B][T];
dvar int g[B];
int total[B];
int x_cord[B];
int y_cord[B];
int z_cord[B];

subject to
{
  
  forall (t in T) {
processing:
C_min<=sum(b in B: early[b] <= t) 
((g[b] >= total[b])=> (total[b]*g[b] <= total[b]*y[b][t]));
}

forall (b in B)
  forall (vb in B)
        forall (t in T:early [b] <= t  &&  
        (x_cord[b]==x_cord[vb]) && (y_cord[b]==y_cord[vb]) && (z_cord[b] == z_cord[vb]-1)){
        sequencing:                             
            y[b][t]<=sum(u in early[vb]..t) y[vb][u];
}   

logic:                          
        sum(b in B)sum(t in T) alpha[b][t]<= card(asSet(T))*card(asSet(B))-1;;


 
} 

工作良好

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将条件约束转换为Cplex的Concert C ++?

来自分类Dev

如何将Á转换为A

来自分类Dev

如何将Á转换为A

来自分类Dev

如何将转换转换为函数?

来自分类Dev

如何将变体转换为(或转换为)AnsiChar?

来自分类Dev

如何将guid转换为* char

来自分类Dev

如何将[CustomClass]转换为[AnyObject]

来自分类Dev

如何将css转换为bss

来自分类Dev

如何将NSManagedObject转换为NSDictionary

来自分类Dev

如何将参数转换为数组

来自分类Dev

如何将XElement转换为XDocument

来自分类Dev

如何将.csv转换为.xls

来自分类常见问题

如何将度数转换为弧度?

来自分类Dev

如何将csv转换为数组

来自分类Dev

如何将char转换为String?

来自分类Dev

如何将字典转换为ConcurrentDictionary?

来自分类Dev

如何将QIcon转换为QPixmap

来自分类常见问题

如何将UIView转换为图像

来自分类Dev

如何将NSAttributedString转换为NSData?

来自分类Dev

如何将日期转换为timeago

来自分类常见问题

如何将AAR转换为JAR

来自分类Dev

如何将元组转换为namedtuple?

来自分类Dev

如何将String转换为Drawable

来自分类Dev

如何将JSONObjects转换为JSONArray?

来自分类Dev

如何将QImage转换为QByteArray?

来自分类Dev

如何将linq转换为lambda

来自分类Dev

如何将NSArray转换为NSString **

来自分类Dev

如何将.tsv转换为.csv?

来自分类Dev

如何将BigInt转换为ubyte []?