intlinprog
Programación lineal de enteros mixtos (MILP)
Sintaxis
Descripción
Solver de programación lineal de enteros mixta.
Encuentra el mínimo de un problema especificado por
f, x, intcon, b, beq, lb y ub son vectores, y A y Aeq son matrices.
Puede especificar f, intcon, lb y ub como vectores o arreglos. Consulte Argumentos de matriz.
Nota
intlinprog se aplica únicamente al enfoque basado en solvers. Para ver una exposición sobre los dos enfoques de optimización, consulte En primer lugar, elija el enfoque basado en problemas o el enfoque basado en solvers.
utiliza una estructura x = intlinprog(problem)problem para encapsular todas las entradas de solver. Puede importar una estructura problem de un archivo MPS utilizando mpsread. También puede crear una estructura problem a partir de un objeto OptimizationProblem utilizando prob2struct.
Ejemplos
Argumentos de entrada
Argumentos de salida
Limitaciones
Con frecuencia, algunos componentes que supuestamente son valores enteros de la solución
x(intCon)no son exactamente enteros.intlinprogconsidera como enteros todos los valores de solución dentro de laIntegerTolerancede un entero.Para redondear todos los supuestos enteros para que sean enteros exactos, utilice la función
round.x(intcon) = round(x(intcon));
Precaución
Las soluciones de redondeo pueden provocar que la solución se convierta en no factible. Compruebe la factibilidad después del redondeo:
max(A*x - b) % See if entries are not too positive, so have small infeasibility max(abs(Aeq*x - beq)) % See if entries are near enough to zero max(x - ub) % Positive entries are violated bounds max(lb - x) % Positive entries are violated bounds
intlinprogno exige que los componentes de la solución tengan valores enteros cuando sus valores absolutos sobrepasan2.1e9. Cuando la solución tiene esos componentes,intlinprogle advierte. Si recibe esta advertencia, compruebe la solución para ver si los componentes que supuestamente tienen valores enteros de la solución están cerca de los enteros.intlinprogno permite que los componentes del problema, como los coeficientes def,Aoub, sobrepasen1e25en valor absoluto. Si intenta ejecutarintlinprogcon un problema de ese tipo,intlinproggenera un error.
Sugerencias
Para especificar valores binarios, establezca que las variables sean enteros en
intcony proporcióneles límites inferiores de0y límites superiores de1.Ahorre memoria especificando las matrices de restricciones lineales dispersas
AyAeq. Sin embargo, no puede utilizar matrices dispersas parabybeq.Si incluye un argumento
x0,intlinprogutiliza este valor en la heurística'rins'y en la heurística de inmersión guiada hasta que encuentra un punto factible entero mejor. Así, cuando proporcionax0, puede obtener buenos resultados estableciendo la opción'Heuristics'en'rins-diving'u otro ajuste que utiliza'rins'.Para proporcionar índices lógicos para componentes enteros, es decir, un vector binario en el que
1indica un entero, convierta al formatointconutilizandofind. Por ejemplo:logicalindices = [1,0,0,1,1,0,0]; intcon = find(logicalindices)
intcon = 1 4 5intlinprogreemplaza abintprog. Para actualizar códigobintprogantiguo para utilizarintlinprog, realice los siguientes cambios:Establezca
intconen1:numVars, dondenumVarses el número de variables del problema.Establezca
lbenzeros(numVars,1).Establezca
ubenones(numVars,1).Actualice todas las opciones relevantes. Utilice
optimoptionspara crear opciones paraintlinprog.Cambie la llamada a
bintprogcomo sigue:[x,fval,exitflag,output] = bintprog(f,A,b,Aeq,Beq,x0,options) % Change your call to: [x,fval,exitflag,output] = intlinprog(f,intcon,A,b,Aeq,Beq,lb,ub,x0,options)
Funcionalidad alternativa
App
La tarea Optimize de Live Editor proporciona una interfaz visual para intlinprog.
Historial de versiones
Introducido en R2014aConsulte también
linprog | mpsread | optimoptions | prob2struct | Optimize
Temas
- Aspectos básicos de la programación lineal de enteros mixtos: Basado en solvers
- Factory, Warehouse, Sales Allocation Model: Solver-Based
- Problema del viajante: Basado en solvers
- Solve Sudoku Puzzles via Integer Programming: Solver-Based
- Mixed-Integer Quadratic Programming Portfolio Optimization: Solver-Based
- Optimal Dispatch of Power Generators: Solver-Based
- Algoritmos de programación lineal de enteros mixtos (MILP)
- Tuning Integer Linear Programming
- Configuración de problema de optimización basada en solvers