public static void Main() { const double infinity = 0; mosek.boundkey[] bkc = new mosek.boundkey[] { mosek.boundkey.up, mosek.boundkey.up, mosek.boundkey.up, mosek.boundkey.fx, mosek.boundkey.fx, mosek.boundkey.fx, mosek.boundkey.fx }; mosek.boundkey[] bkx = new mosek.boundkey[] { mosek.boundkey.lo, mosek.boundkey.lo, mosek.boundkey.lo, mosek.boundkey.lo, mosek.boundkey.lo, mosek.boundkey.lo, mosek.boundkey.lo }; int[] ptrb = new int[] { 0, 2, 4, 6, 8, 10, 12 }; int[] ptre = new int[] { 2, 4, 6, 8, 10, 12, 14 }; int[] sub = new int[] { 0, 3, 0, 4, 1, 5, 1, 6, 2, 3, 2, 5, 2, 6 }; double[] blc = new double[] { -infinity, -infinity, -infinity, 800, 100, 500, 500 }; double[] buc = new double[] { 400, 1200, 1000, 800, 100, 500, 500 }; double[] c = new double[] { 1.0, 2.0, 5.0, 2.0, 1.0, 2.0, 1.0 }; double[] blx = new double[] { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; double[] bux = new double[] { infinity, infinity, infinity, infinity, infinity, infinity, infinity }; double[] val = new double[] { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 }; int numcon = 7; /* Number of constraints. */ int numvar = 7; /* Number of variables. */ try { using (mosek.Env env = new mosek.Env()) { using (mosek.Task task = new mosek.Task(env)) { // Directs the log task stream to the user specified // method task_msg_obj.streamCB task.set_Stream(mosek.streamtype.log, new msgclass("[task]")); task.inputdata(numcon, numvar, c, 0.0, ptrb, ptre, sub, val, bkc, blc, buc, bkx, blx, bux); /* A maximization problem */ task.putobjsense(mosek.objsense.minimize); try { task.optimize(); } catch (mosek.Warning w) { Console.WriteLine("Mosek warning:"); Console.WriteLine(w.Code); Console.WriteLine(w); } /* Analyze upper bound on c1 and the equality constraint on c4 */ int[] subi = new int [] { 0, 3 }; mosek.mark[] marki = new mosek.mark[] { mosek.mark.up, mosek.mark.up }; /* Analyze lower bound on the variables x12 and x31 */ int[] subj = new int [] { 1, 4 }; mosek.mark[] markj = new mosek.mark[] { mosek.mark.lo, mosek.mark.lo }; double[] leftpricei = new double[2]; double[] rightpricei = new double[2]; double[] leftrangei = new double[2]; double[] rightrangei = new double[2]; double[] leftpricej = new double[2]; double[] rightpricej = new double[2]; double[] leftrangej = new double[2]; double[] rightrangej = new double[2]; task.primalsensitivity(subi, marki, subj, markj, leftpricei, rightpricei, leftrangei, rightrangei, leftpricej, rightpricej, leftrangej, rightrangej); Console.Write("Results from sensitivity analysis on bounds:\n"); Console.Write("For constraints:\n"); for (int i = 0; i < 2; ++i) { Console.Write( "leftprice = {0}, rightprice = {1},leftrange = {2}, rightrange ={3}\n", leftpricei[i], rightpricei[i], leftrangei[i], rightrangei[i]); } Console.Write("For variables:\n"); for (int i = 0; i < 2; ++i) { Console.Write( "leftprice = {0}, rightprice = {1},leftrange = {2}, rightrange ={3}\n", leftpricej[i], rightpricej[i], leftrangej[i], rightrangej[i]); } double[] leftprice = new double[2]; double[] rightprice = new double[2]; double[] leftrange = new double[2]; double[] rightrange = new double[2]; int[] subc = new int[] { 2, 5 }; task.dualsensitivity(subc, leftprice, rightprice, leftrange, rightrange ); Console.Write("Results from sensitivity analysis on objective coefficients:"); for (int i = 0; i < 2; ++i) { Console.Write( "leftprice = {0}, rightprice = {1},leftrange = {2}, rightrange = {3}\n", leftprice[i], rightprice[i], leftrange[i], rightrange[i]); } } } } catch (mosek.Exception e) { Console.WriteLine(e.Code); Console.WriteLine(e); throw; } }
public static void Main () { const double infinity = 0; mosek.boundkey[] bkc = new mosek.boundkey[]{ mosek.boundkey.up,mosek.boundkey.up, mosek.boundkey.up,mosek.boundkey.fx, mosek.boundkey.fx,mosek.boundkey.fx, mosek.boundkey.fx }; mosek.boundkey[] bkx = new mosek.boundkey[]{ mosek.boundkey.lo,mosek.boundkey.lo, mosek.boundkey.lo,mosek.boundkey.lo, mosek.boundkey.lo,mosek.boundkey.lo, mosek.boundkey.lo}; int[] ptrb= new int[]{0,2,4,6,8,10,12}; int[] ptre= new int[]{2,4,6,8,10,12,14}; int[] sub = new int[]{0,3,0,4,1,5,1,6,2,3,2,5,2,6}; double[] blc = new double[]{ -infinity,-infinity, -infinity,800,100,500,500}; double[] buc = new double[]{400,1200,1000,800,100,500,500}; double[] c = new double[]{1.0,2.0,5.0,2.0,1.0,2.0,1.0}; double[] blx = new double[]{0.0,0.0,0.0,0.0,0.0,0.0,0.0}; double[] bux = new double[]{infinity, infinity, infinity, infinity, infinity, infinity, infinity}; double[] val = new double[]{1.0,1.0,1.0,1.0,1.0,1.0,1.0, 1.0,1.0,1.0,1.0,1.0,1.0,1.0}; int numcon = 7; /* Number of constraints. */ int numvar = 7; /* Number of variables. */ try { using (mosek.Env env = new mosek.Env()) { using (mosek.Task task = new mosek.Task(env)) { // Directs the log task stream to the user specified // method task_msg_obj.streamCB task.set_Stream(mosek.streamtype.log, new msgclass ("[task]")); task.inputdata(numcon,numvar, c, 0.0, ptrb, ptre, sub, val, bkc, blc, buc, bkx, blx, bux); /* A maximization problem */ task.putobjsense(mosek.objsense.minimize); try { task.optimize(); } catch (mosek.Warning w) { Console.WriteLine("Mosek warning:"); Console.WriteLine (w.Code); Console.WriteLine (w); } /* Analyze upper bound on c1 and the equality constraint on c4 */ int[] subi = new int []{0,3}; mosek.mark[] marki = new mosek.mark[]{mosek.mark.up, mosek.mark.up}; /* Analyze lower bound on the variables x12 and x31 */ int[] subj = new int []{1,4}; mosek.mark[] markj = new mosek.mark[] {mosek.mark.lo, mosek.mark.lo}; double[] leftpricei = new double[2]; double[] rightpricei = new double[2]; double[] leftrangei = new double[2]; double[] rightrangei = new double[2]; double[] leftpricej = new double[2]; double[] rightpricej = new double[2]; double[] leftrangej = new double[2]; double[] rightrangej = new double[2]; task.primalsensitivity( subi, marki, subj, markj, leftpricei, rightpricei, leftrangei, rightrangei, leftpricej, rightpricej, leftrangej, rightrangej); Console.Write("Results from sensitivity analysis on bounds:\n"); Console.Write("For constraints:\n"); for (int i=0;i<2;++i) Console.Write( "leftprice = {0}, rightprice = {1},leftrange = {2}, rightrange ={3}\n", leftpricei[i], rightpricei[i], leftrangei[i], rightrangei[i]); Console.Write("For variables:\n"); for (int i=0;i<2;++i) Console.Write( "leftprice = {0}, rightprice = {1},leftrange = {2}, rightrange ={3}\n", leftpricej[i], rightpricej[i], leftrangej[i], rightrangej[i]); double[] leftprice = new double[2]; double[] rightprice = new double[2]; double[] leftrange = new double[2]; double[] rightrange = new double[2]; int[] subc = new int[]{2,5}; task.dualsensitivity( subc, leftprice, rightprice, leftrange, rightrange ); Console.Write("Results from sensitivity analysis on objective coefficients:"); for (int i=0;i<2;++i) Console.Write( "leftprice = {0}, rightprice = {1},leftrange = {2}, rightrange = {3}\n", leftprice[i], rightprice[i], leftrange[i], rightrange[i]); } } } catch (mosek.Exception e) { Console.WriteLine (e.Code); Console.WriteLine (e); throw; } }