2017-06-04 54 views
-1

我需要幫助。我已經在CPLEX上編寫了我的模型,現在我想通過改變一個二進制變量之一來解決同一問題,以便在一段時間內浮動。讓我舉個例子,對於10次perıods,前兩個週期變量是二進制的,但對於最後的8個週期它將是連續的(放鬆)。我試圖解決它opl流量控制,但我有一些問題與變量轉換。我會很高興,如果你能幫助我在Cplex上放鬆二進制變量

預先感謝您

回答

0
dvar float x[1..5] in 0..9.2; 


    dvar int intx[1..5]; 



    maximize sum(i in 1..5) x[i]; 
    subject to 
    { 
    forall(i in 1..5)ctx:intx[i]-x[i]==0; 


    } 

    execute 
    { 
    writeln("x : ",x); 
    } 

    main 
    { 
    writeln("solve model"); 

    thisOplModel.generate(); 
    cplex.solve(); 
    thisOplModel.postProcess(); 

    writeln("relax integrity constraint on x for 1 and 2 and solve model"); 
    cplex.setLb(thisOplModel.ctx[1],-Infinity); 
    cplex.setLb(thisOplModel.ctx[2],-Infinity); 

    cplex.solve(); 
    thisOplModel.postProcess(); 

    writeln("put back integrity constraint on x and solve model"); 
    cplex.setLb(thisOplModel.ctx[1],0); 
    cplex.setUb(thisOplModel.ctx[2],0); 
    cplex.solve(); 
    thisOplModel.postProcess(); 
    } 

solve model 
x : [9 9 9 9 9] 
relax integrity constraint on x for 1 and 2 and solve model 
x : [9.2 9.2 9 9 9] 
put back integrity constraint on x and solve model 
x : [9 9.2 9 9 9] enter code here 

問候