Domanda

Sto usando lpsolve IDE per risolvere un problema LP.Devo testare il modello contro circa 10 o 20 set di parametri diversi e confrontarli.

C'è un modo per me per mantenere il modello generale, ma specificare le costanti come desidero?Ad esempio, se ho il seguente vincolo:

A >= [c]*B

Voglio testare come si comporta il modello quando [c] = 10, [c] = 20 e così via.Per ora, sto semplicemente preparando diversi file .lp tramite ricerca e sostituzione, ma:

a) Non sembra troppo efficiente

B) Ad un certo punto, ho bisogno di considerare il vincolo del modulo A >= B/[c] // =(1/[c]*B).Sembra, tuttavia, che LPSOLVE non riesce a ricogettare l'operatore di divisione.Specificare 1/[c] direttamente ogni volta l'unica opzione?

È stato utile?

Soluzione

Non è completamente chiaro quale formato usi con lp_solve. Con il formato Clex LP, ad esempio, non è possibile utilizzare il modo migliore: non è possibile utilizzare la divisione per il coefficiente (o anche la moltiplicazione per quella materia) e non vi è alcuna funzione "includere" un altro file o introdurre un nome simbolico per un parametro. È un linguaggio molto semplice, e non adatto a qualsiasi compito complesso.

Ci sono diverse soluzioni per il tuo problema; Dipende se sei interessato a qualcosa di veloce da implementare, o "pulire", riutilizzabile e con un breve periodo di runtime (ovviamente questo è un compromesso).

    .
  1. Hai la possibilità di generare i tuoi file LP da un'altra lingua, ad es. Python, Bash, ecc. Questa è una soluzione "veloce e sporca": molto lenta in fase di esecuzione, ma probabilmente più veloce da implementare.

  2. Come ogni solver LP lo so, LP_Solve viene fornito con diverse interfacce di modellazione: puoi usare il GNU MP Formato invece di quello corrente. Riconosce la moltiplicazione, le divisioni, i condizionali, ecc. (Tutto ciò che stai cercando, vedi la sezione 3.1 'Espressioni numeriche')

  3. Infine, è possibile utilizzare direttamente l'interfaccia lp_solve da un altro linguaggio di programmazione (ad es. c) che sarà l'opzione più flessibile, ma potrebbe richiedere un po 'più di lavoro.

    .

    Vedi il LP_Solve Documentazione per ulteriori dettagli sui formati di input supportati e il riferimento API. .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top