Beruflich Dokumente
Kultur Dokumente
C++
Lo Bsico
Variables
Operadores Lgicos Estructuras de Control
Variables
Int x; x=4; cout << El valor de x : << x << endl;
float numero; cin >> numero; //toma un nmero del teclado y lo guarda en nmero
bool cerouno=0;
Operadores Lgicos
a == b
a != b a >= b ; a > b
a <= b ; a < b
!a ( NOT ) TRUE && FALSE ( AND )
TRUE || FALSE ( OR )
Estructuras de Control
IF & ELSE
Int a=4; Int b=10; if ( a > b ) { cout << " a es mayor a b " << endl; } else { cout << " a no es mayor a b " << endl; }
FOR
for (int i=0; i<10;++i) { cout << i << endl; }
WHILE
float a; bool ok=0; while (!ok) { cout << "Escribe un numero entre 0 y 20 : "; cin >> a; ok = ((a>=0) && (a<=20)); if (!ok) cout << "ERROR - "; } cout << "listo!" ;
C++/CPLEX
Estructura Bsica
Environment
Permite manejar todas las entradas y salidas, asignacin de memorias, y otros servicios para todos los objetos Model Qu es el modelo?
Tipos de Datos
Parmetros
IloNum;
IloInt;
IloBool; IloNumArray;
IloFloatArray;
IloIntArray; IloBoolArray;
Tipos de Variables
Variables
IloNumVar
IloFloatVar
IloIntVar IloBoolVar
Examples
IloNumVar x(env, lb, ub, type, name); IloNumVarArray xArray(env, size, lb, ub, type);
Tipos de Variables
IloNumVar x(env, 0, IloInfinity, ILOFLOAT); IloIntVar y(env, 10, 25,"varY"); IloBoolVar z(env); IloFloatVarArray A1(env, 20, 0, 9999); IloNumVarArray A2(env, 10, 1, x, ILOFLOAT); IloNumVarArray A3(env, 3); A3[0] = x;
Productos Escalares ( ) IloNumVarArray x(env,sizeX,0,IloInfinity); IloNumArray c(env,sizeX); for (IloInt i=0; i<sizeX; i++) c[i]=i; IloExpr sum = IloScalProd(c,x);
model.add(IloMinimize(env,IloScalProd(c,x)));
Optimizando
IloCplex cplex ( env ); cplex.setOut(env.getNullStream()); cplex.extract(model); cplex.exportModel ( salida.lp" ); env.out() << "Variables binarias: " << cplex.getNbinVars() << endl; env.out() << "Variables Enteras: " << cplex.getNintVars() << endl; env.out() << "Filas - Restricciones: " << cplex.getNrows() << endl; env.out() << "Columnas - Variables: " << cplex.getNcols() << endl; if ( !cplex.solve() ) { env.error() << "No se pudo resolver :-(" << endl; throw ( -1 ); } env.out() << "Es ptimo ? = " << cplex.getStatus() << endl; env.out() << "Valor F.O = " << cplex.getObjValue() << endl; env.out() << Tiempo de Resolucin = " << env.getTime() << endl; } catch (IloException& e) { cerr << "Error Cplex: " << e << endl; } catch (...) { cerr << "Error Cpp" << endl; } env.end(); system(pause);
Ms
Obtener Valores de X
for (int i=0;i<x.getSize();++i) { cout << cplex.getValue(x[i]) << endl;} IloNumArray temp(env, x.getSize()); cplex.getValues( temp, x); cout << "x = "; cout << temp << endl;
Como crear una matriz
IloArray <IloNumArray> matriz(env, filas); for (int i=0; i<filas; ++i) { matriz[i] = IloNumArray(env, columnas); }
IloArray <IloIntVarArray> matriz(env, filas); for (int i=0; i<filas; ++i) { matriz[i] = IloIntVarArray(env, columnas); }
CONFIGURACIN DE ARRANQUE
Configuracin de Arranque
1. Crear un nuevo Proyecto (Aplicacin de Consola Win32)
Configuracin de Arranque
1.1. Marcar como proyecto vaco en opciones adicionales
Configuracin de Arranque
2. En proyecto agregar nuevo elemento (Archivo C++ (.cpp))
Configuracin de Arranque
3. Ir a propiedades de proyecto y elegir en configuracin Todas las config.
Configuracin de Arranque
4. Ir a propiedades de configuracin/(C/C++)/General/DirectoriosDeInclusinAdicionales y agregar las siguientes rutas:
Configuracin de Arranque
5. Ir a (C/C++)/Preprocesador/DefinicionesdePreProcesador y agregar
IL_STD
Configuracin de Arranque
6. Ir a (C/C++)/GeneracindeCodigo/BibliotecaEnTiempoDeEjecucin y
seleccionar Multiproceso (/MT)
Configuracin de Arranque
7. Ir a Vinculador/Entrada/Dependenciasadicionales y agregar las siguientes
rutas:
Configuracin de Arranque
8. Compilar en modo release 9. Ejecturar sin Depurar
EJEMPLO
Problema
Una empresa manufacturera ha discontinuado la produccin de cierta lnea de productos no provechosa. Esto cre un exceso considerable en la capacidad de produccin. El gerente est considerando dedicar esta capacidad en exceso a uno o ms de tres productos; llammoslo productos 1, 2 y 3. La capacidad disponible de las mquinas, que podra limitar la produccin y los requerimientos por unidad de producto, se resume como sigue:
Fresadora Torno Rectificadora Tipo Maquina Tiempo Disponible (HM/Semana) 500 350 150
Producto 3 5 0 2
Problema
El departamento de ventas indica que el potencial de ventas para los productos 1 y 2 es mayor que la tasa de produccin mxima y que el potencial de ventas para el producto 3 es de 20 unidades por semana. La utilidad unitaria sera de $30, $12 y $ 15 respectivamente, para los productos 1, 2 y 3. Modelo Optimizacin Lineal
Max Ci X i
i
s.t
a
j
ij
X j bi i N
X 3 20 X i 0 i N
Solucin