Sto provando a risolvere i problemi di programmazione intera. Ho provato sia per uso SCIP e LPSolveRisoluzione di un programma lineare intero: perché i risolutori che sostengono un'istanza risolvibile non sono fattibili?
Per esempio, dati i valori finali di A e B, voglio risolvere per vala nel seguente codice C#:
Int32 a = 0, b = 0;
a = a*-6 + b + 0x74FA - valA;
b = b/3 + a + 0x81BE - valA;
a = a*-6 + b + 0x74FA - valA;
b = b/3 + a + 0x81BE - valA;
// a == -86561, b == -32299
che ho implementato come questo intero programma in formato lp (divisione troncando provoca alcune complicazioni):
min: ;
+valA >= 0;
+valA < 92;
remAA_sign >= 0;
remAA_sign <= 1;
remAA <= 2;
remAA >= -2;
remAA +2 remAA_sign >= 0;
remAA +2 remAA_sign <= 2;
remAA +4294967296 remAA_range >= -2147483648;
remAA +4294967296 remAA_range <= 2147483647;
remAA +4294967296 remAA_range +2147483648 remAA_sign >= 0;
remAA +4294967296 remAA_range +2147483648 remAA_sign <= 2147483648;
-1 remAA +4294967296 remAA_range +3 remAA_mul3 = 0;
remAB_sign >= 0;
remAB_sign <= 1;
remAB <= 2;
remAB >= -2;
remAB +2 remAB_sign >= 0;
remAB +2 remAB_sign <= 2;
remAB +4294967296 remAB_range >= -2147483648;
remAB +4294967296 remAB_range <= 2147483647;
remAB +4294967296 remAB_range +2147483648 remAB_sign >= 0;
remAB +4294967296 remAB_range +2147483648 remAB_sign <= 2147483648;
+1431655765 remAA +1 offA -2 valA +1 offB -1 remAB +4294967296 remAB_range +3 remAB_mul3 = 0;
a = -86561;
b = -32299;
offA = 29946;
offB = 33214;
-4 offA +3 valA +1431655765 remAA +1 offB +4294967296 Fa - a = 0;
+477218588 remAA -1431655769 offA -1431655764 valA -1431655763 offB +1431655765 remAB +4294967296 Fb - b = 0;
int valA;
int remAA;
int remAA_range;
int remAA_sign;
int remAA_mul3;
int remAB;
int remAB_range;
int remAB_sign;
int remAB_mul3;
int Fa;
int Fb;
int offA;
int offB;
int a;
int b;
E poi cercato di risolverlo:
The model is INFEASIBLE
Tuttavia, so che esiste una soluzione fattibile perché conosco un compito variabile che funziona. Aggiungendo le seguenti condizioni provoca una soluzione da trovare:
a = -86561;
b = -32299;
offA = 29946;
offB = 33214;
valA = 3;
remAA = 0;
remAA_range = 0;
remAA_sign = 0;
remAA_mul3 = 0;
remAB = 1;
remAB_range = 0;
remAB_sign = 0;
remAB_mul3 = -21051;
Fa = 0;
Fb = 21054;
Due diversi risolutori hanno sostenuto questo problema fattibile è fattibile. Sto violando alcune condizioni non scritte? Cosa sta succedendo? Ci sono dei risolutori che risolvono effettivamente il problema?
Se si crea il modello, esportare un file .lp e inviarlo a me lo eseguirò tramite CPLEX. Ha buone informazioni di conflitto (non fattibilità). Il mio indirizzo email è il mio nome utente su gmail dot com. Immagino che potresti anche metterlo su Pastebin o qualcosa di simile. – raoulcousins
@raoul Ho inviato per email i file lp-cplex che ho usato con scip. –
L'ho risolto con CPLEX ed era fattibile. La soluzione ottimale aveva un valore di funzione obiettivo pari a zero. Era lo stesso del rilassamento LP, che aveva una matrice di base con numero di condizione (kappa) di 3,4. Con i vincoli extra, la funzione obiettivo era la stessa; il numero di condizione di 4.6.Non sono sicuro di ciò che CPLEX sta facendo sotto il cofano che è diverso da SCIP per questo specifico problema. Potresti risolvere il tuo modello con neos-server.org e usare CPLEX? – raoulcousins