www.gusucode.com > 《matlab在数学建模中的应用》一书 所有的 源代码 > 第10章/P10-1/nonlcon.m
function [c,ceq]=nonlcon(rx,type,p_test,a_lb,b_ub) % type代表当前求解的彩票类型 % p_test是当前各奖项概率(当前彩票类型,当前m、n) % a_lb,b_ub是相邻两个奖项奖金之比的下限和上限 if (type == 1) % 这是K1型的 c(1)= 6e5- ... (1-p_test(4).*rx(4)-p_test(5).*rx(5)-... p_test(6).*rx(6)).*rx(1)./p_test(1); c(2)=-5e6+ ... (1-p_test(4).*rx(4)-p_test(5).*rx(5)-... p_test(6).*rx(6)).*rx(1)./p_test(1); c(3)= a_lb(1).* ... (1-p_test(4).*rx(4)-p_test(5).*rx(5)-... p_test(6).*rx(6)).*rx(2)./p_test(2)-... (1-p_test(4).*rx(4)-p_test(5).*rx(5)-... p_test(6).*rx(6)).*rx(1)./p_test(1); c(4)= a_lb(2).* ... (1-p_test(4).*rx(4)-p_test(5).*rx(5)-... p_test(6).*rx(6)).*rx(3)./p_test(3)-... (1-p_test(4).*rx(4)-p_test(5).*rx(5)-... p_test(6).*rx(6)).*rx(2)./p_test(2); c(5)= a_lb(3).* rx(4)-... (1-p_test(4).*rx(4)-p_test(5).*rx(5)-... p_test(6).*rx(6)).*rx(3)./p_test(3); c(6)=-b_ub(1).* ... (1-p_test(4).*rx(4)-p_test(5).*rx(5)-... p_test(6).*rx(6)).*rx(2)./p_test(2)+... (1-p_test(4).*rx(4)-p_test(5).*rx(5)-... p_test(6).*rx(6)).*rx(1)./p_test(1); c(7)=-b_ub(2).* ... (1-p_test(4).*rx(4)-p_test(5).*rx(5)-... p_test(6).*rx(6)).*rx(3)./p_test(3)+... (1-p_test(4).*rx(4)-p_test(5).*rx(5)-... p_test(6).*rx(6)).*rx(2)./p_test(2); c(8)=-b_ub(3).* rx(4)+... (1-p_test(4).*rx(4)-p_test(5).*rx(5)-... p_test(6).*rx(6)).*rx(3)./p_test(3); ceq=[]; elseif (type == 2) || (type == 3) % 这是K2和K3的(K2、K3可合并处理,因奖项数目一样) c(1)= 6e5- ... (1-p_test(4).*rx(4)-p_test(5).*rx(5)-... p_test(6).*rx(6)-p_test(7).*rx(7)).*rx(1)./p_test(1); c(2)=-5e6+ ... (1-p_test(4).*rx(4)-p_test(5).*rx(5)-... p_test(6).*rx(6)-p_test(7).*rx(7)).*rx(1)./p_test(1); c(3)= a_lb(1).* ... (1-p_test(4).*rx(4)-p_test(5).*rx(5)-... p_test(6).*rx(6)-p_test(7).*rx(7)).*rx(2)./p_test(2)-... (1-p_test(4).*rx(4)-p_test(5).*rx(5)-... p_test(6).*rx(6)-p_test(7).*rx(7)).*rx(1)./p_test(1); c(4)= a_lb(2).* ... (1-p_test(4).*rx(4)-p_test(5).*rx(5)-... p_test(6).*rx(6)-p_test(7).*rx(7)).*rx(3)./p_test(3)-... (1-p_test(4).*rx(4)-p_test(5).*rx(5)-... p_test(6).*rx(6)-p_test(7).*rx(7)).*rx(2)./p_test(2); c(5)= a_lb(3).* rx(4)-... (1-p_test(4).*rx(4)-p_test(5).*rx(5)-... p_test(6).*rx(6)-p_test(7).*rx(7)).*rx(3)./p_test(3); c(6)=-b_ub(1).* ... (1-p_test(4).*rx(4)-p_test(5).*rx(5)-... p_test(6).*rx(6)-p_test(7).*rx(7)).*rx(2)./p_test(2)+... (1-p_test(4).*rx(4)-p_test(5).*rx(5)-... p_test(6).*rx(6)-p_test(7).*rx(7)).*rx(1)./p_test(1); c(7)=-b_ub(2).* ... (1-p_test(4).*rx(4)-p_test(5).*rx(5)-... p_test(6).*rx(6)-p_test(7).*rx(7)).*rx(3)./p_test(3)+... (1-p_test(4).*rx(4)-p_test(5).*rx(5)-... p_test(6).*rx(6)-p_test(7).*rx(7)).*rx(2)./p_test(2); c(8)=-b_ub(3).* rx(4)+... (1-p_test(4).*rx(4)-p_test(5).*rx(5)-... p_test(6).*rx(6)-p_test(7).*rx(7)).*rx(3)./p_test(3); if (rx(7) == 0) c(9) = -1; c(10)= -1; else c(9) = a_lb(6) .* rx(7) - rx(6); c(10)=-b_ub(6) .* rx(7) + rx(6); end ceq=[]; elseif (type == 4) % K4型 c(1)= 6e5- ... (1-p_test(4).*rx(4)-p_test(5).*rx(5)).*rx(1)./p_test(1); c(2)=-5e6+ ... (1-p_test(4).*rx(4)-p_test(5).*rx(5)).*rx(1)./p_test(1); c(3)= a_lb(1).* ... (1-p_test(4).*rx(4)-p_test(5).*rx(5)).*rx(2)./p_test(2)-... (1-p_test(4).*rx(4)-p_test(5).*rx(5)).*rx(1)./p_test(1); c(4)= a_lb(2).* ... (1-p_test(4).*rx(4)-p_test(5).*rx(5)).*rx(3)./p_test(3)-... (1-p_test(4).*rx(4)-p_test(5).*rx(5)).*rx(2)./p_test(2); c(5)= a_lb(3) .*rx(4)-... (1-p_test(4).*rx(4)-p_test(5).*rx(5)).*rx(3)./p_test(3); c(6)=-b_ub(1).* ... (1-p_test(4).*rx(4)-p_test(5).*rx(5)).*rx(2)./p_test(2)+... (1-p_test(4).*rx(4)-p_test(5).*rx(5)).*rx(1)./p_test(1); c(7)=-b_ub(2).* ... (1-p_test(4).*rx(4)-p_test(5).*rx(5)).*rx(3)./p_test(3)+... (1-p_test(4).*rx(4)-p_test(5).*rx(5)).*rx(2)./p_test(2); c(8)=-b_ub(3) .* rx(4)+... (1-p_test(4).*rx(4)-p_test(5).*rx(5)).*rx(3)./p_test(3); ceq=[]; else error('Error in function nonlcon!') end