On Sonntag, 12. November 2000 15:22, you wrote:
<snip>
>
> sorry, i should have read well ...
>
> can you give a minimal example-file, because i never had this
> problem with the listings-pacckage. some of listings are over
> 4 pages.
>
> Herbert
>
> p.s. my latex preamble for listings, inserted by
> \lst{filename}{cpation}
>
> \usepackage[breaklines]{listings}
> \renewcommand\lstlistingname{Algorithmus}
> %\renewcommand\lstlistingname{\textbf{Algorithmus}}
> \renewcommand\lstlistlistingname{Algorithmenverzeichnis}
> \renewcommand\thelstlisting{\thesection .\arabic{lstlisting}}
> %\renewcommand\thelstlisting{\textbf{\thechapter .\arabic{lstlisting}}}
> \newcommand{\lst}[2]{%
> \noindent\rule[-1ex]{\columnwidth}{0.3mm}\vspace{-1ex}
>
> \lstinputlisting[caption={#2},label={#1},stringspaces=false,lineskip=-1pt,e
>xtendedchars=true,%
>
> basicstyle=\tt\footnotesize,labelstep=1,labelstyle=\tiny,indent=2em,languag
>e=Java,breaklines]{#1} \vspace{1ex}%
> }
Hi,
this dont works for me, i get an "Package keyval error ...". I have included
my example an the corresponding c++ and dvi file.
cu,
Torsten.
--
Torsten Hahn
Agricolastr. 14-16 / Zi. 6111A / 09599 Freiberg (Germany)
mail: [EMAIL PROTECTED]
pgp key available @ http://math-www.uni-paderborn.de/pgp/
pgp fingerprint = C981 42A2 707A 65A4 5266 BDC0 523F E4D8 8C87 4209
#LyX 1.1 created this file. For more info see http://www.lyx.org/
\lyxformat 2.16
\textclass article
\begin_preamble
\usepackage[breaklines]{listings}
\lstloadlanguages{C++}
\end_preamble
\language german
\inputencoding latin1
\fontscheme default
\graphics default
\paperfontsize default
\spacing single
\papersize Default
\paperpackage a4
\use_geometry 0
\use_amsmath 0
\paperorientation portrait
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\defskip medskip
\quotes_language english
\quotes_times 2
\papercolumns 1
\papersides 1
\paperpagestyle default
\layout Subsection
zweiter codeblock
\layout Standard
\latex latex
\backslash
lstinputlisting[language=C++,basicstyle=
\backslash
fontfamily{pcr}
\backslash
fontseries{m}
\backslash
selectfont
\backslash
footnotesize,indent=15pt,extendedchars=true,breaklines,float,caption={[Kurze
Beschreibung]Ein tolles floatentes Beispiel eines C++ Listings},frame={tb}]{mai
n.cpp}
\the_end
listings_3.dvi
/***************************************************************************
main.cpp - description
-------------------
***************************************************************************/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <cmath>
#include <cstring>
#include <fstream>
/* eigene Klassen einbinden */
#include "debuginfo.h"
#include "parameter.h"
#include "genlib.h"
#include "randomnumber.h"
#include "messwerte.h"
#include "dataarray.h"
#include "data.h"
#include "fitness.h"
using namespace std;
int MaxAnzahlDaten = 2100;
int DataArray::MaxNumberOfData = MaxAnzahlDaten;
int Messwerte::MaxNumberOfData = MaxAnzahlDaten;
/** Wichtige Parameter für den GA */
int AnzahlParameter = 3;
int Populationsgroesse = 50;
int MaxGenerationen=2000;
int AnzahlFittest = 30;
int AnzahlMutanten = 25;
int AnzahlUeberlebende = 1;
int AnzahlKinder = Populationsgroesse-AnzahlUeberlebende-AnzahlMutanten;
int Generation=1;
/** Temp Variablen und Schleifenzähler init*/
int ii,jj,ij,ji,i=0,j=0;
double d, dd, tmp1=0, tmp2, tmp3, x, y, fx, i0;
int AnzMesswerte=0;
/** Misc Opts */
/** ID Nr. für Parameter initialisieren */
int Parameter::ID=0;
/** 1. Aufruf des RNG */
bool RandomNumber::FirstRandom=true;
int main(int argc, char *argv[])
{
double mutSchrittweite[3] = {1.50 , 1.50 , 1.50};
cout << endl;
cout << "--- Genfit Programm Version 0.02 (beta release) ---" << endl;
cout << "" << endl << endl;
/** Ab hier geht so richtiger Programmcode los*/
cout << endl;
double p[AnzahlParameter];
DataArray ExpDaten;
Messwerte MwExpDaten;
/** Objekt für abspeichern der Fitness */
Data *FitnessSave;
FitnessSave = new Data(MaxGenerationen);
/** Objekt für Startwerte der Evolution */
Data *StartValue;
StartValue = new Data(AnzahlParameter);
/** Daten aus File einlesen und in ExpDaten speichern*/
char file[160]="/home/torsten/Docs/Studienarbeit/Daten/File1.dat";
char FitnessFile[160]="/home/torsten/Docs/Studienarbeit/Daten/Fit.dat";
char ParameterFile[160]="/home/torsten/Docs/Studienarbeit/Daten/P1.dat";
MwExpDaten.setFileName(file);
MwExpDaten.ReadData();
ExpDaten.setNumberOfData(MwExpDaten.getNumberOfData());
AnzMesswerte = MwExpDaten.getNumberOfData();
/** Falls Datenfile zu groß - Warnung und Abbruch */
if (AnzMesswerte > MaxAnzahlDaten){
cout << "Zu viele Daten im File !!" << endl;
return(0);
}
int cntr1=0;
for(i=1;i<=AnzMesswerte;i++){
ExpDaten.setXValue(i , MwExpDaten.getFeldValue(cntr1));
cntr1++;
ExpDaten.setYValue(i , MwExpDaten.getFeldValue(cntr1));
cntr1++;
}
/** Aktuelle Parameter ausgeben */
cout << "\tMaxNumberOfData:\t" << MaxAnzahlDaten << endl;
cout << "\tFileName:\t\t" << file << endl;
cout << "\tFitnessFile:\t\t" << FitnessFile << endl;
cout << "\tParameterFile:\t\t" << ParameterFile << endl;
cout << "\tNumberOfData:\t\t" << AnzMesswerte << endl;
cout << "\tMaxGenerationen:\t" << MaxGenerationen << endl;
cout << "\tAnzahlParameter:\t" << AnzahlParameter << endl;
cout << "\tPopulationsgröße:\t" << Populationsgroesse << endl;
cout << "\tÜberlebende:\t\t" << AnzahlUeberlebende << endl;
cout << "\tAnzahl Fittest:\t\t" << AnzahlFittest << endl;
cout << "\tAnzahl Mutanten:\t" << AnzahlMutanten << endl;
cout << "\tPopulationsgröße:\t" << Populationsgroesse << endl;
cout << "\tmutSchrittweite:\t" << mutSchrittweite << endl;
cout << "\tModell:\t\t\t" << "Transient Fit (2nd order)" << endl;
cout << endl;
/** Array mit Parameter-Objekten erzeugen */
cout << "\t2 Arrays mit Parameter-Objekten erzeugen ..." << endl;
Parameter *parameter[AnzahlParameter+1][Populationsgroesse+1];
for(i=1;i<=AnzahlParameter;i++){
for(j=1;j<=Populationsgroesse;j++){
parameter[i][j]= new Parameter;
}
}
Parameter *parameter_neu[AnzahlParameter+1][Populationsgroesse+1];
for(i=1;i<=AnzahlParameter;i++){
for(j=1;j<=Populationsgroesse;j++){
parameter_neu[i][j]= new Parameter;
}
}
/** Zufallszahlen(Objekt) erzeugen */
cout << "\tZufallszahlen(Objekt) erzeugen ..." << endl;
RandomNumber r;
dd = r.EqualRandom();
/** Parameterobjekte mit default-Start-werten initialisieren und mutieren */
cout << "\tParameterobjekte initialisieren und mutieren .." << endl;
StartValue->setValue(1 , 50.0);
StartValue->setValue(2 , 140.0);
StartValue->setValue(3 , 80.0);/*
StartValue->setValue(4 , 1.0);
StartValue->setValue(5 , 1.1);
StartValue->setValue(6 , 1.0);
StartValue->setValue(7 , 1.0);
StartValue->setValue(8 , 30.0);
StartValue->setValue(9 , 140.0);
StartValue->setValue(10 , 70.0); */
for(i=1;i<=AnzahlParameter;i++){
for(j=1;j<=Populationsgroesse;j++){
parameter[i][j]->setValue(StartValue->getValue(i));
parameter[i][j]->mutateValue(r.NormalDoubleRandom(mutSchrittweite[i-1]));
}
}
/** Fitness Objekt erzeugen */
cout << "\tFitness Objekt erzeugen ..." << endl;
ii = Populationsgroesse;
Fitness _Fitness(ii);
/** Paarungs-array erzeugen */
cout << "\tPaarungs Objekt erzeugen ..." << endl;
int Paarungen[2][AnzahlKinder+1];
/** Fittness der einzelnen Parameter berechnen */
cout << "\tAnpassung läuft, bitte warten ..." << endl << endl;
/** Dunkelstrom i0 aus letzen 3 Messwerten berechnen */
i0 =(ExpDaten.getYValue(AnzMesswerte)
+ ExpDaten.getYValue(AnzMesswerte-2) + ExpDaten.getYValue(AnzMesswerte-2))/3;
while (Generation <= MaxGenerationen) {
for(j=1;j<=Populationsgroesse;j++){
tmp1 = 0;
for(i=1;i<=AnzMesswerte;i++){
x = ExpDaten.getXValue(i);
y = ExpDaten.getYValue(i);
for (jj=1;jj<=AnzahlParameter;jj++){
p[jj] = parameter[jj][j]->getValue();
}
fx = p[1]*exp(-(x-p[2])*(x-p[2])/(2*p[3]*p[3]));
dd = (y - fx)*(y - fx);
tmp1 = tmp1 + dd;
}
_Fitness.setValue(j,j,tmp1);
}
/** Fittness sortieren ... */
_Fitness.do_sort();
/** beste Fittnes abspeichern */
FitnessSave->setValue(Generation, _Fitness.getValue(1));
/** Paarungen zwischen den besten Individuen festlegen */
for (i=1;i<=AnzahlKinder;i++){
Paarungen[1][i] = r.EqualUnsignedRandom(AnzahlFittest);
Paarungen[2][i] = r.EqualUnsignedRandom(AnzahlFittest);
}
/** Ueberlebende in neue Population uebernehmen*/
for (j=1;j<=AnzahlUeberlebende;j++){
for (i=1;i<=AnzahlParameter;i++){
ii = _Fitness.getParameterID(j);
dd = parameter[i][ii]->getValue();
parameter_neu[i][j]->setValue(dd);
}
}
/** Nachkommen erzeugen durch Mittelwertbildung */
for (i=1; i<=AnzahlKinder; i++){
ii = _Fitness.getParameterID(Paarungen[1][i]);
ij = _Fitness.getParameterID(Paarungen[2][i]);
for (j=1;j<=AnzahlParameter;j++){
d = r.StdEqualRandom();
dd = ( d*parameter[j][ii]->getValue() + (1-d)*parameter[j][ij]->getValue() );
parameter_neu[j][i+AnzahlUeberlebende]->setValue(dd);
}
}
/** Nachkommen erzeugen durch Vertauschung */
/**
for (i=1; i<=AnzahlKinder; i++){
ii = _Fitness.getParameterID(Paarungen[1][i]);
ij = _Fitness.getParameterID(Paarungen[2][i]);
for (j=1;j<=AnzahlParameter;j++){
d = r.StdEqualRandom(); // Zufallszahl zw. [0,1]
if (d<=0.5) {
dd = parameter[j][ii]->getValue();
parameter_neu[j][i+AnzahlUeberlebende]->setValue(dd);
}
else {
dd = parameter[j][ij]->getValue();
parameter_neu[j][i+AnzahlUeberlebende]->setValue(dd);
}
}
} */
/** Nachkommen erzeugen durch Mutation */
for (i=1;i<=AnzahlMutanten;i++){
ii = _Fitness.getParameterID(i);
for (j=1;j<=AnzahlParameter;j++){
parameter[j][ii]->mutateValue(r.NormalDoubleRandom(mutSchrittweite[j-1]));
dd = parameter[j][ii]->getValue();
parameter_neu[j][i+AnzahlUeberlebende+AnzahlKinder]->setValue(dd);
}
}
/** Alte Population mit neuer überschreiben */
for (i=1;i<=Populationsgroesse;i++){
for (j=1;j<=AnzahlParameter;j++){
dd = parameter_neu[j][i]->getValue();
parameter[j][i]->setValue(dd);
}
}
Generation++;
cout << "\tFitness:\t" << _Fitness.getValue(1) << "\t\tGeneration:\t" <<
Generation << "\r" << flush;
}
/** Ergebniss ausgeben */
cout << endl << endl << "Ergebniss:" << endl;
cout << "I0:" << "\t" << i0 << endl;
ii = _Fitness.getParameterID(1);
for (i=1;i<=AnzahlParameter;i++){
cout << "P" << i << ":" << "\t" << parameter[i][ii]->getValue() << endl;
StartValue->setValue(i,parameter[i][ii]->getValue());
}
cout << endl << "Fitness und ermittelte Parameter abspeichern ... " << endl;
FitnessSave->SaveData(FitnessFile);
StartValue->SaveData(ParameterFile);
cout << "\a" << flush;
/** Programm ende */
return EXIT_SUCCESS;
}