2016-09-30 1 views
0

J'ai implémenté mon modèle mathématique en utilisant Ilog Cplex avec C++. La plupart de mes variables de décision ont des valeurs fractionnaires dans les solutions optimales. Certains d'entre eux sont très petits et cplex les sort en 0. Existe-t-il un moyen d'augmenter la précision pour que je puisse encore voir les valeurs de telles variables?Précision dans les calculs C++ Cplex

Aussi, quand j'utilise cplex.getBestObjValue(), il me donne "-Inf". (Ceci est un problème de maximisation.)

Répondre

0

vous pouvez essayer d'utiliser le réglage IloCplex :: :: Param :: L'accent numérique

Insiste précision des problèmes numériquement instables ou difficiles. Ce paramètre vous permet de spécifier à CPLEX qu'il doit accentuer la précision dans les problèmes numériquement difficiles ou instables, avec des compromis de performance conséquents dans le temps et la mémoire.

À propos de votre deuxième question, votre modèle est-il un LP?

concernant

+0

Merci pour votre réponse. Lorsque j'utilise le paramètre IloCplex :: Param :: Emphasis :: Numerical, comment puis-je spécifier la précision? Pouvez-vous me donner un exemple d'utilisation de ce paramètre? Et oui, mon modèle est un LP. – user2147241

+0

la valeur par défaut est 0: ne pas mettre l'accent sur la précision numérique; Mais 1 signifie exercer une extrême prudence dans le calcul –

1

Avoir des valeurs pour les variables entières qui sont proches de (mais pas exactement) des valeurs entières est tout à fait normal. CPLEX a une tolérance d'intégralité de sorte que ces valeurs sont acceptées comme suffisamment proches des valeurs entières correctes. Utilisez simplement les fonctions de sortie C++ standard pour générer ces valeurs avec la précision que vous voulez.

Généralement ce n'est pas un problème, mais vous pouvez définir la tolérance d'intégralité à une plus petite valeur si nécessaire. Je arrondis normalement ces valeurs à la valeur entière la plus proche et l'utilise comme solution. Vous pouvez également essayer de re-résoudre votre modèle avec ces variables de décision fixées à leurs valeurs entières arrondies pour être sûr que la solution est réellement valide. Si vous n'êtes pas sûr que cela soit suffisant, essayez aussi la suggestion d'Alex pour l'accentuation de la précision numérique.