Dizin
BasisProto
(message)BasisStatusProto
(enum)DualRayProto
(message)DualSolutionProto
(message)EmphasisProto
(enum)FeasibilityStatusProto
(enum)IndicatorConstraintProto
(message)LPAlgorithmProto
(enum)LimitProto
(enum)LinearConstraintsProto
(message)LinearExpressionProto
(message)ModelProto
(message)ModelSolveParametersProto
(message)ObjectiveBoundsProto
(message)ObjectiveProto
(message)PrimalRayProto
(message)PrimalSolutionProto
(message)ProblemStatusProto
(message)QuadraticConstraintProto
(message)SecondOrderConeConstraintProto
(message)SolutionHintProto
(message)SolutionProto
(message)SolutionStatusProto
(enum)SolveParametersProto
(message)SolveResultProto
(message)SolveStatsProto
(message)SolverTypeProto
(enum)SosConstraintProto
(message)SparseBasisStatusVector
(message)SparseDoubleMatrixProto
(message)SparseDoubleVectorProto
(message)SparseInt32VectorProto
(message)SparseVectorFilterProto
(message)TerminationProto
(message)TerminationReasonProto
(enum)VariablesProto
(message)
BasisProto
Bir doğrusal programa ilişkin bir çözümün kombinasyonsal karakterizasyonu.
Doğrusal programların çözümü için kullanılan tek yöntem, her zaman bir Temel ile kombinasyon halinde açıklanabilen bir "temel uygulanabilir çözüm" döndürür. Bir temel, her değişken ve doğrusal kısıtlama için bir BasisStatusProto atar.
Örneğin, standart bir LP: min c * x s.t. A * x = b x >= 0 olan ve kısıtlamalardan daha fazla değişken içeren ve tam satır sıralaması A.
İzin verilen değişken sayısı, m doğrusal kısıt sayısı olsun. Bu problem için geçerli bir temel şu şekilde oluşturulabilir: * Tüm kısıtlamalar SFİXED temel durumuna sahip olacaktır. * A sütunları doğrusal olarak bağımsız olacak şekilde m değişken seçin ve durumunu TEMEL olarak atayın. * Kalan n - m değişkenleri için AT_LOWER durumunu atayın.
Bu temelin temel çözümü, AT_LOWER durumu alt sınırlarına (tümü sıfır) sabitlenmiş tüm değişkenleri içeren benzersiz A * x = b çözümüdür. Elde edilen çözüm, x >= 0 değerini de karşılıyorsa temel uygulanabilir çözüm olarak adlandırılır.
Alanlar | |
---|---|
constraint_status |
Kısıtlamaya dayalı durum. Gereksinimler: * restricted_status.id, DoğrusalConstraints.id değerine eşittir. |
variable_status |
Değişken temel durumu. Gereksinimler: * restricted_status.id, VariablesProto.id'ye eşittir. |
basic_dual_feasibility |
Bu, uygun olmayan LP çözümlerinin uygulanabilirliğini tanımlamak için MathOpt tarafından kullanılan gelişmiş bir özelliktir (optimum çözümler her zaman SOLUTION_STATUS_FEASIBLE durumunda olur). Tek taraflı LP'ler için bu, ilişkili ikili çözümün uygulanabilirlik durumuna eşit olmalıdır. Çift taraflı LP'ler için bazı uç durumlarda farklı olabilir (ör. primal tek taraflı tamamlanmamış problemler). ModelSolveParametersProto.initial_basis aracılığıyla bir başlangıç temeli sağlıyorsanız bu değer yoksayılır. Yalnızca SolutionProto.basis tarafından döndürülen temel için geçerlidir. |
BasisStatusProto
Bir değişkenin/kısıtlamanın LP düzeyindeki durumu.
Sıralamalar | |
---|---|
BASIS_STATUS_UNSPECIFIED |
Hiçbir durumu temsil etmeyen koruma değeri. |
BASIS_STATUS_FREE |
Değişken/kısıtlama serbesttir (sonlu sınırları yoktur). |
BASIS_STATUS_AT_LOWER_BOUND |
Değişken/sınırlama, alt sınırında (sonlu olmalıdır) var. |
BASIS_STATUS_AT_UPPER_BOUND |
Değişken/sınırlama, üst sınırında (sonlu olmalıdır) var. |
BASIS_STATUS_FIXED_VALUE |
Değişken/sınırlama aynı sonlu alt ve üst sınırlara sahip. |
BASIS_STATUS_BASIC |
Değişken/sınırlama temeldir. |
DualRayProto
Optimizasyonun iki katına ilişkin sınırsız bir iyileştirme yönü, problem; eşdeğer olarak, ilkel uygulanabilirlik sertifikası.
Örneğin, ilkel çiftli doğrusal program çiftini ele alalım: (Primal) (Çift) min c * x maks b * y s.t. A * x >= b s.t. y * A + r = c x >= 0 y, r >= 0. Çift Işın çifti (y, r) tatmin edicidir: b * y > 0 y * A + r = 0 y, r >= 0 Çift uygulanabilir çözüme (y, r) pozitif katını eklemenin ikili uygulanabilirliği koruduğunu ve hedefi iyileştirdiğini gözlemleyin (ikinin sınırlandırılmamış olduğunu kanıtlar). Çift nokta, ilkel sorunun uygulanabilir olmadığını da kanıtlıyor.
Aşağıdaki DualRay mesajında y dual_values, r ise azaltıldı_maliyettir.
Alanlar | |
---|---|
dual_values |
Gereksinimler: * dual_values.id, LinearConstraints.id öğelerinin öğeleridir. * dual_values.values'ın tümü sonlu olmalıdır. |
reduced_costs |
Gereksinimler: * down_costs.id, VariablesProto.id öğelerinin öğeleridir. * down_costs.values tüm sonlu olmalıdır. |
DualSolutionProto
Optimizasyon problemlerinin ikili çözümüne yönelik bir çözüm.
Örneğin, ilkel çiftli doğrusal program çiftini ele alalım: (Primal) (Çift) min c * x maks b * y s.t. A * x >= b s.t. y * A + r = c x >= 0 y, r >= 0. İkili çözüm, çifttir (y, r). Yukarıdaki (İkili) kısıtlamalarını karşılıyorsa uygulanabilir.
Aşağıdaki mesajda y dual_value, r azaltılmış_maliyet, b * y ise nesnel_değerdir.
Alanlar | |
---|---|
dual_values |
Gereksinimler: * dual_values.id, LinearConstraints.id öğelerinin öğeleridir. * dual_values.values'ın tümü sonlu olmalıdır. |
reduced_costs |
Gereksinimler: * down_costs.id, VariablesProto.id öğelerinin öğeleridir. * down_costs.values tüm sonlu olmalıdır. |
feasibility_status |
Temel çözücüye göre çözümün uygulanabilirlik durumu. |
objective_value |
|
EmphasisProto
Çözme sırasında isteğe bağlı bir göreve uygulanan çaba düzeyi (kullanım için SolveParametersProto bölümüne bakın).
Vurgu, bir çözücü özelliğini şu şekilde yapılandırmak için kullanılır: * Bir çözücü bu özelliği desteklemiyorsa, her zaman yalnızca UNSPECIFIED (BELİRTİLMEMİŞ) değeri geçerli olur; diğer ayarlar genellikle geçersiz bağımsız değişken hatası oluşturur (bazı çözücüler KAPALI değerini de kabul edebilir). * Çözücü özelliği destekliyorsa: - BELİRTİLMEMİŞ olarak ayarlandığında temel varsayılan kullanılır. - Özellik kapatılamadığında, KAPALI bir hata döndürür. - Özellik varsayılan olarak etkinse çözücü varsayılanı genellikle MEDIUM ile eşlenir. - Özellik destekleniyorsa DÜŞÜK, ORTA, YÜKSEK ve ÇOK YÜKSEK, hiçbir zaman hata vermez ve en iyi eşleşmeyle eşleştirilir.
Sıralamalar | |
---|---|
EMPHASIS_UNSPECIFIED |
|
EMPHASIS_OFF |
|
EMPHASIS_LOW |
|
EMPHASIS_MEDIUM |
|
EMPHASIS_HIGH |
|
EMPHASIS_VERY_HIGH |
FeasibilityStatusProto
Çözücü tarafından belirtilen problem uygulanabilirlik durumu (çözücünün, hak talebi için sertifika göndermesi gerekmez).
Sıralamalar | |
---|---|
FEASIBILITY_STATUS_UNSPECIFIED |
Hiçbir durumu temsil etmeyen koruma değeri. |
FEASIBILITY_STATUS_UNDETERMINED |
Çözücü, bir durum talebinde bulunmaz. |
FEASIBILITY_STATUS_FEASIBLE |
Çözücü, sorunun uygulanabilir olduğunu iddia eder. |
FEASIBILITY_STATUS_INFEASIBLE |
Çözücü, sorunun uygulanabilir olmadığını iddia eder. |
IndicatorConstraintProto
Şu biçimde tek bir gösterge kısıtlamasını temsil eden veriler: Variable(indicator_id) = (activate_on_zero ? 0 : 1) ⇒ alt_sınır <= ifade <= üst_sınır.
Bu kısıtlamaya dahil olan bir değişken (gösterge veya expression
özelliğinde görünen) silinirse sıfır olarak ayarlanmış gibi kabul edilir. Özellikle, gösterge değişkeninin silinmesi, activate_on_zero
yanlışsa gösterge kısıtlamasının boş olacağı, activate_on_zero
doğruysa doğrusal sınırlamaya eşdeğer olacağı anlamına gelir.
Alanlar | |
---|---|
activate_on_zero |
Doğru ise, gösterge değişkeni 0 değerini alırsa ima edilen sınırlama geçerli olmalıdır. Aksi halde, gösterge değişkeni 1 değerini alırsa ima edilen sınırlamanın geçerli olması gerekir. |
expression |
İçeren modelle ilgili olarak geçerli bir doğrusal ifade olmalıdır: * |
lower_bound |
[-inf, inf] değerine sahip olmalıdır; NaN olamaz. |
upper_bound |
(-inf, inf] değerine sahip olmalıdır; NaN olamaz. |
name |
Üst mesajların bu alanda benzersizlik gereksinimleri olabilir (ör. |
indicator_id |
İkili değişkene karşılık gelen veya ayarlanmamış kimlik. Ayarlanmazsa gösterge kısıtlaması yok sayılır. Ayarlanırsa şunları gerekir: * VariablesProto.integers[indicator_id] = true, * VariablesProto.lower_bounds[indicator_id] >= 0, * VariablesProto.upper_bounds[gösterge_kimliği] <= 1. Bu koşullar MathOpt tarafından doğrulanmaz, ancak karşılanmazsa çözücü, çözme işleminden sonra hata döndürür. |
LPAlgorithmProto
Doğrusal programları çözmek için bir algoritma seçer.
Sıralamalar | |
---|---|
LP_ALGORITHM_UNSPECIFIED |
|
LP_ALGORITHM_PRIMAL_SIMPLEX |
(primal) tek başına yöntem. Tipik olarak, ilkel ve çift çözüm, ilkel/çift sınırlı problemler için primal/çift ışınlar ve bir temel sağlayabilir. |
LP_ALGORITHM_DUAL_SIMPLEX |
Çift tek yönlü yöntem. Tipik olarak, ilkel ve çift çözüm, ilkel/çift sınırlı problemler için primal/çift ışınlar ve bir temel sağlayabilir. |
LP_ALGORITHM_BARRIER |
Yaygın olarak iç nokta yöntemi (IPM) olarak da adlandırılan bariyer yöntemidir. Genellikle hem asal hem de çift çözüm verebilir. Bazı uygulamalar, sınırsız/uygulanması mümkün olmayan sorunlara da neden olabilir. Temel çözücü "çapraz geçiş" yapıp tek işlemi bitirmediği sürece temel verilmez. |
LP_ALGORITHM_FIRST_ORDER |
Birinci dereceden yönteme dayalı bir algoritma. Bunlar genellikle hem temel hem de ikili çözümler ve potansiyel olarak birincil ve/veya çift uygulanabilirlik sertifikaları üretir. Birinci dereceden yöntemler genellikle daha düşük doğrulukla çözümler sunar.Bu nedenle, kullanıcılar çözüm kalitesi parametrelerini (ör. toleranslar) ayarlamaya ve çözümleri doğrulamaya özen göstermelidir. |
LimitProto
Bir Solve(), FesihReasonProto FEASIBLE veya NO_SOLUTION_FOUND ile erken durursa, ulaşılan belirli sınır.
Sıralamalar | |
---|---|
LIMIT_UNSPECIFIED |
Bir sınırdan farklı şekilde sonlandırdığımızda boş değer olarak kullanılır (ör. TERMINATION_REASON_OPTIMAL). |
LIMIT_UNDETERMINED |
Temel çözücü, hangi sınıra ulaşıldığını göstermez. |
LIMIT_ITERATION |
Maksimum sayıda yineleme (ör. tek yönlü veya bariyer iterasyonları) gerçekleştirildikten sonra iterasyonlu bir algoritma durduruldu. |
LIMIT_TIME |
Kullanıcı tarafından belirtilen hesaplama süresinden sonra algoritma durdu. |
LIMIT_NODE |
Bir dal ve sınır algoritması, dal ve sınır ağacında maksimum sayıda düğüm keşfettiği için durduruldu. |
LIMIT_SOLUTION |
Gerekli sayıda çözüm bulduğu için algoritma durduruldu. Bu özellik, genellikle çözücünün karşılaştığı ilk uygun çözümü döndürmesini sağlamak için MIP'lerde kullanılır. |
LIMIT_MEMORY |
Bellek tükendiği için algoritma durduruldu. |
LIMIT_CUTOFF |
Çözme aracı, hedef için bir kesim sınırı ile çalıştırıldı (ör.SolveParameters. cutoff_limit ayarı). Bu, kullanıcının kesim noktasından daha kötü bir çözüm istemediğini gösteriyor ve çözücü, en az kesim aralığı kadar iyi bir çözüm olmadığı sonucuna vardı. Genellikle daha fazla çözüm bilgisi verilmez. |
LIMIT_OBJECTIVE |
Algoritma, kullanıcı tarafından belirlenen sınırdan daha iyi bir çözüm veya sınır bulduğu için durduruldu (SolveParameters.objective_limit ve SolveParameters.best_bound_limit). |
LIMIT_NORM |
Yineleme normları çok fazla arttığı için algoritma durdu. |
LIMIT_INTERRUPTED |
Kesme sinyali veya kullanıcı kesme isteği nedeniyle algoritma durduruldu. |
LIMIT_SLOW_PROGRESS |
Algoritma, çözüme yönelik ilerleme kaydetmeye devam edemediği için çalışmayı durdurdu. |
LIMIT_OTHER |
Algoritma, yukarıdakilerden biri kapsamında olmayan bir sınır nedeniyle durduruldu. Neden belirlenemediğinde LIMIT_UNDETERMINED kullanılır. LIMIT_OTHER neden bilindiği halde yukarıdaki alternatiflerin hiçbirine uymuyorsa kullanılır. FesihProto.detail, sınır hakkında ek bilgiler içerebilir. |
LinearConstraintsProto
Aşağıda kullanıldığı gibi, "#doğrusal kısıtlamaları" = size(DoğrusalConstraintsProto.ids) tanımlarız.
Alanlar | |
---|---|
ids[] |
Negatif olmamalı ve kesinlikle artmalıdır. max(int64) değeri kullanılamıyor. |
lower_bounds[] |
Uzunluk, #doğrusal kısıtlamalara ve [-inf, inf] cinsinden değerlere eşit olmalıdır. |
upper_bounds[] |
Uzunluk, #linear kısıtlamalarına eşit olmalıdır. Değerler (-inf, inf]). |
names[] |
Ayarlanmazsa tümünün boş dizeler olduğu varsayılır. Aksi takdirde uzunluğu, #linear kısıtlamalarına eşit olmalıdır. Boş olmayan adların tümü farklı olmalıdır. |
LinearExpressionProto
Doğrusal bir ifadenin seyrek temsili (değişkenlerin ağırlıklı toplamı artı sabit bir ofset).
Alanlar | |
---|---|
ids[] |
Değişkenlerin kimlikleri. Tüm öğeler farklı olacak şekilde (artan düzende) sıralanmalıdır. |
coefficients[] |
Kimliklere eşit uzunlukta olmalıdır. Değerler sonlu olmalıdır, NaN olamaz. |
offset |
Sonlu olmalıdır ve NaN olamaz. |
ModelProto
Optimizasyon sorunu. MathOpt şunları destekler: - İsteğe bağlı sonlu sınırlara sahip sürekli ve tam sayı karar değişkenleri. - Küçültülmüş veya en üst düzeye çıkarılmış doğrusal ve ikinci dereceden hedefler (tek veya birden çok hedef). - Aşağıdakileri de içeren çeşitli sınırlama türleri: * Doğrusal kısıtlamalar * İkinci dereceden kısıtlamalar * İkinci derece koni kısıtlamaları * Mantıksal kısıtlamalar > SOS1 ve SOS2 kısıtlamaları > Gösterge kısıtlamaları
Varsayılan olarak, kısıtlamalar "id-to-data" eşlemelerinde temsil edilir. Bununla birlikte, doğrusal kısıtlamaları daha verimli bir "dizi yapısı" biçiminde temsil ederiz.
Alanlar | |
---|---|
name |
|
variables |
|
objective |
Modeldeki birincil hedef. |
auxiliary_objectives |
Çok amaçlı modellerde kullanıma yönelik yardımcı hedefler. Eşleme anahtarı kimlikleri [0, max(int64)) arasında olmalıdır. Her öncelik ve boş olmayan her ad, benzersiz ve aynı zamanda birincil |
linear_constraints |
|
linear_constraint_matrix |
Doğrusal kısıtlamalar için değişken katsayılar. Bu kısıtlamaya dahil olan bir değişken silinirse sıfıra ayarlanmış gibi kabul edilir. Gereksinimler: * linear_restrictiont_matrix.row_id, linear_restrictionts.id öğelerinin öğeleridir. * linear_restrictiont_matrix.column_id değerleri, değişkenler.kimliklerinin öğeleridir. * Belirtilmeyen matris girişleri sıfırdır. * linear_referrert_matrix.values değerlerinin tümü sonlu olmalıdır. |
quadratic_constraints |
Modeldeki ikinci dereceden kısıtlamalar. |
second_order_cone_constraints |
Modeldeki ikinci derece koni kısıtlamaları. |
sos1_constraints |
Modeldeki, en fazla bir |
sos2_constraints |
Modeldeki SOS2 kısıtlamaları (en fazla iki |
indicator_constraints |
Modeldeki gösterge kısıtlamaları (ikili program "gösterge değişkeni" bir olarak ayarlanırsa "ima edilen sınırlama" geçerli olmalıdır). |
ModelSolveParametersProto
Alanlar | |
---|---|
variable_values_filter |
PrimalSolutionProto ve PrimalRayProto (PrimalSolutionProto.variable_values, PrimalRayProto.variable_values) tarafından girilen tüm seyrek kapsayıcılara uygulanan filtre. Gereksinimler: * filter_ids, VariablesProto.id öğelerinin öğeleridir. |
dual_values_filter |
DualSolutionProto ve DualRay'deki doğrusal kısıtlamalarla anahtarlanmış tüm döndürülen seyrek kapsayıcılara uygulanan filtre (DualSolutionProto.dual_values, DualRay.dual_values). Gereksinimler: * filter_ids, LinearConstraints.id öğelerinin öğeleridir. |
reduced_costs_filter |
DualSolutionProto ve DualRay (DualSolutionProto.reduced_costs, DualRay.reduced_costs) değişkenler tarafından girilen tüm seyrek kapsayıcılara uygulanan filtre. Gereksinimler: * filter_ids, VariablesProto.id öğelerinin öğeleridir. |
initial_basis |
Sıcak başlatılan tek LP çözücüler için isteğe bağlı başlangıç temeli. Ayarlanırsa mevcut |
solution_hints[] |
İsteğe bağlı çözüm ipuçları. Temel çözücü yalnızca tek bir ipucunu kabul ediyorsa ilk ipucu kullanılır. |
branching_priorities |
İsteğe bağlı kollara ayırma öncelikleri. Daha yüksek değerlere sahip değişkenler ilk olarak kollara ayrılır. Öncelikleri ayarlanmayan değişkenler, çözücünün varsayılan önceliğini (genellikle sıfır) alır. Gereksinimler: * Braing_priorities.values sonlu olmalıdır. * daling_priorities.id , VariablesProto.id öğelerinin öğeleri olmalıdır. |
ObjectiveBoundsProto
Optimum hedef değerine göre sınırlanır.
Alanlar | |
---|---|
primal_bound |
Çözücü, optimum değerin, çözücülerin birincil fizibilite toleransına kadar primal_bound'a eşit veya daha iyi olduğunu (minimuma getirme için daha küçük ve maksimumlaştırma için daha büyük) iddia eder (aşağıdaki uyarıya bakın): * Prial_bound, çözücü bu bir sınıra sahip olduğunu iddia etmediğinde önemsizdir (küçültme için +inf ve -inf maksimizasyon). * primal_bound, optimum değere, en iyi ilkel çözümün hedefinden daha yakın olabilir. Özellikle, herhangi bir ilkel uygulanabilir çözüm döndürülmese bile primal_bound parametresi önemsiz olmayabilir. Uyarı: Tam iddia, şu şekilde bir temel çözüm olduğudur: * sayısal olarak uygulanabilir (yani çözücü toleransına kadar uygulanabilir) ve * objektif_bağlı bir değere sahiptir. Sayısal olarak uygulanabilir bu çözüm bir miktar uygulanabilirlikte olmayabilir. Bu durumda, primal_bound ile optimum değerden kesin olarak daha iyi olabilir. Özellikle de fizibilite toleransı nispeten büyük olduğunda (örneğin, PDLP ile çözerken), primal fizibilite toleransının primal_bound parametresindeki bir toleransa dönüştürülmesi çok önemlidir. |
dual_bound |
Çözücü, optimum değerin eşit veya daha kötü olduğunu (en aza indirme için daha büyük, maksimuma getirme için ise daha küçük) olduğunu iddia eder. Bu durum, primal_bound ile benzer bir şekilde, optimum duruma dönerken bile bazı çözücülerde gerçekleşebilir. MIP çözücüler, kesin olmayan bile olsa genellikle sınır rapor eder. * Sürekli problemlerde dual_bound, en iyi ikili çözümün hedefinden ideal değere daha yakın olabilir. MIP'de dual_bound için önemsiz olmayan ilk değerlerden biri genellikle MIP'nin LP gevşetmesinin optimum değeridir. * dual_bound, çözücü toleranslarına kadar primal_bound parametresinden daha iyi (küçültme için daha küçük ve maksimum için daha büyük) olmalıdır (aşağıdaki uyarıya bakın). Uyarı: * Sürekli problemler için tam iddia şu çift çözümlüdür: * sayısal olarak uygulanabilir (yani çözücü toleransına kadar uygundur) ve * dual_bound nesne değerine sahiptir. Sayısal açıdan uygulanabilir olan bu çözüm biraz uygulanamaz; bu durumda, dual_bound (dual_bound) değeri optimum değerden ve primal_bound değerinden kesin olarak daha kötü olabilir. İlkel duruma benzer şekilde, özellikle fizibilite toleransı nispeten büyük olduğunda, ikili fizibilite toleransının dual_bound üzerindeki toleransa dönüştürülmesi önemsiz değildir. Bununla birlikte, bazı çözücüler, dual_bound sürümünün sayısal olarak daha güvenli olabilecek düzeltilmiş bir sürümünü sunar. Bu düzeltilmiş sürüme çözücünün belirli çıkışı üzerinden erişilebilir (örneğin, PDLP için, pdlp_output.convergence_information.corrected_dual_objective). * MIP çözücüler için dual_bound, bir miktar sürekli gevşeme (ör. LP gevşemesi) için ikili çözümle ilişkilendirilebilir ancak genellikle çözücülerin yürütmesinin karmaşık bir sonucudur ve genellikle LP çözücülerin bildirdiği sınırlardan daha kesin değildir. |
ObjectiveProto
Alanlar | |
---|---|
maximize |
yanlış en aza indirmek, doğru en üst düzeye çıkarmaktır |
offset |
NaN değil sonlu olmalıdır. |
linear_coefficients |
Karar değişkenlerinde doğrusal olan ObjectiveProto terimleri. Gereksinimler: * linear_coefficiencys.id, VariablesProto.id öğelerinin öğeleridir. * VariablesProto belirtilmeyen sıfıra karşılık gelir. * Doğrusal_cosayısal.değerlerin tümü sonlu olmalıdır. * doğrusal_cosayısal.değerler sıfır olabilir ancak bu yalnızca alan israfına yol açar. |
quadratic_coefficients |
Karar değişkenlerinde ikinci dereceden olan nesnel terimler. SparseDoubleMatrixProto mesajlarına ek şartlar: * İkinci dereceden_katsayılar.satır_kimlikleri ve ikinci dereceden_katsayılar.sütun_kimlikleri öğelerinin her biri VariablesProto.id öğelerinin bir öğesi olmalıdır. * Matris büyük üçgen olmalıdır: Her i için ikinci dereceden_katsayılar.satır_kimlikleri[i] <= ikinci dereceden_katsayılar.sütun_kimlikleri[i]. Notlar: * Açıkça depolanmayan terimlerin katsayısı sıfırdır. * İkinci dereceden_katsayılar.katsayılar sıfır olabilir. Ancak bu yalnızca yer israfına yol açar. |
name |
Üst mesajların bu alanda benzersizlik gereksinimleri olabilir. Örneğin, ModelProto.objectives ve AuxiliaryObjectivesUpdatesProto.new_objectives konularına bakın. |
priority |
Çok amaçlı problemlerde bu hedefin diğerlerine göre önceliği (düşük olması daha önemlidir) daha önemlidir. Bu değer, negatif olmayan bir sayı olmalıdır. Ayrıca modeldeki her hedef öncelik, çözüm zamanında farklı olmalıdır. Bu koşul proto düzeyinde doğrulanmaz. Bu nedenle modellerin geçici olarak aynı önceliğe sahip hedefleri olabilir. |
PrimalRayProto
Bir optimizasyon probleminde sınırsız iyileştirme yönü; eşdeğer olarak, optimizasyon probleminin ikilisinin uygulanabilirliğiyle ilgili bir sertifikadır.
Örneğin, basit bir doğrusal program düşünün: min c * x s.t. A * x >= b x >= 0 Bir primal ışın, c * x < 0 A * x >= 0 x >= 0 Uygulanabilir bir çözümle elde edilen pozitif ışınların pozitif bir katı olacak şekilde, ilkel ışınların pozitif ve uygulanabilir katını elde ettikleri gözlemleyin. İlk elden sonuç, ikili optimizasyon sorununun uygulanabilir olmadığını da kanıtlar.
Aşağıdaki PrimalRay mesajındavariable_values, x'tir.
Alanlar | |
---|---|
variable_values |
Gereksinimler: * variable_values.id, VariablesProto.id öğelerinin öğeleridir. * variable_values.values parametresinin tümü sonlu olmalıdır. |
PrimalSolutionProto
Bir optimizasyon problemine çözüm.
Örneğin, basit bir doğrusal program düşünün: min c * x s.t. A * x >= b x >= 0. Asal çözüm, x'e değer atamaktır. Yukarıdaki A * x >= b ve x >= 0 değerlerini karşılıyorsa uygulanabilir. Aşağıdaki PrimalSolutionProto mesajında değişken_değerleri x, hedef_değeri ise c * x şeklindedir.
Alanlar | |
---|---|
variable_values |
Gereksinimler: * variable_values.id, VariablesProto.id öğelerinin öğeleridir. * variable_values.values parametresinin tümü sonlu olmalıdır. |
objective_value |
Temel çözücü tarafından hesaplanan nesnel değer. Sonsuz veya NaN olamaz. |
auxiliary_objective_values |
Temel çözücü tarafından hesaplanan yardımcı hedef değerleri. Anahtarlar geçerli yardımcı hedef kimlikleri olmalıdır. Değerler, sonsuz veya NaN olamaz. |
feasibility_status |
Temel çözücüye göre çözümün uygulanabilirlik durumu. |
ProblemStatusProto
Çözücü tarafından iddia edilen asal problemin ve ikilisinin (veya sürekli gevşeme ikilisinin) uygulanabilirlik durumu. Çözücünün, iddia için bir sertifika döndürmesi gerekmez (ör. çözücü, ilk uygulanabilir çözüm döndürmeden ilkel fizibilite iddiasında bulunabilir). Bu birleşik durum, bir çözücünün çözülmüş sorunun uygulanabilirliği ve sınırsızlığı ile ilgili iddialarının kapsamlı bir açıklamasını sunar. Örneğin:
- Asal ve çift problemler için uygun durumu, asal değerin uygulanabilir ve sınırlı olduğunu ve muhtemelen ideal bir çözüme sahip olduğunu (doğrusal olmayan kısıtlamalar olmayan problemler için garanti edilir) gösterir.
- "İlkel uygulanabilirlik" ve "çift uygulanabilirlik" durumları, asal problemin sınırsız olduğunu (yani, rastgele iyi çözümlerin olduğunu) gösterir.
Tek başına çift uygulanabilirlik durumunun (yani belirsiz bir ilkel durum söz konusu olduğunda) ilkel sorunun sınırlı olmadığı anlamına gelmediğini, çünkü her iki problemin de uygulanabilirliğinin mümkün olmadığını unutmayın. Ayrıca, ilk ve çift uygulanabilir durumu, optimum bir çözümün var olduğunu ima edebilir, ancak çözücünün böyle bir optimum çözümü gerçekten bulduğunu garanti etmez.
Alanlar | |
---|---|
primal_status |
Asal problemin durumu. |
dual_status |
İkili problem (veya sürekli gevşeme ikilisi) için durum. |
primal_or_dual_infeasible |
Doğru ise çözücü, asal veya ikili problemin uygulanabilir olmadığını iddia eder, ancak hangisinin (veya her ikisinin de uygulanabilir olmadığını) bilemez. Yalnızca primal_problem_status = dual_problem_status = kUndetermined olduğunda doğru olabilir. Ön işleme, sorun için optimum bir çözüm olmadığını belirlediğinde (ancak sorunun fizibilite, sınırlandırılmamışlık veya her ikisinden de kaynaklanıp kaynaklanmadığını belirleyemediğinde) genellikle bu ek bilgilere ihtiyaç vardır. |
QuadraticConstraintProto
Şu biçimdeki tek ikinci dereceden kısıtlama: lb <= sum{linear_terms} + sum{quadratic_terms} <= ub.
Bu kısıtlamaya dahil olan bir değişken silinirse sıfıra ayarlanmış gibi kabul edilir.
Alanlar | |
---|---|
linear_terms |
Karar değişkenlerinde doğrusal olan terimler. SparseDoubleVectorProto mesajlarıyla ilgili şartlara ek olarak: * linear_terms.id değerleri, VariablesProto.id öğelerinin öğeleridir. * Doğrusal_terms.değerlerin tamamı sonlu olmalı ve NaN olmamalıdır. Notlar: * Atlanan değişken kimliklerine karşılık gelen sıfır katsayısı bulunur. * Doğrusal_terms.değerler sıfır olabilir ancak bu yalnızca alan boşa harcanır. |
quadratic_terms |
Karar değişkenlerinde ikinci dereceden olan terimler. SparseDoubleMatrixProto mesajlarıyla ilgili şartlara ek olarak: * quadratic_terms.row_id öğelerinin her bir öğesi ve quadratic_terms.column_id öğelerinin her bir öğesi VariablesProto.id öğelerinin bir öğesi olmalıdır. * Matris büyük üçgen olmalıdır: Her i için ikinci dereceden_terimler.satır_kimlikleri[i] <= ikinci dereceden_terimler.sütun_kimlikleri[i]. Notlar: * Açıkça depolanmayan terimlerin katsayısı sıfırdır. * İkinci dereceden_terimler.cosayısal unsurlar sıfır olabilir ancak bu yalnızca yer israfına yol açar. |
lower_bound |
[-inf, inf) değerinde ve en fazla |
upper_bound |
(-inf, inf] aralığında değere sahip olmalı ve |
name |
Üst mesajların bu alanda benzersizlik gereksinimleri olabilir.Örneğin, bkz. ModelProto.quadratic_lenir ve QuadraticConstraintUpdatesProto.new_restrictionts. |
SecondOrderConeConstraintProto
Formun tek bir ikinci derece koni kısıtlaması:
||arguments_to_norm
||_2 <= upper_bound
,
Burada upper_bound
ve her arguments_to_norm
öğesi doğrusal ifadedir.
Bu kısıtlamaya dahil olan bir değişken silinirse sıfıra ayarlanmış gibi kabul edilir.
Alanlar | |
---|---|
upper_bound |
|
arguments_to_norm[] |
|
name |
Üst mesajların bu alanda benzersizlik gereksinimleri olabilir (ör. |
SolutionHintProto
Çözücü için önerilen bir başlangıç çözümü.
MIP çözücüler genellikle yalnızca asal bilgi (variable_values
) isterken LP çözücüler hem asal hem de çift bilgi (dual_values
) ister.
Birçok MIP çözücü: (1) tüm değişkenleri belirtmeyen kısmi çözümler veya (2) uygun olmayan çözümlerle çalışabilir. Bu durumlarda çözücüler, ipucunu tamamlamak/düzeltmek için genellikle bir alt MIP çözer.
İpucunun çözücü tarafından kullanılma şekli, çözücüye, problemin türüne ve kullanılan algoritmaya büyük ölçüde bağlıdır. İpucunuzun etkili olduğundan emin olmanın en güvenilir yolu, ipucuyla veya ipucu olmadan alttaki çözücü günlüklerini okumaktır.
Simplex tabanlı LP çözücüler, genellikle çözüm ipucu yerine başlangıç temelini tercih eder (ipucuyu aksi takdirde basit ve uygulanabilir bir çözüme dönüştürmek için çapraz geçiş yapmaları gerekir).
Alanlar | |
---|---|
variable_values |
Sorunun asal değişkenlerine muhtemelen kısmen değer atanması. Bu alt mesaj için çözücüden bağımsız gereksinimler şunlardır: * variable_values.ids, VariablesProto.id öğelerinin öğeleridir. * variable_values.values parametresinin tümü sonlu olmalıdır. |
dual_values |
Değerlerin, problemin doğrusal kısıtlamalarına (potansiyel olarak kısmi) atanması. Gereksinimler: * dual_values.id, LinearConstraintsProto.id öğelerinin öğeleridir. * dual_values.values'ın tümü sonlu olmalıdır. |
SolutionProto
Bir çözüme nelerin dahil edileceği, problemin ve çözücünün türüne bağlıdır. Şu anki ortak kalıplar: 1. MIP çözücüler yalnızca asal çözüm döndürür. 2. Simplex LP çözücüler genellikle bir temel ve bu temelle ilişkili primal ve çift çözümleri sunar. 3. Diğer sürekli çözücüler genellikle çözücüye bağlı bir biçimde birbirine bağlı olan bir asal ve çift çözüm çözümü sunar.
Gereksinimler: * En az bir alan ayarlanmalıdır. Çözüm alanı boş bırakılamaz.
Alanlar | |
---|---|
primal_solution |
|
dual_solution |
|
basis |
SolutionStatusProto
Çözücü tarafından talep edilen asal veya çift çözümün uygulanabilirliği.
Sıralamalar | |
---|---|
SOLUTION_STATUS_UNSPECIFIED |
Hiçbir durumu temsil etmeyen koruma değeri. |
SOLUTION_STATUS_UNDETERMINED |
Çözücü, bir uygulanabilirlik durumu iddia etmez. |
SOLUTION_STATUS_FEASIBLE |
Çözücü, çözümün uygulanabilir olduğunu iddia eder. |
SOLUTION_STATUS_INFEASIBLE |
Çözücü, çözümün uygulanabilir olmadığını iddia eder. |
SolveParametersProto
Tek bir çözümü kontrol edecek parametreler.
Tüm çözücülerde yaygın olarak kullanılan parametreleri (ör. zaman_sınırı) ve belirli bir çözücünün parametrelerini (ör. gscip) içerir. Hem ortak alanda hem de çözücüye özel alanda bir değer ayarlanırsa çözücüye özel ayar kullanılır.
İsteğe bağlı ve ayarlanmamış olan ortak parametreler veya değeri belirtilmemiş bir numaralandırma, çözücü varsayılanının kullanıldığını gösterir.
Kullanımda olanın dışındaki çözücülerin çözücüye özel parametreleri yoksayılır.
Modele bağlı olan parametreler (ör. kollara ayırma önceliği her değişken için ayarlanır) ModelSolveParametersProto'da iletilir.
Alanlar | |
---|---|
time_limit |
Bir çözücünün sorun için harcayacağı maksimum süre (ayarlanmamışsa sonsuzdur). Bu değer kesin bir sınır değildir. Çözüm süresi bu değeri biraz aşabilir. Bu parametre her zaman temel çözücüye iletilir. Çözücü varsayılanı kullanılmaz. |
enable_output |
Çözücü uygulama izlerinin yazdırılmasını etkinleştirir. Bu izlerin konumu çözücüye bağlıdır. SCIP ve Gurobi için bu, standart çıkış akışlarıdır. Glop ve CP-SAT için bu, LOG(INFO) olacaktır. Çözücü, ileti geri çağırma işlevini destekliyorsa ve kullanıcı bunun için bir geri arama kaydederse bu parametre değerinin yok sayılacağını ve hiçbir iz yazdırılmayacağını unutmayın. |
lp_algorithm |
Doğrusal program çözme algoritması. LP_ALGORITHM_UNSPECIFIED ise çözücü varsayılan algoritmasını kullanın. Doğrusal programlar olmayan ancak doğrusal programlamanın bir alt rutin olduğu problemler için çözücüler bu değeri kullanabilir. Örneğin, MIP çözücüler genellikle bunu yalnızca kök LP çözümü için kullanır (aksi takdirde ikili tekli çözüm kullanır). |
presolve |
Ana algoritmaya başlamadan önce problemi basitleştirmeye çalışın veya EMPHASIS_UNSPECIFIED ise çözücü varsayılan çalışma düzeyini belirleyin. |
cuts |
Daha güçlü bir LP gevşemesi için çaba gösterin (yalnızca MIP) veya EMPHASIS_UNSPECIFIED ise çözücü varsayılan çaba düzeyi. NOT: Kesme işlemlerini devre dışı bırakmak, geri çağırma işlevinin MIP_NODE üzerinde kesim ekleme imkanı olmasını önleyebilir. Bu davranış çözücüye özeldir. |
heuristics |
Tüm arama prosedüründe (yalnızca MIP) karşılaşılan çözümlerin ötesinde uygulanabilir çözümleri bulmaya çalışın veya EMPHASIS_UNSPECIFIED ise, çözücü varsayılan çaba düzeyini bulun. |
scaling |
Sayısal kararlılığı iyileştirmek için problemi yeniden ölçeklendirmeye çalışın ya da EMPHASIS_UNSPECIFIED ise problem çözücü varsayılan çaba düzeyini belirleyin. |
iteration_limit |
Temel algoritmanın iterasyonlarıyla ilgili sınır (ör. tek yönlü özetler). Spesifik davranış, kullanılan çözücüye ve algoritmaya bağlıdır ancak genellikle belirleyici bir çözüm sınırı da verebilir (daha fazla yapılandırma gerekebilir, ör. tek iş parçacığı). Genellikle LP, QP ve MIP çözücüler tarafından desteklenir ancak MIP çözücüler için ayrıca node_limit adresini de inceleyin. |
node_limit |
Numaralandırmalı aramada çözülen alt problemlerin sayısını sınırlama (ör. dal ve sınır). Birçok çözücüde, hesaplamayı belirleyici bir şekilde sınırlandırmak için kullanılabilir (daha fazla yapılandırma gerekebilir, ör. tek iş parçacığı). MIP çözücüler için genellikle iteration_limit parametresine de bakın. |
cutoff_limit |
Çözücü, en azından kesim değeri kadar iyi bir asal çözüm olmadığını kanıtlayabilirse erken durur. Erken aşamalarda çözücü, sonlandırma nedeni NO_SOLUTION_FOUND ile sınırlıdır ve CUTOFF değerini döndürür ve ekstra çözüm bilgisi vermesi gerekmez. Erken durdurma yoksa döndürülen değeri etkilemez. Hedefi tam olarak kesim noktasına eşit olan çözümlerin döndürülmesini istiyorsanız bir tolerans değeri kullanmanız önerilir. Daha fazla ayrıntı ve best_bound_limit ile ilgili bir karşılaştırma için kullanıcı rehberine bakın. |
objective_limit |
Çözücü, en azından bu kadar iyi bir çözüm bulur bulmaz erken durur. Fesih nedeni FEASIBLE olur ve OBJECTIVE'ı sınırlandırır. |
best_bound_limit |
Çözücü, en iyi sınırın en azından bunun iyi düzeyde olduğunu kanıtlarsa erken durur. Fesih nedeni FEASIBLE veya NO_SOLUTION_FOUND ile ve OBJECTIVE ile sınırlandırılır. Daha fazla ayrıntı ve kesim_limit ile ilgili bir karşılaştırma için kullanıcı rehberine bakın. |
solution_limit |
Çözücü, bu sayıda uygulanabilir çözüm bulduktan sonra erken durur. Sonlandırma nedeni FEASIBLE ve SOLUTION'ı sınırlandırır. Ayarlanırsa sıfırdan büyük olmalıdır. Çoğunlukla çözücünün bulunan ilk uygun çözüm üzerinde durmasını sağlamak için kullanılır. Döndürülen çözümlerin hiçbirinin nesnel değeriyle ilgili bir garanti olmadığını unutmayın. Çözücüler genellikle çözüm sınırından daha fazla çözüm döndürmezler ancak bu, MathOpt tarafından zorunlu kılınmaz. Ayrıca, b/214041169'a bakın. Şu anda Gurobi ve SCIP için ve yalnızca 1 değerine sahip CP-SAT için desteklenmektedir. |
threads |
Ayarlanırsa >= 1 olmalıdır. |
random_seed |
Temel çözücüdeki sözde rastgele sayı oluşturucunun başlangıç noktası. Tüm çözücüler, LP algoritmasında pertürbasyon, eşitleme kuralları ve sezgisel düzeltmeler gibi şeyleri seçmek için sözde rastgele sayılar kullanır. Bunu değiştirmek, çözücü davranışı üzerinde önemli bir etki yaratabilir. Tüm çözücülerin tohum kavramı vardır ancak geçerli değerler, gerçek çözücüye bağlıdır. - Gurobi: [0:GRB_MAXINT] (Gurobi 9.0 için 2x10^9). - GSCIP: [0:2147483647] (MAX_INT veya kint32max veya 2^31-1). - GLOP: [0:2147483647] (yukarıdakiyle aynı) Her durumda, çözücü şuna eşit bir değer alır: MAX(0, MIN(MAX_VALID_VALUE_FOR_SOLVER, rastgele_seed)). |
absolute_gap_tolerance |
MIP çözücüler için (esasen) mutlak optimumlik toleransı. Mutlak GAP, arasındaki farkın mutlak değeridir: * bulunan en uygun çözümün nesnel değeri, * arama tarafından üretilen çift sınır. Mutlak GAP en fazla absolute_gap_tolerance (ayarlandığında) olduğunda çözücü durabilir ve TERMINATION_REASON_OPTIMAL değerini döndürebilir. Ayarlanmışsa >= 0 olmalıdır. Ayrıca bkz. göreceli_gap_tolerans. |
relative_gap_tolerance |
MIP çözücüler için göreceli optimumlik toleransı (esasen). Göreli GAP, mutlak GAP'nin normalleştirilmiş bir sürümüdür (mutlak_gap_tolerans ile tanımlanır). Burada normalleştirme, çözücüye bağlıdır (ör. mutlak GAP'nin, bulunan en iyi çözümün nesnel değerine bölünmesiyle elde edilir). Göreceli GAP en fazla göreli_gap_tolerans değerine (ayarlandığında) olduğunda çözücü durabilir ve TERMINATION_REASON_OPTIMAL değerini döndürebilir. Ayarlanmışsa >= 0 olmalıdır. Ayrıca absolute_gap_tolerance konusuna da bakın. |
solution_pool_size |
Arama yaparken |
SolveResultProto
İlkel/çift çözüm/ışınların karmaşık olduğu durumlar için tam açıklama için sonlandırma_reasons.md sayfasını inceleyin.
Kesin bir sözleşme imzalanana kadar, fesih nedenine bel bağlamak yerine bir çözüm/tehlike olup olmadığını kontrol etmek en güvenlisidir.
Alanlar | |
---|---|
termination |
Çözücünün durma nedeni. |
solutions[] |
Gelecekteki çözücülerin uygulaması gereken çözümlerin sırası için genel sözleşme şu ölçüte göre sıralanır: 1. En iyi ilkel hedefe göre sıralanan ve ilk uygulanabilir çözüm içeren çözümler. 2. En iyi ikili hedefe (bilinmeyen ikili hedef en kötüsü) göre sıralanan ve ikili uygulanabilir çözüme sahip çözümler 3. Kalan tüm çözümler herhangi bir sırayla döndürülebilir. |
primal_rays[] |
Sınırsız temel iyileştirme veya eşdeğer olarak çift uygulanabilirlik sertifikasıyla ilgili talimatlar. Tipik olarak FesihREASONProtos UNBOUNDED ve DUAL_INFEASIBLE için sağlanır |
dual_rays[] |
Sınırsız ikili iyileştirme veya eşdeğer olarak asal fizibilite sertifikaları ile ilgili talimatlar. Tipik olarak FesihNedeniProto için sağlanır. |
solve_stats |
Çözme süreciyle ilgili istatistikler, ör. çalıştırma süresi, yinelemeler. |
SolveStatsProto
Alanlar | |
---|---|
solve_time |
matematik_opt tarafından ölçülen gerçek süre (yaklaşık olarak Solver::Solve()). Not: Buna, modeli oluştururken yapılan çalışmalar dahil değildir. |
problem_status |
Temel ve ikili problemlerin uygulanabilirlik durumları. |
simplex_iterations |
|
barrier_iterations |
|
first_order_iterations |
|
node_count |
|
SolverTypeProto
MathOpt tarafından desteklenen çözücüler.
Sıralamalar | |
---|---|
SOLVER_TYPE_UNSPECIFIED |
|
SOLVER_TYPE_GSCIP |
Kısıtlama Tam Sayı Programları (SCIP) çözücü (üçüncü taraf) çözme. LP, MIP ve konveks olmayan tam sayı problemlerini destekler. Ancak açılış sayfaları için ikili veri döndürülmez. LP'ler için GLOP'u tercih ediyorum. |
SOLVER_TYPE_GUROBI |
Gurobi çözücü (üçüncü taraf). LP, MIP ve konveks olmayan tam sayı problemlerini destekler. Genellikle en hızlı seçenektir, ancak özel lisansları vardır. |
SOLVER_TYPE_GLOP |
Google'ın Glop çözücü. LPal ve çift tekel yöntemlerle desteklenir. |
SOLVER_TYPE_CP_SAT |
Google'ın CP-SAT çözücüsü. Tüm değişkenlerin tam sayı olduğu ve sınırlı olduğu (ya da presolve sonrasında olacağı ima edilen) problemleri destekler. Sürekli değişkenlerle problemleri yeniden ölçeklendirmek ve ayrı ayrı ayırmak için deneysel destek. |
SOLVER_TYPE_PDLP |
Google'ın PDLP çözücü. LP ve dışbükey diyagonal ikinci dereceden hedefleri destekler. Tekli yerine birinci dereceden yöntemleri kullanır. Çok büyük sorunları çözebilir. |
SOLVER_TYPE_GLPK |
GNU Doğrusal Programlama Kiti (GLPK) (üçüncü taraf). MIP ve LP'yi destekler. İş parçacığı güvenliği: GLPK, bellek ayırmaları için iş parçacığı yerel depolamasını kullanır. Sonuç olarak, Solver örnekleri oluşturuldukları iş parçacığında imha edilmelidir. Aksi takdirde GLPK kilitlenir. Solver::Solve(), Solver'ı oluşturmak için kullanılandan farklı bir iş parçacığından çağrılıyormuş gibi görünüyor, ancak GLPK tarafından belgelenmemiş ve bundan kaçınılmalıdır. Çözümleyici ile bir LP çözerken, ancak optimum çözüm bulunduğunda çözüm (ve sınırsız ışıklar) ortaya çıkabilir. Aksi takdirde hiçbir şey döndürülmez. Ayrıntılar için glpk-5.0.tar.gz adresindeki glpk-5.0/doc/glpk.pdf #40 sayfasına bakın. |
SOLVER_TYPE_OSQP |
Operatör Bölme İkinci Düzey Program (OSQP) çözücü (üçüncü taraf). Doğrusal kısıtlamalar ve doğrusal ya da dışbükey ikinci dereceden hedeflere sahip sürekli problemleri destekler. Birinci dereceden yöntemini kullanır. |
SOLVER_TYPE_ECOS |
Yerleşik Konik Çözücü (ECOS) (üçüncü taraf). LP ve SOCP sorunlarını destekler. İç nokta yöntemleri (bariyer) kullanılır. |
SOLVER_TYPE_SCS |
Bölme Konik Çözücü (SCS) (üçüncü taraf). LP ve SOCP sorunlarını destekler. Birinci dereceden yöntemini kullanır. |
SOLVER_TYPE_HIGHS |
HiGHS Solver (üçüncü taraf). LP ve MIP sorunlarını destekler (dönüştürülen QP'ler uygulanmamıştır). |
SOLVER_TYPE_SANTORINI |
MathOpt'in referans olarak MIP çözücü uygulaması. Yavaş/prodüksiyon için önerilmez. Bir LP çözücü değil (ikili bilgi döndürülmedi). |
SosConstraintProto
Tek bir SOS1 veya SOS2 kısıtlamasını temsil eden veriler.
Bu kısıtlamaya dahil olan bir değişken silinirse sıfıra ayarlanmış gibi kabul edilir.
Alanlar | |
---|---|
expressions[] |
SOS kısıtlamasının uygulanacağı ifadeler: * SOS1: En fazla bir öğe sıfır olmayan bir değer alır. * SOS2: En fazla iki öğe sıfır olmayan bir değer alır ve tekrarlanan sıralamada bitişik olmalıdır. |
weights[] |
Boş veya ifadelere eşit uzunlukta. Boş bırakılırsa varsayılan ağırlıklar 1, 2, ... şeklindedir. Varsa, girişlerin benzersiz olması gerekir. |
name |
Üst mesajların bu alanda benzersizlik gereksinimleri olabilir; ör. ModelProto.sos1_ extra şartlar ve SosConstraintUpdatesProto.new_restrictionts sayfasına bakın. |
SparseBasisStatusVector
Taban durumları vektörünün seyrek temsili.
Alanlar | |
---|---|
ids[] |
Tüm öğeler farklı olacak şekilde (artan düzende) sıralanmalıdır. |
values[] |
Kimliklere eşit uzunlukta olmalıdır. |
SparseDoubleMatrixProto
Çiftler matrisinin seyrek temsili.
Matris; satır kimliği, sütun kimliği ve katsayının üç katı olarak depolanır. Bu üç vektör eşit uzunlukta olmalıdır. Tüm i öğeleri için detör (satır_kimlikleri[i], sütun_kimlikleri[i]) farklı olmalıdır. Girişler satır ana sırasına göre olmalıdır.
Alanlar | |
---|---|
row_ids[] |
|
column_ids[] |
|
coefficients[] |
NaN içeremez. |
SparseDoubleVectorProto
Çiftler vektörünün az sayıdaki gösterimi.
Alanlar | |
---|---|
ids[] |
Tüm öğeler farklı olacak şekilde (artan düzende) sıralanmalıdır. |
values[] |
Kimliklere eşit uzunlukta olmalıdır. NaN içeremez. |
SparseInt32VectorProto
Tam sayı vektörünün seyrek temsili.
Alanlar | |
---|---|
ids[] |
Tüm öğeler farklı olacak şekilde (artan düzende) sıralanmalıdır. |
values[] |
Kimliklere eşit uzunlukta olmalıdır. |
SparseVectorFilterProto
Bu ileti, SparseXxxxVector öğesinin belirli bölümlerinin sorgulanmasına/ayarlanmasına olanak tanır. Varsayılan davranış hiçbir şeyi filtrelememektir. Yaygın bir kullanım, çözümlerin yalnızca bölümlerinin (yalnızca sıfır olmayan değerler ve/veya yalnızca elle seçilmiş bir değişken değerler kümesi) sorgulamaktır.
Alanlar | |
---|---|
skip_zero_values |
SparseBoolVectorProto için "sıfır", |
filter_by_ids |
True (doğru) değerine ayarlandığında, yalnızca filter_id'lerde listelenen kimliklere karşılık gelen değerleri döndürür. |
filtered_ids[] |
filter_by_id (doğru) değerine ayarlandığında kullanılacak kimliklerin listesi. filter_by_id yanlış olduğunda boş bırakılmalıdır. NOT: Bu değer boşsa ve filter_by_ids parametresi doğruysa sonuçta bilgi istemediğinizi belirtmiş olursunuz. |
TerminationProto
Solve() çağrısının neden sonlandırıldığıyla ilgili tüm bilgiler.
Alanlar | |
---|---|
reason |
Değer TERMINATION_REASON_FEASIBLE veya TERMINATION_REASON_NO_SOLUTION_FOUND olduğunda |
limit |
Neden TERMINATION_REASON_FEASIBLE veya TERMINATION_REASON_NO_SOLUTION_FOUND olmadığı sürece LIMIT_UNSPECIFIED. Tüm çözücüler, sonlandırmaya neden olan sınırı her zaman belirleyemeyebilir. Nedeni belirlenemediğinde LIMIT_UNDETERMINED yöntemi kullanılır. |
detail |
Kapatma işlemiyle ilgili genellikle çözücüye özgü ek bilgiler. |
problem_status |
Temel ve ikili problemlerin uygulanabilirlik durumları. 18 Temmuz 2023'ten itibaren bu mesaj görünmüyor olabilir. Eksikse problem_status [sorun_durumu], SolveResultProto.solve_stats içinde bulunabilir. |
objective_bounds |
Optimum hedef değerine göre sınırlanır. 18 Temmuz 2023'ten itibaren bu mesaj görünmüyor olabilir. Eksikse, destination_bounds.primal_bound SolveResultProto.solve.stats.best_primal_bound ve hedef_bounds.dual_bound içinde bulunabilir SolveResultProto.solve.stats.best_dual_bound içinde bulunabilir |
TerminationReasonProto
Solve() çağrısının sonlandırılma nedeni.
Sıralamalar | |
---|---|
TERMINATION_REASON_UNSPECIFIED |
|
TERMINATION_REASON_OPTIMAL |
Kanıtlanabilir düzeyde optimum bir çözüm (sayısal toleranslara kadar) bulundu. |
TERMINATION_REASON_INFEASIBLE |
Asal problemin uygulanabilir bir çözümü yok. |
TERMINATION_REASON_UNBOUNDED |
Asal problem, uygulanabilirdir ve ilkel ışınla rastgele iyi çözümler bulunabilir. |
TERMINATION_REASON_INFEASIBLE_OR_UNBOUNDED |
Asal problem uygulanabilir değil ya da sınırsız. Sorunun durumuyla ilgili daha fazla ayrıntıyı sol_stats.problem_status adresinde bulabilirsiniz. Gurobi'nin sınırsız durumunun burada eşlenebileceğini unutmayın. |
TERMINATION_REASON_IMPRECISE |
Sorun, yukarıdaki ölçütlerden biri (Optimum, Uygun Değil, Sınırlandırılmamış veya InfeasibleOrUnbounded) denenerek çözüldü ancak bir veya daha fazla tolerans karşılanmadı. Bazı ilkel/çift çözümler/ışınlar mevcuttur ancak bunlar ya bir miktar uygulanabilirlik söz konusu ya da (sorun neredeyse optimum ise) en iyi çözüm hedefi ile en iyi hedef sınırı arasında bir boşluk olabilir. Kullanıcılar asal/çift çözüm/ışın ve çözüm istatistiklerini sorgulamaya devam edebilir, ancak sayısal hatalarla başa çıkmaktan kendileri sorumludur. |
TERMINATION_REASON_FEASIBLE |
Optimize Edici bir tür sınıra ulaştı ve temel uygulanabilir bir çözüm döndürüldü. Ulaşılan sınır türünün ayrıntılı açıklaması için SolveResultProto.limit_detail konusuna bakın. |
TERMINATION_REASON_NO_SOLUTION_FOUND |
Optimize Edici bir tür sınıra ulaşmış ve ilk uygun bir çözüm bulamamıştır. Ulaşılan sınır türünün ayrıntılı açıklaması için SolveResultProto.limit_detail konusuna bakın. |
TERMINATION_REASON_NUMERICAL_ERROR |
Algoritma, düzeltilemeyen sayısal hatayla karşılaştığı için çalışmayı durdurdu. Çözüm bilgisi yok. |
TERMINATION_REASON_OTHER_ERROR |
Yukarıda tanımlanan durumlardan biri kapsamında olmayan bir hata nedeniyle algoritma durduruldu. Çözüm bilgisi yok. |
VariablesProto
Aşağıda kullanıldığı gibi, "#variables" = size(VariablesProto.ids) değerini tanımlıyoruz.
Alanlar | |
---|---|
ids[] |
Negatif olmamalı ve kesinlikle artmalıdır. max(int64) değeri kullanılamıyor. |
lower_bounds[] |
Uzunluk, #variables eşit olmalıdır. Değerler [-inf, inf). |
upper_bounds[] |
Uzunluk #variables eşit olmalıdır. Değerler (-inf, inf]). |
integers[] |
Uzunluk, #variables eşit olmalıdır. Değer, sürekli değişkenler için yanlış, tam sayı değişkenleri için ise doğrudur. |
names[] |
Ayarlanmazsa tümünün boş dizeler olduğu varsayılır. Aksi takdirde, uzunluğu #variables eşit olmalıdır. Boş olmayan adların tümü farklı olmalıdır. |