package optimizacion;

import operaciones.Matriz;

/**
 * <p>Title: Ejemplo de aplicacion del metodo de conjunto activo</p>
 * <p>Description: Minimiza la funcion objetivo</p>
 * <p>Copyright: Copyright (c) 2005</p>
 * <p>Company: UMSNH</p>
 * @author Dr. Felix Calderon Solorio
 * @version 1.0
 */

public class ejemplo_04 extends QP{
    public static void main(String[] args) {

        ejemplo_04 aplica = new ejemplo_04();
        double X[] = {1,1};

        aplica.activeSetSolution(new Matriz(X), new Matriz(Restricciones()), 0, 5);
    }

    /**
     * Calcula la matriz Hessiana de la funci�n objetivo en el punto X
     * @param X Matriz
     * @return Matriz
     */

    public Matriz Hessiano(Matriz X)
    {
        double H[][] = {{2.0, 0.0}, {0.0, 2.0}};
        return (new Matriz(H));
    }

    /**
     * Calcula el vector gradiente en el punto X
     * @param X Matriz
     * @return Matriz
     */

    public Matriz Gradiente(Matriz X)
    {
        double g[] = new double[2];

        g[0] = 2.0*(X.obten(0,0)-1.0);
        g[1] = 2.0*(X.obten(1,0)-2.5);

        return (new Matriz(g));
    }

    /**
     * Restricciones de la funci�n
     * @return double[][]
     */

    static public double [][] Restricciones()
    {
        double A[][] = {{1, -2, -2},{-1, -2, -6}, {-1, 2, -2}, {1, 0, 0}, {0, 1, 0}};
        return A;
    }
}
