本文整理汇总了C++中Landscape::GetK方法的典型用法代码示例。如果您正苦于以下问题:C++ Landscape::GetK方法的具体用法?C++ Landscape::GetK怎么用?C++ Landscape::GetK使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Landscape
的用法示例。
在下文中一共展示了Landscape::GetK方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: buildJoined
void JoinedLandscape::buildJoined( Landscape & L_Join, int k_input, int decision, vector < vector < string > > & key_new, string binaryConfig, bool * choices)
{
string numbuf, configuration, configuration2;
unsigned short int numbufLength = 0, X = 0, Z = 0, cc = 0, kk = 0, ii = 0, ll = 0;
float randomTemp;
while ( (ii < pow(2,k)) ) // loops across all T possible combinations C_i(d_i, d_!i) -- removed k > 0
{
numbuf.clear();
configuration.clear();
configuration2.clear();
kk = 0;
Z = 0;
binary(X, numbuf);
numbufLength = numbuf.length();
binaryConfig.replace((k-numbufLength),numbufLength,numbuf);
// cout << LOne.key[decision][ii] << endl;
// configuration.push_back(LOne.key[decision][ii]);
kk = 0;
while (kk < n)
{
// this loop adds k chars to string key, 0 means not considered, 1 means not chosen, 2 means chosen
if (choices[kk] == 1)
{
if ( binaryConfig[Z] == '1' ){ configuration.push_back('2'); Z++;}
else { configuration.push_back('1'); Z++;}
}
else
{
configuration.push_back('0');
}
kk++;
}
ll = 0;
while ( ll < pow(2, L_Join.GetK() + 1 ) )
{
configuration2.clear();
configuration2 = L_Join.key[decision][ll+1] + configuration;
key_new[decision].push_back(configuration2);
ll++;
}
ii++;
X++;
}
}
示例2: pow
/****************************** START OF JOIN ***************************/
JoinedLandscape::JoinedLandscape( Landscape & LOne, Landscape & LTwo, int k_input ) // relate two landscapes payoff structures so that decisions must be made with respect to both
/* one approach would be to pass references to the two smaller landscapes then use the vectors to create a new one
* map < string, Payoff > d
* d is the final vector (i: 0 -> 2^n)
* vector< vector< Payoff > > payoffs --- a partial contribution for each possible configuration where payoffs[1][i] is the ith config for the 1th choice
* vector < vector < string > > key --- shows which set of choices matter for a given choice
* the best way to accomplish this might be to have one separate array for the cross-landscape choices that matter
*/
{
cout << "Landscape initialized... working";
n = LOne.GetN();
k = k_input;
string configuration, configuration2, numbuf; // list of positions, 0 means not considered, 1 means not chosen, 2 means chosen
int random_choice = 0, i = 0, j = 0, jj = 0, success = 0, MM = 0;
int T = pow(2,(k+1));
// buildStructure(T, numbuf, crosskey);
// fillPartialPayoffs(T);
// T = pow(2, n);
// sumPayoffs(n, d, payoffs, T, numbuf);
bool choices[20] = {0};
string binaryConfig;
int choices_counter = 0, L = 0, numbufLength = 0, decision = 0, X = 0, Z = 0, cc = 0, kk = 0, ii = 0, ll = 0;
float randomTemp;
while (decision < n ){ // i need to change this so that it creates two distinct sets of vectors
cc = 0;
while (cc < 21)
{
choices[cc] = 0;
cc++;
}
ii = 0; kk = 0; L = 0; choices_counter = 0; X = 0; Z = 0; numbufLength = 0; binaryConfig.clear(); numbuf.clear();
while (choices_counter < k) // this loop selects k random decisions
{
random_choice = rand() % (n); // random integer from 0 to n-1 as index
if (choices[random_choice] != 1)
{
choices[random_choice] = 1;
binaryConfig.push_back('0');
choices_counter++;
}
}
// now that there is an array showing which choices matter, we need keys for each of the 2^(k+1) choices for those values
key.resize(decision+1);
key_two.resize(decision+1);
buildJoined( LOne, k, decision, key, binaryConfig, choices );
buildJoined( LTwo, k, decision, key_two, binaryConfig, choices );
decision++;
}
fillPartialPayoffs( pow(2, (LOne.GetK()+k+1) ));
i = 0; int mmm = 0;
/* while (i < n){ // test loop
* mmm = 0;
* while (mmm < pow(2, LOne.k + k + 1)){
* cout << " " << payoffs[i][mmm].GetFitness() << " ";
* mmm++;
* }
* cout << endl;
* i++;
* }
*/
i = 0; // counter that represents each decision (d_i)
success = 0;
int divisor;
T = pow(2, n);
string temp, temp2;
/* need to replace with a function ****************** */
i=0, jj=0, kk=0, ii=0, numbufLength=0, success=0;
while (i < pow(2,(2*n)))
{
configuration.clear();
ii=0;
while ( ii < 2*n )
{
configuration.push_back('0');
ii++;
}
numbuf.clear();
binary(i, numbuf);
numbufLength = numbuf.length();
configuration.replace(((2*n)-numbufLength),numbufLength,numbuf);
d.insert( pair<string,Payoff> (configuration, Payoff(configuration, 0)));
jj=0;
divisor = 0;
while (jj < n)
{
kk=0;
while (kk < pow(2, LOne.GetK() + k+ 1)) // this loop goes through each decision kk, goes to the payoff map, and adds up all the vectors with configs that match
{
temp = payoffs[jj][kk].GetConfig();
temp2 = configuration;
success = maskTest(temp, temp2, (2*n));
if ( success ) {
d[configuration].SetFitness( d[configuration].GetFitness() + payoffs[jj][kk].GetFitness() );
divisor++;
}
kk++;
}
jj++;
//.........这里部分代码省略.........
示例3: pow
/****************************** START OF JOIN ***************************/
JoinedLandscape::JoinedLandscape( Landscape & LOne, Landscape & LTwo, int k_input ) // relate two landscapes payoff structures so that decisions must be made with respect to both
/* one approach would be to pass references to the two smaller landscapes then use the vectors to create a new one
* vector < Payoff > d
* d is the final vector (i: 0 -> 2^n)
* vector< vector< Payoff > > payoffs --- a partial contribution for each possible configuration where payoffs[1][i] is the ith config for the 1th choice
* vector < vector < string > > key --- shows which set of choices matter for a given choice
* the best way to accomplish this might be to have one separate array for the cross-landscape choices that matter
*/
{
n = LOne.GetN();
k = k_input;
string configuration, configuration2, numbuf; // list of positions, 0 means not considered, 1 means not chosen, 2 means chosen
int random_choice = 0, i = 0, j = 0, jj = 0, success = 0, MM = 0;
int T = pow(2,(k+1));
// buildStructure(T, numbuf, crosskey);
// fillPartialPayoffs(T);
// T = pow(2, n);
// sumPayoffs(n, d, payoffs, T, numbuf);
bool choices[13] = {0};
string binaryConfig;
int choices_counter = 0, L = 0, numbufLength = 0, decision = 0, X = 0, Z = 0, cc = 0, kk = 0, ii = 0, ll = 0;
float randomTemp;
while (decision < n ){ // i need to change this so that it creates two distinct sets of vectors
cc = 0;
while (cc < 14)
{
choices[cc] = 0;
cc++;
}
ii = 0; kk = 0; L = 0; choices_counter = 0; X = 0; Z = 0; numbufLength = 0; binaryConfig.clear(); numbuf.clear();
while (choices_counter < k) // this loop selects k random decisions
{
random_choice = rand() % (n); // random integer from 0 to n-1 as index
if (choices[random_choice] != 1)
{
choices[random_choice] = 1;
binaryConfig.push_back('0');
choices_counter++;
}
}
// now that there is an array showing which choices matter, we need keys for each of the 2^(k+1) choices for those values
key.resize(decision+1);
key_two.resize(decision+1);
buildJoined( LOne, k, decision, key, binaryConfig, choices );
buildJoined( LTwo, k, decision, key_two, binaryConfig, choices );
decision++;
}
fillPartialPayoffs( pow(2, (LOne.GetK()+k+1) ));
i = 0; int mmm = 0;
/* while (i < n){ // test loop
* mmm = 0;
* while (mmm < pow(2, LOne.k + k + 1)){
* cout << " " << payoffs[i][mmm].GetFitness() << " ";
* mmm++;
* }
* cout << endl;
* i++;
* }
*/
i = 0; // counter that represents each decision (d_i)
success = 0;
int divisor;
T = pow(2, n);
string temp, temp2;
/* need to replace with a function ****************** */
i=0, jj=0, kk=0, ii=0, numbufLength=0, success=0;
while (i < pow(2,(2*n)))
{
configuration.clear();
ii=0;
while ( ii < 2*n )
{
configuration.push_back('0');
ii++;
}
numbuf.clear();
binary(i, numbuf);
numbufLength = numbuf.length();
configuration.replace(((2*n)-numbufLength),numbufLength,numbuf);
d.push_back(Payoff(configuration, 0));
jj=0;
divisor = 0;
while (jj < n)
{
kk=0;
while (kk < pow(2, LOne.GetK() + k+ 1)) // this loop goes through each decision kk, goes to the payoff map, and adds up all the vectors with configs that match
{
temp = payoffs[jj][kk].GetConfig();
temp2 = configuration;
success = maskTest(temp, temp2, (2*n));
if ( success ) {
d[i].SetFitness( d[i].GetFitness() + payoffs[jj][kk].GetFitness() );
divisor++;
}
kk++;
}
jj++;
}
//.........这里部分代码省略.........