Est-ce que qqn sait si c'est possible de forcer linprog à retourner des solutions entières seulement? C'est un problème de minimisation standard, mais j'ai besoin de solutions optimales entières et pas décimales.
Merci! :-)
Version imprimable
Est-ce que qqn sait si c'est possible de forcer linprog à retourner des solutions entières seulement? C'est un problème de minimisation standard, mais j'ai besoin de solutions optimales entières et pas décimales.
Merci! :-)
Réponse rapide... peut être pas la meilleure : n'est-il pas possible d'arrondir les résultats issus de LINPROG ?
C'est une possibilité mais pas la meilleure, car je veux que la somme minimale et optimale reste la même, et en arrondissant, la réponse n'est plus optimale: par exemple --> minimiser x,y, tels que x+y = 15. Linopt me retournera x = y = 7.5 et arrondir me donnera x = y = 8, qui n'est plus optimale, car je peux avoir 7+8 = 15 par exemple. et c'est justement ça que j'aimerais que linopt me retourne.
Bonjour!
J'ai exactement le même problème, est-ce que vous avez réussi a trouvez une réponse? Moi j'ai chercher sur plusieurs sites sans rien trouver :(
Merci!
LINPROG ne peut pas résoudre ce problème.
Essayez avec cette contribution du File EXchange : mixed-integer LP
En fait, ça fait qq tps que je suis penché sur ce problème, j'ai essayé bcp de variantes. Je me demandais si y'avait pas moyen de modifier directement le(s) fichiers linprog.m et les autres y relatifs.
Mais sinon, pour katlab, une solution , c'est de télécharger TOMLAB et d'utiliser par exemple cplex je crois (pdco donne la même solution que linprog). En fait, la solution au problème "retourner que des valeurs entières et optimales" dépend du solver utilisé: linprog utilise je crois une variante de la méthode du simplexe. C'est pour ça qu'on obtient pas des valeures entières. Pour avoir un ensemble de solution entier, il faut utiliser une autre méthode. TOMLAB (ou autres) propose pleins de solvers, et ceplex retourne une solution optimale entière. Donc pour katlab , ça peut jouer. Mais , moi, je suis encore plus pointilleux, il me faut des solutions entières, mais le problème que je résouds a une infinité de solutions entières (et non entières). CPLEX me retourne une réponse possible, mais c'est pas celle que je veux, car en gros, par exemple pour: x + y + z = 10. linprog retourne: x = y = z = 10/3 et CPLEX par ex. x = 1, y =2, z = 7. Moi j'aimerais un mélange des deux, c'est à dire un ensemble de réponses entières et EQUILIBREES, c'est à dire que x, y et z doivent etre environ les memes, par ex: x=4, y=z = 3. Or CPLEX ne me retourne jamais cette solution. Donc la meilleure solution pour moi serait d utiliser linprog, mais de le forcer de retrourner des entiers.... (linprog retourne tjrs une solution equilibree). Quel casse-tete! :-)
Oui, en fait, t'as raison. Pour avoir des solutions entières, il suffit de résoudre un problème du type Mixed Integer or Pure LP. Donc, le lien marche, et CPLEX résouds justement entre autre (il est rapide et puissant) ce genre de problèmes. Mais pas le mien :-( , au seulement à moitié.
Merci pour ces éclaircissements,
je voudrais cependant savoir, comme solution alternative, si c'est possible d'avoir une solution binomiale en utilisant la commande linprog? Je trouve ça étrange qu'un logiciel comme excel donne cette option alors qu'un logiciel aussi puissant que matlab néglige cet aspect.. merci!