Skip to main content
added 62 characters in body
Source Link
Jason B.
  • 70.2k
  • 3
  • 144
  • 297

I'm using NMinimizeNMinimize to solve the following objective function.

I'm using NMinimize to solve the following objective function.

I'm using NMinimize to solve the following objective function.

added 141 characters in body
Source Link
Jason B.
  • 70.2k
  • 3
  • 144
  • 297

The sub-functions include:

S1 = 0.874334;

S2 = 0.125666;

Wd11[R_] := Exp[-((R - 6.491541)/34.9807)^1.506582];

V11[R_] := Wd11[R]*S1;

Wd12[Q_, R_] := Exp[-(((R + ((1 - 0.5)*Q)) - 14.19834)/53.64985)^1.701898];

V12[Q_, R_] := Wd12[Q, R]*S1;

Wd21[Q_, R_] := Exp[-(((R + 0.5*Q) - 13.3108)/45.07249)^1.690368];

V21[Q_, R_] := Wd21[Q, R]*S2;

Wd22[R_] := Exp[-((R - 10.4539)/39.29455)^1.617706];

V22[R_] := Wd22[R]*S2;

a := V11[R] + V12[R, Q] + V21[R, Q] + V22[R];

f[Q_] := If[1 <= Q <= 1000, 75, If[1000 < Q <= 3000, 74, If[3000 < Q <= 7000, 73, If[7000 < Q <= 15000, 71.5, If[15000 < Q <= 26000, 70.5, If[Q > 26000, 69, 0]]]]]];

T[Q_] := 8501.6(IntegerPart[(Q220.5)/45000]) + (8501.60.7^ Log[2, 45000/(FractionalPart[(Q0.522)/45000]*45000)]);

S1 = 0.874334;

S2 = 0.125666;

Wd11[R_] := Exp[-((R - 6.491541)/34.9807)^1.506582];

V11[R_] := Wd11[R]*S1;

Wd12[Q_, R_] := Exp[-(((R + ((1 - 0.5)*Q)) - 14.19834)/53.64985)^1.701898];

V12[Q_, R_] := Wd12[Q, R]*S1;

Wd21[Q_, R_] := Exp[-(((R + 0.5*Q) - 13.3108)/45.07249)^1.690368];

V21[Q_, R_] := Wd21[Q, R]*S2;

Wd22[R_] := Exp[-((R - 10.4539)/39.29455)^1.617706];

V22[R_] := Wd22[R]*S2;

a := V11[R] + V12[R, Q] + V21[R, Q] + V22[R];

f[Q_] := If[1 <= Q <= 1000, 75, 
   If[1000 < Q <= 3000, 74, 
    If[3000 < Q <= 7000, 73, 
     If[7000 < Q <= 15000, 71.5, 
      If[15000 < Q <= 26000, 70.5, If[Q > 26000, 69, 0]]]]]];

T[Q_] := 850*1.6*(IntegerPart[(Q*22*0.5)/45000]) + (850*1.6*0.7^
     Log[2, 45000/(FractionalPart[(Q*0.5*22)/45000]*45000)]);

OB[Q_, R_] := ((3650f[Q]) + (3650/Q(T[Q] + T[Q])) + (3650/ Q (50 + 250)) + (0.25 f[Q](Q/2 - (0.510*(6 - 4)) + (R - (410)))) + (0.18 f[Q](310)))*15;

OB[Q_, R_] := ((3650*f[Q]) + (3650/Q*(T[Q] + T[Q])) + (3650/
       Q (50 + 2*50)) + (0.25*
       f[Q]*(Q/2 - (0.5*10*(6 - 4)) + (R - (4*10)))) + (0.18*
       f[Q]*(3*10)))*15;

NMinimize[{OB[Q, R], Q >= 1, R >= 1, a <= 0.02}, {Q, R}]

NMinimize[{OB[Q, R], Q >= 1, R >= 1, a <= 0.02}, {Q, R}]

LessEqual::nord: Invalid comparison with 1.93457 +0.143499 I attempted. >>

NMinimize::bcons: The following constraints are not valid: {Q>=1,R>=1,0.874334 E^(-0.00113881 (-14.1983+Q+Times[<<2>>])^1.7019)+0.125666 E^(-0.00160059 (-13.3108+Q+Times[<<2>>])^1.69037)+0.125666 E^(-0.00263535 (-10.4539+R)^1.61771)+0.874334 E^(-0.00472167 (-6.49154+R)^1.50658)<=0.02}. Constraints should be equalities, inequalities, or domain specifications involving the variables. >>

LessEqual::nord: Invalid comparison with 1.93457 +0.143499 I attempted. >>

NMinimize::bcons: The following constraints are not valid: {Q>=1,R>=1,0.874334 E^(-0.00113881 (-14.1983+Q+Times[<<2>>])^1.7019)+0.125666 E^(-0.00160059 (-13.3108+Q+Times[<<2>>])^1.69037)+0.125666 E^(-0.00263535 (-10.4539+R)^1.61771)+0.874334 E^(-0.00472167 (-6.49154+R)^1.50658)<=0.02}. Constraints should be equalities, inequalities, or domain specifications involving the variables. >>

I've checked this error on many pages and tried different solutions, but it still doesn't work. The problem actually arises from the third constraint (a <= 0.02a <= 0.02). When I place a == 0.02a == 0.02, it gives an output, but I'm not sure if this output is correct. Anyway, why shouldn't it give me the output when a <= 0.02a <= 0.02?

The sub-functions include:

S1 = 0.874334;

S2 = 0.125666;

Wd11[R_] := Exp[-((R - 6.491541)/34.9807)^1.506582];

V11[R_] := Wd11[R]*S1;

Wd12[Q_, R_] := Exp[-(((R + ((1 - 0.5)*Q)) - 14.19834)/53.64985)^1.701898];

V12[Q_, R_] := Wd12[Q, R]*S1;

Wd21[Q_, R_] := Exp[-(((R + 0.5*Q) - 13.3108)/45.07249)^1.690368];

V21[Q_, R_] := Wd21[Q, R]*S2;

Wd22[R_] := Exp[-((R - 10.4539)/39.29455)^1.617706];

V22[R_] := Wd22[R]*S2;

a := V11[R] + V12[R, Q] + V21[R, Q] + V22[R];

f[Q_] := If[1 <= Q <= 1000, 75, If[1000 < Q <= 3000, 74, If[3000 < Q <= 7000, 73, If[7000 < Q <= 15000, 71.5, If[15000 < Q <= 26000, 70.5, If[Q > 26000, 69, 0]]]]]];

T[Q_] := 8501.6(IntegerPart[(Q220.5)/45000]) + (8501.60.7^ Log[2, 45000/(FractionalPart[(Q0.522)/45000]*45000)]);

OB[Q_, R_] := ((3650f[Q]) + (3650/Q(T[Q] + T[Q])) + (3650/ Q (50 + 250)) + (0.25 f[Q](Q/2 - (0.510*(6 - 4)) + (R - (410)))) + (0.18 f[Q](310)))*15;

NMinimize[{OB[Q, R], Q >= 1, R >= 1, a <= 0.02}, {Q, R}]

LessEqual::nord: Invalid comparison with 1.93457 +0.143499 I attempted. >>

NMinimize::bcons: The following constraints are not valid: {Q>=1,R>=1,0.874334 E^(-0.00113881 (-14.1983+Q+Times[<<2>>])^1.7019)+0.125666 E^(-0.00160059 (-13.3108+Q+Times[<<2>>])^1.69037)+0.125666 E^(-0.00263535 (-10.4539+R)^1.61771)+0.874334 E^(-0.00472167 (-6.49154+R)^1.50658)<=0.02}. Constraints should be equalities, inequalities, or domain specifications involving the variables. >>

I've checked this error on many pages and tried different solutions, but it still doesn't work. The problem actually arises from the third constraint (a <= 0.02). When I place a == 0.02, it gives an output, but I'm not sure if this output is correct. Anyway, why shouldn't it give me the output when a <= 0.02?

S1 = 0.874334;

S2 = 0.125666;

Wd11[R_] := Exp[-((R - 6.491541)/34.9807)^1.506582];

V11[R_] := Wd11[R]*S1;

Wd12[Q_, R_] := Exp[-(((R + ((1 - 0.5)*Q)) - 14.19834)/53.64985)^1.701898];

V12[Q_, R_] := Wd12[Q, R]*S1;

Wd21[Q_, R_] := Exp[-(((R + 0.5*Q) - 13.3108)/45.07249)^1.690368];

V21[Q_, R_] := Wd21[Q, R]*S2;

Wd22[R_] := Exp[-((R - 10.4539)/39.29455)^1.617706];

V22[R_] := Wd22[R]*S2;

a := V11[R] + V12[R, Q] + V21[R, Q] + V22[R];

f[Q_] := If[1 <= Q <= 1000, 75, 
   If[1000 < Q <= 3000, 74, 
    If[3000 < Q <= 7000, 73, 
     If[7000 < Q <= 15000, 71.5, 
      If[15000 < Q <= 26000, 70.5, If[Q > 26000, 69, 0]]]]]];

T[Q_] := 850*1.6*(IntegerPart[(Q*22*0.5)/45000]) + (850*1.6*0.7^
     Log[2, 45000/(FractionalPart[(Q*0.5*22)/45000]*45000)]);
OB[Q_, R_] := ((3650*f[Q]) + (3650/Q*(T[Q] + T[Q])) + (3650/
       Q (50 + 2*50)) + (0.25*
       f[Q]*(Q/2 - (0.5*10*(6 - 4)) + (R - (4*10)))) + (0.18*
       f[Q]*(3*10)))*15;
NMinimize[{OB[Q, R], Q >= 1, R >= 1, a <= 0.02}, {Q, R}]

LessEqual::nord: Invalid comparison with 1.93457 +0.143499 I attempted. >>

NMinimize::bcons: The following constraints are not valid: {Q>=1,R>=1,0.874334 E^(-0.00113881 (-14.1983+Q+Times[<<2>>])^1.7019)+0.125666 E^(-0.00160059 (-13.3108+Q+Times[<<2>>])^1.69037)+0.125666 E^(-0.00263535 (-10.4539+R)^1.61771)+0.874334 E^(-0.00472167 (-6.49154+R)^1.50658)<=0.02}. Constraints should be equalities, inequalities, or domain specifications involving the variables. >>

I've checked this error on many pages and tried different solutions, but it still doesn't work. The problem actually arises from the third constraint (a <= 0.02). When I place a == 0.02, it gives an output, but I'm not sure if this output is correct. Anyway, why shouldn't it give me the output when a <= 0.02?

Source Link
Mahdi
  • 11
  • 1

Problem with inequality constraint

I'm using NMinimize to solve the following objective function.

The sub-functions include:

S1 = 0.874334;

S2 = 0.125666;

Wd11[R_] := Exp[-((R - 6.491541)/34.9807)^1.506582];

V11[R_] := Wd11[R]*S1;

Wd12[Q_, R_] := Exp[-(((R + ((1 - 0.5)*Q)) - 14.19834)/53.64985)^1.701898];

V12[Q_, R_] := Wd12[Q, R]*S1;

Wd21[Q_, R_] := Exp[-(((R + 0.5*Q) - 13.3108)/45.07249)^1.690368];

V21[Q_, R_] := Wd21[Q, R]*S2;

Wd22[R_] := Exp[-((R - 10.4539)/39.29455)^1.617706];

V22[R_] := Wd22[R]*S2;

a := V11[R] + V12[R, Q] + V21[R, Q] + V22[R];

f[Q_] := If[1 <= Q <= 1000, 75, If[1000 < Q <= 3000, 74, If[3000 < Q <= 7000, 73, If[7000 < Q <= 15000, 71.5, If[15000 < Q <= 26000, 70.5, If[Q > 26000, 69, 0]]]]]];

T[Q_] := 8501.6(IntegerPart[(Q220.5)/45000]) + (8501.60.7^ Log[2, 45000/(FractionalPart[(Q0.522)/45000]*45000)]);

The objective function is:

OB[Q_, R_] := ((3650f[Q]) + (3650/Q(T[Q] + T[Q])) + (3650/ Q (50 + 250)) + (0.25 f[Q](Q/2 - (0.510*(6 - 4)) + (R - (410)))) + (0.18 f[Q](310)))*15;

So,

NMinimize[{OB[Q, R], Q >= 1, R >= 1, a <= 0.02}, {Q, R}]

but it results in the following errors:

LessEqual::nord: Invalid comparison with 1.93457 +0.143499 I attempted. >>

NMinimize::bcons: The following constraints are not valid: {Q>=1,R>=1,0.874334 E^(-0.00113881 (-14.1983+Q+Times[<<2>>])^1.7019)+0.125666 E^(-0.00160059 (-13.3108+Q+Times[<<2>>])^1.69037)+0.125666 E^(-0.00263535 (-10.4539+R)^1.61771)+0.874334 E^(-0.00472167 (-6.49154+R)^1.50658)<=0.02}. Constraints should be equalities, inequalities, or domain specifications involving the variables. >>

I've checked this error on many pages and tried different solutions, but it still doesn't work. The problem actually arises from the third constraint (a <= 0.02). When I place a == 0.02, it gives an output, but I'm not sure if this output is correct. Anyway, why shouldn't it give me the output when a <= 0.02?

Thank you