2つの都市間の脚を表す間隔のdvarと、その間隔のdvarシーケンスを定義します。 rightnow、私は以下の条件を罰したい:区間の目的地の都市が次の区間の出発都市でない場合は、変数に1を数えます。例えば、countVarという名前です。私は目的の中でcountVarを最小限に抑えます。これどうやってするの?シーケンス内の隣接間隔を得る方法
0
A
答えて
0
必要な処理を行うにはtypeOfNextを使用できます。あなたに小さな例を教えてください。その方法は、あなたが計算することができ ここ
{<"tia[1]" 0 0 1 0 1 1>
<"tia[2]" 1 1 2 1 3 2>
<"tia[3]" 2 2 3 3 6 3>
<"tia[4]" 3 3 4 6 10 4>
<"tia[5]" 4 4 5 10 15 5>
<"tia[6]" 5 5 6 15 21 6>}
<1 0 1 1>
<1 1 3 2>
<1 15 21 6>
loop
<1 0 1 1>
<1 1 3 2>
<1 3 6 3>
<1 6 10 4>
<1 10 15 5>
<1 15 21 6>
null
typeOfNextResult= [2 3 4 5 6 -1]
よろしく
0
//を与えるCOUNTVAR
using CP;
range R = 1..6;
dvar interval tia[i in R] size i;
dvar sequence seq in all(i in R)tia[i] types all(i in R)i;
dvar int typeOfNextResult[i in R];
subject to {
noOverlap(seq);
// computing typeOfNextResult
forall(i in R) typeOfNextResult[i]==typeOfNext(seq,tia[i],-1,-2);
}
execute {
writeln(seq);
writeln(seq.first());
writeln(seq.next(seq.first()));
writeln(seq.last());
writeln("loop");
var s=seq.first();
for(var i in R)
{
writeln(s);
s=seq.next(s) ;
}
writeln(s);
writeln("typeOfNextResult=",typeOfNextResult);
}
はCPLEXプログラムは、あなたの種類の助けを
using CP;
tuple flightLeg{
key int LegID;
int departurePoint;
int destinationPoint;
int aircraftID;
}
{flightLeg} Legs=...;
tuple aircraft{
key int aircraftID;
int aircraftType;
}
{aircraft} aircraftSet=...;
tuple stop{
int LegID1;
int LegID2;
int stopTime;
}
{stop} stopTimes=...;
dvar interval invFlighttasks[i in Legs][j in aircraftSet] optional
size 10;
dvar sequence seqAircrafts[i in aircraftSet] in
all(j in Legs) invFlighttasks[j][i] types
all(j in Legs) j.LegID;
//minize the number of disconnect (means the destinationPoint of a interval
//is not the departurePoint of it's next interval)
subject to {
forall (i in aircraftSet)
noOverlap(seqAircrafts[i],stopTimes);
}
関連する問題
- 1. シーケンス内の隣接するペアを見つける方法、Python
- 2. シーケンス内の隣接要素の比較
- 3. 現在の接続パラメータの取得方法(接続間隔など)
- 4. リストビュー内の画像間の間隔を調整する方法
- 5. 値を割り当てる間隔のシーケンスを作成する方法
- 6. 時間間隔でメトリックのデルタを取得する方法
- 7. 隣接する要素のidを取得する方法
- 8. 隣接セルのアドレスを取得する方法は?
- 9. データフレーム内の隣接する行の間で計算を実行
- 10. テキストビュー内の行間の間隔を増やす方法。
- 11. 隣接するレコード間の差を取得するSQLクエリ
- 12. STM32で時間間隔を取得する方法は?
- 13. カウントマトリックスから隣接行列を得る方法
- 14. 隣接行列をソートする方法
- 15. 段落内の単語間隔をランダム化する方法は?
- 16. 2つの時間間隔の間にfriday日付を取得する方法
- 17. 間隔でDatetimesのグループを取得する方法
- 18. ntile()の間隔を取得する方法
- 19. 等間隔の観測値を持つJulia `TimeArray`オブジェクト内の等間隔のタイムスタンプをバックフィルする方法
- 20. 時間間隔/間隔を複数のビンに分割する方法
- 21. python datetime-spanを等間隔の時間間隔に分割する方法は?
- 22. クエリの2つの時間の間隔を取得する方法は?
- 23. Collectl間隔ごとにタイムスタンプを取得する方法
- 24. 一定間隔でバッテリ電流を取得する方法は?
- 25. 特定の2つの時間間隔を取得する方法
- 26. 隣接セル内のデータにアクセスする
- 27. スライドショー内のスライド1つを間隔間隔の間に長くすること
- 28. 隣接隣接集計
- 29. シーケンス間シーケンスNLPタスクにRNNを適用する方法は?
- 30. UL7内のIE7の間隔
おかげでたくさんです。 :)別の質問:私はあなたがOPLスクリプトの最初の間隔を取得するためにseq.first()を使用していることに気付きました。どのようにOPLスクリプトではなく、OPLの最初の区間を取得できますか? –
こんにちは、 "first(seq、tia [3]);"と書くことができます。 tia [3]がシーケンスseqの最初の間隔であると言うために。 –
first(seq、tia [3])は、インターバル変数をシーケンスの最初のものに制限します。私は、最初の区間にいくつかの特殊な属性があることを確認したい場合(例えば、最初の区間からの旅行は特定の都市から始める必要があります)、最初の区間を取得するにはどうすればいいですか? –