問題タブ [tournament]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - オープンエンドのトーナメントペアリングアルゴリズム
私は仮想都市コマースゲーム(Urbien.com)のトーナメントモデルを開発しており、アルゴリズムの提案をいくつか入手したいと思っています。シナリオと現在の「基本的な」実装は次のとおりです。
シナリオ
- エントリは、元のFacemashやPixoto.comのように、デュエルスタイルでペアになっています。
- 「プレーヤー」は、決闘ペアのストリームを取得し、各ペアの勝者を選択する必要があるジャッジです。
- トーナメントは決して終わらない。人々はいつでも新しいエントリーを提出することができ、その日のデータに基づいて日/週/月/ミレニアムの勝者が選ばれる。
解決すべき問題
- 評価アルゴリズム-トーナメントエントリーを評価する方法と、各試合後に評価を調整する方法は?
- ペアリングアルゴリズム-プレーヤーにフィードする次のペアを選択する方法は?
現在のソリューション
- レーティングアルゴリズム-チェスやその他のトーナメントで現在使用されているEloレーティングシステム。
- ペアリングアルゴリズム-現在のアルゴリズムは2つの命令を認識します。
- これまでの決闘が少なかったエントリーに、より多くの決闘を与える
- 同様の評価を持つ人々をより高い確率で一致させる
与えられたもの:
N=トーナメントのエントリーの総数
D=すべてのプレーヤーがこれまでにトーナメントでプレイした決闘の総数
Dx=プレーヤーxがこれまでに持っていた決闘の数
決闘のためにプレーヤーxとyを選択するには、最初に確率でプレーヤーxを選択します。
p(x)=(1-(Dx / D))/ N
次に、次の方法でプレーヤーyを選択します。評価によってプレーヤーを並べ替えます並べ替えられたリストのインデックスjIdxでプレーヤーjを選択する確率を次のようにします。p(j)= ... 0、if(j == x)n * r ^それ以外の場合はabs(jIdx-xIdx)
ここで、0 <r <1は選択する係数であり、nは正規化係数です。
基本的に、xからのいずれかの方向の確率は、合計が1になるように正規化された幾何学的系列を形成します。
懸念
- 決闘の情報価値を最大化する-最低評価のエントリと最高評価のエントリを組み合わせても、有用な情報が得られる可能性はほとんどありません。
- 速度-1つのペアを選択するためだけに大量の計算を実行する必要はありません。1つの代替方法は、新しい決闘を一度に1つずつ選択するのではなく、スイスのペアリングシステムのようなものを使用して、すべてのエントリを一度にペアリングすることです。これには、特定の時間枠で送信されたすべてのエントリがほぼ同じ量の決闘を経験するという欠点(?)があり、これは望ましい場合と望ましくない場合があります。
- 平衡-PixotoのImageDuelアルゴリズムは、エントリが評価をさらに向上させる可能性が低い場合を検出し、それ以降の決闘を減らします。このような検出の利点については議論の余地があります。一方では、エントリの半分を「一時停止」すると、計算を節約できます。一方、評価が確立されたエントリは、初心者の評価を確立するために、新しいエントリと完全に一致する場合があります。
- エントリの数-エントリが数個、たとえば10個しかない場合は、おそらくより単純なアルゴリズムを使用する必要があります。
- 勝ち/負け-プレーヤーの勝ち/負けの比率は、もしあったとしても、次のペアリングにどのように影響しますか?
- ストレージ-各エントリーとトーナメント自体について何を保存しますか?現在保存されているもの:トーナメントエントリー:#これまでの決闘、#勝ち、#負け、レーティングトーナメント:#これまでの決闘、#エントリー
algorithm - 有向非巡回グラフまたはトーナメント(グラフ)でのサイドエリミネーション
循環有向グラフまたはほとんどのトーナメントの辺を削除し、辺の数が最小のツリー型の構造を出力するアルゴリズムが必要でした。
単純な実世界の例として以下で説明するように、除去は辺の重みに基づく必要があります。
A、B、Cの友達が3人いる場合。お互いの間でお金を借りたり返したりするシナリオを考えてみましょう。
人物Aは人物Bを転送する必要があります-$10。人物Bは人物Cを転送する必要があります-$20。人物Cは人物Aを転送する必要があります-$20。
相互の送金回数を最小限に抑えるための最終決済では、上記を「BさんがAさんを転送します-$ 10」のように並べ替えると、すべてが決済されます。
各辺と方向の重みが与えられたときに、任意の数のノードで機能するアルゴリズムを探しています。
グラフを再配置でき、グラフが「トーナメント」であり、各ノードがグラフ内のすべてのノードに接続されている可能性が高いことを考えると、私が従う最善のアプローチは何でしょうか。
android - Android でトーナメント ブラケットを描画する最良の方法
Android でトーナメント ブラケットを描画する必要があります。すべてのゲームの順位を計算済みです (つまり、スプレッドシートのような構造でチームを配置する場所を定義する (x,y) タプル)。ただし、ブラケットを描画する好ましい方法はわかりません。必要なものを示す例を見つけました:例
私の最初のアイデアは、プログラムでTableLayout. ただし、ボーダーは実際にはサポートされておらず、TextViewゲーム間のスペースを埋めるために多くの が必要です。したがって、これが最善の方法であるかどうかはわかりません。
誰かがより良い提案や似たような例を持っていますか?
ruby-on-rails - RubyOnRailsとChallongeAPI
私はかなり新しいですが、RubyonRailsの概念を理解しています。私はトーナメントを立ち上げて実行しようとしています。Gemファイルに依存関係としてgemを追加しました。ただし、ユーザー名とAPIキーをどこに追加すればよいかわかりません。これはAPIです-https: //bitbucket.org/corneldm/challonge-api/wiki/Home-そして、フィルターされたリストをビュー「Challonge :: Tournament.find(:all)」に表示するのはどうですか。事前設定されたActiveResourceクラスを接続する方法がわかりません。Ruby用のChallongeAPIを経験した人はいますか?または私が使用できる別のブラケットシステム?
tournament - 移動大会任務
私は整数計画法を使ってサッカートーナメントのスケジュールに取り組んでいます。それに取り組むためのツールとしてLINGOソフトウェアを使用します。移動距離を最小限に抑えることが私の目標です。12 チームがあり、各チーム間の距離マトリックスが既にあります。私の考えでは、二次代入があります。
これは目的関数です。
![目的関数] >>> ( http://i.imgur.com/ZucsJ.png )
Dij は、本拠地チーム i と j の間の物理的な距離です。チームjのホームベースでチームiがアウェイゲームを行う場所への代表としてインデックスk(アウェーチームのホームベース)。最後に、試合日の代表として t (1..(n-1))、n = 関係するチーム。
これはセットとデータです (LINGO):
![セットとデータ] >>> ( http://i.imgur.com/HONK0.png )
データのセットに何か問題がありますか? 二次方程式を(おそらく)チーム、チーム、試合日、チーム、チーム、インデックスkに割り当てる必要があると感じているからですか?スクリプトを手伝ってもらえますか?
私はLINGOソフトウェアの初心者であり、どんな助けも本当に感謝しています. ありがとう。
mysql - さまざまなトーナメント/競技タイプ(リーグ、ラダー、シングル/ダブルエリミネーションなど)のデータ構造
さまざまな種類のトーナメントを簡単に作成して、他のユーザーと一緒に参加できるシステムを構築しようとしています。これは特定のゲーム用ではありませんが、代わりに、最小限の操作で、あらゆるデバイスからトーナメントの結果を表示および更新するための汎用ツールであるため、実際のアプリケーションがパーティーなどで邪魔になることはありません。
ユーザープロファイル、トーナメント、結果はデータベースに保持されますが、トーナメントの変更はクライアントのビューに即座に反映され、アニメーション化され、ページのリロードなし(JavaScript)で、ajaxを介してサーバーに送信され、検証されてデータベースに保存されます( PHP、MySQL)。クライアントは常にサーバーをリッスンし、更新が行われるとすべてのクライアントのビューを更新します(競合他社の名前変更から、結果やドロップアウトに一致するものなど)
シングルまたはダブルエリミネーショントーナメントのデータモデルをいくつか見つけましたが、これはリーグ、ラダー、シングル/ダブルエリミネーション、ラウンドロビンなどのさまざまなトーナメントタイプをサポートすることになっています。
では、このようなプロジェクトにはどのような種類のデータベース(ベース)モデルを使用する必要がありますか。これは基本的にGoogle Docsスプレッドシートですが、トーナメントタイプごとに事前定義された外観とコントロールがあります。
すべてのトーナメントに適合するモデルを選ぶべきですか、それともすべての異なるトーナメントタイプのために別々のテーブルを作成するべきですか?このようなプロジェクトに役立つ可能性のあるリソースはありますか?
selection - トーナメント選択の一般的なアルゴリズム
GA でトーナメント セレクションを使用する方法について質問があります。初期集団として 100 個体があり、n 世代にトーナメント選択を適用したいとします。そのため、反復ごとに染色体の 20% しか得られません。私が思いついたアルゴリズムは次のとおりです。
このスキーマは正しいですか? ありがとう
javascript - トーナメント シードを並べ替える JavaScript
JavaScript と Jquery を使用してブラケットを表示するトーナメント ブラケット システムを作成するために、ここのいくつかの投稿を使用しました。
私は 1-16 でシードされた 16 チームを持っています。現時点で、ソートされたシードは次のとおりです。
[1,8],[4,5],[2,7],[3,6]
ご覧のとおり、ある程度は機能しますが、準決勝は 1v4 と 2v3 になり、これは正しくありません。準決勝を 1v3 と 2v4 にしたいのですが、どうやってもこれを印刷できないようです。したがって、次のようになります。
[1,8],[3,6],[5,4],[7,2]
これにより、紙の上の括弧を見ると、1 と 2 が括弧の反対側にあるという意味では正しいのですが、何を試してもうまくいきません。
編集:これがより多くのチームで機能するようにしたいので、16/32 チーム トーナメントですが、このアルゴリズムでそうしようとすると、正しいシードが得られないようです。
これが私のコードです:
python - 大会プログラム
プロジェクトのトーナメントの最初のラウンドを設定するプログラムを作成する必要があります。競技者の数が不均一な場合、プログラムはさようならを追加する必要があります。これが私のコードです:
エラー?
php - 可能なトーナメント結果の計算
ラウンド ロビン タイプのトーナメントで、各チームの最善の結果と最悪の結果を導き出すコードのセクションを PHP で作成しようとしています。
このコードは、各ラウンドの試合後に実行されるため、各チームの現在の WLT レコードと、各チームの将来の試合スケジュールを検索します (この情報はすべて、データベースに既に保存されています)。
私の最初の考えは、各チームのランキングの各順列を実行し、各チームのパフォーマンスの極端な限界を思い出すことでした. しかし、さらに考えてみると、この場合の 12 チームでは、4 億 7,900 万を超える順列が発生することがわかりました (コードが簡潔であることは言うまでもなく、計算に少し時間がかかる場合があります)。
残念ながら、これに対処するための論理システムを考案する際の想像力の限界に達したので、誰かが提供できる助けがあれば幸いです.
事前に乾杯エドワード