gusucode.com > 《matlab在数学建模中的应用》一书 所有的 源代码 > 第10章/P10-1/cpiao.m
function f=cpiao(rx,type,p_test,a_lb,b_ub) % type代表当前求解的彩票类型 % p_test是当前各奖项概率(当前彩票类型,当前m、n) % a_lb,b_ub在本函数中用不到 % 注意:这里的目标函数是原目标函数乘以 -1; global v if (type == 1) % 这是K1型的 rx_last3=rx(4:6); p_last3=p_test(4:6); p_last3=p_last3'; sum_last3=p_last3*rx_last3; f= ... -( p_test(1).*(1-exp(-(((1-sum_last3).*rx(1))./p_test(1)./v).^2))+... p_test(2).*(1-exp(-(((1-sum_last3).*rx(2))./p_test(2)./v).^2))+... p_test(3).*(1-exp(-(((1-sum_last3).*rx(3))./p_test(3)./v).^2))+... p_test(4).*(1-exp(-(rx(4)./v).^2))+... p_test(5).*(1-exp(-(rx(5)./v).^2))+... p_test(6).*(1-exp(-(rx(6)./v).^2)) ... ); elseif (type == 2) || (type == 3) % 这是K2和K3的(K2、K3可合并处理,因奖项数目一样) rx_last4=rx(4:7); p_last4=p_test(4:7); p_last4=p_last4'; sum_last4=p_last4*rx_last4; f= ... -( p_test(1).*(1-exp(-(((1-sum_last4).*rx(1))./p_test(1)./v).^2))+... p_test(2).*(1-exp(-(((1-sum_last4).*rx(2))./p_test(2)./v).^2))+... p_test(3).*(1-exp(-(((1-sum_last4).*rx(3))./p_test(3)./v).^2))+... p_test(4).*(1-exp(-(rx(4)./v).^2))+... p_test(5).*(1-exp(-(rx(5)./v).^2))+... p_test(6).*(1-exp(-(rx(6)./v).^2))+... p_test(7).*(1-exp(-(rx(7)./v).^2)) ... ); elseif (type == 4) % K4型 rx_last2=rx(4:5); p_last2=p_test(4:5); p_last2=p_last2'; sum_last2=p_last2 * rx_last2; f= ... -( p_test(1).*(1-exp(-(((1-sum_last2).*rx(1))./p_test(1)./v).^2))+... p_test(2).*(1-exp(-(((1-sum_last2).*rx(2))./p_test(2)./v).^2))+... p_test(3).*(1-exp(-(((1-sum_last2).*rx(3))./p_test(3)./v).^2))+... p_test(4).*(1-exp(-(rx(4)./v).^2))+... p_test(5).*(1-exp(-(rx(5)./v).^2)) ... ); else error('Error in function cpiao!') end